如何将数据从MetaTrader 4/5终端发送到外部服务器?

2024-05-17 05:44:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是为了(也许)成为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脚本?在

因为这是一个罕见的话题,我期待任何小的想法和意见。在


Tags: to数据方法函数服务器json终端官方
1条回答
网友
1楼 · 发布于 2024-05-17 05:44:54

Since this is a rare topic, ... is it, indeed, so rare to need this ?

欢迎来到俱乐部-我上面提到的答案在1,5年内得到了零票

尽管如此,
自从v2.11+之后就开始使用ZeroMQ,这要归功于Austen CONRAD发布的研发工作——所有这些都要感谢他,并对他的坚持表示深深的敬意。在

Q : "How would this be accomplished within the MetaTrader environment?"

只需#import-s DLL并开始使用zeromqapi包装器调用。在MetaTrader悄悄地改变了string的内部表示形式,不再是string(在“New”-MQL4.56789中成为struct之后,一些细节变得更加复杂,但是您将学会如何与这种“时刻保持警惕”的风格共存,以便在生产中生存下来)

Q : "Will this still be an expert advisor or some kind of DLL solution?"

ZeroMQ可用于以下任一和/或全部:
-专家顾问-类型MQL4-代码
-自定义指示符-类型MQL4-代码
-脚本-类型MQL4-代码
以及
甚至可以提供代理信令/消息传递层,以便在MT4终端生态系统内的这些其他分离且不协作的进程之间进行通信。在

示例:
我有MT4终端进程与基于外部AI/ML的市场分析程序合作,它自动检测机会窗口,并有一个外部CLI控制台,作为MT4终端托管控制面板的远程键盘,显示系统健康状态并监听远程键盘,用于远程CLI命令控制(用于两种配置以及整个多方分布式交易系统的维护任务)

Q : "What is the ZeroMQ's role within the setup?"

ZeroMQ在任何类型的所需节点(网格计算、GPU计算、CLI treminal、AI/ML决策、全系统统一中央日志记录、任何可能需要的节点)之间提供独立、智能和行业标准的智能和低延迟信令/消息传递层

尝试设置并使用远程tipc://-传输类,用于跨集群计算范式和任何其他方法。在

尝试建立并使用一个M:N冗余策略交易,在tcp://+^{+norm://+vmci://传输类,用于互连(a×M+N×B)节点的exo系统。在

试着建立一个系统,让MetaTrader从外部做一些工作,如果没有这项技术(webrequest()还没有准备好接受任何“来自外部的问题”,是吗?)在

Q : "What are the pros and cons compared to the webrequest() function?"

请随意阅读StackOverflow的答案。在

相关问题 更多 >