Double trading
该EA实现了一种配对交易/统计套利策略,当两个相关货币对的相关系数达到阈值时,同时开立相反方向的仓位。它监控两个仓位的合计利润,达到目标利润后同时平仓,同时以止损/止盈作为兜底退出。自动模式根据交易时段的货币强度假设来确定交易方向。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
- 最多可同时持有 2 个仓位
单独这一点不算典型的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念:该EA基于两个货币对之间的相关性进行统计套利,当相关系数接近设定阈值(-0.98±0.003)时开仓。入场条件:相关系数CorrelationBuffer[0]落入Open_Value±Demis_Value范围内,且当日为允许交易的星期、没有持仓时触发入场。自动模式下,根据GMT时段判断主流货币的强弱趋势来决定买卖方向(如欧洲时段EUR/CHF/GBP为强势货币),直接模式(default AutoD)两对货币开反向仓,镜像模式(AutoM)两对货币开同向仓。出场条件:双仓合计利润达到Profit参数(默认20)时同时反向平仓,或任一仓位触发止损/止盈后等待另一仓位也被止损/止盈。仓位管理:两对货币分别使用独立手数Lot1和Lot2,默认1和1.3,不设动态加仓或减仓逻辑。资金管理:无动态资金管理,固定手数交易,止损止盈均为5000点,属于较宽的止损设置。
优势
- 配对交易策略逻辑清晰,利用相关性进行统计套利,具有一定的理论基础
- 支持自动模式根据交易时段货币强度判断方向,增加了策略灵活性
- 设有双仓合计利润目标出场机制,有利于锁定套利收益
- 提供交易日过滤功能,可以避开不活跃或风险较高的交易日
劣势
- 使用Sleep()函数阻塞OnTick线程,会导致EA无法响应其他事件,严重降低平台稳定性
- 止损/止盈后仅通过轮询历史交易记录判断是否另一仓位也被止损/止盈,存在死循环风险且逻辑脆弱
- 当任一仓位被SL/TP后,另一仓位可能长期浮亏无人管理,存在巨大风险敞口
- 相关性判断依赖外部自定义指标Correlation,若指标不存在则EA无法正常运行且无错误提示
- 代码编码问题导致俄语注释乱码,严重影响可读性和可维护性
- 使用StringLen()==3来判断Buy/Sell方向非常脆弱,依赖硬编码字符串长度而非内容比较
改进建议
- 移除Sleep()阻塞调用,改用状态机模式在OnTick中分步处理订单生命周期,避免阻塞主线程
- 增加单边仓位被止损/止盈后的另一仓位应急平仓逻辑,防止单边风险敞口无限扩大
- 使用PositionSelect或PositionGetTicket替代轮询历史记录的方式来管理持仓状态
- 将StringLen()==3的方向判断替换为字符串内容比较(如StringCompare),提高代码健壮性
- 添加Correlation自定义指标的存在性检查,指标不可用时输出错误提示并禁止交易
风险评估
总体风险: 高风险
- Sleep()阻塞OnTick线程,可能导致平台卡死或无法及时处理其他事件
- 单边仓位止损后另一仓位缺乏保护机制,可能产生巨额浮亏
- 止损/止盈检测使用while(1)无限循环+Sleep轮询,存在死循环风险
- 默认止损5000点非常宽,单笔最大亏损可能极大
- 外部Correlation指标依赖无校验,指标加载失败可能导致错误信号
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
Lot1 | 1 | 第1对货币的交易手数 |
Lot2 | 1.3 | 第2对货币的交易手数 |
StopLoss | 5000 | 止损点数 |
TakeProfit | 5000 | 止盈点数 |
Profit | 20 | 双仓合计目标利润(货币单位) |
Money2 | USDCHF | 第2对货币对符号 |
Money1_SELL_or_BUY | Auto | 第1对货币方向: SELL/BUY/Auto |
Money2_SELL_or_BUY | Auto | 第2对货币方向: SELL/BUY/Auto |
Auto | AutoM | 自动交易模式: AutoD=反向(对冲), AutoM=镜像(同向) |
Try | 10 | 下单最大重试次数 |
Monday | true | 周一是否允许交易 |
Tuesday | true | 周二是否允许交易 |
Wednesday | true | 周三是否允许交易 |
Thursday | true | 周四是否允许交易 |
Friday | false | 周五是否允许交易 |
Open_Value | -0.98 | 开仓相关系数阈值 |
Demis_Value | 0.003 | 相关系数容差范围(+/-) |
Depth | 50 | 相关性计算深度(K线数) |
AppliedPrice | PRICE_WEIGHTED | 相关性计算所用价格类型 |
同类 EA:统计套利
回测是历史模拟,不代表未来收益,不构成投资建议。