MQL5 Algo Forge 入门
新的 MQL5 Algo Forge 不仅仅是您的项目列表 —— 它是一个成熟的开发人员社交网络。您可以轻松跟踪更改,维护项目历史,与志同道合的专业人士联系,并发现新想法。在这里,您可以关注有趣的作者,组建团队,并在算法交易项目上进行协作。
MQL5 Algo Forge 建立在现代版本控制系统 Git 上的。它为每个开发人员提供了一个强大的工具集,用于跟踪项目历史、分支、实验和团队合作。但这一切是如何运作的呢?在本文中,我们将解释如何开始使用 MQL5 Algo Forge 。

MQL5 Algo Forge 中的存储库是什么?
开发软件通常是一个漫长的过程,需要时间和调试。代码不仅必须编写和维护,而且必须安全存储。现代交易算法远远超出了简单的移动平均线交叉。它们建立在数学库、神经网络和机器学习的基础上。这意味着开发人员需要一种便捷的方式来快速保存更改,并从任何地方访问最新代码。
MQL5 Storage 是集成到 MetaEditor 中的内置版本控制系统。它以前使用 Subversion 1.7,这是一个集中式版本控制系统,其中所有历史记录都存储在 MetaQuotes 服务器上。没有互联网连接,您无法提交更改、回滚到以前的版本或查看历史记录。如今,它已被一个更强大、更灵活的解决方案 —— MQL5 Algo Forge 完全取代。
现在,MQL5 Algo Forge 的工作方式不同:
| MQL5 Algo Forge(基于 Git) | MQL5 Storage(传统) | |
|---|---|---|
| 历史存储 | 本地和云 | 仅限 MetaQuotes 云 |
| 离线工作 | 完整(提交、回滚、差异) | 受限或不可用 |
| 运算速度 | 即时、本地 | 取决于网络/服务器 |
Algo Forge 给您自由。您可以在火车上离线工作,创建实验分支,保存中间结果,然后将它们合并到主分支中。
Algo Forge 中的项目存储库不仅仅是一个云文件夹。它是一个结构化的 Git 存储库,存在于您的本地驱动器上,并与 MQL5 Algo Forge 云服务器同步。它由几层组成:
MetaEditor 中的工作目录
| | 您在 MetaEditor 中编辑的 .MQ5、.MQH、.SET 和其他文件。您可以在此处编写 EA 交易代码、连接指标并测试策略。除非您明确添加更改,否则 Algo Forge 不会跟踪它们。 |
暂存区(索引)
| | 在将更改保存到项目历史记录之前,您需要准备这些更改。使用 “Git Add” 命令,您可以选择下次提交时要包含的文件。这允许您对更改进行逻辑分组,例如,将交易逻辑的调整与界面或配置的更新分开保存。 |
本地存储库
| | 一旦您使用 “Git Commit” 提交更改,Algo Forge 就会将您的文件快照存储在您计算机的本地存储库中。在任何时候,您都可以查看以前的版本,回滚到较早的状态,或分析哪些修改影响了您的 EA 交易系统的性能。 |
远程存储库位于 MQL5 Algo Forge
| | 准备就绪后,您可以使用 “Git Push” 将提交推送到 MQL5 Algo Forge 服务器。这将创建一个安全的备份,并使您的更改可供团队成员使用。即使你独自工作,这也是有用的:你的代码安全地存储在云中,你的项目历史保持不变。 |
如何连接到 MQL5 Algo Forge
要开始使用 MQL5 Algo Forge,您只需要一个 MQL5 帐户。只需使用您的凭据登录 https://forge.mql5.io/ 即可。

登录后,您可以探索其所有功能。公共项目可在探索部分找到,您可以在其中浏览项目、研究其代码、分享自己的工作以及与他人协作。

但是,您的大部分开发工作将在 MetaEditor 环境中进行。要将 MetaEditor 连接到 MQL5 Algo Forge,只需使用社区选项卡下的 MQL5 帐户凭据登录即可。

Git 是什么以及它在 MQL5 Algo Forge 中的工作原理
Git 是一个版本控制系统,它记录了文件在不同时间点的外观。它有助于防止重要更改的丢失,使回滚变得容易,支持实验的分支,并使多个开发人员能够在同一项目上进行协作。
在 MetaEditor 中,你不需要直接使用 Git 命令 —— 一切都是通过用户友好的界面处理的。然而,在幕后,Git 正在执行一些基本操作。让我们将它们分解,看看在 MetaEditor 中使用相应命令时会发生什么。
让我们在公共项目文件夹中创建一个新项目 “Base_EA”。

右键单击项目文件以查看可用的 Git 命令。

1.Git 添加文件/文件夹 —— 暂存更改
当您编辑文件时,Git 不会自动跟踪它们。要告诉系统要保存这些更改,请将文件添加到索引中。这可以通过 “Git 添加文件/文件夹” 或在选择要提交的文件时完成。
Git 会对文件的当前状态进行快照并准备保存,就像将文档放入“待签名”文件夹中一样。
2.Git 提交 —— 保存项目快照
单击 MetaEditor 中的 “Git 提交” 可获取项目的当前状态并将其保存到版本历史记录中。
过程是这样的:
- Git 将您的更改与以前的文件进行比较。
- 它只存储差异(以节省空间)。
- 更改会写入一个隐藏的 .git 文件夹。
- 提交将获得一个唯一的 SHA-1 标识符。
提交本质上是一个检查点,显示了项目当时的情况。你总是可以稍后返回到任何这样的点,并从那里继续。
3.Git 推送 —— 发送至 MQL5 Algo Forge Cloud
当您选择 “Git 推送” 时,您的本地提交将上传到 MQL5 Algo Forge 服务器。
这就像将项目的新版本上传到云端,但有完整的更改历史记录。
为了方便起见,MetaEditor 在 “Git 提交” 之后立即自动执行 “Git 推送”。这可确保您当前的版本始终同步到云端。如果由于任何原因将更改推送到服务器失败,您可以手动运行 “Git 推送”。
4.Git 拉取 —— 获取最新版本
协作时,其他人可能会在您之前更新项目。或者,您可以从一台计算机提交更改,然后在另一台计算机上(或在同一台计算机但在不同的终端上)继续工作。要获取这些更新,请使用 “Git 拉取”,它会从 Forge 中检索所有更改。
Git 将从云端下载新的提交,并将其与您的本地版本合并。
5.Git 分支 —— 安全地进行分支和实验
有时您可能想在不影响主项目的情况下测试想法,这可以通过分支来完成。例如,您可以创建一个分支来测试不同的指标,或者为您的策略添加一个过滤器。每个分支都有自己的名称,您可以在它们之间自由切换。
分支只是一条平行的开发线。您可以随心所欲地进行实验,然后丢弃它或将其合并到主分支中。
6.Git 差异 —— 审查文件更改
此命令准确显示提交前文件中的更改内容(逐行)。它将打开一个比较面板,突出显示添加、删除或修改的行。
7.Git 日志 —— 查看项目历史记录
“Git 日志” 命令列出所有提交及其日期、作者和提交消息。这为您提供了一个清晰的项目开发时间表,并让您跟踪谁在何时更改了什么。
8. Git 回滚 —— 撤消提交
“Git 回滚” 创建一个新的提交,取消前一次提交的效果,但不会将其从历史记录中删除。这是撤消更改的最安全方法。但它只能在最新的提交上正常工作。
如果您发现某个提交破坏了 EA 交易,此命令会特别有用 —— 您可以快速撤消它而不会影响其他提交。但是,如果恢复的提交与以后的提交影响相同的代码,则可能会发生合并冲突,必须手动解决。
项目工作的安全实践
版本控制中最常见的问题之一是本地版本和远程版本之间的冲突。为了避免这些问题,请遵循一些简单的规则:总是先拉取。当您打开一个项目继续工作时,运行 “Git 拉取” 以确保您拥有最新版本。

另一条规则是始终最后提交 + 推送。完成工作后,运行“Git 提交”(包含自动推送)将您的更新发送到云端。遵循这些习惯将使您的工作流程顺畅且无冲突,同时确保您的代码始终安全。
MQL5 Algo Forge —— 可靠项目管理所需的一切
您不需要手动输入 Git 命令。一切都集成到 MetaEditor 中:
- 添加文件、提交和分支 —— 通过项目上下文菜单
- 推送和拉取 —— 只需两个按钮即可与云同步。
- 分支和回滚 —— 用于开发控制的简单命令。
- 变更历史记录 —— 可作为清晰的内置日志。
这 8 个命令就是您自信地使用 MQL5 Algo Forge 所需的全部。它们提供结构化开发、安全实验、团队合作支持,并完全防止数据丢失。
立即开始
MQL5 Algo Forge 不仅仅是存储 —— 它是算法交易者的完整项目管理系统。它允许您跟踪每一个更改,无风险地进行实验,在团队中协作,并维护稳定可靠的代码。
如果 Git 曾经感觉太复杂,MQL5 Algo Forge 会让它变得简单。MetaEditor 集成了基本命令,因此您可以专注于编写代码、保存进度并为任何回滚做好准备。
有用的链接:
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/18518
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
使用凯利准则与蒙特卡洛模拟的投资组合风险模型
外汇投资组合优化:风险价值理论与马科维茨理论的融合
开发回放系统(第 71 部分):取得正确的时间(四)


作为 测试,我将 Heikin Ashi 出版物的描述添加为 Markdown 格式的 README 文件,并将其提交到版本库。
请检查您是否已收到此更改的通知,以及是否可以更新 fork。
我在版本库的 Web 界面看到了这一点:
我稍后会尝试更新分叉
作为 测试,我将 Heikin Ashi 出版物的描述添加为 Markdown 格式的 README 文件,并将其提交到版本库。
请检查您是否已收到此更改的通知,以及是否可以更新 fork。
首先,我的本地 fork 克隆还没有最新的提交:
根据 Git 文档,连接原始仓库:
我进入分叉的网页界面,看到了这个:
我点击了 "同步 "按钮,然后在 MetaEditor 中做了一次 Pull:
如你所见,你的所有提交都安全地保存在分叉库中,然后在我本地电脑上的克隆分叉库中进行拉取。
在这个 文档页面上还有其他使用控制台命令同步的方法,但我还没有测试过,因为所有提交都已经同步了。
我稍后会做更多实验,看看 MetaEditor 中的提交和推送命令在分叉中的表现如何。不知道它是否也会尝试将编辑发送到原始版本库。
首先,我的本地分叉克隆还没有最新的提交:
根据 Git 文档,连接原始仓库:
我进入分叉版的网页界面,看到如下内容:
我点击 "同步 "按钮,然后在 MetaEditor 中进行拉取:
正如你所看到的,你的所有提交都安全地保存在分叉中,然后在我本地电脑上的克隆分叉中进行拉取。
在文档的这 一页,还有其他使用控制台命令同步的方法,但我没有测试过,因为所有提交都已经同步了。
这一切都很好,但你已经证明了我的观点,即 "克隆 "和 "分叉 "是不一样的,而且 MetaQuotes 采用的方法需要在 MetaEditor 之外进行额外干预,才能同步项目。
更不用说 "分叉 "还需要 AlgoForge 服务器上的额外存储空间,而 "克隆 "则不需要额外的存储空间或额外的步骤。
,我认为 MetaQuotes 的实现太 "有缺陷",无法有效使用,因此我将继续使用外部 Git 客户端或 VSCode(它在 AlgoForge 上运行良好,没有任何问题)。
我认为 MetaQuotes 的实现太 "有缺陷",无法有效使用,因此将继续使用外部 Git 客户端,或使用 VSCode(它在 AlgoForge 上运行良好,没有任何问题)。
我们很高兴欢迎您加入我们的外部 Git 客户端用户社区!😁.
我发现 MetaQuotes 的实现太 "有缺陷",无法有效使用,因此将继续使用外部 Git 客户端或 VSCode(它在 AlgoForge 上运行良好,没有任何问题)。
不幸的是,目前情况确实如此。我现在也倾向于使用外部客户端。但如果比较一下 MetaEditor 在过去 5 个月中的新增功能,就会发现进步非常明显。只是以前根本没有与新版本库协同工作的工具,而现在至少有了这样一个缩小版。