
Jeśli warunkiem miałoby być sprawdzenie czy iTime() zwraca 0, to po co w ogóle deklarować BarTime. Wystarczyłoby sprawdzić czy iTime zwraca zero. Po drugie nawet jeśli wykres nie będzie uaktualniony, to iTime nie zwróci zera, bo zwróci czas najnowszej świecy na wykresie, nawet jeśli miałaby być sprzed paru dni.
Po trzecie jeśli zastosujesz pętlę
while(IsTradeAllowed() == false) Sleep(10);
RefreshRates();
to robot najpierw będzie czekał aż wykres ruszy i notowania się odświeżą.
Po czwarte w sposób, który przytoczyłem wcześniej można sprawdzić czy ostatnie kilka świec jest po kolei, bez dziury w notowaniach.
A w ogóle to wyjaśnij jaką pracę wykonuje Ci nieprzewidzianie EA zanim odświeży Ci wykres, to powiem jak ten konkretny problem rozwiązać.