在Pine Script中如何获取close[2]、close[3]等历史K线的SMA值?
Pine Script获取往期K线对应均线数值的方法
所有序列类型的变量(包括价格、指标计算结果)都支持Pine Script内置的
[]偏移操作符,你不需要针对均线单独做特殊计算,直接对已经算好的均线序列做偏移即可。
通用实现步骤
这种写法对所有均线类型(SMA、EMA、平滑移动平均线SMMA等)都适用,效率最高也不容易出错:
- 先计算你需要的均线全序列,对应到每一根K线都会生成一个均线值
- 对得到的均线序列使用
[n]操作符,n是你要偏移的K线根数,[2]就对应close[2]所在K线的均线值,[3]对应close[3]所在K线的均线值
代码示例
//@version=5 indicator("历史均线查询示例", overlay=true) // 计算20周期简单移动平均线SMA sma_20 = ta.sma(close, 20) // 获取往期对应K线的SMA值 sma_20_at_close2 = sma_20[2] // 对应close[2]所在K线的20周期SMA sma_20_at_close3 = sma_20[3] // 对应close[3]所在K线的20周期SMA // 计算20周期平滑移动平均线EMA ema_20 = ta.ema(close, 20) // 获取往期对应K线的EMA值 ema_20_at_close2 = ema_20[2] ema_20_at_close3 = ema_20[3] // 绘图验证 plot(sma_20, color=color.new(color.blue, 0), title="当前K线SMA20") plot(sma_20_at_close2, color=color.new(color.orange, 0), title="前2根K线SMA20")
常见问题说明
- 你也可以直接写
ta.sma(close[2], 20)来获取对应值,结果和sma_20[2]完全一致,但这种写法需要重复计算均线,当你需要取多个偏移值时效率更低,更推荐先计算一次均线再偏移的写法 - 偏移值不能超过图表可用的历史K线数量,否则会返回空值
na,可以用ta.na()函数判断过滤无效值 - 所有Pine内置的均线函数返回值都是序列类型,都支持
[]偏移操作,不需要额外处理
内容的提问来源于stack exchange,提问作者ronald828
相关产品推荐
相关产品推荐

