模式搜索的暴力方法(第六部分):循环优化(基础篇)
「用循环把模式搜索跑成暴力扫描」
在 MT5 里做模式搜索,最直白的路子就是循环优化:把参数空间按步长拆开,让测试器逐个组合跑回测。这种方法不挑策略类型,均线交叉、突破阈值都能套,但代价是计算量随维度指数膨胀。 原文给出的基准现象是:单品种、双参数、步长取 10 档,一轮完整优化在普通四核机上约耗 15–20 分钟;参数加到三维且步长缩到 5 档,耗时直接翻 8–12 倍。外汇与贵金属波动率高,这种暴力扫描跑出的历史优参存在过拟合倾向,上实盘前务必用样本外数据复核。 想验证这套思路,开 MT5 策略测试器选「自定义模式 + 循环参数表」即可手动复刻;下一节会给出具体的循环优化算法改写方式。
◍ 从手动开发到降维自动化
上一篇文章里铺的那些函数,只是算法里全部能力的表层。它们不止管EA的自动生成,还把结果优化、筛选以及后续接自动交易这条链路也包了进去,更先进的EA构造逻辑后面会逐步放出来。 交易终端、通用EA和算法三者是共生关系。只要算力够,手动开发的活儿能全甩掉;最坏情况下,潜在改进的劳动强度也可能压低一个数量级。 这篇先拆这些创新里最要紧的几块,不扯远景,直接看怎么在MT5里落地验证。
把EA流水线拆成可自动化的常规动作
做一套长期能跑的MQL5方案,最先要算清的是:哪些活儿属于“常规过程”、可以被机器替掉。这类活儿远不止写代码,它覆盖从想法产生、理论建模、编码、改代码,到EA反复重优化、EA筛选、日常维护、终端操作以及实验试错——粗略列出来就有九类以上。 无论你是纯算法交易者、只会看图的用户还是全职程序员,只要真在MT5上折腾策略,这个清单里至少会撞上一半。买个EA挂图表点一下就永久躺赢,理论上存在,实盘里极罕见。 我先把最显眼的环节自动化:上一篇文章从概念层讲过优化框架,但真动手后才发现,得在已有功能上继续叠三件事——把优化机制做细、造一个合并多个EA的“合并机器人”机制、给所有组件设计正确的交互路径。 这里的“优化”不是单因子扫参,而是多因子集合,并且要在既定范式里想清楚四件事:干掉分时(tick)来提速、去掉决策点之间的利润曲线管控来提速、引入自定义优化准则提质量、把远期效率拉到最高。 论坛里至今还有“优化到底有没有用”的争论。我的结论很直接:优化本身中性,取决于你会不会用、目标清不清晰。用对了就有想要的结果,用不对只是浪费电。 很多人排斥优化,客观只有两个根因:一是不懂基础知识(为什么做、做什么、怎么选结果、没经验);二是优化算法有缺陷。两者互相放大。MT5优化器结构执行无可挑剔,但优化标准和过滤器还像儿童沙箱——尤其缺正向样本外时段的实现和过程控制,这部分后面会专写。
「用点数复合指标给优化结果排序」
除了常规回测评估项,可以把几项特征相乘来放大算法价值,加快筛选优质优化设置的速度。作者做了一套类似 MT5 策略测试器的报告界面,点一下就能把选中项生成配置文件,丢进终端对应文件夹,通用 EA 直接读取交易;也能一键编译带固定参数的独立 EA。 表里核心主量只有三个:Points 是回测总利润点数,Orders 是严格「同时只持一单」下的完整开平仓次数,Drawdown 是余额回撤。由此算出 Math Waiting(期望点数)、P Factor(归一到 [-1,0,1] 的利润因子变体)、Martingale(马丁暴露度)、MPM Complex(前三者连乘的综合分)。 因为每一项升高都代表概率属性更优,直接相乘就能让通用度量更高效地对海量优化结果排重要性。大规模跑参时,高分留、低分删,筛选比单纯看利润因子干净。 所有计算走点数,对优化稳定性有正向作用;主量在起始就严格取正、后续全派生。未进表的两个主量也值得记:Points Plus 是盈利及零盈利单利润点数和,Points Minus 是亏损单损失模长和。 回撤按最大相对余额回撤算,因测试算法不监控资金曲线,其他回撤类型忽略。流程是:定起始参考点;盈利段随余额上移参考点,直到首笔亏损触发回撤计数;等余额回到参考点水平,重置参考点;回溯上段找最低点算该段回撤;全曲线循环。末段即使未闭合也计入回撤,继续跑可能变大但影响有限。外汇与贵金属优化含高杠杆风险,复合指标仅提升筛选概率,不预示实盘收益。