如何在MT5中正确使用OrderSend? - 页 7

 
fxsaber:

我想这样的一个例子可以说明问题。

如果你不做Sleep,你经常会遇到这样的情况:历史记录在OrderClose之后没有时间更新,OrderCommission返回的值就像OrderClose没有被完成一样。

请注意,这是一个脚本,不可能有任何Event-over。唯一的出路是一个愚蠢的睡眠。

如果你用SB重写这个脚本,什么也不会改变。

不要把MT4和MT5混为一谈
 
prostotrader:
不要把MT4和MT5混为一谈

这个和MT5

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
 
fxsaber:

这和MT5

OP_BUY

在MT5中没有这种情况。

他们的工作方式完全不同。

 
prostotrader:
OP_BUY

在MT5中没有这种情况。

他们的工作方式完全不同。

与其在MT5中运行上述代码,不如在闲聊中浪费你的时间。
 

关于交易、自动交易系统和策略测试的论坛

图书馆: MT4Orders

fxsaber, 2016.11.14 13:33

// 13.11.2016:
//   Add: Полная синхронизация OrderSend, OrderModify, OrderClose, OrderDelete с торговым окружением (реал-тайм и история) - как в MT4.
//        Максимальное время синхронизации можно задать через MT4ORDERS::OrderSend_MaxPause в мкс. Среднее время синхронизации в MT5 ~1 мс.
 
fxsaber:
基于上述情况,是否应该在每次交易 后放Sleep(1)?
 
Alexey Kozitsyn:
基于上述,是否应该在每次交易 后设置Sleep(1)?
不,同步时间是浮动的。看一看
static bool MT4ORDERS::OrderSend( const MqlTradeRequest &Request, MqlTradeResult &Result );
 
fxsaber:
不,同步时间是浮动的。见
static bool MT4ORDERS::OrderSend( const MqlTradeRequest &Request, MqlTradeResult &Result );

实践表明,在绝大多数情况下,Sleep(1)是足够的。

一般来说,从OrderSend 收到关于交易环境变化的响应是非常奇怪的,而这个变化的环境本身还不能被读取。

 
Vasiliy Sokolov:

实践表明,在绝大多数情况下,Sleep(1)是足够的。

有时Sleep(0)就足够了。但必须有一个适用于所有情况的工作解决方案,并尽量减少等待时间。
 
fxsaber:
有时Sleep(0)也足够了。但必须有一个适用于所有情况的工作解决方案,并尽量减少等待时间。

为什么开发商要修复 "气球先生 "的错误?

此外,还有OrderSendAsync()