Обновление хендлов индикаторов

 
Доброго времени суток! Сразу скажу, я дилетант в алгоритмической торговле, так что в ближайшее время от меня может быть ещё много топиков на форуме. Прошу умных людей подсказать, каким образом можно определить необходимость обновления хендла индикатора для получения новых данных? Т.е. есть индикаторы, хендл которых не требует обновления и данные по нему всегда свежие - стандартный heiken ashi, к примеру, но в тоже время есть WPR, который, если не обновлять хендл перед получением данных - будет давать значения с последнего обновления. Хотелось бы научиться дифференцировать такие индикаторы ещё на фазе анализа их кода, т.к. бесконечные обновления хендла там, где не нужно, создают абсолютно не нужную нагрузку на систему. 
 
//+------------------------------------------------------------------+
#include "classIndicator\classIndicator.mqh"
//+------------------------------------------------------------------+
class classWPR : public classIndicator
  {
private:
   int               PeriodWPR;
public:
   int               RefreshStatus(int Depth)
     {
      Handle = iWPR(TraidingSymbol, TimeFrame, PeriodWPR); //Если убрать эту строку - будем получать данные с момента вызова конструктора
      double            Buffer0[];			  							
      CopyBuffer(Handle, 0, 0, Depth + 1, Buffer0);
      for(int i = Depth; i >= 1; i --)
        {
         if(Buffer0[i] > -80 && Buffer0[i - 1] <= -80)
           {
            Status = 1;
            return(1);
           }
         if(Buffer0[i] < -20 && Buffer0[i - 1] >= -20)
           {
            Status = -1;
            return(-1);
           }
        }
      Status = 0;
      return(0);
     }

                     classWPR(string symbol, ENUM_TIMEFRAMES frame, int period);
                    ~classWPR();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
classWPR::classWPR(string symbol, ENUM_TIMEFRAMES frame, int period)
  {
   TraidingSymbol = symbol;
   TimeFrame = frame;
   PeriodWPR = period;
   Handle = iWPR(TraidingSymbol, TimeFrame, PeriodWPR);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
classWPR::~classWPR()
  {
  }
//+------------------------------------------------------------------+

Пример кода, с обновлением хендла

 

Хэндл получаем один раз в ините. Никакого обновления хэндля не требуется.

А вот для получения свежих данных используется функция CopyBuffer() - она вызывается каждый раз, когда нужны данные.