Советник не закрывает ордеры в конце дня, как быть?

 
   if(Hour() == 00 && Minute() == 00)
      {
         for(i=1;i<=10;i++) 
          {
          OrderDelete(i);
          } 
      }

при проверке на всех тиках не срабатывает, подскажите как быть?

или в каком формате устанавливать время жизни отложеного ордера, чтоб он сам закрылся в конце суток?

tBuy=OrderSend(Symbol(),OP_BUYSTOP,0.1,price,3,stoploss,takeprofit,NULL,16384,	ВОТ ЗДЕСЬ В КАКОМ ФОРМАТЕ СТАВИТЬ ВРЕМЯ?,Green);
 

if(Hour() == 00 && Minute() == 00)
не корректно условие. Тик может прийти и позже 00 минут достаточно только на часы проверить без минут, ну и надо вызывать удаление только для отложенных ордеров)

а вообще если надо имено в конце дня то надо писать наверное так

if(Hour() == 23 && Minute() > 40) - сработает за 20 минут до окончания дня

а время задается в типе datetime. есть множество ф-ия работы с датой. есть и такая которая переводит из строки в дату. точно не помню как она звучит, посмотрите в справке

 

Главным образом, потому, что неправильно используется функция закрытия ордера.

bool OrderDelete( int ticket, color arrow_color=CLR_NONE)
Удаляет ранее установленный отложенный ордер. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Параметры:

ticket - Уникальный порядковый номер ордера.
arrow_color - Цвет стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображаются.

Кроме того, расчёт времени закрытия написан некорректно.

 
sintez55:

или в каком формате устанавливать время жизни отложеного ордера, чтоб он сам закрылся в конце суток?

Помогите с expiration в OrderSend
Формат для expiration?
помогите описать срок жизни ордера

В общем, поиск рулит! ;)
 
Hour(Time(...))