You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助将PineScript V2/V3指标转换为V5版本

PineScript V2/V3 转 V5 版本代码(VMA指标)

转换后的完整V5代码

//@version=5
indicator(title="MA", shorttitle="MA", overlay=true)

src = close
l = input.int(6, title="VMA Length") 
std = input.bool(false, title="Show Trend Direction")
bc = input.bool(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声明,确保跨K线周期保持状态
var float pdmS = 0.0
pdmS := (1 - k) * nz(pdmS[1]) + k * pdm

var float mdmS = 0.0
mdmS := (1 - k) * nz(mdmS[1]) + k * mdm

s = pdmS + mdmS
// 处理分母为0的情况,避免运行报错
pdi = pdmS / nz(s, 1)
mdi = mdmS / nz(s, 1)

var float pdiS = 0.0
pdiS := (1 - k) * nz(pdiS[1]) + k * pdi

var float mdiS = 0.0
mdiS := (1 - k) * nz(mdiS[1]) + k * mdi

d = math.abs(pdiS - mdiS)
s1 = pdiS + mdiS
var float iS = 0.0
iS := (1 - k) * nz(iS[1]) + k * d / nz(s1, 1)

hhv = ta.highest(iS, l) 
llv = ta.lowest(iS, l) 
d1 = hhv - llv
vI = (iS - llv) / nz(d1, 1)

var float vma = 0.0
vma := (1 - k * vI) * nz(vma[1]) + k * vI * src

// 定义VMA趋势颜色
vmaC = color.black
if vma > vma[1]
    vmaC := color.green
elif vma < vma[1]
    vmaC := color.red
else
    vmaC := color.blue

plot(vma, color=std ? vmaC : color.black, linewidth=3, title="VMA")
barcolor(bc ? vmaC : na)

关键改动说明

  • 替换study()为V5标准的indicator()函数,这是V5脚本声明的强制要求
  • 为所有递归计算变量添加var关键字,确保变量在K线周期间保留前值,解决自动转换时的数值异常问题
  • 将原代码中的颜色常量替换为V5规范的color.xxx格式
  • 对所有除法运算添加nz()处理分母为0的情况,避免运行时错误
  • 调整输入参数为类型明确的input.int、input.bool,提升代码可读性
  • 修正原代码中的HTML符号转义问题(&gt;改为正常的>)

内容的提问来源于stack exchange,提问作者LJ2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:25:48