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

 
Sergey Chalyshev:
Не прокатит, надо форматировать дату как показывал по ссылке.
Посмотрим.
 

Сейчас 6:25 проверил на демо Открывашки. 

Всё работает (и модифицируется и удаляется)

Делаю так:

request.type_time = ORDER_TIME_SPECIFIED_DAY;
  request.expiration = datetime( SymbolInfoInteger( a_symbol, SYMBOL_EXPIRATION_TIME ) );
 

А на РЕАЛЕ модифицирует, но НЕ УДАЛЯЕТ, при этом терминал не сообщает об ошибке!

Это НИКОГДА не закончится.... 

Единственный выход, перед клирингами удалять ордера. 

И ставить:

request.type_time = ORDER_TIME_DAY;
 

Вот и ещё один пример с отложками:

https://www.mql5.com/ru/forum/11297/page42#comment_2098038 

Опыты с МетаТрейдер 5 в "Открытие"
Опыты с МетаТрейдер 5 в "Открытие"
  • www.mql5.com
Опыты с МетаТрейдер 5 в "Открытие". - Страница 42 - Категория: биржевой трейдинг
 

Интересно, можно ли посмотреть в Quik с каким временем выставлен ордер,

т.е какое реальное время выставляет МТ5? 

 

Вчера специально, после 19:00, поставил ордер, дату экспирации не ставил (по умолчанию ставит ORDER_TIME_DAY).

Сегодня с утра, пытаюсь передвинуть ордер мышкой, ругается и ордер не модифицирует.

При этом другой ордер где стоит дата экспирации подальше (ORDER_TIME_SPECIFIED_DAYмодифицируется нормально.

 
Sergey Chalyshev:

Вчера специально, после 19:00, поставил ордер, дату экспирации не ставил (по умолчанию ставит ORDER_TIME_DAY).

Сегодня с утра, пытаюсь передвинуть ордер мышкой, ругается и ордер не модифицирует.

При этом другой ордер где стоит дата экспирации подальше (ORDER_TIME_SPECIFIED_DAYмодифицируется нормально.

 

Тогда, действительно лучше делать так, как ты говорил, но только

чтобы не терять время, брать и  "обнулять" нужно при инициализации

эксперта.

int OnInit()
{
  exp_time = GetCutTime( aSymbol );
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert Set expiration time function                              |
//+------------------------------------------------------------------+ 
datetime GetCutTime( const string t_symbol )
{
  MqlDateTime b_time;
  datetime a_time = datetime( SymbolInfoInteger( t_symbol, SYMBOL_EXPIRATION_TIME ) );
  TimeToStruct( a_time, b_time );
  b_time.hour = 0;
  b_time.min = 0;
  b_time.sec = 0;
  return( StructToTime( b_time ) );
} 

//-------------
  request.type_time = ORDER_TIME_SPECIFIED_DAY;
  request.expiration = exp_time;
 

Я думаю, что разработчики не учитывают время, при выставлении ордера,

а только дату: 

ORDER_TIME_DAY

Ордер будет действовать только в течение текущего торгового дня

ORDER_TIME_SPECIFIED_DAY

Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.

Когда мы указываем время отличное от 00:00:00 это приводит к ошибке :( 

Разработчики не считают это  ошибкой, потому что день заканчивается в 23:59:59 

 
Михаил:

Я думаю, что разработчики не учитывают время, при выставлении ордера,

а только дату: 

ORDER_TIME_DAY

Ордер будет действовать только в течение текущего торгового дня

ORDER_TIME_SPECIFIED_DAY

Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.

Когда мы указываем время отличное от 00:00:00 это приводит к ошибке :( 

Разработчики не считают это  ошибкой, потому что день заканчивается в 23:59:59 

Я бы сказал иначе: 

Разработчики не считают это ошибкой, потому что, на форекс время начала торговой сессии начинается в 00:00.

И терминал не предназначен для торговли на бирже где время начала торговой сессии начинается в 19:00.

 

Сегодняшний прикол:

2015.12.09 19:05:12.631 Trades 'ххххх': buy limit 2.00 Si-3.17 at 74312

2015.12.09 19:05:12.825 Forts_trader (Si-12.16,H1) OnTradeTransaction: Buy ордер отклонён! Причина: Нет кода возврата.; Билет = 24716452
Причина обращения: