ATC冠军访谈:多货币马丁EA实战解析
从中国选手葛森林的ATC 2011策略看风控与开发
一、访谈背景与选手画像
葛森林(论坛ID:yyy999)是来自中国的大学计算机教师,自2007年8月接触外汇市场,2009年3月起步实盘,但手动交易成绩不稳,随后转向自动化交易。由于MetaQuotes平台是唯一支持自动化交易的软件,他顺理成章学习了MQL4与MQL5,并偏好MQL5更强的功能集。在ATC 2011(自动化交易锦标赛)中,他的多货币EA在10月底进入前十且始终未掉出,这在当时中国外汇交易受限、参与者研究基础薄弱的大环境下尤为罕见。
值得注意的是,中国境内并不允许普通零售外汇交易,因此本地交易者多集中于证券,外汇自动化理论积累少。葛森林这类既懂编程又愿意钻研MQL的参赛者,实际上是在信息不对称的条件下完成跨语言、跨市场的技术自学。
二、从失败到改版:上一年ATC的教训
在ATC 2010中,葛森林的EA原本设计交易5个货币对,却因代码错误或忽略了锦标赛MT服务器运行环境,实际只跑了一个对;且纯指标系统表现不佳。这直接促使他在2011年重写策略:采用类似多货币马丁的思路,但作者自述并不了解马丁具体原理,只是沿用并改进了前一年规则,增加可优化参数,并做了更严谨的回测。
他特别强调:锦标赛只允许提交一个EA,因此上年代码隐患必须彻底清除;今年他更小心地准备了经过充分回测的改进版。这一点对任何参赛或实盘EA开发都是铁律——单文件交付的环境下,隐藏bug会在高压环境放大。
- 上年问题:多货币未生效、纯指标逻辑弱
- 今年对策:重写加仓逻辑、扩参优化、严回测
- 关键认知:锦标赛服务器资源受限,需控制CPU占用
三、核心策略:不止损、亏损加仓、盈利才平
该EA最引人争议的点是:不使用固定止损(SL)、不跟尾随止损(Trailing Stop)、不设固定止盈(TP)。作者认为价格趋势无法预先正确判定,固定SL可能在价格回弹时破坏整体结构;Trailing Stop会导致平仓后无后续利润;固定TP在强波动中会减少总利润。其平仓原则只有一条——只平盈利单,对亏损单持续加体积(增加手数),等待账户整体回到盈利再关闭。
这种结构在表面上接近马丁格尔,但作者表示并未研究马丁数学。本质上它依赖账户级盈亏监控:EA随时计算总浮亏/浮盈,在通道底部等基准线尝试关闭亏损单。由于永不快速认亏,遇单边行情会急剧放大风险,属于典型的高风险生存型策略。
四、品种与周期选择:工程化取舍
锦标赛提供12个可交易对,他的EA实际跑8个。原因是在个体回测中,其余4个要么亏损要么利润过低;若全部同跑,资金效率下降且风险因子上升。因此他手工筛选出现行8对。交易触发设在每根H1开始时,理由有二:一是信号基于H1周期;二是多货币同跑若频率过高会吃掉CPU,可能通不过锦标赛前置资源检测,或比赛中丢信号。
这反映出EA开发不仅是策略问题,更是资源调度问题。在MQL5中,若OnTick频繁计算多符号,应改为OnTimer或仅在新柱事件处理,以降低负载。
// 简化:仅在新H1柱处理多货币信号
int OnInit()
{
EventSetTimer(60); // 每分钟检查是否新小时
return(INIT_SUCCEEDED);
}
void OnTimer()
{
static datetime lastBar=0;
datetime now=TimeCurrent();
if(now - lastBar >= 3600)
{
lastBar = now;
for(int i=0;i<SymbolsTotal(false);i++)
{
string sym=SymbolName(i,false);
// 仅处理白名单8对
}
}
}
五、回测、预期与运气论
葛森林透露,EA在回测中自然盈利;对锦标赛期望是保前十即可,因为市场不可预测,当前权益已超预期。他认为夺冠除优秀EA外还需市场机会(运气)。这种清醒认知区分了“历史拟合”与“未来随机”——再多优化也无法消除宏观波动的随机性。
他也提到类似策略的保加利亚选手Dimitar Manov,以及欣赏ias的加仓与资金管理。说明ATC圈子内策略趋同常见,差异在参数鲁棒性与执行环境适配。
六、中文交易者的现实约束与路径
访谈指出:中国历来ATC参与者多但从未获奖,根源是外汇禁售导致理论技术研究浅、自动化起步晚。葛森林接中文用户私单开发,但因语言问题未在MQL5 Jobs接单。这给中文开发者的启示是:语言本地化能力(英文需求沟通)是承接全球订单的瓶颈;而本土禁售反而催生了“以开发代交易”的生存模式。
另外,他肯定MetaTrader提供的历史回测、实时模拟与错误排查工具,是自学策略落地的关键。对今天的中文用户而言,MQL5云端、信号跟单与Jobs依然是合规学习自动化的低门槛入口。
- 外汇境内受限→重开发轻实盘
- 语言壁垒→难接海外Jobs单
- 平台工具链→弥补理论短板
七、对比马丁与本文EA的异同
经典马丁格尔以固定倍数在亏损后加注,期望一次回本;葛森林EA虽被旁观者指为“普通马丁”,但本人无此理论框架,其加仓基于通道与账户盈亏监测,而非倍数赌徒模型。区别在于:马丁依赖数学期望回归,本文EA依赖多货币弱相关分散与人工选对。两者共同点则是极端行情下回撤毁灭,必须配合仓位上限。
对于想写类似系统的MQL5开发者,建议明确:若用 martingale 逻辑,必须在代码层写最大加仓层数与全局净值止损,否则只是把炸药包伪装成机器人。
// 简易全局净值熔断(非作者原码,仅示范)
double equity=AccountInfoDouble(ACCOUNT_EQUITY);
if(equity < AccountInfoDouble(ACCOUNT_BALANCE)*0.8)
{
// 强制平所有亏损单
for(int i=PositionsTotal()-1;i>=0;i--)
{
ulong ticket=PositionGetTicket(i);
if(PositionGetDouble(POSITION_PROFIT)<0) PositionClose(ticket);
}
}
八、给中文MQL5学习者的行动清单
从访谈可提炼出一条务实路线:先以计算机或编程基础切入MQL5语法;用策略测试器做多货币回测而非仅靠指标;控制CPU与资金占用以适配实盘/竞赛;接单时补齐英文需求理解;实盘前必加资金熔断。葛森林的案例证明,即便在受限市场,靠平台与自学也能站上全球赛场前十,但风险设计才是能否活到最后的分水岭。
- 学MQL5而非仅MQL4
- 回测覆盖多对同跑
- 新柱触发降负载
- 实盘加净值止损
- 英文沟通扩Jobs机会