MQL 4 ordersend error 138 только в тестировании, а не в демоверсии - PullRequest
0 голосов
/ 27 сентября 2018

Я получаю ошибку отправки заказа 138, будь то покупка или продажа, но только в ходе бэк-тестирования, а не в живом демо.Я пытался отрегулировать проскальзывание безрезультатно.Кто-нибудь знает, что не так?

double price = iClose(Symbol(), PERIOD_H1, 1);
   if (up > down && up > sideway){
      double stoploss = NormalizeDouble(price-piploss*Point, Digits);
      double takeprofit = NormalizeDouble(price+pipgain*Point, Digits);
      int ticket = OrderSend(Symbol(), OP_BUY, 1, price, 5, stoploss, takeprofit, "buy", 16384, 0, clrGreen);
      if (ticket<0){
         Print("Order send error: ", GetLastError());
      } else{
         Print("Order success");
      }
   } else if (down > up && down > sideway) {
      double stoploss = NormalizeDouble(price+piploss*Point, Digits);
      double takeprofit = NormalizeDouble(price-pipgain*Point, Digits);
      int ticket = OrderSend(Symbol(), OP_SELL, 1, price, 5, stoploss, takeprofit, "sell", 16384, 0, clrGreen);
      if (ticket<0){
         Print("Order send error: ", GetLastError());
      } else{
         Print("Order success");
      }
   } else {
      Print("sideway");
   }
     }

1 Ответ

0 голосов
/ 28 сентября 2018

Ваша цена близка к предыдущей свече H1.Вероятно, вы делаете открытую проверку бара раньше.В любом случае, ваши вычисления могут занять некоторое время, поэтому настоятельно рекомендуется RefreshRates() перед отправкой заказа.Далее следует использовать константы Ask и Bid при отправке рыночных ордеров, они обновляются после обновления ставок.В противном случае вы получите разные ошибки (133, 136, 138).

...