ATR(平均真实波幅)是如何计算的

了解 ATR 公式的输入值及其关键局限性。

ATR(平均真实波幅)是如何计算的

在计算 ATR 之前,先理解其含义

ATR 是 平均真实波幅(Average True Range) 的缩写。它是一种基于 真实波幅(True Range, TR) 概念构建的 波动性指标,旨在捕捉一个周期内价格的波动幅度,包括与前一周期收盘价之间的潜在 缺口(gaps)

ATR 不是预测工具,也不是方向性信号。它仅总结 近期已实现的价格波动性。当市场环境变化时,相同的 ATR 水平可能对应着不同的市场状态。

核心公式(TR 与 ATR)

大多数 ATR 的计算遵循以下结构:

  1. 计算每个周期的真实波幅(TR)
    对于给定周期 t,TR 是以下三个数值中的最大值:
  • 区间范围:(High_t - Low_t)
  • 相对于前收盘的上涨缺口:( |High_t - Close_{t-1}| )
  • 相对于前收盘的下跌缺口:( |Low_t - Close_{t-1}| )

因此: [ TR_t = \max\big((High_t - Low_t),\ |High_t - Close_{t-1}|,\ |Low_t - Close_{t-1}|\big) ]

  1. 在回溯窗口内对 TR 取平均,得到 ATR
    设回溯周期长度为 N 个周期。该周期内的 ATR 可通过以下平均值计算: [ ATR_t = \frac{1}{N} \sum_{i=0}^{N-1} TR_{t-i} ]

某些系统也使用 平滑/近期加权 方法计算 ATR,但其核心数据依赖关系相同:即基于 最高价、最低价前一周期收盘价 计算出的 TR 值。

所需输入与假设

要计算 ATR,你需要一致的 周期性 OHLC 数据(开盘价、最高价、最低价、收盘价),或至少需要连续周期的 最高价、最低价收盘价

必需参数

  • 时间周期/周期定义(例如日线、1 小时线)。ATR 的数值取决于“一个周期”所代表的时间长度。
  • 回溯周期长度 N(例如实践中常用 14 个周期,但计算本身只要求选定某个 N 值)。
  • 对齐 Close_{t-1} 的方法:必须确保前一周期的收盘价来自数据集中紧邻的前一个周期。

计算时必须明确的假设

  • 你的 OHLC 价格基于同一交易品种和相同的交易时段规则。
  • 你使用的四舍五入/精度规则与对比系统一致。
  • 需谨慎处理首个周期:计算第一个 TR 值需要 Close_{t-1},因此若无前一周期收盘价,则无法计算 TR。

简单计算示例(含明确假设)

假设你在周期 t 计算 TR,并使用前一周期 t−1 的数据。

假设:

  • 前一周期收盘价 (Close_{t-1} = 1.1000)
  • 当前周期最高价 (High_t = 1.1080)
  • 当前周期最低价 (Low_t = 1.1020)

计算三个候选值:

  • (High_t - Low_t = 1.1080 - 1.1020 = 0.0060)
  • (|High_t - Close_{t-1}| = |1.1080 - 1.1000| = 0.0080)
  • (|Low_t - Close_{t-1}| = |1.1020 - 1.1000| = 0.0020)

则: [ TR_t = \max(0.0060, 0.0080, 0.0020) = 0.0080 ]

若你的回溯周期为 N = 3,则需对 (TR_t)、(TR_{t-1}) 和 (TR_{t-2}) 取平均,以得到时间 t 的 ATR。

局限性与常见错误

  1. ATR 衡量的是波动幅度,而非方向
    ATR 无法告诉你价格是上涨还是下跌。两个周期可能具有相同的 ATR,但其价格走势和结构完全不同。

  2. ATR 高度依赖所选时间周期
    改变周期长度(例如使用 1 小时线而非日线)会改变 TR 序列,从而改变 ATR。若不进行调整,无法在不同时间周期之间直接比较 ATR 值。

  3. 回溯周期长度影响“响应速度”
    较短的 N 值对 TR 的近期变化反应更快,而较长的 N 值则会平滑波动。若用 ATR 进行比较,必须确保“同类可比”:即相同时间周期、相同 N 值、相同 TR 定义。

  4. 数据质量与交易时段对齐可能扭曲 TR
    由于 TR 使用最高价、最低价和前一周期收盘价,若 K 线构造不一致(如缺失周期、节假日缺口、不同交易时段截断),可能导致人为缺口,从而夸大 TR。

  5. 历史 ATR 水平不能保证未来行为
    即使 ATR 过去呈现上升或下降趋势,也不能保证未来会重复相同模式。ATR 反映的是近期已实现的波动性,而非结构性规律。

如何独立验证 ATR

要验证你的 ATR 计算结果,可使用相同的 OHLC 输入数据独立复现:

  1. 选择特定时间周期和回溯长度 N
  2. 对每个周期,严格按照三个候选值的最大值计算 (TR_t)。
  3. 对最近 N 个 TR 值取平均(或使用参考平台所用的相同平滑方法)。
  4. 确认边界处理:首个需要 Close_{t-1} 的 TR 值,以及首个需要足够 TR 观测值的 ATR 值。

若你计算的 ATR 与某工具结果不一致,最常见的原因是:时间周期不匹配、N 值不同、TR 定义变体(罕见但可能),或平滑/初始化方式不同。

一个值得思考的后续问题

在比较不同来源的 ATR 时,请问:两者是否使用了相同的时间周期、相同的回溯长度,以及相同的平滑方法(如有)?

外汇和差价合约交易具有重大风险。FoxiForex的信息仅用于教育,不构成个人财务建议。赞助内容会被清楚标注。