По времени - страница 2

 
Lilita Bogachkova:

TimeToStr

TIME_MINUTES получает результат в форме " hh:mm " ,

Это понятно. Но все же сравнивать время в строковом представлении некорректно. Для этого есть целочисленный тип datetime. И утверждение "ну это же работает" не годится. В данном коде работает, в другом не будет.
 
Alexey Volchanskiy:
Это понятно. Но все же сравнивать время в строковом представлении некорректно. Для этого есть целочисленный тип datetime. И утверждение "ну это же работает" не годится. В данном коде работает, в другом не будет.
Но за то какой полет мысли!
 
Alexey Volchanskiy:
Это понятно. Но все же сравнивать время в строковом представлении некорректно. Для этого есть целочисленный тип datetime. И утверждение "ну это же работает" не годится. В данном коде работает, в другом не будет.
Спасибо, но до этого дня работало. Если MQ подправит что нельзя ' string' сравнивать, буду 'string' переводить в 'datetime' / 'int'. Но пока работает код получаться кароче и быстрее.
 
Если параметры задаются через строки в окне свойств, надо следить, чтобы нули были у однозначный чисел "09:05", если будет "9:5" будет неправильно работать. 
 
Dmitry Fedoseev:
Если параметры задаются через строки в окне свойств, надо следить, чтобы нули были у однозначный чисел "09:05", если будет "9:5" будет неправильно работать. 
Верно, я стараюсь следовать справочнику: TIME_MINUTES получает результат в форме " hh:mm "
 
Alexey Volchanskiy:

А что смущает?

 

**


Смущает то что ваш код в 23:45 вернет false

 
Andrey Barinov:

Смущает то что ваш код в 23:45 вернет false


Верно, писал под себя, а ночью я не торгую. Для универсальности надо править.

 

Сравнивать в стринг можно не только числа:

if("abcd"<"abce") true

if("abcf"<"abce") false
 
Lilita Bogachkova:

Сравнивать в стринг можно не только числа:

Можно и яблоки с апельсинами сравнивать. Только зачем?
 
Lilita Bogachkova:
Спасибо, но до этого дня работало. Если MQ подправит что нельзя ' string' сравнивать, буду 'string' переводить в 'datetime' / 'int'. Но пока работает код получаться кароче и быстрее.

Ни кароче ни быстрее не получается. Вот ваш вариант с переводом строки во время.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   datetime Ot = StringToTime("12:00"), Do = StringToTime("15:00");
   if(TimeCurrent() >= Ot && TimeCurrent() < Do)
     {
      // исполняемый код 
     }
  }

Единственное чего тут не хватает, это учёта суток если надо будет задать время работы с вечера до утра.


Решил доделать этот вариант.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
input string timeOt = "12:00";
input string timeDo = "15:00";

void OnTick(void)
  {
   string dayCurrent = TimeToString(TimeCurrent(), TIME_DATE);
    datetime Ot = StringToTime(dayCurrent+" "+timeOt);
     datetime Do = StringToTime(dayCurrent+" "+timeDo);
    if(Ot > Do)
     Do = Do + PeriodSeconds(PERIOD_D1);
    if(TimeCurrent() >= Ot && TimeCurrent() < Do)
     {
      // исполняемый код 
     }
  }

Вроде должно работать...

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