这是为了(也许)成为MetaTrader 4/5及其相应语言MQL4的指导性文章,它们都设置为上下文,并将数据发送到外部服务器。在
在我的特殊情况下,我正在构建一个基于Django/Python的web应用程序,它将处理外汇交易数据以供进一步使用。在
因此,我正在寻找一个合适的解决方案,将数据从MetaTrader 4/5终端定期(例如每60秒)发送到外部服务器,格式为json
或{
在做了研究之后,我基本上找到了以下方法:
1.)在MQL4中使用webrequest()
,包装在专家顾问中
正如官方的mql4docu所建议的,webrequest()
函数向指定的服务器发送http://请求。
这是一个相关的SO线程:
How to post from MetaTrader Terminal 5 MQL 5 a request to my nodejs server, which is running locally on my MT5 host?
以及官方文件:
https://docs.mql4.com/common/webrequest
这可以封装到一个专家顾问中,在给定的事件上定期执行请求。在
来自MT4/5终端的哪种数据可以填充到数据数组中?
如何格式化这些数据?是否可以直接将其格式化为json
,还是应该在服务器端完成?在
2.)使用ZeroMQ
这是我在这个线程中找到的设置:How to send a message in MQL4/5 from MetaTrader Terminal to python using ZeroMQ?
如何在MetaTrader环境中实现这一点?这仍然是专家顾问还是某种DLL解决方案?ZeroMQ在设置中的角色是什么?在
与webrequest()
函数相比,优缺点是什么?在
3.)其他人?
是否有其他可能的方法来实现这一点,例如使用API或MQL4脚本?在
因为这是一个罕见的话题,我期待任何小的想法和意见。在
欢迎来到俱乐部-我上面提到的答案在1,5年内得到了零票
尽管如此,
自从v2.11+之后就开始使用ZeroMQ,这要归功于Austen CONRAD发布的研发工作——所有这些都要感谢他,并对他的坚持表示深深的敬意。在
只需
#import
-s DLL并开始使用zeromqapi包装器调用。在MetaTrader悄悄地改变了string
的内部表示形式,不再是string
(在“New”-MQL4.56789
中成为struct
之后,一些细节变得更加复杂,但是您将学会如何与这种“时刻保持警惕”的风格共存,以便在生产中生存下来)ZeroMQ可用于以下任一和/或全部:
-专家顾问-类型
MQL4
-代码-自定义指示符-类型
MQL4
-代码-脚本-类型
MQL4
-代码以及
甚至可以提供代理信令/消息传递层,以便在MT4终端生态系统内的这些其他分离且不协作的进程之间进行通信。在
示例:
我有MT4终端进程与基于外部AI/ML的市场分析程序合作,它自动检测机会窗口,并有一个外部CLI控制台,作为MT4终端托管控制面板的远程键盘,显示系统健康状态并监听远程键盘,用于远程CLI命令控制(用于两种配置以及整个多方分布式交易系统的维护任务)
ZeroMQ在任何类型的所需节点(网格计算、GPU计算、CLI treminal、AI/ML决策、全系统统一中央日志记录、任何可能需要的节点)之间提供独立、智能和行业标准的智能和低延迟信令/消息传递层
尝试设置并使用远程
tipc://
-传输类,用于跨集群计算范式和任何其他方法。在尝试建立并使用一个M:N冗余策略交易,在 +
tcp://
+^{norm://
+vmci://
传输类,用于互连(a×M+N×B)节点的exo系统。在试着建立一个系统,让MetaTrader从外部做一些工作,如果没有这项技术(
webrequest()
还没有准备好接受任何“来自外部的问题”,是吗?)在请随意阅读StackOverflow的答案。在
相关问题 更多 >
编程相关推荐