Данные с другого таймфрейма

 
В советнике используются данные с другого таймфрейма, в частности у меня находит фракталы с дневного графика, работает на 5, 15 минутках. Вот код:
//+------------------------------------------------------------------+
//| Функция определения нижнего фрактала на дневном таймфрейме |
//+------------------------------------------------------------------+
double fractalLow()
{
double lowlastfractal;
int i;
int nBars=iBars(NULL, rangeTF);
double nLow=iLow(NULL,rangeTF,i); // rangeTF -extern int
int nlowest=0;
// находим нижний фрактал
for (i=1; i<nBars; i++)
{
nlowest=iLowest(NULL,rangeTF, MODE_LOW, i, 1);
if(iLow(NULL,rangeTF,i)<iLow(NULL, rangeTF, i+1) && iLow(NULL, rangeTF, i+2)>iLow(NULL,rangeTF,i+1)
&& iLow(NULL, rangeTF, i)<iLow(NULL, rangeTF, i-1) && iLow(NULL, rangeTF,i-2)>iLow(NULL, rangeTF, i-1))
{
lowlastfractal=iLow(NULL, rangeTF, i);
if(lowlastfractal>iLow(NULL, rangeTF, nlowest))
lowlastfractal=iLow(NULL, rangeTF, nlowest); break;
}
}
return(lowlastfractal);
}

Подскажите, плз, можно как то реализовать так чтоб избежать постоянного перебора данных, что очень много занимает времени???
 
lowlastfractal объявить на глобальном уровне, а функцию пересчитывать только при появлении нового бара на D1.
Причина обращения: