ch2010structure
这是一个多货币、多周期EA,使用类架构交易五个货币对(USDCHF、GBPUSD、AUDUSD、USDJPY、EURGBP)。在新日线形成时执行日内交易,在新30分钟线形成时执行日内短线交易,并内置订单验证和成交量限制逻辑。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 偏高
- 没有止损,也没有移动止损
- 最多可同时持有 12 个仓位
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
该EA采用多周期策略,在日线上进行日间交易决策,在M30上进行日内短线交易决策。策略核心封装在CExp类中,通过getTP()获取止盈、getVol()获取交易量、getOrderType()获取订单类型、getDB()获取某个基准值来决定入场条件。出场条件通过getTP()返回的止盈价格实现。仓位管理方面,DebugOrderSend函数实现了严格的仓位控制:单一方向总持仓量不超过15手,单笔最大5手,最小0.1手,且限制挂单总数为12个。资金管理通过检查SYMBOL_VOLUME_MIN和SYMBOL_VOLUME_MAX确保交易量合规。然而,代码中未见到明确的止损逻辑,这是一个重大风险隐患。IsNewBar函数确保每个周期只在第一个tick执行交易逻辑,避免了重复开仓的问题。
优势
- 多货币对分散交易,降低单一品种风险
- 内置订单调试函数,便于排查交易执行问题
- 仓位控制逻辑完善,有总持仓和单笔上下限限制
- 使用IsNewBar确保每个K线只执行一次,避免重复开仓
- 面向对象架构设计,CExp类封装使代码可复用
劣势
- 未见明确的止损逻辑,存在无限亏损风险
- 策略核心方法(getTP/getVol/getOrderType/getDB)实现未展示,无法评估策略有效性
- IsNewBar函数中用int变量存储period索引,仅支持两个周期,扩展性差
- DebugOrderCheck和DebugOrderSend有重复的验证逻辑,违反DRY原则
- 硬编码的魔术数字(12、15、5、0.1)缺乏参数化配置
改进建议
- 添加明确的止损逻辑,每笔交易都应设置止损价格
- 将硬编码的数值提取为可配置的输入参数
- 改进IsNewBar函数,使用映射或动态数组支持任意周期数量
风险评估
总体风险: 高风险
- 缺少止损机制,持仓可能面临巨额亏损
- 多货币对同时交易可能导致相关性风险集中
- 总持仓上限15手在极端行情下可能产生重大损失
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
Symbol | USDCHF/GBPUSD/AUDUSD/USDJPY/EURGBP | 交易货币对 |
MaxPendingOrders | 12 | 最大挂单数量 |
MaxTotalVolume | 15 | 单方向最大总持仓手数 |
MaxSingleVolume | 5 | 单笔最大交易手数 |
MinSingleVolume | 0.1 | 单笔最小交易手数 |
同类 EA:多周期
回测是历史模拟,不代表未来收益,不构成投资建议。