ATC高手访谈:简易策略制胜之道
从2007到2011,Moraru的EA开发心得与误区
受访者背景与访谈缘起
Andrei Moraru(社区ID:enivid)是一名来自乌克兰的程序员,自2007年起便是MQL社区与自动交易锦标赛(ATC)的活跃参与者。在2007年他曾接受过采访,当时刚起步研发交易策略。四年后的2011年,他再次进入社区视野,不仅持续输出外汇与EA相关的博客内容,还带着全新设计的Expert Advisor参加ATC 2011。本次访谈旨在了解他四年间交易观念的变化、对MQL5的适应情况,以及新EA的设计思路,对中文交易者理解‘从复杂到简单’的EA进化路径极具参考价值。
四年间的交易理念转变
Moraru明确指出,自上次访谈后他尝试了大量复杂与简单的策略,最终更倾向于简单策略。他减少使用技术指标作为信号发生器,将更多注意力放在头寸规模(position volume)管理上。他认为,基于海量统计数据的复杂系统仅具理论趣味,实盘效率低下;而简单、直观的系统在EA自动化交易中更为可靠。不过他也强调,手动交易时基本面分析依然非常重要。这一转变对许多沉迷‘完美模型’的中文开发者是一记警钟:过度拟合的复杂系统往往经不起实时行情检验。
从MQL4到MQL5的切换体验
Moraru承认初学MQL5时因基础语法差异存在困难,但整体不难掌握。他指出MQL5的痛点在于‘使用时需记忆大量细节’,语言与IDE均未显著减轻开发负担。不过优势明显:借助类(classes)可轻松编写多货币策略,借助颜色缓冲区(color buffers)可更便捷地开发某些指标类型。对于中文用户,MQL5的面向对象特性虽增加入门成本,却是编写模块化、易维护EA的必经之路。建议从官方MQL5参考文档(https://www.mql5.com/files/pdf/mql5.pdf)系统学习。
- 类机制:支持多货币策略封装,降低耦合
- 颜色缓冲区:丰富指标可视化表现
- 记忆负担:需熟记标准库与事件函数
- 环境未显著简化:仍需严谨调试
新EA的设计与参数结构
2011年参赛EA相较前作极为精简:采用‘逆前仓方向开仓’的最简入场系统,首仓方向手动指定;使用固定手数并与前三次参赛EA不同,引入了追踪止损(trailing stop)。该EA仅用ATR一个指标来确定追踪止损幅度。参数方面,每货币对7个参数加1个全局参数,仅3个可优化。这种极简设计降低了过拟合概率,也便于实盘监控。对于想参加类似竞赛或实盘的中文交易者,先控制变量数再谈优化,才是稳健起点。
// 示例:基于ATR的追踪止损片段(概念演示)
double atr = iATR(Symbol(), PERIOD_CURRENT, 14, 0);
if(position_profit > 0){
double new_sl = SymbolInfoDouble(Symbol(), SYMBOL_BID) - atr * 2;
trade.PositionModify(position_ticket, new_sl, 0);
}
策略测试器的价值与陷阱
Moraru高度评价MetaTrader 5策略测试器,称其为MT5核心优势;其EA在demo前向测试与回测偏差极小。但他警告:用测试器做优化易致曲线拟合(curve-fitting),超级优化EA在真实账户常意外亏损。此外,多货币策略测试仍不透明,即便遵循官方建议,切换货币对设置仍存差异。中文开发者常误把‘回测优美’当‘实盘可行’,必须结合样本外与实盘小资金验证。
分享动机与实盘计划
Moraru习惯分享自认有价值的MQL4/5作品,借社区反馈完善代码,也视作对使用他人成果的回馈。该EA赛前已在demo运行八月,温和资金管理下表现良好;他计划次年完善资金管理后上实盘,但明确提醒他人勿盲目跟用,因亏损风险真实存在。这反映出负责任开发者的态度:公开不等于荐股,策略需匹配个人风险承受。
成功公式的增补与竞赛收获
2007年他提出‘胜任的资金管理+稳定预测进出点’;2011年他补充经典原则‘截断亏损,让利润奔跑’,指出许多交易者低估此简单铁律。关于ATC价值:赛前严苛自动测试锤炼极限编程;赛中交流与分析对手EA最具启发;赛后复盘成败策略收益大。他本人从领跑者VNIK的多策略切换、以及金字塔加仓(pyramiding)威力中获得新灵感,纠正了‘多策略切换低效’的偏见。中文用户参与社区竞赛,重点不在名次,而在逼自己写出鲁棒系统。
- 增补原则:cut loss short, let profit run
- 竞赛收获:极端编程、同行交流、赛后复盘
- 新认知:金字塔加仓与多策略切换可行且有效