ERR_TRADE_SEND_FAILED - страница 2

 
Работа интернета никак не гарантирует успешное проведение торговой операции.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 

Проблему удалось решить?

Столкнулся с подобной проблемой. 

Следующая функция удаляет отложенные ордера. До некоторых пор. В какой-то момент появляется ордер, который проходит проверку OrderCheck, но функция OrderSend все равно выдает ошибку.

//+------------------------------------------------------------------+
//| Удаление отложенника                                             |
//+------------------------------------------------------------------+
bool CTMTradeFunctions::OrderDelete(ulong ticket)
{
  int i = 0;
  int tryNumber = 5;
  bool res;
  string error_list, retcode;
  uint result_code;
  
  ZeroMemory(m_request);
  ZeroMemory(m_result);
  
  m_request.action = TRADE_ACTION_REMOVE;
  m_request.order = ticket;
  error_list = "";
  
  while (!IsStopped() && i <= tryNumber)
  {
   Print("Current action:", m_request.action);
   res = false;
   if(OrderCheck(m_request,m_check_result)==true)
   {
    ResetLastError();
    PrintFormat("%s Проверка пройдена, пытаемся удалить ордер, попытка №%d", MakeFunctionPrefix(__FUNCTION__), i+1);
    OrderSend(m_request,m_result);
    switch (m_result.retcode)
    {
     case TRADE_RETCODE_DONE:
      res = true;
      PrintFormat("%s Ордер успешно удален", MakeFunctionPrefix(__FUNCTION__));
      break;
     case TRADE_RETCODE_REQUOTE:
     case TRADE_RETCODE_INVALID_STOPS:
     case TRADE_RETCODE_FROZEN:
      Sleep(1000);
     case TRADE_RETCODE_PRICE_CHANGED:
     case TRADE_RETCODE_INVALID_PRICE:
     case TRADE_RETCODE_INVALID:
     default:
      res = false;
      PrintFormat("%s Ордер не удален. Ошибка: %s", MakeFunctionPrefix(__FUNCTION__), ReturnCodeDescription(m_result.retcode));
      break;
    }
    result_code = m_result.retcode;
   }
   else
   {
    result_code = m_check_result.retcode;
   }
   
   StringAdd(retcode, IntegerToString(result_code));
   StringAdd(retcode, ">");
   if (res) break;
   if ((!res)&&(StringFind(error_list, retcode, 0) == -1))
   {
     StringAdd(error_list, retcode);
     Print("при удалении ордера ", ticket, " возникла ошибка: ", result_code, "; GetLastError() = ", GetLastError(), "; Bid = ", m_result.bid, "; Ask = ", m_result.ask, "; Price = ", m_result.price);
   }
   i++;
  }  
  return(res);
}


Кодов возврата торгового сервера  10016; CTrade::OrderSend: cancel #35 [invalid stops]. Никак не могу понять как уровень стопов влияет на удаление ордера. Возможно кто-то подскажет, что исправить/улучшить в функции, а еще лучше укажет непосредственно на ошибку или причину ошибки.


 
Garynych:

Кодов возврата торгового сервера  10016; CTrade::OrderSend: cancel #35 [invalid stops]. Никак не могу понять как уровень стопов влияет на удаление ордера. Возможно кто-то подскажет, что исправить/улучшить в функции, а еще лучше укажет непосредственно на ошибку или причину ошибки

вероятно цена близко к ордеру.  такое понятие как уровень заморозки слышали? проверяйте FreezLevel перед попыткой удаления.

 

Спасибо за интересную версию, но:

1. Есть проверка на фриз(case TRADE_RETCODE_FROZEN) и это не фриз (10029 - TRADE_RETCODE_FROZEN), а неправильные стопы (10016 - TRADE_RETCODE_INVALID_STOPS). Я правильно понял на что вы намекаете?

2. Вручную на этом графике ордер удаляется сколько угодно близко к цене без ошибок (торговля одним кликом, разница 2-3 пункта между ценой и ордером).

 
полные логи покажите
 
 0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   CTrade::OrderSend: instant sell 0.10 EURUSD at 1.32601 [done at 1.32601]

RH    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   Current action:8
PQ    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   => CTMTradeFunctions::OrderDelete:: Проверка пройдена,пытаемся удалить ордер,попытка №1
LI    0    19:39:35    Trade    2013.01.11 09:15:40   order canceled [#36 sell stop 0.10 / 0.10 EURUSD at 1.32510]
FF    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   CTrade::OrderSend: cancel #36 [done]

OK    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   => CTMTradeFunctions::OrderDelete:: Ордер успешно удален

DI    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   Current action:8
FS    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   => CTMTradeFunctions::OrderDelete:: Проверка пройдена,пытаемся удалить ордер,попытка №1
HH    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:40   CTrade::OrderSend: cancel #35 [invalid stops]
JH    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:41   => CTMTradeFunctions::OrderDelete:: Ордер не удален. Ошибка: Invalid stops in the request
QP    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:41   при удалении ордера 35 возникла ошибка: 10016; GetLastError() = 5035; Bid = 0.0; Ask = 0.0; Price = 0.0

<Здесь попытки №2-5>

CK    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:45   Current action:8
PE    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:45   => CTMTradeFunctions::OrderDelete:: Проверка пройдена,пытаемся удалить ордер,попытка №6
GN    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:45   CTrade::OrderSend: cancel #35 [invalid stops]
GN    0    19:39:35    condom_for_test_CTM (EURUSD,M3)    2013.01.11 09:15:46   => CTMTradeFunctions::OrderDelete:: Ордер не удален. Ошибка: Invalid stops in the request
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
Файлы:
log20130522.txt  76 kb
 
Удалось обойти проблему для своего конкретного случая, поставил "слежку" за "подвисшим" ордером. Получился костыль, который хочется убрать.
 
Garynych:

Никак не могу понять как уровень стопов влияет на удаление ордера.

У меня такое было в терминале (на демо) в ручном режиме - тоже ордер не удалялся с такой странной формулировкой. Через неделю сам исчез.
 

Все бы хорошо, но это повторяемая ошибка и она мешает торговать роботу, а не в ручном режиме.

 

Если после неудачного закрытия, сделать попытку модифицировать ордер - получаем

2013.05.27 15:09:46    2013.01.17 01:54:06   CTrade::OrderSend: modify #9 at 1.32773 (sl: 0.00000 tp: 0.00000) [frozen]

Т.е ордер все таки заморожен. Тогда почему удаление ругается на инвалидные стопы?

Причина обращения: