Тестирование функции IsConnected() - страница 3

 

Очередной результат тестирования

2008.02.12 04:26:53 Начало функции start()
2008.02.12 04:26:53 ОТСУТСТВУЕТ связь с торговым сервером
2008.02.12 04:27:00 Начало функции start()
2008.02.12 04:27:00 ОТСУТСТВУЕТ связь с торговым сервером
...
2008.02.12 17:34:26 Начало функции start()
2008.02.12 17:34:26 ОТСУТСТВУЕТ связь с торговым сервером
2008.02.12 17:34:34 Начало функции start()
2008.02.12 17:34:34 ОТСУТСТВУЕТ связь с торговым сервером

Многоточия "..." заменяют повторения сообщений.

Файлы:
test4_1.zip  1 kb
 
KimIV:

Очередной результат тестирования

2008.02.12 04:26:53 Начало функции start()
2008.02.12 04:26:53 ОТСУТСТВУЕТ связь с торговым сервером
2008.02.12 04:27:00 Начало функции start()
2008.02.12 04:27:00 ОТСУТСТВУЕТ связь с торговым сервером
...
2008.02.12 17:34:26 Начало функции start()
2008.02.12 17:34:26 ОТСУТСТВУЕТ связь с торговым сервером
2008.02.12 17:34:34 Начало функции start()
2008.02.12 17:34:34 ОТСУТСТВУЕТ связь с торговым сервером

Многоточия "..." заменяют повторения сообщений.

Не могли бы вы, помимо журнала эксперта, предоставить основной журнал (по возможности полный) клиентского терминала за это же время?
 
Alexander писал (а):
Не могли бы вы, помимо журнала эксперта, предоставить основной журнал (по возможности полный) клиентского терминала за это же время?
На адрес support щеночек metaquotes точечка ru отправил полные логи терминала и экспертов за 12.02.2008
 
KimIV:
Alexander писал (а):
Не могли бы вы, помимо журнала эксперта, предоставить основной журнал (по возможности полный) клиентского терминала за это же время?
На адрес support щеночек metaquotes точечка ru отправил полные логи терминала и экспертов за 12.02.2008
Спасибо за логи - очень помогли. Ошибку нашли и исправили - некорректно работала именно функция IsConnected - при этом соединение с сервером было и тики приходили. Исправление будет доступно в 212 билде клиентского терминала (он сейчас подготавливается).
 
Alexander писал (а):
Спасибо за логи - очень помогли. Ошибку нашли и исправили - некорректно работала именно функция IsConnected - при этом соединение с сервером было и тики приходили. Исправление будет доступно в 212 билде клиентского терминала (он сейчас подготавливается).
У-у-ррр-а-а-а!!!!!! Я знаю, что такое счастье! :-)
 
Alexander, в один из своих советников я вернул использование функции IsConnected. И вот за последние двое суток советник два раза останавливался из-за отсутствия связи с торговым сервером. Наличие связи проверялось функцией IsConnected. Советник простаивал оба раза более двух часов. Котировки на графиках были свежими. Билд 216 от 16.04.2008. Какие данные Вам предоставить для детального изучения ситуации?
 

тоже опишу пару моих наблюдений касательно этой функции: билд 216
функция вызывается в цикле скрипта

while (true) {
    if (IsConnected()) {
        ...
    }
    ...
    Sleep(...);
}

часто, при запуске терминала и запуске скрипта в течении нескольких секунд после загрузки счета данная функция постоянно возвращает false, причем, связь есть (внизу справа все ok), котировки идут, помогает только перезагрузка терминала... замечено было в нескольких терминалах разных дц

 

У меня такая же беда. В советниках, контролирующих возвращаемое значение функцией IsConnected(), периодически перестают торговать с выдачей сообщения об отсутствии связи с сервером, хотя котировки исправно проходят. Билд 215 - не обновлялся. Но это не со всеми брокерами - только с одним. Лечу перезагрузкой терминала, но это не радикальное решение вопроса.

 
Na-Krul писал (а):

тоже опишу пару моих наблюдений касательно этой функции: билд 216
функция вызывается в цикле скрипта

while (true) {
    if (IsConnected()) {
        ...
    }
    ...
    Sleep(...);
}

часто, при запуске терминала и запуске скрипта в течении нескольких секунд после загрузки счета данная функция постоянно возвращает false, причем, связь есть (внизу справа все ok), котировки идут, помогает только перезагрузка терминала... замечено было в нескольких терминалах разных дц

имелось в виду: если запустить скрипт через несколько секунд после старта терминала терминала (а не то, что false возвращается в течении лишь нескольких секунд)

 

Может немного не в тему вопрос, но все же он близок к этой области...

Отлаживая индикаторы, я "обкладываю" их отладочной печатью: в самом начале start - Print("Начало работы"); потом по телу кода в местах разветвлений нечто вроде Print("Вариант когда dt>0"); и в самом конце Print("Выход"); При запуске терминала (особенно с большим количеством индикаторов) я неоднократно наблюдал как сообщение "Начало работы" идет несколько раз один за другим, а внутренние и самое последнее про выход начинают появляться только с третьей попытки.

Очевидно причина в том, что индикатор начинает отрабатывать в момент подкачки истории и каждый новый бар вызывает остановку функции start и ее вызов для новой котировки. И так продолжается пока не втянется вся история. Прав ли я в своих выводах?

Пока что меня спасает такая заглушка вставляемая в самом начале start:

// контроль полного старта терминала
if(AccountNumber()<=0 || WindowBarsPerChart()<=0 || Period()<=0 || Bars<=0 || Point<=0) return; // пока не получим все что нужно - ничего не делаем
И самый главный вопрос: как определить что терминал полностью стартовал и у него есть все данные для вычислений? Т.е. как быть уверенным в том, что не будет прерываний, связанных с его "выходом на режим"? Вероятно аналогичный вопрос может возникнуть еще в двух ситуациях: при смене счета и при переходе на другой тайм, по которому еще не втягивалась история.
Причина обращения: