EA回测参数优化实战:遗传算法与暴力搜索的适用场景对比
EA回测参数优化实战:遗传算法与暴力搜索的适用场景对比
同一套均线交叉逻辑,同一段2019-2023年的黄金H1数据,A君用暴力搜索跑完全部参数组合花了19个小时,最终盈利因子1.42;B君换成遗传算法,47分钟出结果,盈利因子1.38。两人把最优参数拿到实盘跑三个月,A君的EA回撤了18%,B君的只回撤了9%。这个结果挺反直觉的——搜索更彻底的那一方,实盘表现反而更差。

这不是个例。我在自己的贵金属策略池里反复验证过类似现象,根源不在算法本身,而在于很多人没搞清楚这两种搜索方式各自适合什么样的参数地形。黄金和白银的日内波动结构、点差跳变、避险情绪驱动的脉冲行情,都会让参数空间变得坑坑洼洼。
先搞清楚两者的搜索逻辑差在哪
暴力搜索(Brute Force)就是把每个参数按步长铺开,笛卡尔积全组合跑一遍。假设你的EA有5个参数,每个取10个值,那就是10万次回测。遗传算法(Genetic Algorithm)则是模拟自然选择:初始随机生成一批个体,按适应度排序,优秀的交叉变异产生下一代,几代之后收敛到高适应度区域。
关键区别在于:暴力搜索保证找到全局最优(在步长精度内),遗传算法只保证大概率找到接近最优,但速度快一个数量级。问题来了——回测里的「全局最优」往往是过拟合的产物,尤其在黄金这种噪声占比高的品种上。
什么情况下该用暴力搜索
参数数量少、每个参数取值范围窄的时候,暴力搜索是更稳的选择。我一般把阈值定在:参数≤3个,单参数取值≤15个,总组合数控制在3000以内。
- 止损、止盈这类线性参数,暴力搜索能画出完整的热力图,你能直观看到参数平原和悬崖在哪
- 单参数敏感性分析必须用暴力搜索,遗传算法会掩盖某个参数在特定区间的剧烈变化
- 策略逻辑里有硬性边界条件(比如ATR倍数必须大于1.2才不触发异常),暴力搜索能直接过滤掉无效区域
拿黄金H1的ATR止损策略举例,参数只有ATR周期和止损倍数两个。ATR周期取10到20,止损倍数取1.0到3.0,步长0.2,总共也就一百多种组合,几分钟跑完。这种场景用遗传算法纯属杀鸡用牛刀。
注意:暴力搜索的步长设置是个坑。步长太细,计算量爆炸且容易过拟合;步长太粗,会跳过真正有效的参数区间。我的经验是先用粗步长扫一遍确定大致范围,再在最优区域附近用细步长二次搜索。
遗传算法真正的用武之地
当参数超过5个,或者某个参数需要连续取值时,遗传算法的优势就出来了。我有个基于美元指数与黄金负相关性的多因子EA,涉及8个参数,暴力搜索的组合数是千万级,普通VPS根本跑不动。换成遗传算法,种群规模50,迭代30代,大约1500次回测就能收敛。
但遗传算法有个致命问题:早熟收敛。种群多样性丢失太快,会卡在局部最优出不来。解决方法是调高变异率,或者采用自适应变异——前期变异率高保持探索,后期降低变异率做精细开发。
我在MT5的优化器里做过对比测试,同样的多因子EA:
- 遗传算法:种群64,迭代40代,耗时52分钟,最优盈利因子1.51,最大回撤14.2%
- 暴力搜索:全组合约240万次,耗时预估超过30小时,最优盈利因子1.63,最大回撤21.7%
看出问题了吗?暴力搜索找到的「更优」参数,回撤明显更大。这就是过拟合的典型特征——它在历史数据上把每个噪声波动都拟合进去了,实盘一遇到新行情就崩。
贵金属EA的参数优化有个特殊陷阱
黄金和白银的点差不是固定的。伦敦金在亚洲时段的点差可能是欧美时段的1.5到2倍,非农数据公布前后点差瞬间扩大好几倍。如果你的回测没有模拟动态点差,优化出来的参数在实盘会严重失真。
我在MT5里做优化时,一定会用「Every tick based on real ticks」模式,并且导入历史真实点差数据。XM和Exness的黄金品种命名不同——XM是GOLD,Exness是XAUUSDm或XAUUSD——合约大小和点值计算方式也有差异,跨平台迁移EA时必须重新校准这些参数,否则优化结果直接作废。
还有一个坑:很多人在优化时把「最大回撤」作为唯一适应度指标,结果优化出一堆几乎不交易的参数——因为不交易就没有回撤。适应度函数必须同时考虑盈利因子、交易次数和回撤,我通常用自定义公式:盈利因子 × sqrt(交易次数) / 最大回撤。
我的混合优化实战流程
经过大量测试,我现在固定用两阶段混合策略:
- 第一阶段:遗传算法粗搜,种群50,迭代25代,快速锁定有潜力的参数区域
- 第二阶段:在遗传算法找到的最优解附近,用暴力搜索做小范围精细扫描,步长缩小到原来的1/3
- 第三阶段:用Walk Forward Analysis验证——前70%数据优化,后30%数据验证,如果验证集盈利因子低于优化集的60%,直接放弃这组参数
这套流程跑一个8参数的黄金EA,总耗时大约2小时,比纯暴力搜索快十几倍,实盘表现也比纯遗传算法稳定。上个月我用这套方法优化了一个白银M15的突破策略,优化集盈利因子1.48,验证集1.31,实盘跑了三周,当前盈利因子1.27,衰减在可接受范围内。
VPS选型上,优化阶段建议用高频CPU的机器,遗传算法对单核性能敏感;实盘部署则优先选延迟低的机房,比如Exness的服务器在伦敦,你就别把VPS放在新加坡。
如果只记一件事:参数少于3个用暴力搜索,多于5个用遗传算法,中间地带用混合策略,并且永远用样本外数据验证——回测里最漂亮的参数,往往是实盘里亏得最惨的那个。
免责声明:本文仅代表作者观点,不构成任何投资建议。市场有风险,交易需谨慎。
