群体优化算法(基础篇)
◍ 用群体算法在MT5里找极值
群体优化算法(如蚁群、粒子群)本质是在解空间里靠大量候选解的协作与竞争,逼近某个最大或最小规则下的优解。18世纪欧拉那句「宇宙中根本什么都没有发生,其中某种最大或最小规则从未出现过」,放到交易参数寻优上依然成立——EA 的入场阈值、止损比例,背后都是极值问题。 在 MetaTrader 5 里跑这类算法,通常不靠内置指标,而是用 EA 的 OnTester / OnGeneticOptimization 钩子接管遗传或群体寻优流程。2022 年 11 月 24 日社区一则相关示例帖获得 1299 次查看、8 条讨论,说明实盘向的群体优化在 MT5 用户里并非冷门玩具。 打开 MT5 策略测试器,把优化模式切到「遗传算法」,再在 EA 代码里限制每代种群规模,就能直观看到参数组合如何逐代收敛。外汇与贵金属杠杆高、滑点随机,这类寻优结果仅代表历史样本倾向,不等于未来分布。
「优化算法怎么才算真的好用」
把优化算法(OA)按搜索逻辑分类,是挑EA参数前先要理清的底层视角。遗传、粒子群、贝叶斯这几类在 MT5 里都能见到影子,但不同类的收敛路径差异很大。 收敛和收敛率决定你跑一次优化要烧多少时间:收敛率高,可能 200 代内摸到近似最优;收敛率低,跑 2000 代还在原地晃。收敛稳定性则看多次随机种子下结果是否漂移——外汇、贵金属这种高波动品种,稳定性差就意味着过拟合概率陡增,实盘容易翻车。 光看收敛不够,还要看可扩展性:参数维度从 5 涨到 50,计算耗时是指数级还是线性。测试函数用来人造复杂地形(多峰、平坦带、悬崖),逼出算法的真实评估准则,而不是拿历史行情一笔带过。 用 RNG(随机数生成器)喂入简单 OA 做对照基台,能快速暴露算法是不是靠运气。同一组测试函数跑 10 次取中位数,比单次结果更有参考价值。
从一张牛皮到最速降线:优化的老祖宗们
优化算法的本质,是在函数域里找极值——极大或极小。这念头不是计算机的专利:古希腊人早就知道,给定周长时圆面积最大,给定边数和周长时正多边形面积最大,给定表面积时球体体积最大。 公元前约825年,狄多用一张牛皮剪成细带围成半圆,圈下最大临海面积建了迦太基。这其实是闭合曲线定长围最大面积的最早实例:半圆所围区域即为最优。 1696年约翰·伯努利在《教师学报》抛出最速降线问题:垂直平面两点A、B间,仅受重力作用的点走哪条曲线从A到B用时最短。伽利略1638年曾近似求解,结论是最快路径不是直线而是一条摆线,每点曲率确定。牛顿未署名的解法奠基了变分计算。 欧拉和拉格朗日的一阶极值条件(欧拉-拉格朗日方程)后来广泛用于力学轨迹,但一阶解不总给真极值;勒让德、雅可比、黑森补了二阶条件,魏尔斯特拉斯在19世纪下半叶才说清变分解的存在性。 到18世纪下叶数学基础成型,却因算力匮乏在实务中沉寂到20世纪下半叶。现代计算技术复活了复杂优化,1980年代起从自然与社会建模中爆发出随机优化算法族。外汇与贵金属量化里跑这类算法,高风险伴随过拟合可能,MT5上验证前先控好样本外窗口。
◍ 启发式优化靠的是群体智能
做 EA 参数优化时,最值得关注的是启发式优化算法(OA)。它不要求你事先知道目标函数的数学解析式,收敛到全局最优也没有理论保证,但大量实验表明,在多数问题上能给出相当不错的近似解,对实盘调参已经够用。 这类算法大多从自然界借模型:粒子群(PSO)模仿鸟群觅食轨迹,蚁群算法(ACO)照搬蚂蚁信息素路径选择。它们被统称为群体/种群算法。 和传统梯度类算法最大的区别是——群体算法同时维护一组候选解在解空间里游走,而不是像牛顿法那样只盯一条搜索轨迹。MT5 的遗传优化器本质上就是这种思路,一次遗传代里跑几百个染色体(参数组合),比单点爬山更容易跳出局部极值。
「收敛率与稳定性不是一回事」
迭代优化能不能在有限步内逼近目标函数最优值,取决于算法实现和问题本身的表面形态。看测试函数迭代构造图会发现:函数表面越复杂,找到全局极值的难度越大,这是收敛性受问题条件直接牵制的直观证据。 收敛率衡量的是「早期迭代就贴近全局极值」的速度,是判断算法优劣的核心指标。多数人说某算法比另一个快,实际指的就是这个。需要注意,方法收敛率通常不超过二次方,三次方收敛只在极少数特例出现。 稳定性另有一层含义:同一函数连续多次跑优化,结果若波动很大,说明算法稳定性低。表面急弯、离散、不连续的函数,容易让算法失稳甚至给不出可接受精度。 可扩展性看的是变量维度涨上去之后还能不能维持收敛。群体算法在高维、病态函数上找全局极值的概率明显占优,但碰到平滑单峰函数,效率通常不如经典梯度法;而且群体算法表现高度依赖调参自由度,这部分参数量往往不小。外汇与贵金属市场数据噪声大、表面复杂,用这类算法做参数寻优须清醒认知高风险。
用三类测试函数逼出优化器短板
MQL5 标准库里自带三套测试函数,路径分别在 \MQL5\Experts\Examples\Math 3D\Functions.mqh 与 \MQL5\Experts\Examples\Math 3D Morpher\Functions.mqh,可直接在 MT5 终端文件夹调取,无需自己造轮子。 Skin 函数在全域平滑,但埋了大量落差微弱的局部极值,优化器很可能提前卡在收敛陷阱里,离全局最优还差一截。 Forest 函数放了几个几乎等高的峰值,算法跑完难证自己拿到的是真最优,其稳健性基本被函数平滑度绑架。 Megacity 是离散型“区域”函数,变量小动不改变输出,靠梯度吃饭的算法在这里容易懵。外汇与贵金属策略优化本身高风险,用这三套函数压测 EA 参数寻优逻辑,比盲信回测曲线更靠谱。