Как работает функция IsConnected()

 

Хочу разобраться в тонкостях работы функции IsConnected(). У меня эта функция используется следующим образом:

void start() {
  while (IsExpertEnabled() && !IsStopped()) {
    if (IsConnected()) {
      // Тело советника
    }
    else Comment("ОТСУТСТВУЕТ связь с торговым сервером");
    Sleep(5000);
  }
  Message("Отжата кнопка \"Разрешить запуск советников\"\n"+
          "Советник ОСТАНОВЛЕН");
}

Из приведённого примера кода видно, что советник зациклен и проверяет значение функции IsConnected() каждые 5 секунд. Также каждые 5 секунд выполняется основное тело советника.

Проблема. За последние сутки советник два раза был остановлен с сообщением "ОТСУТСТВУЕТ связь с торговым сервером". Хотя на момент моего вмешательства в виде перезагрузки МТ4, связь была. Другие эксперты работали.

Предположение. Чтобы функция IsConnected() возвращала правильное значение, нужно, чтобы советник не был зациклен.

Что мне нужно? Подтверждение или опровержение моего предположения.

 
Мой советник IsConnected тоже зациклен, и тоже использует эту функцию.
И он определяет восстановление связи без проблем.

Запусти его, он соберет статистику, и все будет понятно ;)
 
Благодарю, Андрей! Запустил... понаблюдаю...