时间演化旅行算法(TETA)·进阶篇
锚点配置的接受与修订逻辑
这段代码片段实现了两种锚点(anchor)配置更新路径:当满足跨宇宙迁移条件时,按随机因子 rnd 做部分接受或整段接受更优宇宙的配置;否则走高斯分布做局部扰动。
部分接受那行 val = a[i].cB[c] + (1.0 - rnd) * (a[pair].cB[c] - a[i].cB[c]) 意味着 rnd 越接近 0,自身宇宙越偏向采纳配对宇宙的锚点值;rnd 接近 1 则几乎保留原值。整段接受则直接 val = a[pair].cB[c],无任何混合。
Revision 函数在每轮迭代后刷新全局最优 fB 与个体最优 fB,并调用 Sorting_fB 按适应度排序宇宙。popSize 为种群规模,直接决定数组拷贝与排序开销,在 MT5 策略测试器里改这个参数能直观看到回测耗时变化。
外汇与贵金属市场的高波动可能让这类优化器陷入局部最优,实盘前务必用历史数据多轮验证收敛稳定性。
val = a [i].cB [c] + (class="num">1.0 - rnd) * (a [pair].cB [c] - a [i].cB [c]); } else { class=class="str">"cmt">// Full acceptance of the anchor configuration from a more successful universe val = a [pair].cB [c]; } } else { class=class="str">"cmt">// Local anchor adjustment via Gaussian distribution val = u.GaussDistribution(cB [c], rangeMin [c], rangeMax [c], class="num">1); } a [i].c [c] = u.SeInDiSp(val, rangeMin [c], rangeMax [c], rangeStep [c]); } } } class=class="str">"cmt">//—————————————————————————————————————————————————————————————————————————————— class=class="str">"cmt">//—————————————————————————————————————————————————————————————————————————————— class="type">void C_AO_TETA::Revision() { for (class="type">int i = class="num">0; i < popSize; i++) { class=class="str">"cmt">// Update globally best anchor configuration if (a [i].f > fB) { fB = a [i].f; ArrayCopy(cB, a [i].c); } class=class="str">"cmt">// Update the best known anchor configuration for each universe if (a [i].f > a [i].fB) { a [i].fB = a [i].f; ArrayCopy(a [i].cB, a [i].c); } } class=class="str">"cmt">// Sort universes by their degree of favorability class="kw">static S_AO_Agent aT []; ArrayResize(aT, popSize); u.Sorting_fB(a, aT, popSize); } class=class="str">"cmt">//——————————————————————————————————————————————————————————————————————————————
「TETA 在基准函数上的实测得分」
时间演化旅行算法(TETA)在三类地形测试函数上各跑了 10000 次函数评估,规模从 5 个峰值到 500 个峰值递增。Hilly 地形下得分由 0.9136(5 峰)跌到 0.3199(500 峰),Forest 地形从 0.9710 降到 0.2932,Megacity 离散地形从 0.7346 降到 0.1602;综合得分 5.79704,折算百分比 64.41%。 这套算法最突出的行为是早期就锁定高潜力区域并立刻细化,在 MT5 的逐次运算可视化里能直接看到收敛带快速收窄。GoldsteinPrice 函数上它给出 0.99998(5 峰)、0.99998(25 峰)、0.99923(500 峰),几乎贴顶。 横向比对 37 种优化器榜单,TETA 排第 6,前面是 ANS、CLA、AMOm、(P+O)ES、CTA。榜首 ANS 综合 6.134(68.15%),TETA 与第 5 名 CTA 的 5.846 只差 0.049,说明在中等维度样本里它和种群算法第一梯队差距极小。 外汇与贵金属参数寻优属于高风险场景,回测榜首不代表实盘稳健;建议把 TETA 接进 MT5 策略测试器的自定义优化模块,先用 GoldsteinPrice 验证数值精度,再切到真实报价样本看过拟合倾向。
◍ 40 个优化器在 EURUSD 上的回测排名片段
上面这段是某轮 MT5 策略参数优化测试中,第 38~45 号算法加上随机游走基线(RW)的横向数据。指标列依次为:三档适应度分量、总适应度、三档约束违背度、约束总和、三组鲁棒性统计与两项综合得分(末两列数值与百分比)。 Micro-AIS(40 号)总适应度 1.62330 为这组最高,综合得分 3.379(37.54%),优于传统 Nelder-Mead 的 3.233(35.92%)。RW 随机游走综合仅 2.348(26.09%),说明无脑游走在外汇参数空间里基本没竞争力。 做 EA 调参时,别只盯着总适应度。COAm 总适应度 1.55841 低于 Micro-AIS,但鲁棒性末三项 0.50500 / 0.17467 / 0.03380 里最大回撤代理值偏高,过拟合风险可能更大。贵金属与外汇品种波动结构不同,直接套用这些排名结论有高杠杆爆仓风险,建议在自有品种上重跑同口径测试。
一点提醒
TETA 这套优化算法从概念到实现一口气写完,核心代码约 50 行、无自定义参数,在 0–100 评级表(100 为理论极值)的测试中不同维度问题均保持平衡表现,低维离散问题除外存在结果散射。它只暴露一个外部参数——种群规模,跑起来快、结构紧凑,适合计算资源受限的实际调参场景。 附带存档里给了 Test_AO_TETA.mq5 等脚本,你在 MT5 里直接跑统一测试台,就能复现文中所说的直方图与颜色渐变结果。外汇与贵金属市场高风险,任何算法给出的优势都只是概率倾向,实盘前务必用历史数据自测。 作者不对规范描述的绝对准确性背书,不少环节为提升搜索力做过改动;结论来自实验而非理论保证。拿去用可以,但别把它当万能钥匙,低维离散任务换别的种群算法更稳。