You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pine Script中如何获取close[2]、close[3]等历史K线的SMA值?

Pine Script获取往期K线对应均线数值的方法

所有序列类型的变量(包括价格、指标计算结果)都支持Pine Script内置的[]偏移操作符,你不需要针对均线单独做特殊计算,直接对已经算好的均线序列做偏移即可。

通用实现步骤

这种写法对所有均线类型(SMA、EMA、平滑移动平均线SMMA等)都适用,效率最高也不容易出错:

  1. 先计算你需要的均线全序列,对应到每一根K线都会生成一个均线值
  2. 对得到的均线序列使用[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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:57:02