均值回归
均值回归 EA 在价格偏离其均值达到可测量的距离后逆势入场,目标是价格回归。这个标签只描述入场。本站公开的六只当中,胜率从 40.26 % 到 79.17 %,盈亏比相差六倍,可六只的盈利因子却都落在 1.25 到 1.50 之间。
机制
EA 测量价格相对移动平均线或布林中轨偏离了多远,通常以标准差或 ATR 单位计量,再用处于极端区域的振荡指标确认这次拉伸。入场逆着行情方向;目标是均值本身,止损设在会推翻回归假设的水平之外。真正决定成绩单形状的,是这两个离场之间的距离。目标贴近入场会带来高胜率和远低于 1 的盈亏比;目标放在完整均值处则相反。本站公开的六只均值回归 EA 每月交易 1.5 到 5.45 次,中位盈利单持仓 48 到 187 小时。
适配性
最适合那些大部分时间待在区间内、并会回到可定义中枢的品种——历史上是瑞郎交叉盘。不过本站公开的均值回归 EA 实际跑在 AUD/CAD、USD/JPY、GBP/AUD、GBP/JPY 和 EUR/GBP 上。在趋势阶段的动量货币上结构性地不适用:拉伸会继续拉伸,逆势仓位被迫扛着一段不会回头的行情。ADX 低于 25 这类趋势过滤几乎是必备。适合能够接受长连亏的交易者——这些记录中最糟的是连续十一笔亏损——并且会先看止损距离、再看胜率。
备注
均值回归押的是弹性而不是动量:一个被拉离均值很远的价格,弹回来的可能性大于继续拉伸。EA 会等待一个统计上显著的偏离——通常是相对移动平均线或布林中轨的 1.5 到 2.5 个标准差。它用处于极端区域的振荡指标确认这次拉伸,随后逆着行情入场,目标就是均值本身。
这描述的是入场,而入场正是买家能看懂的那部分。通常被硬安在它头上的那句描述——均值回归系统赢下大多数交易,偶尔亏一笔大的——是一个关于数字的主张,而不是关于机制的主张。这意味着它可以被检验,而不是被复述。拿我们自己的数据、也就是本站公开的六只均值回归 EA 去检验,这句话在其中两只身上成立。本页讲的是这台机器在 MetaTrader 5 里如何搭建、那些记录关于结果形状说明了什么,以及在投入资金之前如何对它做压力测试。
运作方式:入场是一段距离,离场才是成绩单
入场这一侧是一次测量,而三种常见构造几乎可以互换:
- 相对移动平均线的偏离。 价格距离某条均线达到设定数量的 ATR 单位或标准差,被当作”这段行情已经过度延展”的陈述。便宜,而且整套策略一行写完。
- 触及布林带或收盘于带外。 同一个想法,只是偏离已经替你算好。收盘于带外比触及更严格,它改变交易笔数的幅度大于改变胜率的幅度。
- 带有状态过滤的振荡指标极值。 RSI 或随机指标越过阈值,并以足够低的 ADX 读数为条件,用来说明市场并不处于趋势。这个过滤器就是”均值回归 EA”与”一路对抗趋势直到被全部止损出局的 EA”之间的差别。
成绩单真正成形的地方是离场,而离场有两个:位于均值或均值附近的目标,以及位于推翻假设的水平之外的止损。每笔交易的期望值是 胜率 × 平均盈利 − (1 − 胜率) × 平均亏损。这是算术,不是发现——但有用的推论是:一旦两个离场距离被固定,这两项就不再彼此独立。把目标拉近入场,多数交易会在噪音把它们震出去之前触及目标:胜率上升,平均盈利缩到平均亏损之下。把目标推到完整均值处,能走完全程的交易变少:胜率下降,盈亏比升到 1 以上。
两者都是均值回归;两者都在逆着一次拉伸入场。它们却给出看起来像两种不同策略的成绩单,下面的数字就是这件事在现实中的样子。
公开的均值回归记录说明了什么
表中每一个数字都来自各 EA 页面上公开的已平仓交易清单——合计 1,994 笔,来自始于 2019 年、延续到 2026 年 3 月的记录。完整的回测运行、参数与测试条件公布在本站的方法论页面。
| EA | 品种 / 周期 | 交易数 | 胜率 | 盈亏比(平均盈利 ÷ 平均亏损) | 盈利因子 | 中位持仓,盈利 ÷ 亏损 | 最长连亏 |
|---|---|---|---|---|---|---|---|
| Beacon | AUD/CAD M15 | 384 | 79.17 % | 0.32 | 1.25 | 0.41× | 3 |
| Ballast | EUR/GBP H1 | 307 | 78.50 % | 0.37 | 1.40 | 0.49× | 3 |
| Lanternfish | USD/JPY M5 | 407 | 62.65 % | 0.75 | 1.29 | 2.91× | 3 |
| Windrose | AUD/CAD H1 | 101 | 59.41 % | 0.90 | 1.31 | 0.56× | 4 |
| Lattice Weave | GBP/AUD H1 | 492 | 46.34 % | 1.74 | 1.50 | 2.66× | 11 |
| Tidewell Slack | GBP/JPY M15 | 303 | 40.26 % | 2.00 | 1.35 | 1.62× | 10 |
由此得出四点,而坊间说法一点都没预测到。
高胜率不是这套策略的属性。 六只横跨 40.26 % 到 79.17 %,没有一只落在这套策略惯常被推销时所用的 65-75 % 区间。它们的中位数 61.03 %,高于本站公开的趋势跟踪 EA 的中位数(55.90 %)。无论是什么把均值回归 EA 与趋势 EA 区分开来,它都没有出现在多数买家用来排序的那一列里。
胜率和盈亏比是同一个旋钮的两头读数。 把六只按胜率排序,盈亏比会自己排成完全相反的顺序。79.17 % 的胜率配 0.32 的盈亏比,接着 78.50 % 配 0.37,62.65 % 配 0.75,59.41 % 配 0.90,46.34 % 配 1.74,40.26 % 配 2.00。六中有六,没有例外。这不是关于市场的发现。这是目标相对止损移动时必然发生的事——也是为什么一个不带盈亏比的胜率几乎不携带任何信息。
这个旋钮拧不动的是盈利因子。 盈亏比在组内相差六倍。而盈利因子是 1.25、1.29、1.31、1.35、1.40 和 1.50——整组都在 0.25 的跨度之内。而且六只里最高的那个胜率依然产生最低的那个盈利因子,其余的排序则毫无规律。把目标放近,买到的是一份看起来更平滑的成绩单,代价付在盈利尺寸上;放远则相反;两者都没有变成一条实质上更好的规则。
回归是盈利单慢慢完成的事。 这套策略被描述为快速止盈、扛住亏损,那样的话中位盈利持仓时间应当短于亏损持仓时间。这在六只里对三只成立。Beacon 持有盈利单的时间是亏损单的 0.41×,Ballast 是 0.49×,Windrose 是 0.56×,与宣传相符。另外三只把盈利单多持有了 1.62× 到 2.91×,组内中位数是 1.09×,而趋势组是 1.10×——只有六份记录时,两组在这条轴上无法区分,而持有盈利单更久的那一半,正是把目标放在完整均值处的那一半。
市场条件:均值回归什么时候有回报,什么时候没有
| 条件 | 有利于均值回归 EA | 不利于均值回归 EA |
|---|---|---|
| 市场状态 | 有可定义中枢、价格会回来的区间 | 不断延展的方向性行情 |
| 波动率 | 高但无方向——K 线宽阔,净位移为零 | 扩张并且朝一个方向持续跟进 |
| 拉伸本身 | 由会耗尽的流量造成——清淡时段、过度反应 | 由重新定价该品种的信息造成 |
| 交易频率 | 有足够多的区间触碰来采样这个优势 | 趋势月份,有效信号寥寥且个个做错 |
| 持仓成本 | 回归很快,融资成本无关紧要 | 仓位逆着行情扛了好几天,为犯错支付隔夜利息 |
糟糕的环境不是下跌的市场,而是有方向的市场,这正是趋势跟踪在区间里失效方式的精确镜像。这种对称性,才是把两者放在一起看而不是当作替代品的诚实理由:它们在不同的天气里亏钱。这也是连亏为什么会扎堆的原因。连续十一笔亏损不是十一个互不相干的错误;那是同一条规则十一次撞上同一段趋势行情。
造成偏离的原因,和偏离的幅度同样重要。在清淡时段被稀薄流动性拉开的价格,是回归的候选。被利率决议拉开的价格已经被重新定价,不存在可以回去的旧均值。没有任何指标能区分这两种情况,这就是为什么新闻过滤在这里比在顺势入场的策略里更重要。
同样的弹性假设也驱动着统计套利:它交易两个相关品种之间的价差,而不是单一品种相对自身均值的偏离。假设完全相同——只是被用在一种关系而不是一个价格上——失效方式也一样:关系一旦不再成立,它就恰好在那一刻崩掉。在 EUR/GBP 这样的单一品种上,被假定的关系就是该品种自身历史与其均值之间的关系。
MT5 中的参数与设置
| 输入项 | 常见起点 | 它控制什么 |
|---|---|---|
MA_Period / BB_Period | 长到让均值成为一个价位,而不是价格的滞后副本 | EA 把什么当作价格应当回归的那个值 |
Deviation(σ 或 ATR 倍数) | 1.5–2.5σ,或按波动率缩放的等价值 | 价格要拉伸多远入场才成立——控制交易笔数的旋钮 |
RSI_Period / 阈值 | 仅作确认,不单独充当扳机 | 过滤掉仍在加速的拉伸 |
ADX_Max | 25 左右,要测试而不是假定 | 抑制趋势中的入场——本页最重要的一个输入 |
TakeProfit(到均值的距离) | 均值本身,或到均值距离的一部分 | 与止损一起决定胜率和盈亏比 |
StopLoss | 位于会推翻回归的水平之外 | 均值回归与意外马丁格尔之间的分界线 |
MaxSpreadPoints | 略高于该品种的正常点差 | 极端与宽点差总是结伴而来;这一项挡掉最差的成交 |
OncePerBar | 收盘逻辑请设为 true | 防止一根拉长的 K 线反复触发同一个信号 |
有三条 MT5 特有的现实,决定一份漂亮的回测能否在实盘接触中活下来:
- 止损有最小距离,而这套策略本来就想要一个宽止损。 读取
SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL)并据此夹住;对靠近现价的改单,同样处理SYMBOL_TRADE_FREEZE_LEVEL。一个被经纪商悄悄拒绝的止损,会把一笔风险确定的交易变成一笔敞口无限的交易。 - 点差恰好在这套策略入场的地方变宽。 它所对抗的那些极端,往往出现在流动性清淡的条件下。用平均点差跑出来的测试,会高估一只入场集中在点差最差时段的 EA 的优势。请用贴近实际的点差或真实 Tick 测试,并且先读建模质量再读利润。
- 持仓时间比这套策略的名声所暗示的更长。 这些记录里的中位盈利单持有 48 到 187 小时。这让
SYMBOL_SWAP_LONG和SYMBOL_SWAP_SHORT成为一项真实成本而不是舍入误差,而三倍隔夜息的日子各家经纪商并不相同。
- 固定入场距离和过滤器,然后别再动它们——你即将测量的成绩单主要由两个离场造就,一次改动全部只会让你什么也学不到。
- 用近目标和完整均值目标分别测试同一个入场,并记下各自的胜率、盈亏比和盈利因子。那个对比才是你真正在做的选择。
- 从推翻假设的那个水平去设止损,而不是从一个整数出发,并夹到该品种的最小止损距离。
- 在同一段时间内,把 ADX 或状态过滤器开着跑一遍、关着跑一遍。如果差别不大,说明测试期内没有真正的趋势,那份结果是未经检验,而不是稳健。
- 读一读所得成绩单里的最长连亏,并在投入任何资金之前决定:两倍长的连亏你坐得住吗。
失效模式:均值回归 EA 是怎么亏钱的
- 拉伸继续拉伸。 这套策略亏钱的常规方式。每一次入场都逆着一段不会回头的行情,而由于规则会反复重新满足条件,亏损是成块到来的。表中那串十一笔亏损就是这种失效模式,不是 EA 坏了。
- 均值搬了家。 被重新定价的品种有了新的均值,旧的那个不再是一个价位。EA 仍在测量到一个已经不再有意义的数字的距离。
- 为了躲开亏损而撤掉止损。 把止损放宽,或者用摊低成本取而代之,会把一套风险确定的策略变成一个带着好故事的网格。资金曲线立刻好看起来,尾部风险则变成无限。
- 把胜率当成安全边际。 在 79 % 胜率、平均亏损为平均盈利三倍的结构下,只有命中率维持住,这套策略才有偿付能力。
- 在错误的 K 线上测量成本。 入场集中在点差最宽的极端处,跨越多日的持仓要付隔夜利息。两者在一份设定了固定平均点差、且不计融资成本的测试里都是看不见的。
- 参数被拟合到一段区间样本上。 在没有趋势的时期里优化出来的偏离阈值,到了下一个时期就是错的。相邻取值给出差异巨大的结果,正是这个数字是被拟合出来、而非被选择出来的迹象。
如何在 mt5depot 搭建并压力测试一只均值回归 EA
要组装上面描述的这台机器,你并不需要写 MQL5。一个偏离度量、一个振荡指标确认、一道 ADX 闸门、一个位于均值的目标、一个位于极端之外的止损,全都是无代码构建器里的模块。自己动手搭的理由在于:真正要紧的测试不是”它赚不赚钱”,而是在同一条入场规则上比较两种目标摆放,而没有任何卖家页面会替你跑这个对比。
- 用近目标和均值目标各测一次同一个入场,比较胜率、盈亏比和盈利因子,而不是只比净利润。
- 加入趋势过滤器,并在关闭过滤器的情况下也测一遍成绩单,这样你才知道它究竟在做什么。
- 从证伪水平去设止损,并夹到该品种的最小距离,好让测试器和实盘账户对得上。
- 用真实 Tick 历史配合贴近实际的点差来测试,因为入场集中在点差最宽的地方;并且要读这次运行的建模质量。
- 把真实持仓期间的隔夜利息计入——这里记录中的中位盈利单是以天计持有的,不是以分钟计。
- 读最长连亏,并确认回测期间至少包含一段持续的、与策略对着干的趋势。
均值回归与趋势的对比
| 均值回归 | 趋势跟踪 | |
|---|---|---|
| 假设什么 | 被拉伸的价格会回到它的均值 | 已确立的方向会延续 |
| 相对行情的入场 | 逆着它,在极端处 | 顺着它,在确认之后 |
| 何时亏钱 | 市场走出趋势,拉伸继续拉伸 | 市场进入区间,行情反复折回 |
| 典型离场 | 位于均值或其附近的固定目标 | 移动止损或信号反转 |
| 最坏情况 | 一笔仓位、或一串仓位,扛着一段不会回头的行情 | 一长串寻常的亏损 |
| 公开胜率中位数 | 61.03 %(六只 EA) | 55.90 %(五只 EA) |
| 公开最长连亏中位数 | 3.5,最长 11 | 4,最长 9 |
| 复杂度 | 中级——风险由两个离场距离承担 | 入门——输入项少,难在坐得住 |
总体上没有哪一边更安全,而它们的失效模式几乎互补:一个需要静止,另一个需要运动。这是同时运行两者的真实理由,但有一条表格无法呈现的但书。一只均值回归 EA 和一只用固定止盈的趋势 EA,并不像它们的标签所暗示的那样不同,因为那时两者都依赖价格停在规则所说的地方。在认定持有两只 EA 就已经分散了什么之前,先确认每一个离场究竟在做什么。
EA 目录
本目录中 12 个 均值回归 EAs
相关文章
常见问题
- 什么是均值回归 EA?
- 均值回归 EA 会等到价格偏离自身均值达到一个可测量的距离,然后逆着这段行情入场,目标是价格回归。这个距离通常表示为相对布林中轨的标准差,或相对移动平均线的 ATR 单位,并用处于极端区域的 RSI、随机指标之类的振荡指标作为确认。止损放在这样一个水平之外:一旦触及,就说明这根本不是拉伸,而是一段趋势的开始。就入场而言,它是趋势跟踪的天然反面,并且在相反的天气里失效。
- 均值回归 EA 的胜率高吗?
- 并不可靠地高,而这正是关于该策略最常见的错误假设。本站公开的六只均值回归 EA 记录到的胜率是 79.17 %、78.50 %、62.65 %、59.41 %、46.34 % 和 40.26 %。没有一只落在人们描述均值回归时惯用的 65-75 % 区间里,而六只的中位数 61.03 % 高于本站公开的趋势跟踪 EA 的中位数(55.90 %)。胜率来自目标相对止损放在哪里,而不是来自入场是逆势这一事实。
- 哪些品种适合均值回归 EA?
- 教科书答案是结构性区间震荡的交叉盘——EUR/CHF、USD/CHF、EUR/GBP——因为一个不断回到中枢的品种,才给了策略可回归的对象。我们自己公开的均值回归 EA 里,只有一只跑在那份清单上的品种,即 EUR/GBP;其余五只跑在 AUD/CAD、USD/JPY、GBP/AUD 和 GBP/JPY 上。这说明要求比品种名称更窄:真正重要的是那个具体品种在它自己的周期上,花在回归上的时间是否多于花在延展上的时间。请在你打算交易的品种上验证这一点,而不是照搬一份品种清单。
- 均值回归与网格或马丁格尔 EA 有何不同?
- 区别在止损。三者都会在不利行情面前累积或持有敞口,而且只要市场配合,三者看起来都在盈利。均值回归 EA 在一个可测量的极端处开一笔仓,如果回归假设被证伪,就以既定的亏损平掉。网格或马丁格尔 EA 应对不利行情的方式是继续加仓,于是亏损只有在账户无力支撑下一次加仓时才被实现。如果一只以均值回归名义出售的 EA 没有止损,或者在亏损仓位上摊低成本,那它就是披着这个标签的另一种策略。
- 均值回归 EA 的连亏会有多长?
- 比这套策略的名声所暗示的更长。本站公开的六份记录中,最糟的一次是连续十一笔亏损,出现在胜率 46.34 % 的那只 EA 上。六只最糟连亏的中位数是 3.5,略低于趋势跟踪组的 4,但尾部更长:六只里有两只达到 10 和 11,而趋势跟踪的最大值是 9。逆势策略遭遇坏天气时是一整块连着来的,因为击败一次入场的那个趋势行情,同样会击败下一次。请在给账户入金之前读连亏,而不是在经历它的时候。
- 为什么该看盈利因子而不是胜率?
- 因为在这些记录里,胜率会动,盈利因子几乎不动。六只公开的均值回归 EA 在胜率上横跨 40.26 % 到 79.17 %,在盈亏比上相差六倍。可它们的盈利因子是 1.25、1.29、1.31、1.35、1.40 和 1.50——整组只有 0.25 的跨度。六只里最高的那个胜率反而产生了最低的那个盈利因子。胜率和盈亏比描述的是离场被放在哪里;盈利因子更接近这套规则真正赚到的东西。
Glossary