Hour() Minute() Seconds() Day() DayOfWeek() возвращают разные значения по выходным

 

Всем привет.

Вчера вечером (воскресение) наткнулся на следующее.

Hour() Minute() Seconds() Day() DayOfWeek() в скрипте возвращают значения последнего известного тика, т.е. пятницы. При этом в индикаторе, эти же самые функции, возвращают просто нули. 

По вчерашнему дню, 06.11.2022

TimeCurrent(Struktura)

Struktura.day_of_week=5 //Пятница

Struktura.hour=22

Struktura.min=59

Struktura.sec=34

В скрипте: Hour() =22, Minute()=59, Seconds()=34, DayOfWeek()=5

В индикаторе:  Hour() =0, Minute()=0, Seconds()=0, DayOfWeek()=0

Почему по разному то?

 

Вопрос был "Почему по разному?"

Цитата:

В скрипте: Hour() =22, Minute()=59, Seconds()=34, DayOfWeek()=5

В индикаторе:  Hour() =0, Minute()=0, Seconds()=0, DayOfWeek()=0

Почему по разному то?

 
PS Тоже самое перешло на будни.
 

Это устаревшие функции. Используйте MqlDateTime. Пример:

void OnStart()
  {
   datetime timeCurrentDt = TimeCurrent();
   MqlDateTime timeCurrent;
   timeToStruct(timeCurrentDt, timeCurrent);
   Alert(StringFormat("h %i, m %i, s %i, day of week %i", timeCurrent.hour, timeCurrent.min, timeCurrent.sec, timeCurrent.day_of_week));
  }

bool timeToStruct(datetime time, MqlDateTime &var)
  {
   ResetLastError();
   if(TimeToStruct(time, var))
      return(true);
   Print("TimeToStruct error ", GetLastError());
   return(false);
  }


 
Тоже ходил по граблям со старыми функциями. Здесь человек доступно объяснил, что лучше всего просто объявить структуру. И я уже исходя из своего опыта говорю, что да, со структурами работать гораздо удобнее.
Научите пожалуйста работать с MqlDateTime
Научите пожалуйста работать с MqlDateTime
  • 2022.06.14
  • www.mql5.com
.day_of_year содержит некорректное значение...
 
Vladislav Boyko #:

Это устаревшие функции. Используйте MqlDateTime. Пример:


Понятно-понятно. Со структуры я начал. Этим вопросом владею, пользуюсь.

Был у меня готовый/рабочий код на скрипте, его скопировал и вставил в индикатор. А индикатор не заработал. Долго искал ошибку "у себя". Оказалось, одни и те же функции, в разных местах работают по разному.  Просто пол дня потерял, пока не нашел различие между скриптом и индикатором. 

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