время действия ордера

 
Всем привет! подскажите пожалуйста как роботу в момент выставления лимитного ордера указать, что данный ордер действует до конца дня? я так понимаю нужно с переменной expiration работать, но не могу сообразить как поставить конец дня.
 

Срок действия ордера можно задать в поле type_time специальной структуры MqlTradeRequest при отправке торгового запроса функцией OrderSend(). Допустимы значения из перечисления ENUM_ORDER_TYPE_TIME. Для получения значения этого свойства используйте функцию OrderGetInteger() или HistoryOrderGetInteger() с модификатором ORDER_TYPE_TIME.

ENUM_ORDER_TYPE_TIME

Идентификатор

Описание

ORDER_TIME_GTC

Ордер будет находится в очереди до тех пор, пока не будет снят

ORDER_TIME_DAY

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

ORDER_TIME_SPECIFIED

Ордер будет действовать до даты истечения

ORDER_TIME_SPECIFIED_DAY

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

 

это вы для МТ5 указали? у меня мт4

 
sts141:

это вы для МТ5 указали? у меня мт4

вот так

   MqlDateTime kdt_Expiration;
   TimeCurrent(kdt_Expiration);
   datetime    dt_Expiration;
   
   kdt_Expiration.hour = 23;
   kdt_Expiration.min  = 59;
   kdt_Expiration.sec  = 0;
   
   dt_Expiration = StructToTime(kdt_Expiration);
   
 

что может быть проще

iTime(NULL,1440,0) - время открытия дня + 1435*60 = время закрытия дня (за 5 минут до закрытия дня)
осталось только вписать полученную величину в Expiration
 
Aleksey Semenov:

что может быть проще

datetime dt_Expiration = (datetime )(iTime(NULL,PERIOD_D1,0) + (PERIOD_D1 - 5) * 60);

действительно, друг, ты прав.

 
всем большое спасибо!!!!!
 
работает!
Причина обращения: