简体   繁体   中英

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)

`

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM