如何从MetaTraderterminal5发布MQL 5请求到我的MT5主机本地运行的nodejs服务器?

我试图在我的nodejs服务器上获得外汇汇率,并在运行MetaTraderterminal5或4时将socke.io发送给客户端。

所以我想我必须使用MQL4 / 5。 我知道如何处理我的nodejs服务器中的请求。 我不知道在哪里写MQL4代码,在我的MetaTraderterminal中configuration什么。

比方说,我想发送欧元/美元出价率到我的nodejs服务器,每当它发生变化。 我如何使用MT4 / 5和MQL4 / 5来实现这一目标?

我的nodejs代码:

app.post('/fxroute', (req, res) => { console.log(req); let fxRates = req.body // dont know if the payload will be in body socket.emit('fxRates', fxRates); }); 

MQL5脚本:

 #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart(){ string headers; char data[], result[]; string str = "data=value"; // POST-data, variables to send StringToCharArray( str, data ); string b = CharArrayToString( data ); Print( "Test:", b ); // just a test of data, if good ... OK, data was setup correctly. WebRequest( "POST", "http://localhost:3000/fxroute", NULL, NULL, 3000, data, ArraySize( data ), result, headers ); Print( CharArrayToString( result ) ); // see the results // it returns // "Results:" No posted data. } 

当我编译和运行时,我发现它是在MT Experts标签中执行的,但是在我的nodejs服务器上,控制台什么也没有logging。

工作计划:

  1. 启用 MT4 / 5使用{http:|https:} transport-classselect目标

  2. 创build MT4 / 5代码来执行某种基于{http:|https:}的服务

  3. 实现端到端的逻辑,将其隐藏在哑HTTP协议交换中


1)terminal权限:

使用Terminal-> Tools-> Options enable [x]允许WebRequest URL ”使用您select的localhost {http:|https:} URL,与列表中的nodejs-server设置匹配 在这里输入图像说明

2)事件循环内的WebRequest()代码

根据您的意图,使用内置IDE F4或使用您select的外部编辑器创buildMQL4脚本,并将生成的.mq4脚本文件保存在~an_MT4_Terminal_Home_Directory/MQL4/Scripts目录中

事件循环主要是您的devise工作:

 int start(){ while !isStopped(){ // ACK LOOP if RefreshRates(): // NEW QUOTE has arrived ... // JOB PROCESS Bid int aHttpRetCODE = WebRequest(...); // SIG-> NodeJS Server ... // JOB PROCESS Response ( if a bi-directional service ) else: Sleep(...); // NOP on NACK, Terminal has nothing to do } } 

有关更多详细信息 ,可能希望检查我的WebRequest()用例和其他主要限制的警告。

3)端到端的逻辑

这里是您的devise的奶油奶油。


有没有其他的方法?

就在这里。 这将是我的select之一 – 在两侧使用ZeroMQnanomsg (MT4 / 5 Terminal&NodeJS),从而能够充分享受全面分布式系统devise的自由(检查主要的aMiniRESPONDER()原型完整分布式系统中[SIG,MSG]作业的示例结构)

Interesting Posts