Скачать MetaTrader 5

Ошибка: "Подсистема торговли занята"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарабатывай на сервисах MQL5. Это просто!
Forex Trader
114257
Forex Trader 2005.09.13 17:30 
Уважаемые экспертописатели, администраторы и просто кто знает ответ!
Подскажите, пожалуйста ответ на такой вопрос: написал я эксперта, проверил на тестере - все нормально. Затем присоединил его к работе на демо - счете, разрешил торговать, но он совершил только две покупки, двепродажи, и ни одной из этих позиций не закрыл. На попытку закрыть позицию говорит, что "подсистема торговли занята"(?код ошибки 146?). Пробовал на другом примитивном эксперте ранее - все было нормально, т.е. и открывал позиции в обе стороны, и закрывал их без промедления. Когда заглючил основной эксперт(думал, что что-то неверно написал) проверил на примитивном и эффект тот-же, т.е. не работает. Подскажите пожалуста, что это такое и когда пройдет.
P.S. Внизу приведен код примитива
int start()
  {
//---- 
  int total=OrdersTotal();
         
    int ticket=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"My order #2",16384,0,CLR_NONE);
     Print(ErrorDescription(GetLastError()));
      if (total >=2)
       for (int count=total;count>=0;count--){
          bool flag = OrderSelect(count,SELECT_BY_POS,MODE_TRADES);        
               if (flag) OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
               Print(ErrorDescription(GetLastError()));}
//----
   return(0);
  }
//+------------------------------------------------------------------+
Forex Trader
114257
Forex Trader 2005.09.13 18:06  
Так ты что, любой ордер пытаешься закрыть по Аску?
Forex Trader
114257
Forex Trader 2005.09.13 18:08  
И до кучи, таймаут между торговыми операциями.
И какую ошибку получаешь - не 130? У тебя похоже идет зацикливание из за попыток закрыть по неправильной цене.
Forex Trader
114257
Forex Trader 2005.09.13 18:54  
Так как эксперт является пробным, я не ставил передсобой цели заработать с помощью него, а лишь хотел найти ошибку, поэтому он на первый взгляд кажется глупым. В нем ордера только продаются(Bid), поэтому они должны закрываться по Ask. Других ордеров в тесте не присутствовало.
Код ошибки - 146.
А что такое таймаут, я не знаю, если можно - поподробней.
Forex Trader
114257
Forex Trader 2005.09.13 19:00  
Нужно дать время советнику , чтобы сервера брокера выполнил торговую операцию

void Sleep( int milliseconds)


Функция задерживает выполнение текущего эксперта на определенный интервал.

Параметры

milliseconds - Интервал задержки в миллисекундах.

Пример

Sleep(5);
Forex Trader
114257
Forex Trader 2005.09.13 20:36  
Спасибо за подсказку, сейчас проверю
Forex Trader
114257
Forex Trader 2005.09.13 21:01  
Сейчас все работает, но когда уходил с работы эксперт не работал. Что это такое было и может ли это повториться? Может это был глюк или огромная загруженность самого сервера?
Forex Trader
114257
Forex Trader 2005.09.13 21:31  
Спасибо за подсказку, сейчас проверю

Можете не проверять =)))
это ошибка, которую я обнаружил пару дней назад, она обсуждается в ветке "Что означает запись в журнале" и "IsTradeAllowed() - непонятки в работе или глюк МТ" .
Разработчики сейчас пытаются её найти и исправить.
Ошибка возникает после неопределённого времени работы активноторгующего эксперта.
Единственное лекарство от неё, которое мне удалось найти - перезапуск терминала.

Чтоб ошибка не возникала, перед торговлей можно делать проверку IsTradeAllowed(). Если == true, торговать можно.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий