MeanReversion
该EA实现均值回归策略,当当前K线低点为可配置回溯期内最低时买入,当当前K线高点为回溯期内最高时卖出。止盈设在最高价与最低价的中点,止损对称地放在另一侧。仓位大小根据账户余额的可配置风险百分比计算。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
这个 EA 从未交易的原因:转换后没有留下任何开仓规则。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于均值回归:当价格触及回溯期内的极端低点时买入,认为价格将回归均值;当价格触及回溯期内极端高点时卖出,预期价格回落。入场条件为当前K线的低点是lookback根K线中的最低值(买入),或当前K线的高点是lookback根K线中的最高值(卖出)。出场条件为止盈设在最高价与最低价的中间值(均值),止损通过2*入场价-均值对称计算得出。仓位管理采用逐步增加手数的方式,使用OrderCalcProfit计算每手数的潜在亏损,直到亏损超过账户余额的risk_per_trade百分比为止。资金管理通过CheckMoneyForTrade函数检查可用保证金是否足够开仓。然而策略存在明显缺陷:同一时间只允许持仓一个(PositionsTotal>0即返回),止损对称计算在非对称波动市场中可能不合理,且缺乏滑点过滤、新K线检查和信号确认机制。
优势
- 策略逻辑简洁明了,均值回归理念直观易懂
- 仓位管理根据风险百分比动态计算,控制单笔最大亏损
- 开仓前检查保证金是否充足,防止因资金不足导致的交易失败
- 止损止盈对称设置,风险回报比理论上为1:1
劣势
- 仅在价格创回溯期新低/新高时入场,在趋势行情中会频繁逆势交易导致连续亏损
- 止损对称计算(2*价格-均值)不考虑市场波动率的非对称性,可能设置不合理
- 缺少新K线检查,同一根K线的每个tick都会重复评估信号,可能导致重复下单逻辑问题
- 没有滑点/点差过滤,在点差较大时开仓可能面临不利成交价
- PositionsTotal>0的限制过于简单,不允许同方向加仓或不同品种持仓
改进建议
- 增加新K线检查机制(使用isNewBar模式),避免同一根K线内重复触发信号
- 添加点差/ATR过滤,在高波动或高点差环境下禁止入场,并使用ATR动态计算止损距离替代对称计算
- 增加趋势过滤器(如长期均线方向),避免在强趋势行情中逆势开仓
风险评估
总体风险: 中等
- 缺少新K线检查,同一根K线内可能多次触发信号评估
- 止损对称计算不考虑市场波动率特征,可能在低波动时止损过大或高波动时止损过小
- 均值回归策略在趋势行情中容易连续亏损
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
lookback | 200 | 回溯期K线数量,用于确定最高价和最低价 |
risk_per_trade | 1 | 每笔交易的风险百分比(占账户余额) |
同类 EA:均值回归
回测是历史模拟,不代表未来收益,不构成投资建议。