文章 "使用 WCF 服务将报价从 MetaTrader 5 导出至 .NET 应用程序的方法"

新文章 使用 WCF 服务将报价从 MetaTrader 5 导出至 .NET 应用程序的方法已发布:

想要从 MetaTrader 5 导出报价到您自己的应用程序?MQL5-DLL 组合可给出这样的解决方案!本文介绍将报价从 MetaTrader 5 导出至以 .NET 编写的应用程序的方法。对我而言,使用该平台实施报价的导出要更为有趣、合理和容易。遗憾的是版本 5 仍然不支持 .NET,因此和以往一样,我们将使用 .NET 支持的 win32 dll 作为中间层。

作者:Alexander

干得好我无话可说了。遗憾的是,MQL5 - .NET 连接仍然需要一个中介,这使得整个结构过于繁琐。

Itso:

遗憾的是,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 日)进行了测试。

sgfxtrader:

我复制了您的源文件并重新编译运行。

但 MT5 出现了崩溃。

我该如何调试/排除故障?

您好、

首先,我会尝试调试 mql5 源文件,找出导致错误的函数- 在调用所有 dll 函数之前设置断点。不幸的是,我无法将 dll 连接到 terminal.exe 进行调试,因为 terminal 已经崩溃。也许在新版本中有可能

另外,我想知道你使用的是哪个操作系统。我使用的是 32 位操作系统,因此无法在 64 位系统上进行检查。

你试过运行编译后的文件吗?

还有一点,请尝试运行解决方案中的 ConsoleService 和 ConsoleClient。也许问题与 mql 或封装库无关。

也许你只是忘了创建(或复制)terminal.exe.config 文件。请试试看。

这是一个好消息,因为 MQL5 可以使用 .NET 的 wrap dll。

为什么 Mql4 不能使用这种模式与.NET 封装的 DLL 通信?

DxdCn posted # :

这是一个好消息,因为 MQL5 可以使用 .NET 的 wrap dll。

为什么 Mql4 不能使用这种模式与.NET 封装的 DLL 通信?

在 mt4 中使用混合 DLL 是可能的,问题是 mql4 没有结构。但这并不是什么大问题,你可以传递一些参数 来代替结构。
sgfxtrader:

你好!

我复制了您的源文件并重新编译运行。

但是,MT5 出现了崩溃。

我该如何调试/排除故障?

谢谢!


我也遇到了同样的问题。

2010.07.27 12:11:09 Experts 初始化 QExporter(EURUSD,H1) 失败

非常感谢你提供的示例。一个星期以来(晚上),我一直在努力创建一个用于在.net 和 mql5 之间交换数据 的库。

我不擅长 C++,这篇文章对我非常有用。

只有一个问题。在 x64 下编译后,服务初始化出现错误。

ExportService^ service = gcnew ExportService(serverName); // <- ServiceManaged.cpp 

进程只是 "退出",没有任何解释。

我怎样才能将此错误输出到日志中,以便进一步分析? 或者您已经遇到过这个问题,并且有解决方案 ????。

我设法让它在 32 位 MT5 上运行,并在为 x64 重新配置后,设法让它在 64 位 MT5 上运行....,但是,当我尝试在策略测试器中 运行 EA 时,它们都发生了惊人的崩溃。

我想用它将一些价格和指标数据导出到数据库表中,以便用外部软件进行一些分析.....,您知道是什么原因导致了这种崩溃吗? 这是我迄今为止最接近可行的解决方案。



123
要添加评论,请登录注册