EA-200 · 多周期

ch2010structure

这是一个多货币、多周期EA,使用类架构交易五个货币对(USDCHF、GBPUSD、AUDUSD、USDJPY、EURGBP)。在新日线形成时执行日内交易,在新30分钟线形成时执行日内短线交易,并内置订单验证和成交量限制逻辑。

打开交互版(权益曲线、切换品种)

基本信息

分类多周期
风险高风险
爆仓风险偏高
评分★★☆☆☆
类型交易型 EA
周期D1, M30
指标Unknown - strategy implementation not shown
作者—

回测结果(H1,约 1 年)

品种盈亏年化最大回撤交易数胜率夏普恢复因子最长连亏每笔期望状态
EURUSD0.00%0.00%0.00%0—————暂不支持转换
GBPUSD0.00%0.00%0.00%0—————暂不支持转换
USDJPY0.00%0.00%0.00%0—————暂不支持转换
XAUUSD0.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手在极端行情下可能产生重大损失

评估得分

代码质量3.0
策略逻辑2.0
风险管理2.0
稳健性3.0
创新性2.0
文档1.0
综合2.2

参数

参数默认值说明
SymbolUSDCHF/GBPUSD/AUDUSD/USDJPY/EURGBP交易货币对
MaxPendingOrders12最大挂单数量
MaxTotalVolume15单方向最大总持仓手数
MaxSingleVolume5单笔最大交易手数
MinSingleVolume0.1单笔最小交易手数

同类 EA:多周期

回测是历史模拟,不代表未来收益,不构成投资建议。

订阅每周 Arena 周报

每周一封邮件:排名变化、新信号和新研究。不发垃圾邮件,随时可以退订。