文章 "使用命名管道与 MetaTrader 5 进行无 DLL 通信" - 页 2

 
Reshetov:
................

一方面,我们摆脱了 dll,但另一方面,应用程序又需要其他编程语言的辅助工具。

建议方法的缺点是只适合用 MQL 之外的语言开发应用程序的程序员。...................

您也可以在 MQL5 中画一只鹦鹉,这里有一篇 包含代码的文章
 
元驱动程序
您也可以在 MQL5 中画一只鹦鹉。这里是 статья, с кодами

您至少应该阅读一下本主题的标题,以引起兴趣

现在不行了。请参见https://www.mql5.com/ru/forum/7806/page3。

Renat:
请注意,这是客户端支持,不能在终端创建服务器连接。
Использование MQL5 для торговли на МТ4
Использование MQL5 для торговли на МТ4
  • www.mql5.com
Подскажите, можно ли каким-нибудь образом извернуться, чтобы с помощью программ на MQL5 торговать у брокера, поддерживающего МТ4?
 
Reshetov:

现在不是了。见https://www.mql5.com/ru/forum/7806/page3。

我会悄悄地做不要告诉任何人。嘘.....
 
MetaDriver:
我会保持低调不要告诉任何人。嘘.....

哦,你啊开发人员辛辛苦苦,联系客户,撰写文章。

然后呢?你非但没有放弃一切,学习 C 语言,光明正大地使用这些东西,反而悄无声息地在地下深处通过 dlls 追逐连接器。

不管你给了他多少(我们不要指责他),他还是想在终端使用 dll。


正常的英雄总是会走弯路 © N. Korostylev

 
Reshetov:

根据上述文章中的示例,用 MQL5 编写您的网关。您也可以用纯 MQL 编写客户端脚本。

不过,我不明白为什么要做这样一个片面的解决方案。那些用 C 语言编写自己的服务器的人,连接 dll 不是问题,但当前功能的其余部分就不够了。除非 dll 会大大降低工作速度(我对此表示怀疑)。

 
请注意文章的主题和精髓。

这是关于无需使用 DLL 即可从终端连接到第三方系统。任务已经完成--现在有了一种连接和全双工数据交换 的简便方法。

有人抱怨现在需要编写第三方应用程序,这种抱怨是错误的。
 
Renat:
请注意文章的主题和要点。这篇文章是关于如何在不使用 DLL 的情况下从终端连接到第三方系统。任务已经完成--现在有了一种连接和全双工数据交换的简便方法。关于必须编写第三方应用程序的抱怨是错误的。



雷纳特,您打算何时在 MT4 中安装管道?
 
Renat:
请注意文章的主题和要点。这篇文章是关于如何在不使用 DLL 的情况下从终端连接到第三方系统。任务已经完成--现在有了一种连接和全双工数据交换的简便方法。关于必须编写第三方应用程序的抱怨是错误的。



事实上,这也是事实,因为我们并没有宣布,通过标准方法,即不使用第三方辅助工具,就可以在 MQL 应用程序之间进行通信。

"许多开发人员都面临同样的问题--如何在不使用不安全 DLL 的情况下进入交易终端的沙盒"。

这里没有任何说法,也不应该有任何说法。

但另一方面,在本文的 示例中,使用不安全的 DLLs 可以非常有效地解决应用程序计划中最需要的任务,即在用 MQL 编写的应用程序之间提供通信。因为在这篇文章中,要通过字符串消息实现通信,只需具备在 MQL5 中编程的知识和经验即可(其余工作,即通过 Windows API 使用第三方拐杖,这篇文章的作者已经完成并以现成类的形式发布)。

 
但与外部系统 通信则更为重要和适用。这就是安全通道开通的目的。

而且要注意的是,整个实现过程都是在标准文件操作的框架内进行的。无需引入新的功能。
 
komposter:

根据上述文章中的示例用 MQL5 编写自己的网关。

理论上是可以的,但实际上它将是一根拐杖,甚至是单工。

我找到了一些关于如何以最小成本制作网关的信息。原来,C++ 有一个流类NamedPipeServerStream(String)

如果调用它,就会创建一个命名通道。然后,我们可以通过调用IsConnected 方法来等待连接,并创建第二个命名通道。我们等待另一个客户端连接到第二个通道,并使用方法:CopyToAsync(Stream) 将第一个流中的信息重定向到第二个流中。之后,我们需要启动一个子进程,并再次使用CopyToAsync(Stream) 方法将信息从第二个流重定向到第一个流。这样,两个命名通道就会通过双工方式连接起来。

这看起来很简单,但我没有 C++ 经验。如果用 Java,调试起来会花上半个小时。

到目前为止,我已经找到了一个适合重新设计的例子:http://msdn.microsoft.com/en-us/library/bb546085.aspx。 我将在闲暇时尝试在它的基础上构建一个全双工网关。如果成功了呢?

NamedPipeServerStream Constructor (String) (System.IO.Pipes)
NamedPipeServerStream Constructor (String) (System.IO.Pipes)
  • msdn.microsoft.com
Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)