Индикатор обнуляется со временем

 
Здравствуйте. Написал я индикатор АТР, которые высчитывает средний АТР за последние несколько дней. На тестировании все работает отлично. А вот в режиме реального времени индикатор со временем становится равен 0 и всё. В чем может быть проблема, подскажите пожалуйста.


Также вставлю код из файла.
if(prev_calculated == 0)
    {
      ExtATRBuffer[rates_total-1] = 0;
      for(int i=ATRPeriod; i>=1; i--) // Рассчитываем индикатор в момент вставки
           {
            max = iHighMQL4(_Symbol,1440,i);
            min = iLowMQL4(_Symbol,1440,i);
            atr += (max - min)/_Point;
           }
         ExtATRBuffer[rates_total-1] = atr / ATRPeriod;
         atr = 0;
      return(rates_total);
    }
    if(rates_total == prev_calculated) // Пока бар не сменился, ничего не делаем.
      return(rates_total);
    TimeToStruct(time[rates_total-1],dateCurr);
    TimeToStruct(time[rates_total-2],datePred);
    if(dateCurr.day == datePred.day) // проверяем значение День у соседних баров
      ExtATRBuffer[rates_total-1] = ExtATRBuffer[rates_total-2];
    else // Если день сменился, рассчитываем АТР
      {
         for(int i=ATRPeriod; i>=1; i--)
           {
            max = iHighMQL4(_Symbol,1440,i);
            min = iLowMQL4(_Symbol,1440,i);
            atr += (max - min)/_Point;
           }
         ExtATRBuffer[rates_total-1] = atr / ATRPeriod;
         atr = 0;
      }  
   return(rates_total);
  }
Файлы:
ATR.mq5  5 kb
 
В итоге внес костыль в свой код
Перед return вставил код расчета АТР за кол-во дней. Но вряд ли это правильное решение, потому что я так и не понял, почему индикатор сбивается внутри дня, ведь у него расчет в 1 строчку
    TimeToStruct(time[rates_total-1],dateCurr);
    TimeToStruct(time[rates_total-2],datePred);
    if(dateCurr.day == datePred.day) // проверяем значение День у соседних баров
        ExtATRBuffer[rates_total-1] = ExtATRBuffer[rates_total-2];
 
А проверить открытие нового дневного бара нельзя через функцию iBars с указанием периода PERIOD_D1? А то эти 3 строчки это пи*ец костыль) А насчет того, чего обнуляется, я тоже не понял. Из-за отступов неправильных, код лень читать. 
Причина обращения: