学习如何基于 ATR 设计交易系统(基础篇)
◍ 用 ATR 给止损和仓位定尺子
ATR(平均真实波幅)衡量的是市场在给定周期内的平均移动距离,本身不带方向,只描述波动的粗度。在 MT5 里把它接进 EA,最实在的用处是让止损距离跟着品种脾气走,而不是拍脑袋写死 30 点。 以日线 EURUSD 为例,近一年 ATR(14) 多数时间在 60~90 点之间晃,遇到利率决议周会瞬间冲到 130 点以上。若止损固定 50 点,在平静期容易被噪音扫掉,在暴动期又根本包不住风险。 把止损写成 ATR 的倍数,等于给订单套了一层自适应外壳。下面这段 MQL5 取当前品种日线 ATR,并算出 2 倍 ATR 的止损距离,可直接塞进 OrderSend 前的风控判断。外汇与贵金属杠杆高,波动放大时爆仓概率陡增,任何基于 ATR 的尺子都只是概率工具,不保证不被扫。
class="type">class="kw">double atr = iATR(_Symbol, PERIOD_D1, class="num">14, class="num">0); class="type">class="kw">double stop_loss = atr * class="num">2; class=class="str">"cmt">// 2倍日线ATR作为止损距离
「把波动性当作决策地基」
波动性是所有交易决策里最容易被忽略、却最该先量化的底层变量。ATR(平均真实范围)是测量它的常用技术指标之一,搞清楚波动怎么传导,你的入场与止损间距设置才可能脱离拍脑袋。 这篇内容会沿一条实操链走:先在 MetaEditor 里写 MQL5 代码,再拆 ATR 的定义与计算公式,接着给几套基于 ATR 的简易策略、画策略蓝图,最后把策略落成能在 MT5 跑的交易系统。学根源、不背结论,是本系列一贯的写法。 打开 MetaEditor 有三种方式:在 MT5 终端直接按 F4;点终端界面的 IDE 按钮;或者走「工具菜单 → MetaQuotes 语言编辑器」。平台没装的话,去 metatrader5.com/zh/download 下客户端即可,编辑器是内置的,不用单独装。 外汇与贵金属属高风险品种,杠杆会放大波动带来的回撤。本文所有内容仅作教学拆解,实盘用任何参数组合都需你自己验证并自担风险。
ATR 只量波动不判方向
平均真实范围(ATR)由 Welles Wilder 提出,核心用途是度量某周期内的价格活动幅度,而非指示涨跌。它取真实范围(TR)的平滑均值,TR 为以下三者的最大值:当根 K 线最高减最低、当根最高减前收的绝对值、当根最低减前收的绝对值。
| 用 2022 年 3 月 17 日至 4 月 27 日 EURUSD 日线数据可手算验证:例如 3 月 18 日高 1.112、低 1.1003、前收 1.1089,TR = max(0.0117, | 1.112-1.1089 | , | 1.1003-1.1089 | ) = 0.0117。连续 14 根这样的 TR 取平均,即为默认的 14 周期 ATR。外汇与贵金属属高风险品种,波动突变频繁,ATR 数值本身不预示价格走向。 |
|---|
MT5 内加载路径:插入 → 指标 → 振荡器 → 平均真实范围。周期参数可按品种与时间帧调整,周期越长均值越平滑、读数越稳,但滞后也越明显。下层副图那条振荡线,就是对应周期的波动度量。 ATR 曲线向上不代表趋势向上,向下也不代表趋势向下。实测图表中常出现价格下跌时 ATR 抬升、价格上涨时 ATR 回落,因为它只统计范围大小。若要判势,须配合 ADX 等方向类工具;ATR 的真正价值在估算仓位规模与止损距离,而非生成入场信号。
◍ 用 ATR 划出波动强弱与止损带
ATR 只度量波动幅度,不指示方向。把当前 ATR 数值与两个阈值对照,就能快速分辨市场处于何种波动状态:大于 0.0024 视为偏强,小于 0.0014 视为偏弱,介于两者之间则按中性处理、直接回传当前值。这两个阈值并非通用常数,换品种或换周期时要重新标定,外汇与贵金属尤其敏感,高杠杆下误判波动档位可能放大回撤风险。 走势判定只看相邻两根 ATR:当前值高于前一根,视为向上;低于前一根,视为向下。它和强弱档位是两个独立维度,一个说「有多大波动」,一个说「波动在扩张还是收缩」。 止损止盈用当前 ATR 动态推算。做多时取当前要价、出价及 ADX,按多头公式得出止损与止盈;做空同理,只是公式方向相反。这样仓位空间随行情波动自动伸缩,比固定点数更贴合盘面。 打开 MT5 选 EURUSD 的 M15,把 ATR(14) 调出来,人工记一周的强弱穿越次数,验证 0.0014 / 0.0024 这两个档位在你的 broker 点差下是否还管用。