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

如何在PineScript中计算外部证券的ATR指标数值

PineScript计算外部标的ATR的实现方法

你可以通过两种方式实现外部标的的ATR计算,两种方案的计算结果均与内置ATR在对应标的图表上的输出完全一致:

方案1:直接在request.security()中调用内置ATR(推荐)

request.security()函数的第三个参数支持传入任意计算表达式,直接将ta.atr()作为该参数传入,函数会自动基于外部标的的OHLC数据完成ATR计算,无需额外处理:

//@version=5
indicator("外部标的ATR示例", overlay=false)

// 自定义参数:外部标的代码、计算周期、ATR长度
ex_ticker = "SPX"
ex_timeframe = timeframe.period
atr_length = 14

// 直接拉取外部标的的ATR值
ex_atr = request.security(ex_ticker, ex_timeframe, ta.atr(atr_length))

plot(ex_atr, title="SPX 14周期ATR", color=color.new(color.blue, 0))

方案2:手动拉取OHLC复现ATR计算逻辑

如果你需要自定义ATR的平滑逻辑,可以先拉取外部标的的OHLC数据,再按照ATR的标准计算逻辑手动实现:
ATR的标准计算规则:

  • 先计算真实波幅TR:TR = max(当期最高-当期最低, abs(当期最高-上期收盘), abs(当期最低-上期收盘))
  • 对TR序列做RMA(相对移动平均)平滑,平滑周期即为ATR的长度参数

代码示例:

//@version=5
indicator("手动计算外部标的ATR示例", overlay=false)

ex_ticker = "SPX"
ex_timeframe = timeframe.period
atr_length = 14

// 拉取外部标的的OHLC数据
[ex_high, ex_low, ex_close] = request.security(ex_ticker, ex_timeframe, [high, low, close])

// 手动计算TR
ex_tr = math.max(ex_high - ex_low, math.abs(ex_high - ex_close[1]), math.abs(ex_low - ex_close[1]))
// 用RMA平滑得到ATR,和内置ATR逻辑完全对齐
ex_atr = ta.rma(ex_tr, atr_length)

plot(ex_atr, title="手动计算SPX 14周期ATR", color=color.new(color.red, 0))

注意事项

  • 不要给request.security()添加barmerge.lookahead_on参数,避免引入未来函数导致回测结果失真
  • 外部标的的计算周期可自定义,例如在日线图表上计算周线级别的指数ATR,只需将ex_timeframe参数改为"W"即可

内容的提问来源于stack exchange,提问作者Abhay Sahu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:24:04