只有理解ATR测量的对象,读数才有用。平台上看似很小的数值,换算成pips后可能代表不可忽视的距离;ATR曲线上升时,价格既可能上涨,也可能下跌。本指南先将显示的数字转化为可复算的测量结果,再讨论将其纳入交易规则之前需要知道的事项。
本指南聚焦ATR的构成与解读:真实波幅、平均方法、单位和观测时间,不提供入场系统或通用的止损倍数。动量指标指南讨论有方向的价格变化;ATR则只概括波动幅度,不负责选择BUY或SELL。
1. 将波动率理解为幅度,而非方向
平均真实波幅(Average True Range,ATR)是逐根K线真实波幅的平均值,其单位与原始报价的价格单位相同。它本身不是百分比、pips数量、成交量,也不是收益率标准差的年化值。
在所选输入数据和平均方法下,ATR越高,表示测得的波幅越大。这不能证明方向性趋势更强、即将反转或交易机会更好。价格大幅而无序地震荡时,即使某一方向的走势难以延续,ATR也可能升高。
ATR是使用已观测价格的描述性指标。12 pips的读数既不保证下一根K线会移动这么远,也不是其波幅上限。在某个价格上下一个ATR距离处画出的带状区间,也不是经过校准的概率区间。
2. 计算真实波幅时纳入前收盘价
对于已收盘的K线t,令H和L分别为其Bid最高价和最低价,Cprev为前一根有效K线的Bid收盘价。定义为TR = max(H − L, abs(H − Cprev), abs(L − Cprev))。取绝对值可以避免带符号的跳空价差被当作负距离。
对于有效OHLC,等价公式是TR = max(H, Cprev) − min(L, Cprev)。若前收盘价位于当前最高价与最低价之间,TR就等于H − L。若在区间之外,TR还会涵盖跳空及当前波幅的相应部分;并不是把前一根K线的全部波幅加进来。
因此,向上与向下跳空可能产生相同的TR。将一条保持正价格的路径围绕固定价位上下镜像翻转,其方向反转,但各段波幅不变。用这些波幅计算的ATR也不变。仅凭幅度,无法恢复已经舍去的方向信息。
3. 明确平均方法与初始值
滚动简单平均为ATR_SMA(t) = Σ TR(t−j) / n, j = 0…n−1。它对最近n个真实波幅赋予相同权重。窗口向前移动后,最早的值会完全退出。高效的更新公式为ATR_SMA(t) = ATR_SMA(t−1) + (TR(t) − TR(t−n)) / n。
按照本文采用的Wilder约定,先以最初n个有效TR的算术平均值初始化ATR,再使用ATR_W(t) = ((n−1) × ATR_W(t−1) + TR(t)) / n。该递归平均给予最新值的权重为1/n。旧观测值的影响逐渐衰减,而不会在固定边界突然消失。
这些公式的初始值相同,但后续数值不一定相同。常规EMA使用的权重2/(n+1)又有所不同。因此,仅说明“ATR”和周期还不足以复现结果,必须交代平滑方式、初始化方法以及可用历史数据。增加小数位数无法弥补算法差异。
4. 将测量条件与MT4环境对齐
在MT4中,记录经纪商的完整品种名称、图表时间周期、指标实现和计算周期。文档中的调用iATR(_Symbol, PERIOD_H1, 14, 1)请求该品种在偏移1处的H1 ATR。其参数中没有平滑方式或应用价格的选择项。
不要仅因为周期一致,就认定终端ATR与手算的Wilder序列相同。先对齐输入K线、初始值和历史数据,再比较实际已收盘K线的数值。自定义指标可能采用其他算法。本文比较的是两种明确给出的公式,并不声称已经验证某个运行中终端的输出。
用一小段重建数据核对平台的数据窗口,并保留指标或EA版本。ATR使用最高价、最低价和前收盘价,并非只对Close计算移动平均。交易品种规格指南解释了经纪商品种后缀和价格增量为何同样重要。
5. 复算一组完整的虚构H1数据
表格提供虚构EURUSD Bid K线,并按同一个假定服务器时钟下的收盘时间标记。此前00:00的收盘价为1.10000。为方便展示计算过程,取n = 3;这是教学选择,并非推荐的交易参数。跳空是示例中设定的价格跳跃,不是缺失的数据行。
| H1收盘时间 | Bid开盘价 | Bid最高价 | Bid最低价 | Bid收盘价 | TR,pips | Wilder(3),pips | SMA(3),pips |
|---|---|---|---|---|---|---|---|
01:00 | 1.10000 | 1.10080 | 1.09980 | 1.10040 | 10 | — | — |
02:00 | 1.10040 | 1.10100 | 1.10020 | 1.10070 | 8 | — | — |
03:00 | 1.10070 | 1.10120 | 1.10050 | 1.10100 | 7 | 8.333333 | 8.333333 |
04:00 | 1.10200 | 1.10300 | 1.10180 | 1.10240 | 20 | 12.222222 | 11.666667 |
05:00 | 1.10240 | 1.10280 | 1.10200 | 1.10220 | 8 | 10.814815 | 11.666667 |
06:00 | 1.10220 | 1.10260 | 1.10180 | 1.10200 | 8 | 9.876543 | 12.000000 |
07:00 | 1.10080 | 1.10100 | 1.10000 | 1.10040 | 20 | 13.251029 | 12.000000 |
08:00 | 1.10040 | 1.10120 | 1.10020 | 1.10080 | 10 | 12.167353 | 12.666667 |
09:00 | 1.10080 | 1.10140 | 1.10060 | 1.10100 | 8 | 10.778235 | 12.666667 |
10:00 | 1.10100 | 1.10160 | 1.10080 | 1.10120 | 8 | 9.852157 | 8.666667 |
最初的真实波幅依次为10、8和7 pips。两种平均值均在03:00收盘时首次可得:(10 + 8 + 7) / 3 = 8.333333 pips。更早的ATR尚不可得,并不是零。各步骤之间保留完整精度,仅将展示的平均值四舍五入到小数点后6位。
在04:00,H − L为12 pips,但最高价比前收盘价高20 pips,因此TR为20。下一个Wilder值为((2 × 8.333333…) + 20) / 3 = 12.222222…,滚动SMA为(8 + 7 + 20) / 3 = 11.666667… pips。省略号表示保留的后续精度,并非使用了经过四舍五入的中间输入。
在07:00,前收盘价1.10200高于新K线的最高价1.10100,最低价为1.10000。即使K线波幅为10 pips,TR也达到20 pips。两个方向的跳空都会扩大测量结果。本例不模拟下单、成交或交易收益,序列到表中最后一根K线为止。
6. 解读变化,但不要凭空赋予交易信号
在此示例中,新K线波幅较小时,ATR仍可能处于较高水平,因为之前的大波幅还留在计算中。反过来,SMA下降也可能部分源于早先的一个大数值退出窗口。在把每一次变化都归因于新的市场事件之前,应先查看当前TR及平均规则。
ATR低不意味着突破即将发生,ATR高也不代表反转迫在眉睫。任何阈值都应针对明确的品种、时间周期和样本解读。布林带收窄策略采用不同的波动率构造,并单独定义价格确认条件;无论哪一种测量,都不能保证后续走势延续。
7. 区分计算周期、时间周期和观测时间
周期14是K线数量参数,并不自动等于十四天。在H1上对应小时K线,在D1上对应日K线。滚动SMA使用有限窗口,而Wilder平均仍保留更早K线逐渐衰减的影响,范围不局限于这个数量。
分析已收盘K线时,须等待K线结束且所需数据就绪。在刚过10:00时,标为10:00收盘的K线开盘于09:00,位于偏移1;10:00–11:00这根仍在形成中,位于偏移0。偏移编号会随时间变化,不是稳定的标识,因此还应存储开盘时间戳。
服务器时区、每日分界和交易时段都会改变tick聚合成K线的方式。不能简单地将H1 ATR乘以4来与H4比较,因为聚合会改变最高价、最低价和跳空的位置。计划内休市与意外数据缺口也不同;重新开市后的K线合理地引用最后一次交易的收盘价,并不异常。
8. 明确将价格单位换算为pips和报价点
使用ATR_pips = ATR_price / pip_size和ATR_points = ATR_price / Point。在本文规定的EURUSD小数点后5位报价中,一个pip为0.00010,Point为0.00001。ATR 0.00120表示12 pips或120个报价点,两者的数量并不相同。
在本文规定的USDJPY小数点后3位报价中,一个pip为0.010,Point为0.001。ATR 0.120同样表示12 pips或120个报价点。这些是单位示例,并非当前报价。未查看合约规格前,不要将外汇pip惯例套用于黄金、指数或其他合约。
指标显示可能把有用的精度舍去。应从底层数值计算,并保留单位。换算成pips仍不能得到货币金额风险:合约规模、最小变动价位、每跳价值及账户货币是独立输入。EA的距离参数也可能要求pips、报价点或价格差,需要查看其文档规定的单位。
9. 正确理解成本比较与归一化
相对于ATR 0.00120,点差0.00012占该ATR的10%,即1.2 pips对12 pips。这是描述性的成本比较,不是入场阈值。基于Bid的ATR不包含Ask一侧、佣金、融资费用及实际成交滑点;比值较小也不证明存在盈利机会。交易成本指南分别解释这些费用。
明确使用100 × ATR / Close进行归一化,可将ATR表示为正价格的百分比。ATR为0.00120、Close为1.10200时,结果为0.108893%。这有助于区分距离与价格尺度,但不会让流动性、合约风险或时间周期变得相同。止损倍数是另一条规则,并非ATR自身的一部分;风险管理指南解释了为什么必须同时考虑距离与交易量。
10. 区分缺失观测与有效零值
本例要求有效且为正的OHLC以及前收盘价。取得n个连续有效的真实波幅之前,ATR不可得。真正没有波动的序列可能使TR和ATR都等于0;这是有效测量,却不是可用作除数的风险距离。不要除以零ATR,也不要凭空指定一个替代的pip值。
若所需观测意外缺失,本教学计算会清除平均状态,等待一段新的连续序列,并要求已知其前收盘价。它不会跨过缺口继续计算,也不会填入零值。采用其他缺失数据处理政策的实现,属于不同规格,需要明确比较。
应拒绝异常K线,例如最高价低于最低价,或开盘价、收盘价位于本根K线区间之外。前收盘价处于当前区间之外则是允许的,跳空示例正是如此。还应区分“尚无tick”、历史不完整和真实的指标零值,不要把每个返回的零都当作市场平静的证据。
对于EA,记录完整品种名、时间周期、K线开盘时间、计算周期、平滑约定、价格单位的ATR及换算后的距离。使用已收盘K线读数前,必须确保数据就绪。指标观测、订单请求和已确认持仓是不同状态。
11. 先验证读数,再评价方法
先复算一小段序列,核对初始值、向上与向下跳空、平盘、不合格OHLC、历史缺失及单位换算。每次只推进一根已收盘K线。在数据和初始化不变的情况下,追加后面的K线不应改变此前计算的结果。
然后使用相同报价源和历史数据,与计划使用的终端实现比较。差异可能来自平滑、初始值、报价侧、聚合方式、缺失值处理或四舍五入,并不自动意味着经纪商出错或指标发生重绘。更改交易规则前,先保存观测日志。
如果将ATR纳入交易模型,应另行定义入场、失效条件、退出、成本和敞口。保留试过的变体及后续评估数据,再对新增观测进行前向测试。MT4回测指南解释了更完整的流程。指标公式吻合,既不能证明具有交易优势,也不能证明实盘成交可靠。
12. ATR常见问题
ATR上升是否意味着应该买入?
不是。向上或向下的价格跳跃都可能增大真实波幅和ATR。判断方向需要独立的价格或指标规则,仅凭波动幅度无法选择BUY或SELL。
ATR为12 pips能否预测下一根K线的波幅?
不能。它只是按选定的平均方法概括波幅。下一根K线的波幅可能小得多,也可能大得多。ATR不提供保证的移动距离,也不提供概率边界。
相同周期下,Wilder ATR与SMA ATR为何不同?
它们对历史数据的权重不同。在本例中,最初的均值一致;此后Wilder保留逐渐衰减的影响,而SMA在窗口推进时剔除最早的值。不同初始值或历史数据还可能带来额外差异。
为什么我的MT4数值与示例不同?
检查完整品种名、时间周期、输入K线、平均实现、初始值及预热历史,然后在同一根已收盘K线上比较未舍入的数值。本指南的虚构算例不是经验证的、对您终端结果的复现。
14是否始终是最好的ATR周期?
不是。常见默认值并不意味着它对每个货币对、时间周期或规则都经过优化。短周期与长周期的反应不同;交易上的价值必须放在一套完整且单独经过测试的方法中评估。
ATR为零可能是正常情况吗?
可能。所需观测齐全,而且按所选公式计算波幅得零时,ATR可以为零。但软件中的数据缺失或未初始化缓冲区也可能显示为零,因此必须检查数据是否就绪。零读数不能作为除数。
13. 技术参考与适用范围
官方MetaTrader 4 ATR参考文档介绍了真实波幅及其平均计算。本指南明确给出Wilder与SMA的递推式,以及虚构算例的初始化方法,方便读者复算,而不必假定所有平台都采用同一约定。
外汇及杠杆交易具有重大风险。本指南仅用于教育,不构成投资建议。过去的结果或模拟结果不保证未来表现。