Непонятки с днями недели

 

Есть абстрактный цикл :

int seconds = PeriodSeconds(period);
datetime lastTime = GetLastTime(series, period, symbols);
int index = 500;

while (index >= 0)
{
                double close[];
                MqlDateTime dates;
                TimeToStruct(currentTime, dates);
               
                int copied = CopyOpen(series[k].mName, period, currentTime, currentTime, close);
                index--;

Print(series[k].mName, " : ", currentTime, " : ", dates.day_of_week, " : ", copied); // результат показан ниже
                currentTime -= seconds;
}

возврщающий такое :

Вопрос :

  • почему CopyOpen возвращает -1 в четверг и пятницу хотя это должны быть СБ и ВС?
  • почему суббота и воскресенье в данном случае имеют идентификатор 4 и 5?
  • зависят ли значения SUNDAY и SATURDAY от локаьного времени моего компьютера?
  • как точно определить, что по опр. времени - выходной учитывая, что метод метод выше почему-то не работает?
 

Счет дней недели начинается с воскресение = 0, а не с понедельника: https://www.mql5.com/ru/docs/constants/structures/mqldatetime, таков формат даты в Windows.

Суббота и воскресенье имеют численные значения 6 и 0, а не 4 и 5. Скорее всего вы не обратили внимание, что это 2013 год. Считается верно.

Проверьте наличие исторических данных по USDNOK именно в указанные дни, где выдает -1.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура даты - Документация по MQL5