Error No Connection. Как победить без перезапуска терминала?

 

Добрый день.

В последнее время часто стала проявляться ситуация когда при попытке совершить торговую операцию эксперт получает отказ с кодом ошибки 6 (нет связи с торговым сервером)

При этом индикатор соединения с сервером светится благополучным зеленым светом и функция IsConnectet() возвращает True.

Эксперт, как ему и положено делает паузу 5-10 секунд и пытается повторить операцию. Результат тот же.

Таких попыток делается порядка 20. Эффекта никакого.

Если при получении такой ситуации попробовать выставить ордер вручную возвращается ошибка "НЕТ СВЯЗИ". Индикатор при этом зеленый и котировки исправно поступают

После перезапуска терминала торговая операция совершается благополучно как экспертом, так и вручную с первой попытки.


С чем это связано, и как вылечить без перезагрузки терминала?

 

Можно пересканировать серверы или перелогинится.

Перескан:

   int hwindow=GetAncestor(WindowHandle(Symbol(),Period()),2);// получаем хендл главного окна
   if(hwindow!=0) {                                           // нашли главное окно
      PostMessageA(hwindow,WM_COMMAND,37400,0);               // посылаем сообщение "пересканировать серверы" 
   }


Перелогин:

   hwnd=GetAncestor(WindowHandle(Symbol(),Period()),2); // получаем хендл главного окна
   PostMessageA(hwnd,WM_COMMAND,35429,0);               // открыли окно ввода Логина и Пароля.
   Sleep(PAUSE);
   hwnd=GetLastActivePopup(hwnd);                       // нашли хэндл окна ввода Логина и Пароля 
   hwnd=GetDlgItem(hwnd,0x1);                           // нашли хэндл кнопки ЛОГИН
   Sleep(PAUSE);
   SendMessageA(hwnd,BM_CLICK,0,0);                     // нажали кнопку ЛОГИН
 
Talex писал(а) >>

Можно пересканировать серверы или перелогинится.

Перескан:

Перелогин:

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

 
Talex >>:

Можно пересканировать серверы или перелогинится.

Спасибо, вставлю в код. Появится ситуация отпишу


Упс.. несколько проблем


В стандартном WinUser32.mqh нет описания констант PAUSE и BM_CLICK. А так же отсутствуют заголовки функций GetAncestor, GetLastActivePopup, GetDlgItem

Не могли бы Вы их привести


И еще. При выполнении перелогина вручную отключаются советники. Как бы их включить из советника?

 

to sever29

куда уж подробнее, есть ведь описание к каждой строчке.

to lups

WinUser32.mqh брать здесь. А по поводу PAUSE см. Sleep().

как включить советник посмотрю позже.

 

На всякий случай напоминаю: 

здесь на форуме была тема, в которой человек жаловался, что ордер может не открываться по минуте.

Он заподозрил, что в проблеме виновато ДЦ. Но в ДЦ ему ухмыльнулись и сказали, что все дело в терминале-

де, под котировки, торговлю и новости у терминала различные подключения :-).

Потом эту же информацию подтверждал stringo, насколько я помню.

 
lusp >>:

И еще. При выполнении перелогина вручную отключаются советники. Как бы их включить из советника?


 
Talex >>:


Спасибо, все получилось. После первой попытки пересканирования серверов ордер установился нормально.

До перелогина дело не дошло