Invalid expiration, когда победим? - страница 3

 

Особо радует:

Причина: Нет кода возврата.
 
Михаил:

Особо радует:

Причина: Нет кода возврата. 

Брокер что отвечает? 

 
Sergey Chalyshev:

Брокер что отвечает? 

А что он может ответить?
 
Михаил:
А что он может ответить?

Вот и интересно что ответят, ну например:

- Вы нам не нравитесь, поэтому вашу заявку не исполнили;

- Мы в этом ничего не понимаем, во сем виноваты MetaQuotes;

- У Вас очень далекий фьючерс, мы не можем его исполнить так как к этому времени биржи может уже не быть; 

или еще что то )) 

 
Sergey Chalyshev:

Вот и интересно что ответят, ну например:

- Вы нам не нравитесь, поэтому вашу заявку не исполнили;

- Мы в этом ничего не понимаем, во сем виноваты MetaQuotes;

- У Вас очень далекий фьючерс, мы не можем его исполнить так как к этому времени биржи может уже не быть; 

или еще что то )) 

Печально всё это!

Работает только ORDER_TIME_DAY, но ОБЯЗАТЕЛЬНО до 23:50 нужно снимать ордера :(  

 

Сегодня прямо какая то катастрофа с МТ5

3 месяца все работало как часы, а сегодня сыпет ошибку

2018.05.21 21:21:58.023    Trades    '40947': failed modify order #88866514 buy limit 1.00 SBRF-6.18 at 22539 sl: 0 tp: 0 -> 22628, sl: 0 tp: 0 [Invalid expiration]

Робот входит в позицию, выставляет лимитки, но при попытке их перенести на другую цену, тралом и т.д. выскакивает эта напасть

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


Прямо какая то фантастика

Если использовать функцию модификации с использованием

m_request.type_time   = ORDER_TIME_DAY;

ошибки нет

если использовать

m_request.type_time   = ORDER_TIME_GTC;

то данная ошибка сыпется

 
Konstantin Seredkin:

Сегодня прямо какая то катастрофа с МТ5

3 месяца все работало как часы, а сегодня сыпет ошибку

2018.05.21 21:21:58.023    Trades    '40947': failed modify order #88866514 buy limit 1.00 SBRF-6.18 at 22539 sl: 0 tp: 0 -> 22628, sl: 0 tp: 0 [Invalid expiration]

Робот входит в позицию, выставляет лимитки, но при попытке их перенести на другую цену, тралом и т.д. выскакивает эта напасть

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


Прямо какая то фантастика

Если использовать функцию модификации с использованием

m_request.type_time   = ORDER_TIME_DAY;

ошибки нет

если использовать

m_request.type_time   = ORDER_TIME_GTC;

то данная ошибка сыпется

Всегда используйте  ORDER_TIME_DAY, потому что при торговле роботом нет смысла выставлять отложенный ордер

на несколько дней. А если работать внутри Рабочего дня биржи (19-00 - 18-45 следующего дня), то

при клирингах всё-равно все выставленные ордера удаляются.

Вот так я устанавливаю отложенные ордера:

//+------------------------------------------------------------------+
//| Place order                                                      |
//+------------------------------------------------------------------+
void COrder::Place(const double price, const double volume, const bool buy_sell)
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  ticket = 0;
  req_id = 0;
  mem_magic = magic_storage + 1;
  check_count = 0;
  if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
//--- Fill structure
  request.action = TRADE_ACTION_PENDING;
  request.magic  = mem_magic;
  request.symbol = a_symbol;
  request.volume = volume;
  request.price  = price;
  if(buy_sell)
  {
    request.type = ORDER_TYPE_BUY_LIMIT;
  }
  else
  {
    request.type = ORDER_TYPE_SELL_LIMIT;
  } 
  request.comment = "Отложенный ордер...";      
  request.type_filling = ORDER_FILLING_RETURN;
  request.type_time = ORDER_TIME_DAY;
//--- Send order
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) 
    {
      req_id = result.request_id;
      magic_storage = mem_magic;
      state = ORD_DO_SET;
      mem_time = GetMicrosecondCount();
      mem_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      mem_magic = 0;
      mem_time = 0;
      mem_start_time = 0;
      CheckError(result.retcode, "Place: Ордер не установлен! Причина: ", order_status, ticket);
    }
  }
  else
  {
    mem_magic = 0;
    mem_time = 0;
    mem_start_time = 0;
    CheckError(result.retcode, "Place: Ордер не отослан! Причина: ", order_status, ticket);
  }
}

а вот так модифицирую

//+------------------------------------------------------------------+
// Modify order                                                      |
//+------------------------------------------------------------------+
void COrder::Modify(const double price)
{
  req_id = 0;
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  request.action    = TRADE_ACTION_MODIFY;
  request.magic     = mem_magic;
  request.symbol    = a_symbol;
  request.order     = ticket;
  request.price     = price;
  request.type_time = ORDER_TIME_DAY;
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) 
    {
      req_id = result.request_id;
      modify_price = price;
      state = ORD_DO_MODIFY;
      mem_time = GetMicrosecondCount();
      mem_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      mem_magic = 0;
      mem_time = 0;
      mem_start_time = 0;
      CheckError(result.retcode, "Modify: Ордер не модифицирован! Причина: ", order_status, ticket);
    }
  }
  else
  {
    mem_magic = 0;
    mem_time = 0;
    mem_start_time = 0;
    CheckError(result.retcode, "Modify: Ордер не отослан! Причина: ", order_status, ticket);
  }
}

И, вот уже несколько лет, нет никаких проблем

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