首页 / 交易学院 / 小布知识库 / ATC老将访谈:MQL5实盘EA开发心法
ATC老将访谈:MQL5实盘EA开发心法
🤖

ATC老将访谈:MQL5实盘EA开发心法

从2007到2011冠军选手的编程与策略经验

MQL5开发 难度 · 进阶 2026-04-27 6 分钟阅读
#MQL5#EA开发#ATC锦标赛#策略回测

谁是Alexander Arashkevich

Alexander Arashkevich(论坛ID:AAA777)来自白俄罗斯,本职是热电厂的自动控制系统工程师。他从2007年接触外汇交易,同时具备VBA与C++编程背景。在2011年自动交易锦标赛(ATC 2011)中,他获得主要赞助商MIG Bank颁发的特别奖——2012赛季一级方程式大奖赛三日行程。他并非一夜成名,而是从2007年首届MQL4锦标赛就开始参赛,是典型的长期主义开发者。

他的参赛轨迹具有很强的样本意义:2007年使用MQL4排名第589;2008年MQL4升至第85;2010年转MQL5排名第152;2011年最终跻身前列。这种跨语言、跨年代的连续参赛记录,使他的经验对今天仍在MQL4与MQL5之间犹豫的中文交易者极具参考值。

✦ 为什么访谈值得读
锦标赛环境接近实盘但速度更快,选手在有限周期内必须暴露真实策略逻辑,因此赛后访谈往往比商业EA说明更诚实。

从MQL4到MQL5的迁移真实成本

Alexander在2010年首次使用MQL5参赛时明确表示:在习惯MQL4之后,初期切换到MQL5相对困难。他的核心观察是——MQL5更适合编写中复杂度和高复杂度的EA,而MQL4在简单策略上更顺手。他个人信奉“越简单越好”的原则,但这并不妨碍他认可MQL5在架构层面的优势。

很多中文交易者担心MQL5面向对象、含标准库类会导致学习曲线陡峭。Alexander的做法是:把原有MQL4 EA向MQL5移植时,优先正确实现机器人核心逻辑,而不是急于套用标准库现成类。他坦言当时没有足够时间去研究标准库类,因此并未在ATC中使用现成封装。这说明标准库是加速器而非必需品,自研基础框架同样可参赛并获奖。

⚠ 常见误区
不要认为必须精通C++和Standard Library才能写MQL5 EA。Alexander用近似自研方式完成了GBPUSD获奖机器人,证明渐进式迁移可行。

otkat2策略命名与核心逻辑

他的EA名为otkat2。在俄语中“Otkat”意为前一日最高价与最低价区域的修正(回撤),数字“2”代表这是2010年第一版之后的第二版。也就是说,市场入场发生在对昨日极值修正的过程中,属于典型的日内均值回归/回撤跟随混合思路。

从2007年使用D1周期、到2008年仍用D1,再到2010与2011改用H1,他的EA在2011年版本中把周期压缩到H1,并始终交易GBPUSD。值得注意的是,他提到2010与2011提交的EA有85%相似度,仅周期不同,结果排名却天差地别,这侧面印证了周期选择对策略表现的重大影响。

// 伪代码示意:基于前一日极值回撤入场
input double otkatPercent = 0.5; // 回撤百分比
MqlDateTime tm;
TimeCurrent(tm);
double dayHigh = iHigh(_Symbol, PERIOD_D1, 1);
double dayLow  = iLow(_Symbol, PERIOD_D1, 1);
double range = dayHigh - dayLow;
if(Bid <= dayLow + range * otkatPercent)
   OpenBuy();
if(Ask >= dayHigh - range * otkatPercent)
   OpenSell();

为什么死守GBPUSD

Alexander选择GBPUSD出于“历史原因”:他第一个EA需要高波动货币对,实测GBPUSD表现最好,于是形成路径依赖。后续每个EA都先在该货币对上验证,再扩展到其他品种,而GBPUSD始终给出最优结果。这反映出样本惯性与品种性格匹配的问题。

对中文交易者的启示是:不要盲目追求多品种覆盖。先在一个流动性好、波动特征明确的品种上把逻辑跑通,比泛泛测试全部交叉盘更有性价比。当然,他也计划在下届锦标赛写多货币EA,说明单品种天花板被摸到后,自然会产生横向扩展需求。

EA开发量与策略来源

在被问及总共尝试过多少策略时,Alexander称数量“相当多”,约一半从零自研,另一半来自互联网:他研究其原理后加入自己的修正。他常用的做法是先搭一个交易机器人的“框架”,再把入场/出场条件和输入参数塞进去,以1手固定量在测试器中排查软肋。这种方法类似今天的模块化策略开发,能显著降低单点试错成本。

他未使用MQL5向导(Wizard)生成EA,理由是自有代码更易修改和排错。对于中文初学者,Wizard确实能快速出原型,但长期看,理解并手写框架才能应对锦标赛或实盘中的诡异bug。

✦ 框架化开发建议
维护一套自己的EA骨架:含仓位管理、信号接口、日志输出。新策略只改信号函数,可复用回测与风控层。

锦标赛中的仓位与风险控制

Alexander指出,锦标赛初期资金曲线平滑,但随着余额增长,EA开出的最大手数变大,曲线变得不平。他认为在这种短期赛事中,复杂资金管理(MM)系统没有意义,必须在合理限度内承担风险才能争冠。这与实盘永远优先保命的思路不同,交易者需分清“赛”与“战”。

他还提到2011冠军Xupypr出现不可思议的跳跃,而自己属于稳健型。这种差异说明ATC排名受杠杆与时段运气影响大,不能把锦标赛收益曲线直接当作实盘预期。

给亏损参赛者的建议与后续规划

面对负收益完赛者,Alexander的回答直白:不要放弃,分析结果与亏损原因,避免无谓风险,再次参战。他自己虽已获奖,仍希望下届写多货币EA,并感谢MIG Bank与MetaQuotes。这种持续迭代心态,比单一策略更值得中文交易者借鉴。

从工程角度看,他的经历串联起一条清晰路径:MQL4简单试水 → 过度拟合失败 → 写实化D1 EA → MQL5迁移阵痛 → H1回撤修正获奖。每一步都可在自己回测中复现与反思。

⚠ 过度拟合警示
他2007年用D1周期过度优化EA,本质只是拟合历史,实盘无效。任何EA上线前都应做样本外验证。

常见问题

难点在于思维从过程式转向事件与对象模型,如OnTick替代轮询、CTrade类下单。可先手写核心逻辑不依赖标准库,像Alexander那样逐步迁移,降低初期阻力。
otkat2意为对前一日最高/最低价的回撤修正,第二版用H1周期只做GBPUSD,在价格回撤至昨日区间特定比例时反向或顺势入场,属日内回撤修正逻辑。
GBPUSD波动大、流动性好,便于暴露策略缺陷。Alexander因首版EA在此表现最佳形成路径依赖,建议中文交易者先单品种跑通再扩展多品种。
通常不能。Alexander指出赛事为短期排名会放大手数、曲线变陡,复杂MM无意义;实盘需控制风险与手数膨胀,且要做样本外测试防拟合。