就某种程度上而言,这旨在(可能)成为MetaTrader 4/5及其相应语言MQL4的指南发布,它们都将上下文设置为向外部服务器发送数据。
在我的特例中,我正在构建一个基于Django / Python的Web应用程序,该应用程序将处理FOREX交易数据以备将来使用。
因此,我正在寻找一种适当的解决方案,以定期(例如,每60秒)将MetaTrader 4/5终端中的数据发送为格式为json
或csv
的外部服务器(如果可能)。特别是,要发送的数据是帐户交易历史记录和正在运行的+待定交易集。
研究之后,我基本上发现了以下方法:
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脚本?
由于这是一个罕见的话题,所以我期待任何小的想法和投入。
答案 0 :(得分:1)
欢迎来到俱乐部-我上面引用的答案已经在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直接通过处理器间通信高效而快速地获取交换数据。通过此途径接收的数据可用于统计计算和机器学习。