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

时间:2019-11-13 21:11:19

标签: python zeromq mql4 metatrader4

就某种程度上而言,这旨在(可能)成为MetaTrader 4/5及其相应语言MQL4的指南发布,它们都将上下文设置为向外部服务器发送数据。

在我的特例中,我正在构建一个基于Django / Python的Web应用程序,该应用程序将处理FOREX交易数据以备将来使用。

因此,我正在寻找一种适当的解决方案,以定期(例如,每60秒)将MetaTrader 4/5终端中的数据发送为格式为jsoncsv的外部服务器(如果可能)。特别是,要发送的数据是帐户交易历史记录和正在运行的+待定交易集。

研究之后,我基本上发现了以下方法:

1。)在专家顾问中包装的MQL4中使用webrequest()

正如MQL4官方文档建议的那样,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脚本?

由于这是一个罕见的话题,所以我期待任何小的想法和投入。

2 个答案:

答案 0 :(得分:1)

  

因为这是a rare topic, ... is it, indeed, so rare to need this ?

欢迎来到俱乐部-我上面引用的答案已经在1.5年内收到零票了

尽管如此,
从v2.11 +开始就使用ZeroMQ,这要归功于奥斯汀·康拉德(Austen CONRAD)发布的研发工作-感谢和感谢他的坚持。

  

Q “这将在MetaTrader环境中完成吗?”

一个简单的 #import -DLL,并开始使用ZeroMQ-API-wrapper调用。在MetaTrader默默地将 string 的内部表示形式更改为不再是string(成为struct)之后,一些细节变得更加复杂了。 >“新”- MQL4.56789 ,但您将学习如何使用这种“ Always On Watch”式的生活方式来生存生产中)

  

Q “这仍然是专家顾问还是某种DLL解决方案?”

ZeroMQ可以在以下任何一个或所有中使用:
-MQL4代码的专家顾问类型
-MQL4-代码的自定义指标类型
-MQL4-代码的脚本类型

甚至可以提供代理信号/消息层,以便在MT4终端生态系统内部的这些彼此独立且不合作的过程之间进行通信。

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

  

Q “ ZeroMQ在设置中的作用是什么?”

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

尝试使用其他任何方法来设置和使用远程 tipc:// -transport-class跨集群计算范例。

尝试设置和使用M:N冗余策略交易,交易范围为 tcp:// + tipc:// + norm:// + vmci:// 传输类,用于互连(A x M + N x B)个节点的exo系统。

尝试设置一个系统,该系统要求MetaTrader在没有这种技术的情况下从外部进行一些工作(webrequest()还没有准备好接受任何“来自外部的问题”吗?)

  

Q “与webrequest()函数相比,优缺点是什么?”

请随时在StackOverflow答案中阅读此内容。

答案 1 :(得分:1)

与Python集成,对Wine中的市场和信号服务(Linux / MacOS)的支持以及MetaTrader 5 build 2085中高度优化的策略测试器

MetaQuotes软件公司,2019年6月14日


在新的MetaTrader 5版本中,我们添加了一个API,该API允许使用Python高级编程语言通过应用程序请求MetaTrader 5终端数据。该API包含多个用于机器学习,流程自动化以及数据分析和可视化的库。


MetaTrader 5与Python集成

适用于Python的MetaTrader软件包旨在直接从MetaTrader 5直接通过处理器间通信高效而快速地获取交换数据。通过此途径接收的数据可用于统计计算和机器学习。