ATC冠军访谈:多货币马丁EA揭秘
中国开发者葛森林的MQL5实盘与赛事实战经验
受访者背景与交易起点
葛森林(论坛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开发中最贵的不是想法,而是环境适配与严谨测试。
中国交易者的特殊环境与风格
访谈指出,外汇交易在中国未完全开放,导致理论和技术研究薄弱,自动化交易处于起步阶段,这是为何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) { /* 加仓或开仓逻辑 */ }
}
}
}