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

How can someone send data from MetaTrader 4/5 Terminal to external server?

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

在我的特殊情况下,我正在构建一个基于 Django/Python 的 Web 应用程序,它将处理外汇交易数据以供进一步使用。

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

经过研究,我基本上找到了以下方法:

1.) 在包裹在智能交易系统中的 MQL4 中使用 webrequest()

正如官方 MQL4 文档所建议的那样,webrequest() 函数向指定的服务器发送一个 http:// 请求。
这是一个相关的 SO 线程:

和官方文档:

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 发布的研发工作 - 感谢并深深尊重他的坚持。

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

只需 #import-s DLL 并开始使用 ZeroMQ-API-wrapper 调用。在 MetaTrader 默默地改变了 string 的内部表示不再是 string(成为 struct 之后,一些细节变得有点复杂在 “新”-MQL4.56789,但您将学习如何适应这种“始终守望”的风格,以便在生产中生存)

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

ZeroMQ 可用于 and/or 全部:

  • Expert Advisor-MQL4-代码类型
  • 自定义指标-MQL4-代码类型
  • 脚本-类型MQL4-代码
    甚至可以提供 proxy-signaling/messaging-layer,以便在 MT4 终端生​​态系统内的这些独立且不合作的进程之间进行通信。

示例:
我有 MT4-Terminal 流程与外部 AI/ML-based 市场分析器合作,它自动检测 windows-机会加上外部 CLI 控制台,作为 MT4-Terminal 托管控制面板的远程键盘, 显示系统健康状态和监听远程键盘,用于远程CLI命令控制(用于整个多方分布式交易系统的配置和维护任务)

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

ZeroMQ 在任何类型的所需节点(网格计算、GPU 计算、CLI-treminal、AI/ML-decision 制作全系统统一的中央日志记录,任何人可能需要的东西)

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

尝试设置和使用 M:N-冗余策略交易,在 tcp:// + [=18 的组合中操作=] + norm:// + vmci:// transport-classes,这样用关于互连 ( A x M + N x B )-节点的外部系统。

尝试设置一个系统,要求 MetaTrader 在没有此技术的情况下从外部做一些工作(webrequest() 还没有准备好应对任何“来自外部的问题”,是吗?)

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

请随时在 Stack Overflow 答案中阅读相关内容。

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

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


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


MetaTrader 5 与 Python

集成

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

Thus, I am in search for a proper solution to send data from the MetaTrader 4/5 Terminal to an external server periodically (e.g. every 60 seconds) formatted as json or csv (if possible).

为此,metatrader.live 可能会有所帮助。问题只是附加一个 (open-sourced) 专家顾问,并通过 JSON 或 WebSockets 或其他方式在线获取数据。或者您可以仅将其用作您自己的逻辑的传输层。很容易。是的,我是作者 :)