ATC冠军访谈:多币对冲EA揭秘
从程序员视角解析12货币对仅做多机器人
背景与受访者简介
2012年自动交易锦标赛(ATC 2012)接近尾声,众多非典型策略给人留下深刻印象。其中参赛者Sergey Pankratyev(账号s75)的EA表现尤为奇特:它同时交易12个货币对,且只开立多头仓位。本文基于官方访谈,还原这名开发者如何以程序员背景构建复杂多币种系统,以及他对自动化交易的心理与工程理解。
Sergey本职是制造企业的总工艺工程师,拥有理工学位,有十余年处理电磁噪声信号的经验。他认为市场信号与噪声信号在处理逻辑上高度相似,因此跨入MQL开发相对平滑。MetaTrader 5发布后,他手动交易一个月便转向EA,因不愿被盯盘焦虑束缚。
多币种仅做多架构原理
该EA并非由多个独立EA组成的委员会,而是单一复杂EA统一驱动12个货币对。在程序内部通过比率、指标与算法进行“拟合”,MT5平台天然适合此类集中式多符号操作。当EA“不知道该做什么”时,默认开立多头,属于always-in-the-market策略;多币种版本的核心目的是对冲。
历史成交记录中仅显示10个货币对,是因为另外2个仓位未平仓,不进入已平仓清单。在锦标赛官网用户页可看到全部12个对子的持仓。参数方面,各符号使用同一策略框架但参数不同,且程序会根据进场与出场结果在运行时动态修正。
- 单一EA管理12符号,避免多EA冲突
- 未知市况下默认做多,保证持续在场
- 对冲为主要设计目标,而非单向投机
- 参数随实盘反馈自适应校正
时间周期与图表无关设计
EA实际使用的周期为H2,但该周期被硬编码在程序设置中,并不读取当前图表周期。Sergey表示这种方法传统上更方便,能减少混淆。对于中文交易者而言,这意味着部署时无需切换图表周期,只要EA内部逻辑正确,加载于任何周期图表均可运行。
这种“周期内置”思路适合需要跨周期一致性的策略。若依赖当前图表,用户误切周期便可能导致信号变异;硬编码则隔离了人工操作干扰。
回测优化与资源消耗
Sergey用策略测试器拟合图表、函数与比率,含止损止盈值,并分析进出场统计,在自主运行期继续修正。初期系统测试约一周以建立方法论,之后缩短至一天(双核Intel 2GHz、2GB内存)。测试区间从2012年1月起,取2个月、1个月、一周不等,使用M1数据与“仅开盘价”模式。
他未使用MQL5云网络加速,因为在非标准用法下,统计数据的写盘指向本机文件,云代理难以回传大数组。组委会注记:现今版本已支持从测试代理接收大数据,可参考论坛帖与《在MT5测试器中可视化策略》一文。这说明早期限制已解除,现可放心用云优化。
// 伪代码示意:内置周期与多符号循环
input ENUM_TIMEFRAMES InpPeriod = PERIOD_H2; // 硬编码H2
string symbols[12] = {"EURUSD","GBPUSD","USDJPY","AUDUSD","USDCAD","USDCHF","NZDUSD","EURGBP","EURJPY","GBPJPY","EURCHF","AUDJPY"};
int OnInit()
{
for(int i=0;i<12;i++) if(!SymbolSelect(symbols[i],true)) Print("Select failed: ",symbols[i]);
return(INIT_SUCCEEDED);
}
void OnTick()
{
for(int i=0;i<12;i++)
{
double val[i];
CopyBuffer(indi_handle[i],0,0,1,val);
if(val[i]>threshold && PositionsTotalBySymbol(symbols[i])==0) trade.Buy(0.1,symbols[i]);
}
}
仓位管理与风险逻辑
每个符号的成交量选取基于空闲资金的一定百分比,并考虑指定风险比率。Sergey强调:风险越大,飙升与崩塌概率同增;他的目标不是飞太高,而是验证另一版EA,故取测试结果中最可接受的风险。若翻倍手数,未必夺冠也可能提前出局。
这反映出工程化思维:以实盘存活与策略验证优先,而非锦标赛排名最大化。对于信号服务,他有15名订阅者但未计划付费信号,说明其参与动机偏研究。
与Manov策略的对比及启示
保加利亚选手Manov在ATC 2010以“加仓”战术闻名。Sergey否认直接继承其思路,但欣赏其添加逻辑,并欲开发类似且更低风险的版本(当时未完成)。他认为Manov仅在三届中一届成功,原因在于未将对冲与指标(过去事件)结合好。
对比可见:Sergey版强调内置指标回溯与多符号对冲,减弱对单一市况依赖。其通用原则为:测试器拟合最适图表/函数/比率,统计自主修正。这种“拟合+自适应”组合,是介于网格与趋势之间的混合体。
- Manov:加仓为主,弱对冲,忽略部分指标
- Pankratyev:多币对冲,内置指标,参数动态修正
- 两者均非纯简单策略,复杂度藏于算法内
对中文开发者的实操建议
从访谈可提炼出落地步骤:一、用SymbolSelect在初始化纳入目标对;二、周期与参数常量化,隔离图表干扰;三、以M1开盘价模式快速粗筛,再缩周期精修;四、写本地日志供离线与云混合分析;五、全局手数函数管控风险;六、保留“默认市况动作”以防信号真空。
现今MT5云网络已能回传大数据,建议复杂优化直接启用代理群。另外,中文用户常困惑于“为何只显示部分对子成交”,实因未平仓位不列入历史,需去官网账户页查全貌。最后,简单不等于优秀,能用代码表达严谨风控的EA才是可持续系统。