SMA序列空数据点处理:空值判定与替换为0方法咨询
Pine Script SMA空值处理问题解答
问题1:这类值的官方称谓是什么?
在Pine Script中,你看到的Ø(带斜线的零)本质就是na(Not Available)值,并非empty或Null。Pine Script里没有单独的empty/Null类型,起始阶段SMA未生成时的空缺值统一用na表示,只是在界面上显示为Ø。
问题2:如何将这类值替换为0参与计算?
可以直接使用Pine Script内置的nz()函数,它会自动将na值替换为0,非na值保持不变。也可以用ta.na()函数配合三元运算符手动判断替换,不过nz()更简洁高效。
修改后的代码示例:
ma1 = ta.sma(ma1abs, 21) ma2 = ta.sma(ma1abs, 55) ma3 = ta.sma(ma1abs, 89) // 使用nz()将所有na值替换为0 p = (nz(ma1) + nz(ma2) + nz(ma3)) / 3 plot(p, style = plot.style_histogram, color=color.new(color.orange, 0), linewidth=3, title='av')
代码说明:
nz(ma1):如果ma1是na,返回0;否则返回ma1的实际值- 这样就能实现你需要的计算逻辑:
- 21期K线前:三个SMA都是na,替换后0+0+0=0,平均为0
- 21-55期:ma1有值,ma2、ma3为0,求和后取平均
- 55-89期:ma1、ma2有值,ma3为0,求和后取平均
- 89期后:三个SMA正常取值计算平均
内容的提问来源于stack exchange,提问作者Oarsham
相关产品推荐
相关产品推荐

