ATC冠军访谈:多货币马丁EA揭秘
🤖

ATC冠军访谈:多货币马丁EA揭秘

中国开发者葛森林的MQL5实盘与赛事实战经验

MQL5 编程 难度 · 进阶 2026-04-25 5 分钟阅读
#MQL5#ATC2011#马丁策略#多货币EA

受访者背景与交易起点

葛森林(论坛ID yyy999)是一名中国高校计算机教师,自2007年8月接触外汇市场,先在模拟账户摸索,2009年3月转入实盘。由于手动交易成绩不稳定,他开始研究自动化交易系统。因为当时只有MetaQuotes的MetaTrader平台支持自动化,他顺理成章学习了MQL4与MQL5,并自行开发EA。作为编程课教师,他认为两种语言都容易上手,但更偏好MQL5,因其功能更强大。这一背景说明:中文交易者若具备编程基础,完全可以把教学或工作内容转化为量化交易优势。

为什么选择不设置止损与止盈

葛森林的EA在ATC 2011中从不使用固定的Stop Loss与Take Profit,也不开启Trailing Stop。他的逻辑是:价格趋势无法被提前正确判定,固定止损可能在价格回调前错误离场,破坏整体策略;跟踪止损则会在平仓后丧失后续利润空间;固定止盈在剧烈波动中会限制总盈利。取而代之,EA只平掉盈利单,对亏损单持续加仓,并实时监控账户整体盈亏,等待亏损单随反弹平仓。这种思路本质上接近马丁变体,但作者自称并不了解马丁原理,只是沿用并改进了前一年EA的规则。

⚠ 风险警示
不对亏损头寸止损而采用加仓等待反弹,在单边行情中会造成浮亏放大甚至爆仓。实盘必须调低风险参数,或以保守方式开仓,切勿直接照搬赛用设置。

多货币对的选择与测试过程

锦标赛提供12个可交易货币对,葛森林的EA实际交易其中8个。他解释:在单独回测时,其余4个币种表现亏损或利润过低;若全部同时运行,资金利用效率下降且风险因子上升。因此他通过优化参数,筛选出现行8对。这反映出多货币EA开发的核心步骤——并非‘能跑就行’,而是要用历史数据逐个验证参数适应性,剔除拖后腿品种,控制组合风险。

每小时开盘交易的工程考量

EA设定在每根H1周期开始时检查信号并交易。表面看像是为了通过锦标赛的自动预检,实则另有工程原因:同时跑多货币对若频率过高,会大量消耗CPU资源。后果有二:一是可能通不过官方预检规则;二是正式赛中丢失信号、影响执行。因此降低交易频率既是合规需要,也是多品种并发下的性能妥协。对中文开发者而言,在VPS或受限环境部署多货币EA时,必须评估资源占用,而非盲目追求信号灵敏。

从ATC 2010失败到2011改进的复盘

前一年他提交了基于纯指标的系统,原计划交易5个货币对,但因代码错误或忽视MT服务器运行环境,赛中只跑了1对,成绩糟糕。2011年他重写策略,调整为类马丁多货币加仓,增加可优化参数数量,并加强回测。他强调:锦标赛只允许提交一个EA,所以代码质量与历史测试必须过硬。这一对比告诉我们,MQL5开发中最贵的不是想法,而是环境适配与严谨测试。

✦ 实操建议
在提交任何公开赛或实盘EA前,用Strategy Tester做多品种、多时段回测,并在近似实盘延迟的环境试运行,确认资源占用与逻辑无死锁。

中国交易者的特殊环境与风格

访谈指出,外汇交易在中国未完全开放,导致理论和技术研究薄弱,自动化交易处于起步阶段,这是为何ATC中中国参与者多却未获奖的原因。葛森林主要服务本国用户,因语言障碍未接MQL5 Jobs订单。他还比较了证券与外汇:外汇T+0、多空双向、高杠杆,且能用MT平台实现策略回测与实时修正,故更受他青睐。这提醒中文社区,合规边界与本地化需求会深刻影响EA设计目标。

对平台与其他选手的评价

葛森林特别提到保加利亚选手Dimitar Manov及ias的加仓与资金管理,认为其有望登顶。他感谢MetaQuotes提供学习与开发平台,并希望MT5惠及更多交易者。从社区视角看,ATC不仅是赛场,更是策略公开课:观察前十EA的仓位管理,往往比钻研指标更有价值。

如果夺冠,会用于实盘吗

作者表示类似旧版EA已在实盘运行,但旧版风险更低。若本届EA把风险调到合理保守水平,他愿意上实盘。这再次印证:赛用激进参数与实盘生存参数是两回事。开发者应以隔离账户先验证,再逐步放宽。

// 示例:每小时开始时检查多货币信号(简化逻辑)
input string Symbols[8] = {"EURUSD","GBPUSD","USDJPY","USDCHF","AUDUSD","USDCAD","NZDUSD","EURJPY"};
int OnInit() { return(INIT_SUCCEEDED); }
void OnTick() {
   static datetime lastHour = 0;
   datetime now = TimeCurrent();
   if(now - lastHour >= 3600) {
      lastHour = now;
      for(int i=0;i<8;i++) {
         double signal = iCustom(Symbols[i], PERIOD_H1, "MySignal", 0, 0);
         if(signal > 0) { /* 加仓或开仓逻辑 */ }
      }
   }
}

常见问题

他认为固定止损会误杀回调行情,跟踪止损牺牲后续利润,固定止盈限制波动收益,因此只对盈利单平仓、对亏损单加仓并监控总账户盈亏等待反弹,但实盘需调低风险。
先对全部候选对独立回测,剔除亏损或低利润品种,再同跑剩余对检查资金效率与风险,如葛森林从12对中选出8对,用参数优化适配。
基于H1信号且降低CPU占用:多货币并发高频交易可能不通不过赛前预检或赛中丢信号,每小时一次是性能与合规的折中。
葛森林因语言问题未接到订单,主要服务中文用户;建议提升英文沟通或专注本地化需求,也可通过社区展示代码能力。