КАК ОТКРЫТЬ ОРДЕР В ОПРЕДЕЛЕННОЕ ВРЕМЯ?

 

ЛЮДИ ПОДСКАЖИТЕ ПОЖАЛУЙСТА КАК ОТКРЫТЬ ОРДЕР В ОПРЕДЕЛЕННОЕ ВРЕМЯ Я ПРОБОВАЛ

if(TimeToStr(TimeCurrent(),TIME_MINUTES)==13:40)

НО ПОЧЕМУ ТО НЕ КАК НЕ ПОЛУЧАЕТСЯ ЧЕРЕЗ АЛЕРТ ПОКАЗЫВАЕТ ВРЕМЯ ВСЕ ОТЛИЧНО А ВОТ ПРОЦЕСС ОТКРЫТИЯ ОРДЕРА НЕ ПОЛУЧАЕТСЯ:((

 
dyxaa:

ЛЮДИ ПОДСКАЖИТЕ ПОЖАЛУЙСТА КАК ОТКРЫТЬ ОРДЕР В ОПРЕДЕЛЕННОЕ ВРЕМЯ Я ПРОБОВАЛ

if(TimeToStr(TimeCurrent(),TIME_MINUTES)==13:40)

НО ПОЧЕМУ ТО НЕ КАК НЕ ПОЛУЧАЕТСЯ ЧЕРЕЗ АЛЕРТ ПОКАЗЫВАЕТ ВРЕМЯ ВСЕ ОТЛИЧНО А ВОТ ПРОЦЕСС ОТКРЫТИЯ ОРДЕРА НЕ ПОЛУЧАЕТСЯ:((



Данная функция возвращает флаг разрешения торговли по времени
 
dyxaa:

ЛЮДИ ПОДСКАЖИТЕ ПОЖАЛУЙСТА КАК ОТКРЫТЬ ОРДЕР В ОПРЕДЕЛЕННОЕ ВРЕМЯ Я ПРОБОВАЛ

if(TimeToStr(TimeCurrent(),TIME_MINUTES)==13:40)

НО ПОЧЕМУ ТО НЕ КАК НЕ ПОЛУЧАЕТСЯ ЧЕРЕЗ АЛЕРТ ПОКАЗЫВАЕТ ВРЕМЯ ВСЕ ОТЛИЧНО А ВОТ ПРОЦЕСС ОТКРЫТИЯ ОРДЕРА НЕ ПОЛУЧАЕТСЯ:((

А если так:

if(TimeToStr(TimeCurrent(),TIME_MINUTES)>13:39&&TimeToStr(TimeCurrent(),TIME_MINUTES)<13:41)
 
nasdaq:

А если так:

Строку меряете? :)
 
Виноват... А вот так:
if(TimeCurrent()>StrToTime("13:39")&&TimeCurrent()<StrToTime("13:41"))
 

На каждом тике строку во время преобразовывать? Зачем? Можно попробовать так:

int start() {
 //----
 datetime НужноОткрытВ=StrToTime("13:40");// Время открытия
 datetime ЕщеНепоздно=60*2;// Ждем тика максимуи 2 минуты
 //
 if(ОткрытьОрдерВовремя(НужноОткрытВ,ЕщеНепоздно) == 0) {
  // Открываем ордер
 }
return(0);
}

int ОткрытьОрдерВовремя(datetime ВремяОткрытия,datetime ВремяУшло) {
// ВремяОткрытия -когда нужно открыть ордер
// ВремяУшло     - допустимое ожидание после ВремяОткрытия, когда ещё можно открывать ордер
// Возвращает -1 Время ещё недостигнуто
//             0 Пора открывать ордер
//            +1 Поздно открывать
 int Result=0;
 if(TimeCurrent() < ВремяОткрытия) Result=-1;
 if(TimeCurrent() >= ВремяОткрытия+ВремяУшло) Result=1;
 return(Result);
}
Причина обращения: