Можно ли показать реальное проскальзывание, когда orderSend () - PullRequest
0 голосов
/ 03 июля 2018

Для MT4, MQL

Когда sendOrder(),

Иногда оно бывает успешным, а иногда и отсутствует, в основном из-за проскальзывания.

Я бы хотел получить настоящее проскальзывание, когда sendOrder().

Возможно ли это?

Мой исходный код сейчас выглядит следующим образом.

     Ticket = OrderSend(_Symbol,OP_SELL, Lot,Bid,2, // '2' is slippage alloable limit.
     SL,TP,comment,Magic);

     if (Ticket > 0){
       // if slippage is under 2 it works.
       // want to check the real slippage
     }
     else {
        int err = GetLastError();
        if(err == ERR_NO_ERROR || 
           err == ERR_COMMON_ERROR ||
           err == ERR_SERVER_BUSY ||
           err == ERR_NO_CONNECTION ||
           err == ERR_TRADE_TIMEOUT ||
           err == ERR_INVALID_PRICE ||
           err == ERR_PRICE_CHANGED ||
           err == ERR_OFF_QUOTES ||
           err == ERR_BROKER_BUSY ||
           err == ERR_REQUOTE ||
           err == ERR_TRADE_CONTEXT_BUSY){
             //want to check the slippage here!!!
        }

     }

1 Ответ

0 голосов
/ 12 августа 2018

Вы должны рассчитать проскальзывание самостоятельно, вычтя OrderOpenPrice из цены, которую вы отправили с заказом.

Пример:

   double price = Bid;
   double slippage = 0.0;
   int ticket = OrderSend(_Symbol, OP_SELL, Lot, price, 2, SL, TP, comment, Magic);
   if(OrderSelect(ticket, SELECT_BY_TICKET))
      slippage = int(NormalizeDouble(fabs(price - OrderOpenPrice()) / _Point, 0));
...