自增计算异常问题:Pine Script中abc指标始终显示0值
Pine Script中abc指标始终显示0值的问题分析与解决
问题原因
- 第一根K线的
close[1]为NaN:Pine Script里第一根K线没有前序数据,close[1]会返回NaN(非数值)。此时公式volume*(close - close[1])/close[1]的计算结果为NaN,和初始值0相加后,abc就变成了NaN。 - NaN的传递性:后续K线中,
abc会继承前一根的NaN值,而NaN和任何数值相加结果还是NaN。Pine Script绘图时会自动隐藏NaN值,最终呈现出指标始终为0的效果。
解决思路
方案1:用nz()函数处理NaN值
nz()函数可将NaN替换为指定默认值,这里把第一根K线的close[1]替换为当前close,保证计算式结果有效:
//@version=5 indicator("myscript") var abc = 0.0 // 替换close[1]的NaN值,避免计算出错 calc_value = volume * (close - nz(close[1], close)) / nz(close[1], close) abc := abc + calc_value plot(abc, title="abc")
方案2:跳过第一根K线的计算
通过判断bar_index(K线索引),从第二根K线开始执行累加逻辑:
//@version=5 indicator("myscript") var abc = 0.0 // 仅在非第一根K线时进行累加计算 if bar_index > 0 abc := abc + volume*(close - close[1])/close[1] plot(abc, title="abc")
内容的提问来源于stack exchange,提问作者Gulymin
相关产品推荐
相关产品推荐

