种群优化算法:蝙蝠算法(BA)·综合运用
🦇

种群优化算法:蝙蝠算法(BA)·综合运用

(3/3)·从算法描述到回测落地,一篇补齐把 BA 接进 EA 的最后拼图

新手友好 第 3/3 篇

很多交易者把种群优化当成论文玩具,觉得离实盘很远。其实 BA 的参数搜索逻辑,正好能替你省掉手动调参的大量试错。本篇接前两篇的概念与实现,直接把算法用到测试结果上。

「AO 变体在 EURUSD M1 上的回测输出对照」

下面这组 Print 输出来自 MT5 策略测试器,标的 EURUSD、周期 M1,时间戳停在 2023.01.03 17:55:57.386,是同一函数对不同 AO 计算分支的横向跑分。

未命名分支先吐出三行三元组 1.000001.000000.10959、5.94615… 与 0.845990.513080.22588,随后汇总值 5.946151922377553;C_AO_ABC 的三行数据 0.845990.513080.22588、0.588500.214550.17249、0.474440.266810.35941 汇总为 3.661160435265267。
C_AO_GWO 的前两行全是 0.000000.000000.00000,第三行才出现 0.189770.041190.01802,汇总仅 0.24898721240154956,说明该分支在样本窗口内几乎没产生有效信号。C_AO_COAm 三行 1.000000.733900.28892、0.645040.340340.21362、0.671530.342730.45422,汇总 4.690306586791184,强度介于未命名与 ABC 之间。

外汇与贵金属属高风险品种,M1 回测结果受点差与滑点影响大,上述数值仅反映该函数当时的局部计算状态,不能直接外推到实盘概率。开 MT5 把这段日志对应的 CalculationTestResults 调用挂到 OnTester 或独立脚本里,逐分支改参数跑一遍,比盯汇总值更有用。

◍ AO 指标族在 EURUSD M1 的回测数值对照

下面这组日志是某次在 EURUSD 的 M1 周期上跑指标计算测试的终端输出,时间戳统一停在 2023.01.03 17:55:57.386,说明是同一次调用里顺序打印的多组结果,不是跨时段采样。 第一组未命名块输出了三行三联数值,最后跟一个标量 1.4272897567648186;紧接着打印 =======C_AO_FAm======= 作为分隔,之后三行三联数值的末位出现了 1.00000,标量升到 4.477897116029613。

再往下 =======C_AO_BA======= 块里,首行直接给到 1.000001.00000 的满值组合,标量 3.8147314003892507;末尾还有一行裸数据 0.248987212401549565.946151922377553,后者明显大于前面任何标量。

这些数字本身只是函数返回的原始度量,不能直接当成信号强度。外汇与贵金属杠杆高、滑点随机,M1 上的度量对点差极敏感,拿去实盘前先在 MT5 用相同品种周期复跑一遍,看你的环境是否印出同一组数。

AO优化器的实测耗时对比

在 EURUSD 的 M1 周期上跑了一轮 AO 指标多种优化算法的计算测试,时间戳停在 2023.01.03 17:55:57.386,同一毫秒内输出了 9 组相对耗时。 C_AO_ACOm 的数值是 100.000,作为本组基准耗时;C_AO_GWO 只有 1.000,是这组里最轻量的算法。C_AO_RND 8.652、C_AO_PSO 14.971、C_AO_ABC 60.294、C_AO_COAm 78.177、C_AO_FSS 21.475、C_AO_FAm 74.486、C_AO_BA 62.962,耗时跨度从 1 到 100 差出两个数量级。 外汇和贵金属这类高杠杆品种,回测和实盘都属高风险,上述数字只是算法计算开销,不指向任何盈利概率。开 MT5 把这段日志对应的测试例跑一遍,就能确认自己机器上各算法的相对快慢,挑耗时低的优先嵌进盯盘脚本。

MQL5 / C++
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_RND: class="num">8.652
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_PSO: class="num">14.971
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_ACOm: class="num">100.000
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_ABC: class="num">60.294
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_GWO: class="num">1.000
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_COAm: class="num">78.177
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_FSS: class="num">21.475
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_FAm: class="num">74.486
class="num">2023.01.class="num">03 class="num">17:class="num">55:class="num">57.386   CalculationTestResults(EURUSD,M1)      C_AO_BA: class="num">62.962
让小布替你跑这套
这些诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到参数敏感度的快速扫描结果,把重复劳动交给小布,你专注决策。

常见问题

频率主要平衡历史最佳位置对当前位置的影响,范围大时单只蝙蝠可远离群体搜索;音量及脉冲相关参数控制局部精细度和收敛节奏,需配合回测观察。
小布盯盘的 AIGC 模块已内置常见种群优化的诊断视图,可导入 EA 回测产出的参数区间,辅助你判断哪些参数组合在外汇贵金属上更稳,但高风险仍在。
传统方法只适合小规模低维问题,实盘参数耦合强、噪声大,自然启发的 BA 用群体搜索更容易跳出局部劣解,不过也只是提高概率。
脉冲发射率偏高会让算法更偏向局部开发,收敛快但可能漏掉全局更优区;外汇贵金属行情结构多变,建议留一定探索比率。