Шаблон работы советника по барам

 
Подскажите шаблон или ссылку на шаблон алгоритма работы определённой процедуры при открытии каждого нового бара.
 
datetime BarOpenTime=0;

void OnTick () {
  datetime tmp=iTime(_Symbol,_Period,0);
   if (BarOpenTime!=0 && BarOpenTime<tmp) {
      BarOpenTime=tmp;
      OnBar();
   } else BarOpenTime=tmp;
}
void OnBar () {
    /// открыт новый бар
}

примерно так. Только добавить ещё рестарты и сохранение состояний при них ;-)

 
Спасибо. А можете сказать, можно ли "OnBar" заменить "Eventsettimer"?
Причина обращения: