Перебор баров истории

Malvin86

Новичок форума
Доброго времени суток
Столкнулся с необходимостью выполнить перебор часовых баров прошлой недели (с понедельника по пятницу) для дальнейшей работы с результатом.
Делаю таким образом:


Код:
  OldWeek = iTime(Symbol(), 10080, 1); // время начала прошлой недели
  OldHour = NormalizeDouble(((TimeCurrent() - OldWeek) / 3600), 0); // кол-во часов до начала прошлой недели


    if (TSWeekLV == 0 || TSWeekLV != TimeDayOfYear(OldWeek)) {
      for (int x = OldHour; x > OldHour - 120 - 1; x --) { // перебор баров прошлой недели начиная сначала
        HBarsWeek = iHigh(Symbol(), 60, x);
        LBarsWeek = iLow(Symbol(), 60, x);
        SizeBarsWeek = HBarsWeek - LBarsWeek;
        TotalSizeBarsWeek += SizeBarsDay;
        TSHistoryWeekLV = NormalizeDouble(TotalSizeBarsWeek * PointDay * 10 / 120, 0); // запоминаем среднее значение бара за неделю
        TSWeekLV = TimeDayOfYear(OldWeek); // запоминаем начало прошлой недели
      }
    }

Все бы ничего, но ведь кол-во часов до начала прошлой недели и кол-во часовых баров две разные вещи!
К примеру субботы и воскресенья баров нет, так же могут быть пропуски в барах истории...
А бары перебираются отступом с конца как я понимаю... Как это еще можно реализовать нормально?
 

Malvin86

Новичок форума
В общем разобрался, сделал через функцию iBarShift.
 

AlexeyVik

Программист mql4 mql5
Ещё полезная функция -https://docs.mql4.com/ru/series/barsfunction
int Bars(
string symbol_name, // имя символа
ENUM_TIMEFRAMES timeframe, // период
datetime start_time, // с какой даты
datetime stop_time // по какую дату
);
 
Верх