文章 "轻松快捷开发 MetaTrader 程序的函数库(第二十六部分):处理延后交易请求 - 首次实现(开仓)"

 

新文章 轻松快捷开发 MetaTrader 程序的函数库(第二十六部分):处理延后交易请求 - 首次实现(开仓)已发布:

在本文中,我们将在订单和仓位的魔幻数字中存储一些数据,并开始实现延后请求。 为了验证这一概念,我们在收到服务器错误并需要等待与重复发送请求时,创建第一个测试延后请求来开仓。

编译并启动 EA。 断开互联网,然后等待以下图像出现在终端的右下角:



禁用互联网并单击“卖出”后,交易服务器返回错误,且日志中显示以下记录:

2019.11.26 15:34:48.661 CTrading::OpenPosition<uint,uint>: Invalid request:
2019.11.26 15:34:48.661 No connection with the trade server
2019.11.26 15:34:48.661 Correction of trade request parameters ...
2019.11.26 15:34:48.661 Trading attempt #1. Error: No connection with the trade server


收到错误后,函数库会采用未成功开立空头持仓的参数集合来创建延后请求。
延后请求还具有尝试次数和 20 秒的等待时间。

然后启用互联网,恢复与交易服务器的连接:


连接一旦恢复后,函数库将立即处理延后请求,并将其发送到服务器。 结果则为,我们成功开仓,且日志里也有记录:

2019.11.26 15:35:00.853 CTrading::OpenPosition<double,double>: Invalid request:
2019.11.26 15:35:00.853 Trading is prohibited for the current account
2019.11.26 15:35:00.853 Correction of trade request parameters ...
2019.11.26 15:35:00.853 Trading operation aborted
2019.11.26 15:35:01.192 CTrading::OpenPosition<double,double>: Invalid request:
2019.11.26 15:35:01.192 Trading is prohibited for the current account
2019.11.26 15:35:01.192 Correction of trade request parameters ...
2019.11.26 15:35:01.192 Trading operation aborted
2019.11.26 15:35:01.942 - Position is open: 2019.11.26 10:35:01.660 -
2019.11.26 15:35:01.942 EURUSD Opened 0.10 Sell #486405595 [0.10 Market-order Sell #486405595] at price 1.10126, sl 1.10285, tp 1.09985, Magic number 17629307 (123), G1: 13
2019.11.26 15:35:01.942 OnDoEasyEvent: Position is open


如我们所见,在交易服务器恢复连接后,当前帐户能够延迟交易
但无论如何,延后请求只是玩了把戏
...

此外,我们可以在日志中看到实际的魔幻数字 17629307,然后在括号(123)中是 EA 设置中定义的魔幻数字,再加上另一个记录 G1: 13 表示第一个组 ID 等于13,而第二个组 ID 缺失 — 其值实际上为零,因此没有第二个含有 G2: XX 的记录。

请注意:

作者:Artyom Trishkin

原因: