проверка цены только в начале таймфрэйма

 
int var_bars = 0;

...

void OnTick()
{
   int signal = 0;
   if(IsTradeAllowed()==false)
      return;

   if (var_bars != Bars)
   {
        var_bars = Bars;
        
...
... telo experta
...

}

 например, мне надо проверять цену только открытии бара в том тайфрэйме, где тестируется робот.. например, h1. 

я реализовал это кодом сверху.. но эффективно ли это? ведь каждый раз при событии вызывается тиковая функция, которая проверяется на наличие нового бара..  

может можно как-то упростить это? чтобы не делать лишней проверки каждый раз 

 

проверка занимает мало времени, так что урезать не стоит.

вот классическая проверка на новый бар:

static datetime prevtime = 0;// вставить в глобальные переменные                             


int init()
  {
//----

   prevtime = Time[0];
//**************************остальной инит
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

 //******************************** код, исполняемый на каждом тике - выше

 if(Time[0] <= prevtime) return(0);//ждем появления нового бара
 else  prevtime = Time[0];//если появился новый бар, начинаем работу
   if(IsTradeAllowed()) 
     {
       RefreshRates();
     } 
   else 
     {
       prevtime = Time[1];
       return(0);
     }
//******************************** код, исполняемый на открытии - ниже

}