干得好我无话可说了。遗憾的是,MQL5 - .NET 连接仍然需要一个中介,这使得整个结构过于繁琐。
遗憾的是,MQL5 与 .NET 的通信仍然需要一个中介,这使得整个结构过于繁琐。
我同意。顺便说一句,对于简单的交互,有一个很棒的东西--反 P/Invoke--无需中介的交互。
我还尝试使用 ILMerge 将所有 3 个程序集合并到 QExportWrapper.dll 中,但没有成功,或者说成功了,但从 mql5 合并后,它看不到导出的函数。
你好!
我复制了您的源文件并重新编译运行。
但是,MT5 出现了崩溃。
我该如何调试/排除故障?
谢谢!
1.首先,尝试使用编译后的文件,这些文件位于 bin.rar 压缩包中 。
例如,MetaTrader5 客户端的目录是 "C:\Program Files\MetaTrader 5\"
让我们在 "C:\Program Files\MetaTrader5\MQL5\Experts\" 文件夹中为专家QExporter.mq5 创建新文件夹,例如"QE"。
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.mq5 (1615 bytes)
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QService.mqh (4380 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.Service.dll (7168 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExportWrapper.dll (27648 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.Client.dll (6656 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\WindowsClient.exe (12288 bytes)
编译完 QExporter.mq5 后,编译文件 QExporter.ex5 将出现在以下目录中:
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.ex5 (6706 bytes)
将其附加到EURUSD,H1 图表并运行WindowsClient.exe 之后,我得到了下图:

我在 249 点(2 月 18 日)进行了测试。
我复制了您的源文件并重新编译运行。
但 MT5 出现了崩溃。
我该如何调试/排除故障?
您好、
首先,我会尝试调试 mql5 源文件,找出导致错误的函数- 在调用所有 dll 函数之前设置断点。不幸的是,我无法将 dll 连接到 terminal.exe 进行调试,因为 terminal 已经崩溃。也许在新版本中有可能
另外,我想知道你使用的是哪个操作系统。我使用的是 32 位操作系统,因此无法在 64 位系统上进行检查。
你试过运行编译后的文件吗?
还有一点,请尝试运行解决方案中的 ConsoleService 和 ConsoleClient。也许问题与 mql 或封装库无关。
也许你只是忘了创建(或复制)terminal.exe.config 文件。请试试看。
这是一个好消息,因为 MQL5 可以使用 .NET 的 wrap dll。
为什么 Mql4 不能使用这种模式与.NET 封装的 DLL 通信?
新文章 使用 WCF 服务将报价从 MetaTrader 5 导出至 .NET 应用程序的方法已发布:
想要从 MetaTrader 5 导出报价到您自己的应用程序?MQL5-DLL 组合可给出这样的解决方案!本文介绍将报价从 MetaTrader 5 导出至以 .NET 编写的应用程序的方法。对我而言,使用该平台实施报价的导出要更为有趣、合理和容易。遗憾的是版本 5 仍然不支持 .NET,因此和以往一样,我们将使用 .NET 支持的 win32 dll 作为中间层。
作者:Alexander