EA-62742 · 动量
Multi Divergence EA
该EA通过RSI、MACD和随机指标三个动量指标检测背离模式,当达到可配置的最小确认数量时开仓交易。入场前会应用趋势和成交量过滤,支持固定手数或基于风险的资金管理,配有可配置的止损和止盈。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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 | -92.78% | -88.60% | 95.04% | 75 | 50.70% | -0.49 | -0.98 | 4 | −$123.70 | 账户爆仓 |
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(动量)在同一品种上有可信结果的 EA 相比:XAUUSD 好于 27%(共 75 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| XAUUSD | 31% | +11.15% 2026-04 | -80.01% 2026-05 |
根据回测净值曲线计算(约每两天一个点),只统计可信结果。
爆仓风险: 高
- 在我们的回测中爆仓(净值跌破 10%):XAUUSD
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略核心是基于多指标背离检测的动量反转交易系统。入场条件为:价格与指标之间出现背离(如价格创新低但指标未创新低为看涨背离),且至少达到MinConfirmations个指标的确认信号,同时若开启趋势过滤则要求价格位于EMA50正确一侧,若开启成交量过滤则要求近期成交量高于均量1.2倍。出场条件依赖固定点数的止损和止盈,没有移动止损或追踪出场机制。仓位管理支持固定手数和基于账户余额百分比的风险计算方式,后者根据止损点数和tick价值动态计算手数并做规范化处理。资金管理模块会考虑最小/最大手数和手数步长限制,但未做保证金检查。整体策略逻辑清晰,但背离检测仅比较最近两个极值点,可能错过更复杂的背离形态。
优势
- 多指标背离确认机制提高了信号的可靠性,降低了假信号风险
- 具备点差过滤、趋势过滤和成交量过滤等多重入场过滤条件
- 资金管理模块考虑了最小/最大手数和手数步长等品种规范约束
- 代码结构清晰,各功能模块分离良好,便于理解和维护
劣势
- Ask和Bid变量被错误赋值为SYMBOL_ASK和SYMBOL_BID常量而非实时价格,导致点差计算和下单价格严重错误
- 背离检测仅比较最近两个极值点,无法检测更复杂的多点背离形态,且极值数组未按时间排序可能比较错误配对
- CalculateDivergenceStrength公式有逻辑缺陷:价格变化和指标变化直接相加无法正确衡量背离强度,且分母使用MathAbs可能导致除零错误
- 缺少保证金检查、订单填充类型设置和滑点控制,实盘可能因保证金不足或滑点过大导致交易失败
- 趋势过滤逻辑矛盾:看涨背离要求价格在EMA上方,但背离本质是反转信号,此时价格通常在EMA下方
改进建议
- 修复Ask/Bid变量:应使用SymbolInfoDouble获取实时买卖价格,而非将常量赋值给double变量
- 改进背离强度计算:应使用价格与指标变化方向的背离程度(如归一化方向差异)而非简单相加
- 增加多点背离检测和按时间排序的极值配对,提升背离识别的准确性和复杂形态捕捉能力
- 添加保证金检查(OrderCalcCheck)、可配置的订单填充类型和滑点容忍度参数
- 重新审视趋势过滤逻辑,对于背离反转策略应允许在EMA反侧入场
风险评估
总体风险: 中等
- Ask/Bid变量赋值错误是严重bug,会导致所有交易以错误价格执行和点差计算完全失效
- CalculateDivergenceStrength可能因除零错误导致EA崩溃或产生无效信号
- 缺少保证金检查可能在账户资金不足时仍尝试下单导致错误
- 趋势过滤逻辑与背离反转策略相矛盾,可能导致有效信号被过滤掉
评估得分
代码质量2.0
策略逻辑3.0
风险管理3.0
稳健性2.0
创新性3.0
文档1.0
综合2.3
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
LotSize | 0.1 | 固定手数 |
StopLoss | 100 | 止损点数 |
TakeProfit | 200 | 止盈点数 |
MaxSpread | 30 | 最大允许点差 |
UseMoneyManagement | false | 是否启用资金管理 |
RiskPercent | 2.0 | 每笔交易风险百分比 |
RSI_Period | 14 | RSI周期 |
MACD_Fast | 12 | MACD快线EMA周期 |
MACD_Slow | 26 | MACD慢线EMA周期 |
MACD_Signal | 9 | MACD信号线周期 |
Stoch_K | 5 | 随机指标%K周期 |
Stoch_D | 3 | 随机指标%D周期 |
Stoch_Slowing | 3 | 随机指标平滑周期 |
BarsToCheck | 50 | 检测背离的K线范围 |
MinBarsDistance | 5 | 极值点之间最小K线距离 |
MinDivergenceStrength | 0.7 | 最小背离强度阈值(0-1) |
MinConfirmations | 3 | 最少需要的指标确认数(1-3) |
UseVolumeFilter | true | 是否启用成交量确认过滤 |
UseTrendFilter | true | 是否启用趋势方向过滤 |
AllowBuy | true | 是否允许买入交易 |
AllowSell | true | 是否允许卖出交易 |
MaxTrades | 1 | 最大同时持仓数 |
MagicNumber | 123456 | 订单魔术编号 |
同类 EA:动量
回测是历史模拟,不代表未来收益,不构成投资建议。