Trade.mqh适用 于 MT4。

- www.mql5.com
#ifdef __MQL5__ #define __MQL5_NEW__ #else // __MQL5__ #define __MQL4_NEW__ #endif // __MQL5__在《圣经》的开头。所有条件都应改为 "新变量"。这样就可以在 MT5 中运行该库的 mt4 变体,在 MT4 中运行该库的 mt5 变体。
我建议在《圣经》一开始就这样做。所有条件都应更改为新变量。这样就可以在 MT5 中运行该库的 mt4 变体,在 MT4 中运行该库的 mt5 变体。
只有一种库变体
我希望能在 MT5 中运行 MT4 逻辑库。
我希望能在 MT5 中运行 MT4 库逻辑。
我不理解这个建议,因为两个平台的逻辑是一样的。实现方式略有不同。
我在您的库之前连接了 MT4Orders。我希望 MT4 变体参与到您的库中。
有两种解决方法
- 在您的库的所有源代码中替换 __MQLX__。也就是说,我改变库本身,尽管是半自动的。
- 创建宏,如上所示。这样,在 MT5 中包含 MT4 逻辑时,就不需要更改库中的任何内容了。
我想您会有兴趣在 MT5 中比较您的库,但要在两种逻辑模式下进行比较。
ZY 我还希望能在虚拟环境中运行您的程序库。为此,我需要访问库中 MT4 风格的部分。
我在您的库之前连接了 MT4Orders。我想在您的库中使用 MT4 变体。
有两种解决方法
- 在您的库的所有源中替换 __MQLX__。也就是说,我改变库本身,尽管是半自动的。
- 创建宏,如上所示。然后,要在 MT5 中包含 MT4-逻辑,您无需更改库中的任何内容。
我认为您可以在 MT5 中对您的库进行比较,但要在两种逻辑模式下进行。
ZY 我也希望能在虚拟模式下运行您的库。为此,我需要访问库中 MT4 风格的部分。
我们可以讨论这个问题。但要私下进行。目前,该程序库将以同样的方式开发--两种平台的一个逻辑。该库被视为一个独立单元--两个平台都适用。采用相同的逻辑,既不与 MQL4 风格也不与 MQL5 风格相抵触,一切都是通用的。
ZY.我不明白库中 MQL4 风格部分是什么意思。那里没有分隔。请告诉我库中提到的地方。
我们可以讨论但要私下进行。在此期间,程序库将以同样的方式开发--两个平台一个逻辑。该库被视为一个独立的单元--两个平台都适用。采用相同的逻辑,既不违背 MQL4 风格,也不违背 MQL5 风格,一切都是通用的。
我已经给您发送了一个版本的库,它可以通过您规定的 MT4 风格逻辑在 MT5 中运行。
我不明白库中 MQL4 风格部分是什么意思。那里没有分离。请告诉我库中提到的地方。
问题的关键在于,跨平台库中 MQL4 风格部分的可操作性要比 MQL5 风格高得多。因此,在使用跨平台库时,我更倾向于在 MT5 中使用其 MQL4 风格逻辑。它在 MT5 中更加可靠。
我认为,在 MT5 中,您的 MQL5 风格逻辑需要很长时间才能检测到错误,而 MQL4 风格只会有最低数量的错误,而不是关键错误。
新文章 轻松快捷开发 MetaTrader 程序的函数库(第十部分):与 MQL4 的兼容性 - 开仓和激活挂单的事件已发布:
在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第九部分中,我们开始改进 MQL4 的库类。 在此,我们将继续改进函数库,确保其与 MQL4 的完全兼容。
测试
我们来检查一下应用的变化。 编译 TestDoEasyPart10.mq4,在测试器中启动它,开仓并平仓,下挂单,等待其中之一被激活,并检查停止价位和尾随是否被激活(修改持仓和挂单)。 函数库能“见”到的所有 MQL4 事件都将显示在测试器日志中:
如果我们仔细观察测试器日志,我们可以看到函数库仍然无法看到平仓。 当触发 BuyLimit #3 挂单时,日志条目通知 [BuyLimit #3] 已激活,导致 Buy #3 仓位。 现在,函数库可以看到挂单激活事件,并且知道开仓的原始订单来源。 此外,我们可以看到修改函数略有遗漏 — 由尾随修改的 BuyStop #1 挂单的标签变为红色。 但函数库会看到所有订单和持仓修改事件。
作者:Artyom Trishkin