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)
`
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)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.