首页 / 交易学院 / 小布知识库 / 新手半年闯入ATC决赛的EA秘辛
新手半年闯入ATC决赛的EA秘辛
🤖

新手半年闯入ATC决赛的EA秘辛

从零学MQL5到自动化交易锦标赛实战复盘

MQL5开发 难度 · 入门 2026-01-16 6 分钟阅读
#MQL5#自动交易锦标赛#EA开发#概率策略

一、背景:从未听说过锦标赛到入围决赛

Vitaly Antonov(论坛ID:beast)在2011年夏天才偶然看到MetaTrader 5与自动交易锦标赛(ATC 2011)的广告。此前他仅对外汇有模糊认知,从5月起才认真了解市场,7月才真正接触终端与MQL5。距离提交EA仅数月,他却凭借一个自制机器人进入公开赛并争夺奖品。他认为自己作为新手反而像进赌场一样“运气好”,所实现的策略并没有严格数学证明,盈利在某意义上纯属概率幸运。

这个时间线对中文交易者非常重要:它说明以正确方式学习平台和语言,半年内写出可参赛的EA是可行的,但绝不能把运气当必然。Vitaly强调自己有C/C++基础,因此MQL5上手极快,主要依赖官方文档与mql5.com论坛。

✦ 给新手的启示
若你已有编程背景,优先吃透MQL5参考文档与论坛样例,比盲目看市面“秘籍”书更高效;若零基础,先补C语言语法再学MQL5。

二、策略核心:MACD叠加概率模型而非刚性逻辑

Vitaly的EA描述中提到了MACD与概率论。他是应用数学与物理专业学生,先暴力枚举各种策略与参数,再尝试套用不同数学模型,属于“理论+实践”混合派。EA接收MACD买卖信号后,并不立即下单,而是手动提前计算好“价格真正上涨/下跌的概率”,在相似信号下假定该概率恒定。

具体流程为:MACD给出信号→查表得到历史相似信号下的涨跌概率→结合当前账户余额计算手数→发单。该模型在价格剧烈震荡时表现更好;GBPUSD彼时平静,曲线近乎水平但依然吸引人。他明确表示未使用MQL5向导(Wizard),所有代码从零手写,并删除了向导默认生成的日志,因为算法简单、自己能完全掌控。

⚠ 常见坑
把历史概率写死而不动态更新,在遇到品种特性变化或长期横盘时极易失效;Vitaly也承认实盘可能爆仓,仅适合竞赛环境。

三、为什么只做GBPUSD:品种特性的不可逆绑定

Vitaly随机选择GBPUSD做全部计算,赛后才试其他货币对,结果EA在别的品种全部失败。因为每个符号的点值、波动结构、活跃时段不同,基于单一品种统计的概率表无法直接迁移。这对中文用户的教训是:多品种EA必须分别建模或做品种自适应,不能假定“一个参数通吃”。

他也谈对市场本质的理解:认为行情与世界事件有关联但难以短期破解,因此把所有波动视为随机过程,用概率模型描述。这种“承认无知、用统计兜底”的思路,比强行拟合指标更稳健,但也注定盈利靠样本幸运度。

四、MQL5学习路径与开发习惯

Vitaly掌握MQL5极快,关键两点:一是原有C/C++功底,二是文档+论坛。他没用Wizard,纯手写入口与逻辑,因此Experts日志干净。手写虽费时,但便于理解与控制;Wizard适合快速原型,但默认代码常带冗余日志与结构。

对于中文开发者,mql5.com中文区与俄文原站文章都值得看。遇到编译或订单问题,先搜论坛再问。下面是一段示意性的MQL5伪结构(非原文完整代码,仅表达其逻辑骨架),展示如何脱离Wizard在OnTick里用MACD与概率表:

#include <Indicators\Indicators.mqh>
CiMACD macd;
double probUp = 0.58; // 离线算好的概率
double probDown = 0.55;

int OnInit(){
   macd.Create(_Symbol,_Period,12,26,9,PRICE_CLOSE);
   return INIT_SUCCEEDED;
}

void OnTick(){
   double main=macd.Main(0), signal=macd.Signal(0);
   double lot = AccountInfoDouble(ACCOUNT_BALANCE) * 0.01 * probUp;
   if(main>signal && probUp>0.5) trade.Buy(lot,_Symbol);
   if(main<signal && probDown>0.5) trade.Sell(lot,_Symbol);
}
✦ 文档推荐
官方MQL5参考CHM/PDF见原文链接区域;视觉测试器早期用来排错,后期用优化与统计即可。

五、测试、优化与风险控制认知

EA优化仅两个输入参数,标准是最大利润。实盘回测中盈利交易比例不足50%,但靠盈亏比与概率仓位维持曲线。Vitaly明确说不会把机器人放实盘,因为算法无严格证明,可能毁掉全部押金。他没有用追踪止损,因参赛前不知有此功能,否则会加。

他认为测试器不缺功能,但视觉测试速度档位跳跃不平滑,希望改进;早期用视觉抓错,后期靠优化与统计。挑选成功策略时最看重最大回撤与盈利性。这些观点今天依然适用:竞赛EA与实盘EA的风险边界必须分开。

六、给中文参赛者与开发者的建议

Vitaly建议想赢锦标赛的人多和的经验者交流、大量练习,并祝好运。他看好当时中国选手lf8749的稳态机器人,也关注Xupypr扛回撤复原的公开源码EA。对普通用户而言,ATC公开源码是免费学习复杂实盘结构的宝库,应下载研读而非只看排名。

成为成功交易员他认为无捷径,就是像其他行业一样大量工作。他本人因学业无法全职,预估稳定结果至少需一年。中文用户常期望几周速成,访谈说明即便天才新手也把“年”作为单位,心态须放平。

⚠ 不要神化竞赛EA
ATC排名靠前的机器人很多为极端收益曲线设计,直接实盘常崩;Vitaly自己都拒绝实盘,用户更应做品种适配与资金保护。

七、beast名字的由来与访谈价值总结

EA名叫beast,是因为市场已有牛(bull)熊(bear),他造了第三个“野兽”。这幽默背后是独立构建标识的意识。整篇访谈价值在于:展示从零到参赛的真实时间线、概率EA的极简构造、手写MQL5的优势、以及新手对风险的诚实认知。它提醒中文社区,工具(MT5/MQL5)易学,市场概率难驯,文档与论坛是最强辅助。

结合当下,MetaTrader 5仍旧是零售算法交易主战场,MQL5语法稳定,文中思路可直接迁移到信号过滤、概率仓位模块。建议读者以本文为线索,打开MQL5参考与ATC历年源码,动手写一个自己的“beast”雏形,再逐步加入动态概率与风控。

常见问题

若零基础,建议先花1-2个月学C语言语法与基本逻辑,再用官方MQL5参考和论坛样例练手,整体半年可写简单EA;有C/C++基础者如Vitaly数周即可上手。
他随机选GBPUSD并完成全部概率统计与计算,其他品种因点值波动特性不同直接失败,说明单一品种统计模型不能跨品种硬套。
手写CiMACD指标对象,在OnTick取主线与信号线,用离线算好的涨跌概率乘余额得出lot,再用CTrade发单;可参考文中示意代码,勿依赖Wizard以保持简洁。
不建议。如beast作者本人也拒绝实盘,因策略无严格数学证明且盈利含运气成分;实盘需加动态概率、回撤限制与追踪止损。
代码完全可控、无冗余日志、便于理解逻辑;适合想深入机制的学习者,但开发较慢,原型阶段可用Wizard提速。