新手半年闯入ATC决赛的EA秘辛
从零学MQL5到自动化交易锦标赛实战复盘
一、背景:从未听说过锦标赛到入围决赛
Vitaly Antonov(论坛ID:beast)在2011年夏天才偶然看到MetaTrader 5与自动交易锦标赛(ATC 2011)的广告。此前他仅对外汇有模糊认知,从5月起才认真了解市场,7月才真正接触终端与MQL5。距离提交EA仅数月,他却凭借一个自制机器人进入公开赛并争夺奖品。他认为自己作为新手反而像进赌场一样“运气好”,所实现的策略并没有严格数学证明,盈利在某意义上纯属概率幸运。
这个时间线对中文交易者非常重要:它说明以正确方式学习平台和语言,半年内写出可参赛的EA是可行的,但绝不能把运气当必然。Vitaly强调自己有C/C++基础,因此MQL5上手极快,主要依赖官方文档与mql5.com论坛。
二、策略核心:MACD叠加概率模型而非刚性逻辑
Vitaly的EA描述中提到了MACD与概率论。他是应用数学与物理专业学生,先暴力枚举各种策略与参数,再尝试套用不同数学模型,属于“理论+实践”混合派。EA接收MACD买卖信号后,并不立即下单,而是手动提前计算好“价格真正上涨/下跌的概率”,在相似信号下假定该概率恒定。
具体流程为:MACD给出信号→查表得到历史相似信号下的涨跌概率→结合当前账户余额计算手数→发单。该模型在价格剧烈震荡时表现更好;GBPUSD彼时平静,曲线近乎水平但依然吸引人。他明确表示未使用MQL5向导(Wizard),所有代码从零手写,并删除了向导默认生成的日志,因为算法简单、自己能完全掌控。
- 信号层:标准MACD交叉或柱状图翻转
- 概率层:离线统计的历史条件概率,写死在代码或参数中
- 仓位层:由概率与余额推导 lot size,而非固定手数
- 执行层:无追踪止损,因参赛前不知该功能
三、为什么只做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);
}
五、测试、优化与风险控制认知
EA优化仅两个输入参数,标准是最大利润。实盘回测中盈利交易比例不足50%,但靠盈亏比与概率仓位维持曲线。Vitaly明确说不会把机器人放实盘,因为算法无严格证明,可能毁掉全部押金。他没有用追踪止损,因参赛前不知有此功能,否则会加。
他认为测试器不缺功能,但视觉测试速度档位跳跃不平滑,希望改进;早期用视觉抓错,后期靠优化与统计。挑选成功策略时最看重最大回撤与盈利性。这些观点今天依然适用:竞赛EA与实盘EA的风险边界必须分开。
- 优化目标切忌只看利润,需加回撤约束
- 盈利比低于50%不可怕,关键是期望值为正
- 未用 trailing stop 是新手信息差,实盘应补上
- 视觉测试器用于初调,大规模用云优化
六、给中文参赛者与开发者的建议
Vitaly建议想赢锦标赛的人多和的经验者交流、大量练习,并祝好运。他看好当时中国选手lf8749的稳态机器人,也关注Xupypr扛回撤复原的公开源码EA。对普通用户而言,ATC公开源码是免费学习复杂实盘结构的宝库,应下载研读而非只看排名。
成为成功交易员他认为无捷径,就是像其他行业一样大量工作。他本人因学业无法全职,预估稳定结果至少需一年。中文用户常期望几周速成,访谈说明即便天才新手也把“年”作为单位,心态须放平。
七、beast名字的由来与访谈价值总结
EA名叫beast,是因为市场已有牛(bull)熊(bear),他造了第三个“野兽”。这幽默背后是独立构建标识的意识。整篇访谈价值在于:展示从零到参赛的真实时间线、概率EA的极简构造、手写MQL5的优势、以及新手对风险的诚实认知。它提醒中文社区,工具(MT5/MQL5)易学,市场概率难驯,文档与论坛是最强辅助。
结合当下,MetaTrader 5仍旧是零售算法交易主战场,MQL5语法稳定,文中思路可直接迁移到信号过滤、概率仓位模块。建议读者以本文为线索,打开MQL5参考与ATC历年源码,动手写一个自己的“beast”雏形,再逐步加入动态概率与风控。