И снова о глюках IsConnected()

 

31.08 я наконец-то лично столкнулся с ситуацией, когда функция IsConnected() нарушила работу моего советника. До этого в течении длительного времени(где-то с начала года) я у себя за ней такого не замечал, хотя от пользователей моих советников периодически поступали сообщения, что в логе пишется об отсутствии связи с сервером, а по факту связь присутствует. Т.е. в момент, когда советнику функция IsConnected() возвращает False можно вполне нормально торговать в ручную. В советнике внутри торговых функций использую ее стандартно:

if(!IsConnected())
{
  Print("Отсутствует связь с сервером!");
  Error = ERR_NO_CONNECTION;
  Result = False;
  return(Result);
}

Манипуляции с переключением ТФ, а значит и реинициализация всего что есть на графике к нормальной работе функции не приводят. Уйти от данной ошибки можно только перезагрузкой терминала.

Может кто нибудь из разработчиков прокомментировать такое поведение этой функции. Если нужны будут логи готов предоставить их.

 

а вы не переставайте торговать и советником. тики ведь идут.

 

Да я то пока переделал слегка свой код на такой:

if(!IsConnected())
  Print("Отсутствует связь с сервером!");
else
  Print("Связь с сервером установлена");

Чисто ради спортивного интереса...

Но все же хотелось бы услышать ответ от разработчиков по этому поводу. Ведь проблема существует давно и вроде говорилось, что она решена, а тут опять двадцать пять... Снова всплывают те же самые глюки.

 
sergeev:

а вы не переставайте торговать и советником. тики ведь идут.


Странно такое здесь слышать. По-моему уже неоднократно отмечалось разработчиками, что тики и торговые операции - разные потоки. То есть тики идти могут, но торговать (ни вручную, ни советником) нельзя. Иначе зачем вообще такая функция в MQL4?
 
Scriptong:
Иначе зачем вообще такая функция в MQL4?
и мне интересно.
она правду не cкажет. сколько уже раз поднимался вопрос про её глюки, но видимо причина не просто в терминале или потоках, а где-то вне поля зрения отладчика.
 

Проблема лечится сменой типа соединения терминала.

Для смены типа соединения нужно вручную выбрать тот сервер, с которым соединение будет через дата-центр (индикатор: зеленый).

Если индикатор зелено-красный, то ждите ошибок.

Аналогично ведет себя функция IsTradeAllowed().

Написал заявку в сервисдеск. Ответа нет.

Вывод один: Если такие важные функции уже 6 лет работают некорректно и все молчат,

то это означает, что реально MT4 для автоматического трейдинга почти никто не использует

и основная часть пользователей MT4 торгует руками.

Заявка в сервисдеск: #163349

Открыта, Начата: 2011.07.09 21:46,

Описание проблемы

Тип соединения терминала: прямое соединение с севером (индикатор: зелено-красный)

Функция IsConnected() выдает ошибочное сообщение, о том что связи нет, хотя новые тики при этом поступают.

Если тип соединения терминала: через дата-центр (индикатор: зеленый), то ошибка не возникает.

Дополнительные сведения

https://www.mql5.com/ru/forum/106757

https://www.mql5.com/ru/forum/106418

 
А от разработчиков ни слова...
 
MoneyJinn:

Проблема лечится сменой типа соединения терминала.

Для смены типа соединения нужно вручную выбрать тот сервер, с которым соединение будет через дата-центр (индикатор: зеленый).

Если индикатор зелено-красный, то ждите ошибок.

Аналогично ведет себя функция IsTradeAllowed().

Написал заявку в сервисдеск. Ответа нет.

Вывод один: Если такие важные функции уже 6 лет работают некорректно и все молчат,

то это означает, что реально MT4 для автоматического трейдинга почти никто не использует

и основная часть пользователей MT4 торгует руками.



Не лечится таким образом. Или только на какое-то время, а потом снова вылазит. Перескан серверов тоже не помогает.
 
Выскажу предположение, что ошибка не в функции IsConnected(), - это просто МТ-сервер сбрасывает соединение по каким-то причинам (возможно освобождая ОЗУ)
 
сколько мы бы здесь не предполагали, пока что ясно одно - сами разработчики не говорят причины этого глюка в IsConnected.

С другой стороны у меня на VPS стоят два терминала одного брокера на которых бегут по 9 экспертов.

Ни в одном не было замечено сброс IsConnected за год.


Но отчасти я знаю воспроизводимую причину, по которой можно вызвать глюк в IsConnected - это зациклить эксперт в функции start.

сам наблюдал на другом VPS и брокере, что при зацикливании происходит срабатывание/глюк IsConnected через 5-6 часов старта эксперта.

 
Scriptong:
Странно такое здесь слышать. По-моему уже неоднократно отмечалось разработчиками, что тики и торговые операции - разные потоки. То есть тики идти могут, но торговать (ни вручную, ни советником) нельзя. Иначе зачем вообще такая функция в MQL4?
То есть Вы утверждаете что даже если функция старт будет занята торговлей она все равно сработает по каждому новому тику?
Причина обращения: