黑洞算法(BHA)(基础篇)
📘

黑洞算法(BHA)(基础篇)

第 1/3 篇

「MT5 里跑通黑洞算法的基础门槛」

黑洞算法(BHA)在 MetaTrader 5 上以 EA 或指标脚本形式落地,核心是把候选解映射为星体、以黑洞吸收机制做迭代寻优。这套思路不依赖梯度,适合非线性、多峰的参数空间搜索。 公开示例由 Andrey Dik 于 2025 年 10 月 8 日 08:37 发布,截至统计节点获得 726 次查看、0 条评论,说明该实现仍处于低互动的冷启动阶段,未经过社区大规模实盘拷打。 从工程视角看,算法实现与测试结果两栏目前仅是骨架:你打开 MT5 的 MetaEditor,把星体位置初始化逻辑写进 OnTester 或自定义优化函数,才有可能复现原文里的回测框架。外汇与贵金属品种波动跳空频繁,拿 BHA 搜出的参数集在历史数据上表现好,实盘仍可能失效,属高风险验证。

黑洞算法是怎么借引力找最优解的

黑洞算法(BHA)由 A. Hatamlou 在 2013 年提出,核心隐喻来自天体物理:把候选解当作宇宙中的星体,质量最优的那个解被定为黑洞,其余解受黑洞引力作用向它靠拢,劣质解在迭代中被「吞噬」剔除。 每轮迭代里,算法依据解的适应度排定质量等级,引力强度与质量差挂钩,同时引入随机扰动让星体有机会跳出当前区域。这种机制让 BHA 在函数优化、组合问题乃至机器学习超参数搜索中,都有概率绕开局部最小陷阱。 对做 EA 参数寻优的交易者来说,它比网格遍历更省算力,但 2013 年的原始论文未给出外汇品种上的稳定回测结论,实盘前务必在 MT5 策略测试器里用小样本先验证收敛行为。

◍ 星辰向黑洞收敛的迭代逻辑

BHA 把优化问题映射成一片有上下边界的搜索空间,开局先撒一批随机“星辰”,每一颗就是一个候选解。这一步只是纯随机初始化,群体规模与边界直接决定后续收敛的搜索密度。 进入迭代后,每轮先挑出当前适应度最优的那颗星辰,把它定为“黑洞”。剩下的星辰不再随机游走,而是按特定引力方程向黑洞靠拢,距离越近受牵引越强。这种机制让群体在有限步数内大概率收缩到较优区域,但也可能因过早锁定而漏掉全局更优解。 外汇与贵金属市场参数寻优风险极高,历史回测里的收敛结果不等于实盘稳健,开 MT5 用策略测试器跑一遍才能看清过拟合程度。

「黑洞怎么把星辰拽过去」

群体里的第 i 颗星辰在 t 时刻的位置记作 Xi(t),而 XBH 是黑洞当前所在坐标。每一步迭代,星辰不直接跳到黑洞,而是按 Xi(t+1)=Xi(t)+rand×(XBH−Xi(t)) 往黑洞方向挪。 这里的 rand 是 0 到 1 之间均匀分布的随机数,意味着靠近黑洞时步长自动收缩,远离时步长放大,形成一种自适应收敛。外汇与贵金属波动剧烈,这种机制在回测里对参数敏感,实盘应用须警惕过拟合与滑点高风险。 事件视界是这套算法的另一关键量,决定星辰何时被黑洞「吞没」并重新随机播撒,具体公式见下一节拆解。

常见问题

需要支持自定义指标和脚本的看盘软件,以及能写迭代循环的语言环境;先确认能加载外部函数再动手。
把候选解当星辰,按适应度算'质量',高质量点变黑洞,用引力公式把周围星辰拉向自己完成搜索。
小布可内置该算法自动标注星辰收敛区,打开贵金属页就能看引力聚散提示,省去手搓代码。
一般30到100代后收敛,具体看种群规模和维度;盯适应度曲线不再明显下降即可停。
可能是引力系数过大或种群崩溃;调小收缩参数并保留随机扰动能缓解过早聚集。