如何在几分钟内将 MT4 指标转换为 MT5
已发表: 2021-02-03如何在几分钟内将 MT4 指标转换为 MT5:您是否希望将在 MT4 上运行的专家顾问转换为确保它们也可以在 MT5 平台上运行?
这里没有长方法!
我们将指导您以如此简单的方式将 MQL4 代码转换为 MQL5 语言代码; 你会很高兴的! 革命性的 MetaTrader 系列的成功归功于 Metaquotes Inc,现在他们终于决定将 MT5 标记为未来的软件。
该公司似乎将大部分精力集中在 MetaTrader 5 平台 (MT5) 上,毫无疑问,它比 MT4 更好。
那么,您将如何迁移? 继续阅读!
为什么在几分钟内从 MT4 切换到 MT5
对于这个计划中的迁移,程序员和交易者面临的最大疑问是,考虑到MT4 和 MT5不能同时运行这一事实,您如何才能在 MT5 平台上有效地运行以 MQL4 语言编写的专家。
当我们更深入地研究这个问题时,我们会遇到一些事实,例如:
- MT4 和 MT5 不能使用相同的编程语言运行。 因此,编码为在 MT4 上工作的专家将无法在 MT5 上工作,从而使场景变得困难。
- MT4 的未来非常枯燥乏味,我们可以在关于 MT4 未来更新的公告之后引用这一点。 因此,该软件现在将没有足够的汁液。
- Metaquotes 对 MT5 的功能进行了许多更改,因此与 MT4 相比,它获得了更多的功能优势。
如何将MT4指标成功转为MT5:核心流程
在 MT5 上使用 MT4 EA 在技术上似乎是不可能的,并且需要修改现有 MQ4 EA 的源文件(其中的一些元素)以使其在 MT5 上完美运行。
如果您充分了解 MQL4 的语言和环境与 MQL4 的不同之处,那么您当然可以执行所有这些修改。
在这里,我们将在 MT4 EA by Average.mq4 EA 的帮助下演示 MT4 EA 到 MT5 格式的转换。 之所以选择它,首先是它预装了所有的MT4安装,其次大多数程序员都熟悉这个EA。
使用示例“Moving Average.mq4”并将 MT4 EA 转换为 MT5 EA
- 在 MetaEditor 4 中,您将找到名为“MQL4\Experts\Moving Average.mq4”的源文件,您必须打开该文件。
- 按 Ctrl + A、Ctrl + C 选择 + 复制所有文本。
- 按F4键打开MetaEditor你发现MT4客户端是打开的。
- 在您从所需的经纪商处成功下载 MT5 桌面终端后,打开 MT5 客户端的实例。
- 现在,打开 MetaEditor 5 并创建一个新的 EA(模板),就像我们在下面演示的那样。
- 填写“名称”字段,并为您的 EA 模板分配一个合适的名称。 完成此操作后,您将在 MT5 上构建您即将推出的 EA。
- 现在,在通过点击 Ctrl + A 选择模板上的所有文本并将它们全部删除后,粘贴您从 MT4 复制的文本。
MetaTrader 5 带有其他订单系统,(例如,打开、关闭、选择、发送等)方法。 然而,对于从 MT4 到 MT5 EA 的转换,根据我们的专家,最简单的方法是使用一个库 - mq4.mqh。
更远…
我们推荐这个库,因为它允许程序员在 MQL5 中以与在 MQL4 中相同的方式操作订单。 简而言之,该库允许 OLS(订单语言系统)变得类似于 MQL4。
您可以在线从选定的程序员那里获得mq4.mqh库文件。 在从一位这样的程序员那里获得我们的功能后,我们添加了一些功能。 我们将所有内容合并到一个文件中。 该库旨在仅涵盖订单系统。
- 确保 MT5 平台的实例已打开
- 打开 MT5 平台后,点击文件 -> 打开数据文件夹“...\MQL5\Include”。
- 将库文件 (mq4.mqh) 拖放到此文件夹。
- 刷新 MT5 平台现在很重要。 关闭它并再次打开它。
- 现在打开 MetaEditor5 和智能交易系统的源代码。
- 在 SimpleEA.mq5 的源代码中,添加字符串: #include <mq4.mqh>
- 将字符串添加到源代码后,按“F7”按钮并汇编 SimpleEA.mq5 的源代码。 此外,MetaEditor 5 的工具栏上还提到了“编译”选项。
- 完成组装后,你会得到两个错误。 这就是强调 MT4 和 MT5 平台之间区别的地方。
您只需在 MetaEditor 4 中编写 iMA,其中“shift”是价格蜡烛的编号。 需要为 MetaEditor5 上的每个 EA 和函数创建句柄,以通过该句柄从 EA/指标中获取值。
如何将 MT4 指标转换为 MT5:更改源代码
在这一部分中,我们将专注于编辑 MT4 的源代码,以确保它在 MT5 上完美运行。 这些源代码更改仅适用于指标,因为您在此处更改的只是源代码中的一行。
现在,让我们描述进行这些更改的步骤。 我们可以?
- 为 MA 指标句柄创建一个变量 Integer 类型以启动该过程。
- 为其分配一个名为 INVALID_HANDLE 的值。 下面的图片解释了相同的。
EA 交易和指标带有 OnInit() 部分,用于在运行时进行初始化。 形式如下:

您可以使用帮助文件来阅读此内容。 要访问 MetaEditor5 上的帮助文件,只需点击“F1”键。 您还可以在 MQL5 社区中找到一份文档,其中提供了许多您可以在帮助文件中找到的信息。 使用此链接访问此文档 –
https://www.mql5.com/en/docs/basis/function/events
- 此外,将此代码(源代码)添加到我们的 EA 文本中。 如果没有此部分,请在 MetaEditor 5 中按 Alt + M。
- 函数列表中出现了五个函数,但您会看到默认情况下不存在 OnInit() 函数。 因此,我们必须手动对其进行叙述,下图将向您展示如何创建它:
- 要查看与源代码配对的 OnInit() 函数,只需点击 Alt + M。
- 现在,在 OnInit() 部分中编写以下代码
在 MT4 MetaEditor 中,一般需要编写如下代码:
另一方面,该代码被描述为 MT5 指标的句柄,这也是您在 MT5 中编写以下代码的原因:
- 现在,要从移动平均 EA 中获得价值,只需使用句柄编写一个函数,您将在即将到来的图像中看到它:
正如我们之前所讨论的,创建一个函数对于使用 MetaEditor5 获取 EA/指标的值是必要的,我们用于获取值的函数有一个我们称为 CopyBuffer() 的字符串。
它的工作是将数据从指标复制到您的数组,并以特定数量获取给定指标的给定缓冲区的数据。
只需通过链接 -https://www.mql5.com/en/docs/series/copybuffer 阅读可用的文档。
代码如下:
MA 有 1 个缓冲区,编号为“0”。 现在,从 MA 复制一个值。 它在 MetaTrader4 中编写如下:
最后一个“0”匹配图表上最后一根蜡烛的 MA 值(零蜡烛)。 在 MT5 MetaEditor 中,您将得到如下编写:
- 从索引位置,您必须将一个值复制到 MA 数组。
- 在编译代码时,首先清除这两个错误。 为此,请指出第一个记录错误,然后双击它。
- 现在,您将移至 EA 的 MT5 源代码中的错误位置。 对于此实例,您将在第 114 行获得错误代码。
- 您必须删除指示错误的行并将其替换为包含 MaGet(0) 代码的字符串,就像我们在下面指出的那样。
错误代码始终用红色墨水加下划线,您可以在下方找到 ma MaGet(0) 代码。
- 删除错误代码并放入 MaGet(0) 字符串后,您可以按 F7 键并再次编译代码。
- 编译源代码后,您会注意到现在只会出现一个错误。
- 为了替换最后一个错误代码,需要遵循我们在清除之前的错误代码时采用的相同顺序。 到达错误代码的行,双击它,评论和替换! 而已!
- 您会发现绿色墨水在错误代码下划线。 在下面,您会找到代码,它将替换错误部分。 这就是我们消除错误的方式。
您必须使用以下字符串进行替换,并且您即将进行:
if (打开[1]>MAGet(0) && 关闭[1]<MAGet(0)
- 注释和替换错误代码后,代码的编译是强制性的。 在按照我们之前通过点击 F7 键的方式编译源代码后,您会看到所有错误都已删除。
- 我们已经介绍了将 MT4 EA 转换为可在 MT5 上使用的合适版本的整个过程。 因此,您现在可以在 MT5 平台上方便地运行它!
如何将 MT4 指标转换为 MT5:结论
乍一看,如何将 MT4 指标转换为 MT5 似乎是一个难以回答的问题,但我们上面提到的方法使这成为现实。 想象一下,在 MetaEditor 5 编程界面上构建整个程序是多么可悲,而且从头开始也是如此。
幸运的是,该快捷方式可用,我们在此处进行了相同的描述。 最近,MT5 的使用量显着增加,甚至有望出现关于从 MT4 切换到 MT5 的新方法。 MT5平台不断发展。
MT5 平台经过了多次修改,在接下来的时间里,我们也期待添加更多功能。 毫无疑问,它比MT4要好得多。
外汇交易新手,或对您当前的外汇 VPS 托管计划不满意?
好吧,Accuweb 托管的外汇计划为外汇 VPS 托管设定了新的基准,以 6 个不同的价格点提供超方便的计划。
用户对这些计划的外汇交易体验感到满意,如果您是外汇新手,千万不要错过机会! 您还将获得 7 天免费试用。 点击此处了解更多信息。