EA 调试、测试与优化实战指南
从消灭编译错误,到用策略测试器找到最佳参数
大多数 EA 写不完,卡在两关:编译一堆红叉不知从哪改,以及回测参数怎么调都调不出棒亮曲线。本文用官方《EA 测试与优化指南》的真实案例,把这两关一次性讲透。
一、逐个消灭编译错误
Error 选项卡四要素:①错误说明 ②出错文件 ③行列号 ④错误/警告总数。用 Ctrl+G 或双击错误跳到对应行。关键纪律:逐步改、逐步编译,别一次性堆一堆再编。
- truncation of constant value:int 变量用 double 初值(改为 double)
- 'XXX' - unexpected token:上一行缺分号
- 'if' not allowed on global scope:漏写左括号
- array is required:声明动态数组漏了 []
- GetLastError:函数漏了 ()
- = 写成 ==:把赋值当比较
- PositionsTotal:函数漏了 ()
二、运行时错误:数组越界
编译过了不代表能跑。案例:CopyBuffer 只拷了 3 根柱(索引0/1/2),代码却读 [3] → Array out of range。修正:把拷贝数量放大到 5,覆盖所需索引。
三、策略测试器初步测试
View → Strategy Tester;选 Expert 与周期;优化类型选“市场报价中所有品种”;目标选 Balance + Max Profit Factor;跳完按 Result 排序,找出最赚钱的品种/周期作为优化方向。
四、优化 EA
启用优化 + 快速遗传算法;在 Inputs 里只勾关键参数。Start/Step/Stop 含义:Start=最小值、Stop=最大值、Step=每次递增步长;实际测试值都在 [Start,Stop] 内且为 Step 整数倍。测试总次数 = 各参数组合数。
五、解读优化结果
右键加列看 Profit Factor(盈利系数)、Expected Payoff(预期收益)、Drawdown%(回撤)。盈利系数=总盈利/总损失,越高越赚;回撤越小策略越稳;恢复系数=盈利/最大回撤,反映风险。综合选高利润且低回撤的那组。结果存为 XML,可用 Excel 打开。
六、终测:最佳参数组合再跑一遍
切到优化图 → 1D Graph,右键选 X 轴参数看曲线峰值,逐个确定最佳值(如止损 34、止盈 78、各周期值)。把最佳值组合进 Inputs,关掉优化跑“终测”,确认结果稳定。
小结
- Error 选项卡四要素定位错误
- 逐步改+逐步编译,别堆着改
- = 是赋值,== 是比较
- CopyBuffer 数量要覆盖所读索引
- 初测:市场报价所有品种找方向
- 优化:只勾关键参数,防组合数爆炸
- 看 Profit Factor / Drawdown% 选参数
- 终测:最佳参数组合再跑一遍