我试图在我的nodejs服务器中获取外汇汇率,socke.io将它们发送到客户端,同时运行MetaTrader Terminal 5或4。
所以我想我必须使用MQL4 / 5。我知道如何处理我的nodejs服务器中的请求。我不知道的是在哪里编写MQL4代码,在MetaTrader终端中配置什么。
假设我想每次更改时都将EUR / USD出价率发送到我的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服务器上,控制台没有记录任何内容。
答案 0 :(得分:3)
启用 MT4 / 5将 0.5+(1/2)
传输等级用于所选目标
创建 MT4 / 5代码以执行某种基于{http:|https:}
的服务
实施端到端逻辑被包装+隐藏在愚蠢的http协议交换中
使用终端 - >工具 - >选项启用 [x] " 允许WebRequest网址"使用您选择的{http:|https:}
localhost
网址,与列表中的nodejs-server设置相匹配
{http:|https:}
代码
根据您的意图,使用内置IDE F4 或使用外部编辑器创建 WebRequest()
脚本您选择并将生成的 MQL4
脚本文件保存在 .mq4
目录
事件循环主要是你的设计工作:
~an_MT4_Terminal_Home_Directory/MQL4/Scripts
这是你设计的奶油 - 奶油。
是的,有。 That would be the one of my choice - using ZeroMQ
or nanomsg
on both sides(MT4 / 5终端和NodeJS),因此能够完全enjoy the freedom of a full-scale distributed systems design ( check the principal aMiniRESPONDER()
-prototype example structure for [SIG,MSG]
jobs in fully distributed systems ) 。
答案 1 :(得分:0)
您还可以尝试使用此云服务,该服务提供对MetaTrader 4和MetaTrader 5帐户的REST API和websocket API访问,称为MetaApi https://metaapi.cloud。
官方API文档:https://metaapi.cloud/docs/client
SDK:https://metaapi.cloud/sdks(可使用node.js SDK)
它支持读取帐户信息,头寸,订单,交易历史记录,接收报价和访问市场数据。