如何使用JAVA(或任何东西)向/从MetaTrader Ternminal 4发送/接收数据!

我一直在研究一种算法(不是我的,我只是在修改它),它可以预测何时在外汇市场上买入和卖出。我需要能够打开和关闭订单,动态更新订单的参数(如止损,最大止损等),并接收实时报价数据。

我已经研究了一个多星期,但没有成功。

我得到的最接近的是使用JavoNetMt4 Api。

我设法将DLL导入java并使用MQL4函数,但是这已经返回,这不是帐户余额,我弄乱了MT4客户端上的代码和设置,但仍然没有运气。AccountBalance()0.0

问0:任何人都可以给我指出正确的方向吗?

我是自动外汇交易的新手,但据我所知,在某个地方有一个带有MT4服务器的经纪人,我在我的Windows机器上使用我的MT4客户端连接到该服务器。

问1:如果是这种情况,我是否需要使 API 与服务器端(而不是客户端)配合使用?

到目前为止,我尝试过的所有这些DLL都已与我的计算机上的MT4客户端软件一起使用。

我也一直在阅读FIX协议和ZeromQ。

问2:这些能帮助我以任何方式实现我的目标(而不是在JAVA和MT4 DLL之间创建一些桥梁)吗?


答案 1

A0:是的,直接忘记REST和同步,阻止外汇交易领域的链

A1:嗯,不是典型的方式。MetaTrader服务器是经纪商端的专有系统套件,他们的API没有公开,以允许一些第三方集成。

enter image description here

解答 2:FIX 协议是行业标准的 LP 接口通用语言。如果您与您的机构交易提供商(包括FIX协议GWY端口)签订了合同关系,这可能会为您提供进入市场的A级访问权限,并集成您的交易工具。如果是这种情况,请忘记MT4工具,因为黄金时间节奏远远超出了MT4终端本地主机处理架构(具有亚毫秒TimeDOMAIN分辨率的多个事件很常见,而MQL4不提供任何对多线程并发/更好的并行程序调度设计的任何直接支持)。FIX 协议事件只是偏离了上图,位于最左侧,“之前”,图形从第 1 [ms] 列开始。

ZeroMQ 可能有助于将您的进一步设计从 MQL4 限制中解放出来。可能喜欢阅读我关于分布式系统的其他文章,其中出现了 MQL4 / ZeroMQ / ML-AI 预测器 / GPU 处理基础设施。

无论如何:

享受 MQL4/MQL5 的狂野世界


感兴趣?可能还喜欢阅读其他MQL4ZeroMQ分布式处理低延迟交易帖子


答案 2

您可以尝试使用MetaApi https://metaapi.cloud 云服务,它为MetaTrader 4和MetaTrader 5账户提供REST API和WebSocket API访问。

官方 REST API 文档:https://metaapi.cloud/docs/client

SDK:https://metaapi.cloud/sdks(javascript、python 和 Java SDK 自 2021 年 4 月起提供)

它支持读取账户信息,仓位,订单,交易历史,接收报价和访问市场数据。

该服务还提供复制交易API https://metaapi.cloud/docs/copyfactory 和API来计算MetaTrader账户 https://metaapi.cloud/docs/metastats 外汇交易指标。


推荐