RA Mean Reversion Portfolio
RA Mean Reversion Portfolio 是一款适用于 MetaTrader 5 的多品种智能交易系统(EA)。它寻找
两个货币对上统计意义上被拉伸的日线波动,并基于“这类波动倾向于回归近期均值”的假设进行交易。
两个货币对在同一张图表上交易,作为一个投资组合由同一个风险上限统一管理。每笔交易都设置保护
性止损。
策略类型:基于 D1 的多品种组合均值回归策略(逆势型)。
该 EA 仅在 D1 周期运行,每个品种最多持有一个仓位,不使用网格、加仓摊平或马丁格尔。
优势
- 逻辑简单且完全确定。信号是日收盘价的 z 分数,任何决策都可以由用户自行复算和验证,不含隐藏
的自适应组件。
- 一个组合,一个风险上限。每笔交易风险固定,组合总风险设有上限,同时持仓数量也受限。
- 相关性过滤。当新交易与已开仓位高度相关时,风险减半;若已存在两个这类相关仓位,则禁止继续
开仓。
- 每笔交易都设置止损,按开仓时的 ATR 计算。止损从不放宽,也没有会干扰离场规则的止盈。
- 宁可跳过,也不超风险。如果计算出的手数小于经纪商的最小手数,该笔交易直接不开。
- 保护模块。当从权益峰值回撤较深或当日亏损较大时,暂停开新仓。
- 止损后冷静期。止损触发后 EA 会等待,并要求 z 分数回到入场阈值之内才会再次交易。
- 对经纪商友好。带前缀或后缀的品种名称会自动匹配,每笔订单前都检查可用保证金,程序同时支持
netting 与 hedging 账户。
- CSV 交易日志。每笔已平仓交易都会写入文件,包含方向、价格、z 分数、结果和平仓原因,便于独立
分析。
- 所有输入参数名称与程序输出信息均为英文。
工作原理
对每个品种,EA 在滚动窗口上计算日收盘价对数的 z 分数:
z =(收盘价对数 - 窗口均值)/ 窗口标准差
默认窗口为 45 根日线,且不包含产生信号的那根 K 线,因此所有计算都基于已收盘的 K 线,信号不会
重绘。
- 若 z 大于 +2.0,该货币对被视为向上被拉伸,EA 卖出。
- 若 z 小于 -2.0,该货币对被视为向下被拉伸,EA 买入。
- 当 z 回到 0、达到最长持仓时间(25 根日线)或触发止损时,仓位平仓。
止损距离为开仓时的 ATR(14) 乘以 1.5。手数根据该距离与设定的风险百分比,按品种的每点价值和
报价步长计算。
风险管理
- 每笔交易风险:默认为账户余额的 0.3%。
- 所有持仓的总风险:默认为余额的 1.5%。
- 同时持仓上限:默认 3 个。
- 紧急保护:当从权益峰值的回撤超过 15%,或当日亏损达到 3% 时,禁止开新仓。
- 已开仓位始终按自身规则管理;保护模块只停止开新仓。
支持的交易品种与账户
- 默认品种:D1 周期的 EURGBP 与 AUDUSD,即参数拟合与测试所用的两个货币对。
- 其他货币对可在输入参数中配置并会被交易,但模型并未针对它们进行优化。
- 品种名称仅按字母和数字匹配,因此 EURGBP、EURGBP.a 或 EURGBPm 都能自动找到。如果账户上不
存在所配置的任何品种,EA 会改为交易图表品种,而不是拒绝启动。
- 账户:同时支持 netting 与 hedging。每个品种只开一个仓位,按各自的持仓编号平仓,并按 magic
编号过滤,因此手动交易和其他 EA 的仓位不会受到影响。
- 周期:把 EA 挂到任意 D1 图表即可,交易的货币对来自输入参数。
本 EA 不做什么
- 不使用网格、加仓摊平、马丁格尔,也不在亏损后加大手数。
- 不使用移动止损和保本移动:止损在开仓时设定后保持不变。
- 不设止盈:离场方式为 z 分数回归、最长持仓时间或止损。
- 不过滤新闻与经济日历。
- 不使用多周期逻辑:模型只在 D1 上运行。
- 从不在同一品种上开立与现有仓位方向相反的仓位。
运行要求
- MetaTrader 5,终端已启用自动交易,并允许该 EA 交易。
- 建议入金:5000 USD/EUR 或以上;下方测试使用 10000 EUR。当余额的 0.3% 无法覆盖最小手数 0.01
时,EA 会跳过该笔交易。按这些货币对典型的日线 ATR 止损计算,该门槛约为 EURGBP 2900 EUR、
AUDUSD 4400 USD。
- 杠杆:1:30 或更高即可,因为只使用可用保证金的一小部分。
- 历史数据:每个品种至少 47 根日线;相关性过滤使用 90 根。
测试结果
以下数据在 MetaTrader 5 策略测试器(build 6241)中使用默认设置获得,属于历史模拟结果,并非
真实交易结果。
- 期间:2020.01.01 - 2026.10.09,约 6.75 年
- 品种:EURGBP D1 与 AUDUSD D1,均在一张 EURGBP D1 图表上交易
- 模式:every tick;入金 10000 EUR;杠杆 1:100
- 结果:+887.09 EUR,最终余额 10887.09 EUR
- 交易笔数:124;盈利因子 1.59;胜率约 57%
- 最大余额回撤:1.58%(174 EUR);最大权益回撤:1.78%(197 EUR)
- 每笔交易的夏普比率:1.13
- AUDUSD:65 笔,+272 EUR,盈利因子 1.30
- EURGBP:58 笔,+610 EUR,盈利因子 2.06
- 按年度:2020 +98.66 EUR(17 笔),2021 +219.40(18),2022 +147.65(18),
2023 +329.10(20),2024 +41.47(20),2025 +130.26(19),2026 至 09.10 -85.25(11)
如何解读这些数据
- 结果在时间上分布并不均匀。表现最好的一年(2023)约占总结果的三分之一,2024 年接近持平,
未结束的 2026 年为负。均值回归模型在震荡市场中表现最好,在强趋势中预期会变差。
- 测试使用测试账户的点差历史、隔夜利息和手续费设置。换一家经纪商,结果会不同。
- 回测结果与历史表现不保证未来收益。
输入参数
组合:
- InpPairs = EURGBP,AUDUSD - 交易品种,以逗号分隔
- InpMaxPositions = 3 - 最大同时持仓数量
- InpRiskPct = 0.3 - 每笔交易风险,占账户余额百分比
- InpMaxPortfolioRiskPct = 1.5 - 所有持仓总风险上限,占余额百分比
相关性模块:
- InpUseCorr = true - 启用相关性过滤
- InpCorrWindow = 90 - 相关性窗口,日线根数
- InpCorrMax = 0.7 - 相关性阈值,达到后新开仓风险减半
核心(D1 z 分数):
- InpZWin = 45 - z 分数窗口,日线根数
- InpEntry = 2.0 - |z| 入场阈值
- InpExitZ = 0.0 - 平仓所用的 z 水平
- InpMaxHold = 25 - 最长持仓时间,日线根数
- InpATRPeriod = 14 - 止损使用的 ATR 周期
- InpATRMult = 1.5 - 止损使用的 ATR 倍数
保护:
- InpMaxDDStopPct = 15.0 - 从权益峰值的回撤超过该百分比时禁止开新仓
- InpDailyLossStopPct = 3.0 - 当日亏损超过该百分比时禁止开新仓
- InpSLCooldownBars = 5 - 止损后的暂停,日线根数(0 = 关闭)
服务:
- InpRequireNeutralReset = true - 止损后需等待 |z| 回到入场阈值之内
- InpMagic = 1544010 - magic 编号,每张图表必须唯一
- InpSlippage = 30 - 允许滑点,点数
- InpJournal = true - 写入 CSV 交易日志
- InpJournalFile = AI_Portfolio_trades.csv - 日志文件名
- InpJournalCommon = false - 将日志写入公共文件夹而非终端数据文件夹
安装
1. 从 Market 安装该 EA,或把文件复制到终端的 Experts 文件夹。
2. 将其挂到任意 D1 图表,并允许该 EA 自动交易。
3. 确认终端已启用自动交易。
4. 查看“专家”日志:EA 在启动时会输出已解析的品种、账户保证金模式与当前设置。
免责声明
金融市场交易存在亏损风险。
本 EA 实现的是确定的交易逻辑,它不预测市场,也不承诺任何收益。
在 MetaTrader 5 策略测试器中得到的结果是历史模拟结果,并非真实交易结果。
历史表现不保证未来收益。
请先在模拟账户上测试产品再用于真实账户,并且绝不要投入您无法承受损失的资金。