Подписка на OnBookEvent иногда отваливается - есть такое? - страница 14

 
fxsaber:

У меня не получается удалить.

а если все графики закрыть?

 
Andrey Barinov:

а если все графики закрыть?

Не поможет, конечно.

 
Stanislav Korotky:

Согласно ответу сервис-деска, счетчик по их задумке - единый на весь чарт (на каждый символ отдельный), и каждый разработчик MQL-программы должен полагаться на то, что прочие MQL-разработчики не накосячат с уменьшением счетчика на том же чарте. Пояснения будут добавлены в справку.

"Спасение утопающих - дело рук самих утопающих."

Ответ сервисдеска был немного про другое. Да и запрос в сервисдеск никаких счётчиков не касался.

Тем не менее в следующих билдах работа со счётчиком будет поправлена. Именно так, как я писал ранее.

Подписка добавляет счётчик, отписка убавляет. Счётчик в пределах графика. Для каждого инструмента (можно ведь подписываться на любые инструменты) - свой счётчик. Этот счётчик считает подписки на любые инструменты, исходящие от программ, прикреплённых к данному графику. При закрытии графика по всем оставшемся ненулевым счётчикам будет производиться отписка.

 
Slava:

Ответ сервисдеска был немного про другое. Да и запрос в сервисдеск никаких счётчиков не касался.

Тем не менее в следующих билдах работа со счётчиком будет поправлена. Именно так, как я писал ранее.

Подписка добавляет счётчик, отписка убавляет. Счётчик в пределах графика. Для каждого инструмента (можно ведь подписываться на любые инструменты) - свой счётчик. Этот счётчик считает подписки на любые инструменты, исходящие от программ, прикреплённых к данному графику. При закрытии графика по всем оставшемся ненулевым счётчикам будет производиться отписка.

Вы повторили слова сервис-деска. Суть в том, что нет гарантии сохранения подписки у правильной MQL-программы, которая подписалась единожды и не отписывалась, но при наличии чужой MQL-программы, которая дернет release лишний раз. Поскольку счетчик для графика, а не для программы. По крайней мере, звучит так.

 
fxsaber:

А если "случайно" был запущен невидимый индикатор (уверен, есть такие в Маркете)... Пока не перезагрузишь Терминал, так и придется безрезультатно чертыхаться.

С приходом Сервисов еще актуальней.

Я писал предложение об аналоге диспетчера процессор (скриптов) в СД уже очень давно.

 

Чтобы не быть голословным привожу цитату из новой (готовящейся к публикации) справки:

Начальное значение счетчика подписок равно нулю. При каждом вызове MarketBookAdd() счетчик подписок для указанного символа на данном графике увеличивается на единицу (символ графика и символ в MarketBookAdd() не обязаны совпадать). При вызове MarketBookRelease() счетчик подписок на указанный символ в пределах графика уменьшается на единицу. Трансляция событий BookEvent по любому символу в пределах графика продолжается до тех пор, пока счетчик подписок по данному символу не станет равным нулю. Поэтому важно, чтобы каждая MQL5-программа, которая содержит вызовы MarketBookAdd(), при завершении своей работы правильно отписывалась от получения событий по каждому использованному символу с помощью MarketBookRelease(). Для этого достаточно, чтобы количество вызовов MarketBookAdd() и  MarketBookRelease() по каждому вызову было четным за всё время жизни MQL5-программы. Использолвание флагов или собственных счетчиков подписок внутри программы позволяет безопасно работать с событиями BookEvent и предотвращает отключение подписок на получение этого события в чужих программах в пределах одного графика.

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

 
Slava:

Ответ сервисдеска был немного про другое. Да и запрос в сервисдеск никаких счётчиков не касался.

Тем не менее в следующих билдах работа со счётчиком будет поправлена. Именно так, как я писал ранее.

Подписка добавляет счётчик, отписка убавляет. Счётчик в пределах графика. Для каждого инструмента (можно ведь подписываться на любые инструменты) - свой счётчик. Этот счётчик считает подписки на любые инструменты, исходящие от программ, прикреплённых к данному графику. При закрытии графика по всем оставшемся ненулевым счётчикам будет производиться отписка.

Очень ждем нового билда (скопилось много ошибок)