ATC冠军访谈:简单EA的盈利哲学
从德国学生Tim Fass的MQL5实战看简易策略设计
谁是 Tim Fass 与 The_Wild_13
Tim Fass 是一名来自德国的机电一体化专业本科生,2011年首次参加 MetaTrader 举办的自动化交易锦标赛(ATC 2011)。他的兄弟 Golomolo 同样参与开发,两人此前已用 MQL4 编写过管理自有资金的 EA。锦标赛中,Tim 的独立作品 The_Wild_13 一度登上排行榜首位并稳居前十。这个名字来源于他在截止前提交的第13版程序,并借用了童年读物《Jim Knopf》的意象,并无深层交易含义。
The_Wild_13 最引人注目的是其平缓而稳定的权益曲线上升,以及偶尔出现的大额但极少数的亏损交易。Tim 强调,他刻意追求“不混乱”的程序行为,以便于判断策略有效性并决定是否需要重新优化,这种工程化的简洁思维贯穿了他的整个开发过程。
兄弟协作与策略分工模式
Tim 与兄弟的背景互补:Tim 偏重数学与分析型策略,兄弟偏好基于指标的策略。两人各自独立寻找交易逻辑并用 spare time 实现,遇到好文章、函数或问题才互相交流。自有资金投放时,他们选用两人中表现更优的程序共同投资;但锦标赛为追求更高收益与排名,分头开发了风险更大的独立版本。
这种“家庭作坊”式分工降低了单人认知负荷,也避免了规则冲突。ATC 允许亲属使用不同程序参赛,只要非同一 EA 即可。对于中文交易者,若身边有编程或金融背景的伙伴,类似轻量协作能显著提升研发效率。
- Tim:分析/数学驱动,负责平滑型策略
- 兄弟:指标驱动,负责传统信号
- 资金共用最优程序,赛事实行分轨开发
The_Wild_13 的核心工作原理
该 EA 仅使用 15 分钟周期与 ZigZag 指标,不含其他技术指标。其本质是突破系统:在 ZigZag 识别的近期高低点附近挂出 pending orders,捕捉既成趋势。由于只依赖现有趋势,在方向明确的行情中表现最佳;而在震荡(flat)市中,ZigZag 高低点压缩,会产生大量错误信号,成为亏损主因。Tim 已过滤大部分但仍未找到满意的横盘识别方案。
为获得小而可靠的利润,EA 采用较大止损,使得亏损交易次数极少但单笔亏损额较大。优化时他要求 profit factor 至少大于 3,并偏好参数组合的稳定性而非极致收益。订单注释中的“321”仅为随机标识,用于区分 EA 自身订单、防止误操作,与“123”形态系统无关。
实盘资金 EA 与竞赛 EA 的差异
Tim 兄弟原有 MQL4 EA 管理自有资金四个月,表现平稳;为 ATC 则必须提高利润并承担更大风险,因此分头改写。竞赛版本追求排名,允许深回撤;实盘版本强调稳定。他指出,要赢比赛需更激进的 EA,而要护住本金则需更保守的 EA,这是环境而非个性决定。
这对中文用户的警示是:不要直接把锦标赛高分 EA 用于实盘,其风险敞口可能远超个人承受力。应先在 demo 与小资金验证,再按自身风险偏好降杠杆或改参数。
- 实盘 EA:小利稳定、大止损、低频率
- 竞赛 EA:高收益目标、放宽风控、独立开发
- 两者同根,权益曲线形状相似但振幅不同
MQL4 与 MQL5 的开发取舍
Tim 一年前学 MQL4,三个月前接触 MQL5。他认为 MQL4 的线性风格适合“简单瀑布式”逻辑,很多优秀 EA 正是此类;MQL5 虽需为许多功能定义类,但面向对象特性在复杂项目里更有优势。短期内他仍用 MQL4,因更熟悉。对于中文交易者,若策略不复杂,MQL4/MT4 生态成熟、例程多;若需多线程、复杂结构再迁 MQL5。
值得注意的是,ATC 2011 已基于 MT5,他用 MQL5 提交了 The_Wild_13,说明即使偏好 MQL4,竞赛环境也迫使掌握新语言。以下是 MQL5 中简化版的 ZigZag 突破挂单片段示例(逻辑示意,非完整 EA):
//+------------------------------------------------------------------+
//| 示意:基于ZigZag的突破挂单 |
//+------------------------------------------------------------------+
#include <Indicators\IndicatorIchimoku.mqh>
int zigzagHandle = iCustom(_Symbol, PERIOD_M15, "Samples\ZigZag");
double lastHigh = 0, lastLow = 0;
// 假设通过 CopyBuffer 获取zigzag极值后:
if(lastHigh > 0) BuyStopSet(lastHigh + Point()*10, 0.1);
if(lastLow > 0) SellStopSet(lastLow - Point()*10, 0.1);
// 大止损示例
void BuyStopSet(double price, double lot){
CTrade trade; trade.BuyStop(lot, price, _Symbol, price - 500*Point(), 0, ORDER_TIME_GTC);
}
//+------------------------------------------------------------------+
简单策略是否足够盈利
Tim 以工程师信条“最简方案往往最好”只用了 EURUSD 与单一指标。他后续尝试遗传算法,但认为简单 EA 可能媲美向量机。其自有资金 EA 月收益模拟可达20%,但他清醒地只投能亏得起的钱,不依赖暴富。这反映出简单策略在明确趋势品种上具备生命力,前提是严格风控与持续优化。
中文交易者常陷入“指标越多越准”的误区。该访谈证明,精简输入、明确假设、可控回撤,比堆砌过滤器更易落地与维护。当然,简单不等于无脑,横盘过滤与止损尺度仍是生死线。
自动交易与手动交易的观点
Tim 用模拟账户试过手动交易,因情绪化且无法24小时盯盘而失败。他认为程序只做理性决策,不被恐惧贪婪带偏,一旦写好便省时。当然,他承认有人适合手动,而他不是。对中文用户,若工作繁忙或易冲动,自动化是更优解,但需投入时间写代码与定期优化。
他也提到 EA 并非总按预期运行,因 MQL5 排错时间不足。这提醒我们:上线前充分回测与日志审查不可省,尤其 pending order 成交与止损执行逻辑。
- 手动:受情绪与精力限制
- 自动:理性、持续监控、需定期优化
- 选择取决于个人特质而非绝对优劣
给中文交易者的落地建议
从 The_Wild_13 案例可提炼出五步法:一、选单一品种与单周期;二、用 ZigZag 等结构指标定义趋势边界;三、挂突破单并设宽止损控频;四、优化时重 profit factor 与稳定性;五、横盘过滤未完美前用小资金。如此可在 MT4/MT5 上快速验证想法。
最后,Tim 的“城堡与科技避难所”梦想虽远,但其风控底线(只投闲钱)值得每位交易者抄写于终端旁。市场从不缺明星 EA,缺的是活下来的普通人。