ATC冠军访谈:趋势EA实战揭秘
从Bulls Power指标到资金管理的真实经验
一、受访者背景与交易启蒙
Tomasz Tauzowski(论坛ID: ttauzo)是华沙经济学院金融与银行专业硕士,主修资本市场,具备扎实的技术分析功底。编程自学生时代起便是他的爱好,因此他很自然地将金融知识与IT技能结合,转向算法交易。约5年前他接触外汇,但早在更久之前就已零星交易股票。真正促使他进入外汇的是MetaTrader平台:他发现MT4提供脚本与EA编写功能,便在2005年写出第一个Expert Advisor。由于手动交易时间不足,自动化成为必然选择。
在实盘方面,他曾用迷你账户测试旧版EA,初期盈利400%,但两个月后几乎归零。这一惨痛经历让他意识到外汇的不可控性,此后将重心转向竞赛型EA开发,同时在风险更低的股票市场保持盈利。自2006年首届ATC起,他每届必参,最好成绩为2007年第66名,2008年则遭遇滑铁卢。
二、ATC历届经验与核心教训
Tomasz参与了2006至2010每届ATC。2006年他凭借激进 scalp EA 曾在11月底跻身前8,胜率100%,但因回撤过大很快跌出。这让他学到关键一课:仅依赖历史价格变化,外汇在中长期不可预测;任何EA都需针对特定时段优化。他还观察到往届前5选手在后续赛事中爆仓的案例,因此确立原则——不可采用过度激进的资金管理。
2010年注册截止前,他只有一天时间将MT4 EA移植到MT5,来不及重写资金管理模块。这导致他的EA在对抗 bobsley、forez 等重仓选手时处于劣势:forez 信号与他的EA几乎一致,但手数翻倍,他自嘲“只能祈祷对手亏损才能少输”。他明确将“下一年强化资金管理”列为首要改进目标。
- 基于历史价格的EA必须周期优化
- 避免过度激进的加仓与 scalp 策略
- 移植新平台时需预留资金管理开发时间
- 竞赛排名受规则变动(如取消白俄选手)影响显著
三、当前EA的核心原理:Bulls Power趋势捕捉
2010年参赛EA的核心是基于 Bulls Power(牛力指标)的趋势识别。该指标由Alexander Elder提出,反映买方力量。Tomasz的EA监测指标的趋势方向及其幅度(magnitude),当显著的趋势转折出现时开立对应仓位。他信奉“趋势是你的朋友”,并改良为“新趋势可能是新朋友”——假设趋势改变后的首方向即便伴随小修正,多数情况仍值得跟随。
为控制风险,EA采用固定止损(SL)与止盈(TP),且 TP 设为 SL 的两倍。这意味着只需33%胜率即可盈亏平衡。实际运行中他的胜率超47%,且盈利单需跑满80点,与亏损单绝对值差异明显。EA同时限制“同一时刻仅一个持仓”,但因信号频繁,几乎全程在市。
四、技术指标组合与Bulls Power的选用理由
除Bulls Power外,Tomasz常用震荡指标、移动平均、RSI(文中写RSA应为笔误)、动量指标。他未实现形态识别,因编程复杂度高。选择Bulls Power部分出于心理效应:当价格突破高低点时,人群心理变化会反映在指标极值上,EA借此捕猎高值以暗示新趋势。所有参数均经优化以适配特定区间,但他强调无人能保证预测必然兑现。
这种“假设—优化—验证”的循环,是零售量化开发者典型路径。他提醒,优化易过拟合,需结合品种流动性与周期特征审视稳健性。
五、止损止盈与品种选择的实证逻辑
SL与TP通过最大化余额与合理回撤的目标优化得出。EURUSD的短动量与突破常近80点,后接约40点修正,因此他设80点TP、40点SL。比赛中许多单子差2–5点触利后反转,佐证了80点假设,但也暴露缺乏动态平仓模块的缺陷。他专做EURUSD因其高流动性易优化,MT4不支持多币种回测也限制了他跨品种验证;计划在下一代MT5 EA中利用货币相关性提前确认信号。
- EURUSD高流动性降低滑点干扰
- MT4历史测试器限制多币种策略研发
- 相关性确认可缓解假突破
- 80点假设源于统计观察而非严格检验
六、Z-score依赖与未 exploited 的连赢连亏现象
其EA的Z-score很高,呈现“赢后赢、亏后亏”的序列依赖。访谈中他解释,这可能受重复报价(requotes)污染:部分仓位未开,若补齐则Z-score或变。若简单“亏后跳过一信号”,实操并不容易,且未必构成圣杯。他打算赛后研究该特征并为ATC 2011做准备,说明统计特性需结合执行摩擦综合判断。
七、规则变动、标准库使用与夺冠概率
当届白俄选手因多版本EA违规被取消,间接送他进入前三圈。他理解ATC旨在比拼作者最优策略而非实盘调参,但承认规则执行艰难。技术层面,他因时间紧直接套用MQL5标准库模板承载信号引擎,肯定官方预置库的价值。对于夺冠概率,他自评0.5%:无资金管理的EA上限约8万,而领头羊 bobsley 守住10万以上,故冲击前三需极端巧合。
实盘表现上,ATC两月利润竟等同更长资格期的8月测试利润,属惊喜。他欣赏 avoitenko、bighope 等资金曲线,并视 forez 为最大对手。该访谈揭示:竞赛EA与稳健实盘EA在设计哲学上常存鸿沟。
八、可参考的MQL5代码片段示例
以下为基于Bulls Power开立趋势仓位的简化逻辑示意(非原文完整代码,依访谈原理重写),演示指标句柄获取与双倍TP设定思路,供学习使用。
//+------------------------------------------------------------------+
//| 简化 Bulls Power 趋势EA信号示例 |
//+------------------------------------------------------------------+
#property strict
#include <Trade/Trade.mqh>
CTrade trade;
int bullsHandle;
input double Lot=0.1;
input int SLpoints=400; // 40点约400点差单位(小数点后5位)
input int TPpoints=800; // 80点
int OnInit()
{
bullsHandle=iBullsPower(_Symbol,_Period,13);
if(bullsHandle==INVALID_HANDLE) return INIT_FAILED;
return INIT_SUCCEEDED;
}
void OnTick()
{
static datetime lastBar;
if(lastBar==iTime(_Symbol,_Period,0)) return;
lastBar=iTime(_Symbol,_Period,0);
double bull[2];
CopyBuffer(bullsHandle,0,0,2,bull);
// 简易规则: 棒值由负转正开多, 由正转负开空, 仅一单
if(PositionSelect(_Symbol)) return;
if(bull[1]<0 && bull[0]>=0)
trade.Buy(Lot,_Symbol,SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Ask-SLpoints*_Point,_Ask+TPpoints*_Point);
else if(bull[1]>0 && bull[0]<=0)
trade.Sell(Lot,_Symbol,SymbolInfoDouble(_Symbol,SYMBOL_BID),_Bid+SLpoints*_Point,_Bid-TPpoints*_Point);
}
//+------------------------------------------------------------------+