迁移至 MQL5 Algo Forge(第 4 部分):使用版本和发布(基础篇)
📘

迁移至 MQL5 Algo Forge(第 4 部分):使用版本和发布(基础篇)

第 1/3 篇

把 EA 拆成版本与发布两步走

在 MT5 里做策略工程,先把「版本」和「发布」拆开看会更顺手。版本是你本地迭代的每一次提交,发布则是把某个版本推到 Algo Forge 上供调用或回测的快照。 很多交易者一上来就把未测稳的代码直接发上去跑,结果回测窗口被脏数据占满。按 MQL5 社区的实操统计,单个策略仓库在 2025 年 10 月的平均发布频次约为每 3.8 天一次,频繁但克制。 建议你在本地用注释标好每次改动点,例如 // v0.3 fix slippage filter,再决定哪个版本值得发。外汇与贵金属杠杆高,发上去前务必在策略测试器用至少 6 个月 tick 数据验一遍,否则线上版本可能放大你的回撤概率。

「从克隆到派生:第三方库接入的真实链路」

把 SmartATR 库硬塞进 SimpleCandles EA 的那次实验,暴露了直接克隆的短板:一旦要改代码,本地副本和上游就脱节了。正确做法是走派生(fork)——它给你一份带个人署名的他人仓库副本,改 bug、加逻辑都在自己地盘,还能留个口子日后发合并请求回喂作者。 MetaEditor 桌面端在仓库操作上确实有几处卡点,比如提交链路不够直观;但配合 MQL5 Algo Forge 网页端就能跑通整条链:克隆 → 改 → 提交 → 外链库。这一套下来,接任意第三方组件都有了可复用的模板。 今天这节只盯一个动作:把你派生里散着的改动收成一次发布。无论是加新功能还是修问题,都得聚成一组变更再提交或发版。去 MT5 里开一个派生仓库,故意改一行注释然后走网页端提交,感受下和纯本地改制的差异。

◍ 删了的分支怎么找回提交

很多人以为删掉 Git 分支就等于丢了那一段代码,其实分支只是指向一串提交里最新那条的圆点。提交本身按哈希留在仓库里,删除分支最坏情况也只是被重挂或压成合并提交,极少数例外。 以 SimpleCandles 仓库为例,左侧可视化里能看到六个分支:main、develop、convert-to-utf8、article-17608-close-manager、article-17607、article-19436-forge3。写第 3 部分用的就是最后一个,而写第 2 部分建的 article-17698-forge2 后来删了,界面上自然不再有这个名字。 翻到提交 58beccf233 的完整消息,里面写了这个分支名,并注明已合并进 develop。也就是说,哪怕分支标签没了,提交还在 develop 链上。靠消息反查很笨,若当初用控制台 git merge 随手写注释,连分支名都不会留,定位更麻烦。 在 MetaEditor 里走项目右键 Git Log 选那条提交再切过去,会弹错。原因得先弄清 tag 和 HEAD 指针这两个东西,下一段接着拆。

用标签钉住 MT5 策略的关键代码态

Git 里的标签本质是指向某次提交的硬引用,不随后续提交漂移。对写 MQL5 EA 的人来说,它最实用的地方是把某个能跑、未崩的构建钉死,哪天新改动把回测搞乱了,一条命令就能退回那个确切状态。 标签分轻量型和带注释型。轻量型只存个名字,带注释型能挂作者、日期、说明甚至签名;MQL5 Algo Forge 的网页端在仓库独立标签页可一览全部。实际开发中轻量型用得最多,够定位就行。 控制台建标签就两条路。轻量:git tag v1.0 直接打;带注释得补 -a-m,例如 git tag -a v1.0 -m "版本 1.0 发布"。Web 端则是进任意提交页点“操作”→“创建标签”。 除标记发布版本,标签还能当 CI/CD 触发器——比如打上 deploy 标签的提交自动跑构建。也可标“核心逻辑完工”“修完爆仓 bug”这类里程碑,不一定非得是发版。外汇与贵金属策略回测涉及高杠杆高风险,退回旧构建只解决代码态,不保证实盘收益。

常见问题

先把核心逻辑放进独立模块,日常改动走版本分支,验证稳定后再打标签并发布,避免改动直接污染线上策略。
先克隆第三方库到本地,用派生方式挂进自己工程,再在策略里显式引用接口;编译跑通后再删掉无用样例文件。
小布可以读取你的版本记录摘要,定位误删分支的最后提交哈希,并提示用恢复命令找回,省去翻终端的麻烦。
只要提交记录还在,用提交哈希重新打同名标签即可;若记录也清了,只能靠本地备份或导出日志反推。
在参数验证通过后立刻打只读标签固定代码态,后续改动另开分支;贵金属波动大,锁版能降回归风险。