Pinescript V2转V4:自引用变量c的声明方法咨询
Pine Script 4 中自引用变量c的正确声明方式
在Pine Script 4中,普通变量无法直接实现自引用(如c = ... c[1] ...),因为这类变量会在每根K线重新初始化,导致无法调用自身历史值。解决这类递归计算的核心是使用var关键字声明变量,结合:=赋值操作符更新值。
修改后的代码示例
//@version=4 study("递归计算示例", overlay=true) // 保留你的weight计算逻辑(假设s()是自定义/兼容的平滑函数) weight = s(abs(change(close))) // 用var初始化变量,仅在脚本启动时设置一次初始值 var float c = close // 使用:=更新变量,此时c自动引用上一根K线的结果 c := weight * close + (1 - weight) * c // 可选:绘制结果验证 plot(c, color=color.new(color.blue, 0), title="递归计算值")
核心要点
var关键字:声明的变量仅在第一根K线初始化一次,后续K线会保留上一次的计算结果,这是实现自引用的关键。:=赋值符:用于对已声明的变量重新赋值,支持引用变量的历史值(c[1]),这里直接写c即可代表上一根K线的c值,无需额外用nz()处理空值(因为初始值已明确设置为close)。
内容的提问来源于stack exchange,提问作者Athenes
相关产品推荐
相关产品推荐

