Pine-Script实现变量累计复利,如何解决自引用未定义报错?
Pine Script 自引用累计变量实现方案
报错原因
Pine Script 不支持在使用=一次性定义变量的表达式中,直接引用该变量自身的历史偏移值,必须先声明变量初始值,再通过:=动态赋值更新。
修正后代码
// 先声明浮点型变量并设置初始值 hd1 = 0.0 // 按条件更新变量值 if (hl < hl[3]) or (hl < hl[1]) hd1 := (hl[1] - hl) + hd1[1] else hd1 := 0
逻辑说明
- 第一行先定义
hd1的初始值为0,完成变量的初始化声明 - 后续使用
:=运算符对hd1进行赋值操作,此时就可以正常引用hd1[1]即上一根K线的hd1值 - 满足条件时自动叠加差值和上一轮的累计值,不满足条件时直接重置为0,符合累计到条件中断后清零的需求
如果需要实现复利计算而非简单累加,只需要调整if分支内的计算公式即可,比如将加法替换为对应收益率的乘法逻辑。
内容的提问来源于stack exchange,提问作者Feneq
相关产品推荐
相关产品推荐

