请教各位关于MT4中的消息机制编程问题

 
我在论坛的英文版上看到了下面的编程方法(部分): int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 13, IndicatorName); int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName); int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 14, EAName); 这好象可以通过windows消息编程直接执行指标,脚本和EA之类的,当然还有另外一些 这类的消息。 现在我有一些问题想请教各位: 1 在论坛的中文版里我怎么找不到这类的编程方法说明?(因本人英语不好,希望能看到中文的) 2 除之这些消息编程,在哪儿能找到MT4里所有或者比较全面系统的消息编程介绍? 3 就拿上面的消息编程例子来说吧,在执行指标,脚本和EA的时候,如果有指标,脚本和EA需要有输入参数, 那这些参数应该怎么传入呢?
 
mt4本身不支持外部消息编程,这些是用的windows系统的功能。消息不是唯一也不是最佳办法。 如果你需要从mt之外传入参数,需要使用C语言编制dll库程序,以及进程间通讯编程,这需要C的较高编程能力。 mt本身仅提供了过于简单例子。 需要参考这个网站上的例子,自行解决。 至于mtapi,那是很早的大客户造市商可开发版本 或是 某些个人做的接口,mt自己从没公开担保过。 需要你决定自己的取舍
 
非常感谢你的回复,目前,消息对于我本人来说已经是最好的办法了,因为我想在MT4外写一个独立的程序,比如像一键下单那样的一个界面,但我又没有源码参考,只能自己用windows消息这块去摸索,至于MT4API,这个只能用于DEMO帐户,如果我自己能搞定消息编程,也就不需要MT4API了,我主要是想了解一下PostMessageA(hWnd, MessageNumber, 16, ScriptName);像这样的消息,因为其中只传了ScriptName,如果这个脚本在执行时是需要带参数的,是否也可以通过类似的消息先将参数传入然后再发送这个执行的消息。如果实在不能通过消息传入参数,那可能要考虑你提到的进程通讯,你能否帮忙提供一下这个进程通讯的例子?
 

进程间通讯,有多种方式,包括 硬盘文件、数据库、剪贴板、内存映射文件、管道、系统全局共享内存、消息等以及通过http/TCPIP等的本机或跨机通讯,各有利弊优缺

当然,如果只有在通讯各方都是你自己开发的程序,是可以任意选择的,但MT提供的标准途径是脚本和扩展DLL,所以最省事简单的办法是通过实时性略差的硬盘文件,其它就掠复杂些了,如 高实时的内存映射文件,或跨机器的http/TCPIP. 需根据用途选择。

可惜我没有现成例子,好在 文件方式,MQL 和C都有例子,其它方法在windows的SDK也有例程,

当然,mql5的支持就好多了。

这网站本身也有些例子可搜索参考

https://www.mql5.com/en/articles/1488

https://www.mql5.com/en/articles/1567

https://www.mql5.com/en/articles/73

https://www.mql5.com/en/code/10644#44178

 
https://www.mql5.com/en/articles/115 https://www.mql5.com/en/code/8435 https://www.mql5.com/en/code/9991 https://www.mql5.com/en/articles/1361 https://www.mql5.com/en/articles/503 https://www.mql5.com/en/code/10865
 
谢谢DxdCn