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

 
prostotrader:

把握机会。

你为什么要向服务器发送一个空请求?这似乎没有什么意义。
如果你得到TRADE_RETCODE_TIMEOUT 或TRADE_RETCODE_FROZEN,你会在"//see cause result.retcode "中做什么?
 
RickD:
你为什么要向服务器发送一个空请求?这似乎没有什么意义。
如果你得到,比如说,TRADE_RETCODE_TIMEOUT或TRADE_RETCODE_FROZEN,你会在"//see result.retcode "中做什么?
我要上吊自杀 :)
 
Andrey Khatimlianskii:

我用双手支持它。就好像MQ不想对发送订单和接收响应的现成功能负责一样。

我的选择也是拄着拐杖。

为什么不做一些类似的东西(不是针对所有的场合,至少是最简单的一种!),然后把它拿出来给SB看?

真的,如果我们在EA中必须等待,那么OrderSend(...)的 "快速执行 "有什么用?

用于环境更新,在这种情况下是历史更新...并提出了不同的算法来等待...

在历史被更新之前,我们不会继续前进......也就是说,这种速度是没有用的......

 
Denis Sartakov:

真的,如果我们在EA中必须等待 "快速 "执行OrderSend(...),那么 "快速 "执行OrderSend(...)有什么用?

用于环境更新,在这种情况下是历史更新...并提出了不同的算法来等待...

在历史被更新之前,我们不会继续前进......也就是说,这种速度是没有用的......

可能,这样实现是因为终端可以平行执行OrderSend和OrderSendAsync,在OrderSend之后强制同步历史会在某种程度上影响OrderSendAsync、OnTrade、OnTradeTransaction,使它们变慢。
 
Andrey Khatimlianskii:
我不是在说内置的语言函数,我是在说标准库
我具体说的是内置的语言功能,OrderSend可以在内部等待交易历史更新,但它没有。:)
你说你有一根拐杖,但它并不那么可靠。给我举一个可靠的好拐杖的例子。
我是说,也许你完全可以不拄拐杖。如果开发者会改变OrderSend行为。让它像在MT4中一样。
或者--或者是另一种选择。添加函数OrderSendMT4Style。:)
 

一个非常简单的OrderSend重载是独立编写的:在OnTrade返回一个响应之前,所有后续的OrderSend都返回false。一旦收到回应--强迫性虚假就被取消了。

这正是我们需要添加到SB中的解决方案。而且我们必须自己使用它。

在SB中,根据同样的原则,增加了boolCTrade::IsHistoryLoad( const string Symb = NULL )。

而且不用拄拐杖!这两个函数都可以很容易地由自己来写。

如果你想实现完整的功能(不是针对SB),在相应的同步到来时,在OnTrade中独立调用OnTick和OnTimer。

 

他们写的都是些什么拐杖...研究无效的OnTradeTransaction()函数的行为

/*********************TradeTransaction function*********************/
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
{
      if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
       {
        if(!PositionSelectByTicket(trans.position))
         {
          //Print("********* закрылась позиция ", trans.position);
           closedPosition(trans);
         }
        if(PositionSelectByTicket(trans.position))
         {
          //Print("********* отккрылась позиция ", ", ", EnumToString(trans.deal_type), ", ", trans.position);
           openedPosition(trans);
         }
       }
       
}/*******************************************************************/

同时处理开仓 和订单的错误。

 
Alexey Viktorov:

他们写的都是些什么拐杖...研究无效的OnTradeTransaction()函数的行为

同时处理开仓 和订单的错误。

你已经斜着看了这个主题。
 
fxsaber:
你已经斜着看了这个题目。

不,只有垂直方向。只有每一行的第一个字母。

 
Andrey Khatimlianskii:

这种简单的重载在同一工具上的2个EA中如何工作?

不幸的是,只能通过一个拐杖--终端的一个全局变量