Некорректные значения индикатора на начало торгов

 
Брокер открытие, акции с часовым таймфреймом, взял из стандартной библиотеки сигнал индикатора MACD - CSignalMACD и добавил лог:
void              printValues() {
      int ind = 1;
      for(int x = 1; x <= 5; x++) {
         Print("MACD Main(" + x + "): ", Main(x));
      }
   }
в OnTick проверяю новый бар через функцию:
bool              isNewBar() {
      static datetime TimeLastBar;
      if ((int)firstTickTime == 0) {
         firstTickTime = TimeCurrent();
      }
      datetime times[];
      if(CopyTime(Symbol(), Period(), 0, 1, times) < 1)
         return false;
      if(times[0] == TimeLastBar) return false;
      Print("isNewBar");
      TimeLastBar = times[0];
      return true;
   }
если новый бар, то обновляю данные CSymbolInfo::RefreshRates и CIndicators::Refresh, вывожу лог,
на начало торгов в 10:00 выдаёт лог:
10:00:04.554  MACD3 (AFKS,H1)  isNewBar
10:00:04.557  MACD3 (AFKS,H1)  MACD Main(1): 0.03577807846615322
10:00:04.557  MACD3 (AFKS,H1)  MACD Main(2): -0.002659388350629399
10:00:04.557  MACD3 (AFKS,H1)  MACD Main(3): -0.015237259254584856
10:00:04.557  MACD3 (AFKS,H1)  MACD Main(4): -0.024310962984685602
10:00:04.557  MACD3 (AFKS,H1)  MACD Main(5): -0.033225166900541225
в 11:00 выдаёт такой лог:
11:00:11.779  MACD3 (AFKS,H1)  isNewBar
11:00:11.779  MACD3 (AFKS,H1)  MACD Main(1): 0.07426444249647446
11:00:11.779  MACD3 (AFKS,H1)  MACD Main(2): 0.06139181359691648
11:00:11.779  MACD3 (AFKS,H1)  MACD Main(3): 0.03577807846615322
11:00:11.779  MACD3 (AFKS,H1)  MACD Main(4): -0.002659388350629399
11:00:11.779  MACD3 (AFKS,H1)  MACD Main(5): -0.015237259254584856

добавилось два новых значения, вместо ожидаемого одного, из чего делаю вывод что в 10:00 индикатор не обновился на момент обработки сообщения. ещё аномалия в том, что дважды срабатывает isNewBar

причем дальше всё работает нормально, и выстреливает два значения не всегда - только на начало торгов и чаще работает нормально.

видимо какое-то состояние гонки, может есть возможность как-то обновить индикатор или добавить проверку в OnTick?

обработчик OnTick:

void OnTick(void) {
   if(isNewBar()) {
      refreshAll(); //CSymbolInfo::RefreshRates
      m_indicators.Refresh();
      printIndicatorValues();
      if(Bars(Symbol(), Period()) > 20) {
         myExpert.SimpleProcessing();
      }
   }
}