LJ2
LJ2

Reputation: 9

Need Help Converting This Pinescript into V5 TradingView

So I have an old pinescript I believe v2 or v3 that I Need help converting into V5 as my knowledge of pinescript is very limited, but I can not do that auto convert to work because the values seem to be not converting or it has changed so much. Any assistance would be greatly appreciated. Thank you!

    study(title="MA", shorttitle="MA", overlay=true)
    src=close
    l =input(6, title="VMA Length") 
    std=input(false, title="Show Trend Direction")
    bc=input(false, title="Color bars based on Trend")
    k = 1.0/l
    pdm = max((src - src[1]), 0)
    mdm = max((src[1] - src), 0)
    pdmS = ((1 - k)*nz(pdmS[1]) + k*pdm)
    mdmS = ((1 - k)*nz(mdmS[1]) + k*mdm)
    s = pdmS + mdmS
    pdi = pdmS/s
    mdi = mdmS/s
    pdiS = ((1 - k)*nz(pdiS[1]) + k*pdi)
    mdiS = ((1 - k)*nz(mdiS[1]) + k*mdi)
    d = abs(pdiS - mdiS)
    s1 = pdiS + mdiS
    iS = ((1 - k)*nz(iS[1]) + k*d/s1)
    hhv = highest(iS, l) 
    llv = lowest(iS, l) 
    d1 = hhv - llv
    vI = (iS - llv)/d1
    vma = (1 - k*vI)*nz(vma[1]) + k*vI*src
    vmaC=(vma > vma[1]) ? green : (vma<vma[1]) ? red : (vma==vma[1]) ? blue : black 
    plot(vma, color=std?vmaC:black, linewidth=3, title="VMA")
    barcolor(bc?vmaC:na)

`

Upvotes: 0

Views: 335

Answers (1)

G.Lebret
G.Lebret

Reputation: 3108

In pinescript v5, you must declare you variable before calling it.
So :

pdmS = ((1 - k)*nz(pdmS[1]) + k*pdm)

doesn't work anymore, because you try to acces pdmS[1] before declaring it.
Use 'var' to declare a variable with a value used only one the frst loop over your code.

Here is your code in v5 :

//@version=5
indicator(title='MA', shorttitle='MA', overlay=true)
src = close
l = input(6, title='VMA Length')
std = input(false, title='Show Trend Direction')
bc = input(false, title='Color bars based on Trend')
k = 1.0 / l
pdm = math.max(src - src[1], 0)
mdm = math.max(src[1] - src, 0)
var pdmS = 0.0
pdmS := (1 - k) * nz(pdmS[1]) + k * pdm
var mdmS = 0.0
mdmS := (1 - k) * nz(mdmS[1]) + k * mdm
s = pdmS + mdmS
pdi = pdmS / s
mdi = mdmS / s
var pdiS = 0.0
pdiS := (1 - k) * nz(pdiS[1]) + k * pdi
var mdiS = 0.0
mdiS := (1 - k) * nz(mdiS[1]) + k * mdi
d = math.abs(pdiS - mdiS)
s1 = pdiS + mdiS
var iS = 0.0
iS := (1 - k) * nz(iS[1]) + k * d / s1
hhv = ta.highest(iS, l)
llv = ta.lowest(iS, l)
d1 = hhv - llv
vI = (iS - llv) / d1
var vma = 0.0
vma := (1 - k * vI) * nz(vma[1]) + k * vI * src
vmaC = vma > vma[1] ? color.green : vma < vma[1] ? color.red : vma == vma[1] ? color.blue : color.black
plot(vma, color=std ? vmaC : color.black, linewidth=3, title='VMA')
barcolor(bc ? vmaC : na)

Upvotes: 0

Related Questions