ATC老将访谈:MQL5实盘EA开发心法
从2007到2011冠军选手的编程与策略经验
谁是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之间犹豫的中文交易者极具参考值。
从MQL4到MQL5的迁移真实成本
Alexander在2010年首次使用MQL5参赛时明确表示:在习惯MQL4之后,初期切换到MQL5相对困难。他的核心观察是——MQL5更适合编写中复杂度和高复杂度的EA,而MQL4在简单策略上更顺手。他个人信奉“越简单越好”的原则,但这并不妨碍他认可MQL5在架构层面的优势。
很多中文交易者担心MQL5面向对象、含标准库类会导致学习曲线陡峭。Alexander的做法是:把原有MQL4 EA向MQL5移植时,优先正确实现机器人核心逻辑,而不是急于套用标准库现成类。他坦言当时没有足够时间去研究标准库类,因此并未在ATC中使用现成封装。这说明标准库是加速器而非必需品,自研基础框架同样可参赛并获奖。
- MQL4适合快速验证简单策略,语法门槛低
- MQL5对复杂逻辑、多品种、事件驱动更友好
- 迁移难点在思维从过程式转向对象与事件
- 不熟标准库也可靠手写核心类完成实盘级EA
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,说明单品种天花板被摸到后,自然会产生横向扩展需求。
- GBPUSD波动充足,便于回撤逻辑发挥
- 先单品种深挖再外推,降低调试复杂度
- 品种选择应基于历史回测而非主观偏好
EA开发量与策略来源
在被问及总共尝试过多少策略时,Alexander称数量“相当多”,约一半从零自研,另一半来自互联网:他研究其原理后加入自己的修正。他常用的做法是先搭一个交易机器人的“框架”,再把入场/出场条件和输入参数塞进去,以1手固定量在测试器中排查软肋。这种方法类似今天的模块化策略开发,能显著降低单点试错成本。
他未使用MQL5向导(Wizard)生成EA,理由是自有代码更易修改和排错。对于中文初学者,Wizard确实能快速出原型,但长期看,理解并手写框架才能应对锦标赛或实盘中的诡异bug。
锦标赛中的仓位与风险控制
Alexander指出,锦标赛初期资金曲线平滑,但随着余额增长,EA开出的最大手数变大,曲线变得不平。他认为在这种短期赛事中,复杂资金管理(MM)系统没有意义,必须在合理限度内承担风险才能争冠。这与实盘永远优先保命的思路不同,交易者需分清“赛”与“战”。
他还提到2011冠军Xupypr出现不可思议的跳跃,而自己属于稳健型。这种差异说明ATC排名受杠杆与时段运气影响大,不能把锦标赛收益曲线直接当作实盘预期。
- 赛事周期短,适度激进可接受
- 实盘应回避无上限手数膨胀
- 观察日志可发现仓位随余额漂移的问题
给亏损参赛者的建议与后续规划
面对负收益完赛者,Alexander的回答直白:不要放弃,分析结果与亏损原因,避免无谓风险,再次参战。他自己虽已获奖,仍希望下届写多货币EA,并感谢MIG Bank与MetaQuotes。这种持续迭代心态,比单一策略更值得中文交易者借鉴。
从工程角度看,他的经历串联起一条清晰路径:MQL4简单试水 → 过度拟合失败 → 写实化D1 EA → MQL5迁移阵痛 → H1回撤修正获奖。每一步都可在自己回测中复现与反思。