Не получается сохранение истории баров

 

Допустим у меня в последний сохраненный бар был 20.02.2008 в 9.52. 
Когда MT соединился с сервером 21.02.2008 в 16.30 на графике начал формироваться бар с этим временем.
Промежуток между 20.02.2008 9.52 и 21.02.2008 16.30 остается пустым некоторое время (например связь с инетом медленная),
Когда бар 21.02.2008 в 16.30 сформирован он будет под номером 0, а бар 20.02.2008 в 9.52 будет под номером 1 т.к. бары в промежутке еще не 
подгрузились. Вот и получается что и в моей сохраненной истории будет дыра с 20.02.2008 9.52 по 21.02.2008 16.30.

Каким образом надо сделать так чтобы дождаться когда все бары будут подгружены и только потом сохранять их.

init()
{
 pTime = Time[0];
}


start()
{
 //как только будет сформирован текущий бар начнем обработку
 if(pTime != Time[0])
 {
  //найдем номер бара по дате и времени последнаго обновления
  j = iBarShift(Symbol(), 0, StrToTime(LastTime), false);

  for(i=j; i>=0; i--) InsertBar(Symbol(),Open[i] и т.д.);

 }

}


 
Когда не вся история закачана нужно проверять через GetLastError о наличии ошибки 4066 - ERR_HISTORY_WILL_UPDATED. Ее нужно искать после доступа к тайм-сериям - у вас - после iBarShift. Обычно ждут какое-то время, пытаются прочитать значение и проверяют об ошибки опять. Пример - здесь.
 

Добавил я следующий код после iBarShift

  while (True)
  {
  Print ("Запрашиваем массив");
  c=ArrayCopyRates(dRateInfo,Symbol(),PERIOD_M1);
  iError = GetLastError();
   
  Print ("Ошибка № ", iError, "Кол-во:", c);
  if (iError != 4066) break;
  Sleep (5000);  
  }

Но ничего не изменилось. Или что -то я не так делаю