有没有办法通过MQL4的Web请求发送多维数组?

时间:2015-11-30 13:43:41

标签: arrays post send webrequest mql4

我已将本机 WebRequest() 功能用于POST数据。

通常我会使用以下这些行发布数据

// ********** 

char dataUpdatePost[]; 
char dataUpdateResult[];
string dataUpdateStr = "dataUpdateFlag=YES&orderNumber=" + orderNumber + "&profit=" + profit + "&profitPips=" + profitPips + "&cookie=" + sessionID;

ArrayResize(dataUpdatePost, StringToCharArray(dat[0,1], dataUpdatePost, 0, WHOLE_ARRAY, CP_UTF8) - 1);

ResetLastError();

int updateDataRes = WebRequest( "POST", 
                                "http://service.jumpinvestor.com/",
                                "",
                                NULL,
                                1,
                                dataUpdatePost,
                                0,
                                dataUpdateResult,
                                dataUpdateHeaders
                                );
// **********  

它工作正常......

但是我想发送一个像这样的数组。

string dat[3][10]; 

MQL4 是否有办法通过 WebRequest() 发送?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

是的,有

通用方法是编写特定于域的包装器,以便将 string dat[3][10] 数组单元格转换为字符串。

一个恰到好处的设计=特定于域的SER/DES包装器:

MQL4 / python-AI/ML 分布式处理网格计算中,以下简单的消息传递语法显示了一种可能的方式 确定 可能是二进制效率程序包,但性能或邮件大小开销都不是问题,因为CPU绑定的AI / ML过程代表主要的延迟因素)

A "JUST-ENOUGH-DESIGN"

MINIMALISTIC
SERialiser       on MT4   side: fast, CPU/RAM efficient, loss-less
DESerialiser     on .recv side: fast & unambiguous binary/ASCII DES-erialisation

HERE: SER-ialiser
         - byte-aligns data in ASCII uchar-s
         - adds Section + EoLN separators
         - adds Item + ValItem separators
         - sends plain ASCII string across the network ---> (ref. ROWs below)

+------------------------------------------------------------------------------------------ aSectionSEPARATOR ( no CrLf ambiguity in MT4/UNICODE string / StringSplit( string, ushort, ... ) )
|                +----------------------------------+----------------------------------+--- aLevTpSlSEPARATOR { ... o ... o ... o ... }[0..3]
|               0|                                 1|                                2 |  3
|                |                                  |                     +------------|--- aValItemSEPARATOR { ... | ... | ... | ... }[0..2,3]
|                |                                  |                     |            |
|           0:1:2|   :     :           :            |   :     :           v            |+-- expEoLN_SEPARATOR
|            : : |  0:    1:          2:           3|   :     :           :            ||
v            : : v   :     :           :            v  0:    1:          2:          3 vv
/\/\/\/\/\/\/:\:/|\/\:/\/\/:\/\/\/\/\/\:/\/\/\/\/\/\|/\/:\/\/\:/\/\/\/\/\/|\/\/\/\/\/\/|*
_  1192.39001|+| o--^| 1.52|    4.57070|    3.00752 o--v| 0.31|    1.80752|    5.77070 o*
_  1186.39001|+| o--^| 1.31|    4.09104|    3.11518 o--v| 0.36|    1.91518|    5.29104 o*

即使是JSON兼容的“富格式包装”数据也可以发送......

这样WebRequest()可以随意将 JSON 等格式的字符串发送到远程处理。

反正

享受MQL4世界。

答案 1 :(得分:0)

JSON:最好的方法是将数组转换(序列化)为JSON字符串,并使用 WebRequest() 将其发送出去。 JSON是广泛接受的格式,您的Web应用程序可以自行解析(反序列化)它们。

缺点是你需要为它编写一个序列化器 到目前为止,我只遇到过一个MQL4序列化程序:
https://www.mql5.com/en/code/11134

祝你好运!