Ранее это называли "зомби", возможно поиск еще найдет старые темы.
Такое бывает, когда эксперты/индикаторы отписываются от стакана больше раз, чем подписываются.
Например было 2 эксперта, каждый подписался по 1-му разу. Далее один закрыли, он отписался дважды. Второй эксперт, который остался работать перестает получать обновления.
Видел такое несколько раз.
После корректировки экспертов проблема исчезла и уже больше года не повторяется.
Ранее это называли "зомби", возможно поиск еще найдет старые темы.
Такое бывает, когда эксперты/индикаторы отписываются от стакана больше раз, чем подписываются.
Строго говоря, не подходит. У меня подписка делается один раз в ините, а отписка - в деините. Хотя я не могу исключить вариант, что DeInit каким-либо образом вызывается большее число раз, чем OnInit.
Строго говоря, не подходит. У меня подписка делается один раз в ините, а отписка - в деините. Хотя я не могу исключить вариант, что DeInit каким-либо образом вызывается большее число раз, чем OnInit.
Если речь идет об индикаторах, посмотрите эту тему.
- 2017.04.07
- www.mql5.com
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторые из них самопроизвольно по тихому отваливаются, в частности 1 эксперт и 1 индикатор по разным символам. Никаких ошибок в логах. Котировки продолжали идти. Другие символы продолжили работать. После перезапуска простаивающих MQL-программ вручную, события стакана в них опять стали поступать.
Наблюдал ли кто подобное? Как защититься? Пока в плане обнаружения есть идея смотреть таймаут между последним событием стакана и новыми тиками. Но что делать, если таймаут превышен? Достаточно снова вызвать MarketBookAdd?
Выключатели бывают двух типов,- кнопка и переключатель. Первый посылает импульс и завершает работу, второй подразумевает смену режима работы. Пример первого - дверной звонок,- идеал события. Пример второго - выключатель освещения,- нажал - и оно горит. Понимаете, это уже не совсем событие, а нечто большее.
Выключатели бывают двух типов,- кнопка и переключатель. Первый посылает импульс и завершает работу, второй подразумевает смену режима работы. Пример первого - дверной звонок,- идеал события. Пример второго - выключатель освещения,- нажал - и оно горит. Понимаете, это уже не совсем событие, а нечто большее.
Нет, не понимаю. Судя по документации, подписка увеличивает внутренний счетчик, а отказ от подписки - уменьшает на 1. По достижении 0 - события не рассылаются.
Я поставил принты. Добился воспроизведения проблемы в случае, когда на одном и том же чарте сидит и эксперт, и индикатор. Каждый из них делает MarketBookAdd в OnInit, и MarketBookRelease в OnDeinit. Так вот, после того как я снимаю эксперт с чарта (один вызов MarketBookRelease), индикатор перестает получать стакан (хотя по идее его собственный вызов MarketBookAdd еще не отменен). Наоборот точно также - если удалить индюк, подписка теряется в эксперте. Я это конечно уже детектирую и снова подписываюсь, но работать так не должно, имхо.
Нет, не понимаю. Судя по документации, подписка увеличивает внутренний счетчик, а отказ от подписки - уменьшает на 1. По достижении 0 - события не рассылаются.
Я поставил принты. Добился воспроизведения проблемы в случае, когда на одном и том же чарте сидит и эксперт, и индикатор. Каждый из них делает MarketBookAdd в OnInit, и MarketBookRelease в OnDeinit. Так вот, после того как я снимаю эксперт с чарта (один вызов MarketBookRelease), индикатор перестает получать стакан. Наоборот точно также - если удалить индюк, подписка теряется в эксперте. Я это конечно уже детектирую и снова подписываюсь, но работать так не должно, имхо.
Уже все сказал. Помолчу.
Нет, не понимаю. Судя по документации, подписка увеличивает внутренний счетчик, а отказ от подписки - уменьшает на 1. По достижении 0 - события не рассылаются.
Я поставил принты. Добился воспроизведения проблемы в случае, когда на одном и том же чарте сидит и эксперт, и индикатор. Каждый из них делает MarketBookAdd в OnInit, и MarketBookRelease в OnDeinit. Так вот, после того как я снимаю эксперт с чарта (один вызов MarketBookRelease), индикатор перестает получать стакан (хотя по идее его собственный вызов MarketBookAdd еще не отменен). Наоборот точно также - если удалить индюк, подписка теряется в эксперте. Я это конечно уже детектирую и снова подписываюсь, но работать так не должно, имхо.
Событие BookEvent - широковещательное. Прочитайте внимательно здесь описание OnBookEvent.
- www.mql5.com
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторые из них самопроизвольно по тихому отваливаются, в частности 1 эксперт и 1 индикатор по разным символам. Никаких ошибок в логах. Котировки продолжали идти. Другие символы продолжили работать. После перезапуска простаивающих MQL-программ вручную, события стакана в них опять стали поступать.
Наблюдал ли кто подобное? Как защититься? Пока в плане обнаружения есть идея смотреть таймаут между последним событием стакана и новыми тиками. Но что делать, если таймаут превышен? Достаточно снова вызвать MarketBookAdd?
Почитайте это
- 2016.09.06
- www.mql5.com
Спасибо ;-). Конечно же я читал документацию и форум. Если есть ответ на мой вопрос, было бы очень любезно его сформулировать или выделить здесь.
В частности, в документации есть увлекательная фраза:
В отличие от других событий, событие BookEvent является широковещательным. Это означает, что достаточно одному эксперту подписаться на получение события BookEvent с помощью функции MarketBookAdd, все остальные эксперты, имеющие обработчик OnBookEvent(), будут получать это событие.
Вот только по ней остается догадываться, стоит ли или нет - по аналогии продолжить, что "достаточно одному эксперту отписаться от получения события, как все остальные эксперты тоже перестанут его получать"? Я считаю, что такого не может быть, это был бы (или есть) баг.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторые из них самопроизвольно по тихому отваливаются, в частности 1 эксперт и 1 индикатор по разным символам. Никаких ошибок в логах. Котировки продолжали идти. Другие символы продолжили работать. После перезапуска простаивающих MQL-программ вручную, события стакана в них опять стали поступать.
Наблюдал ли кто подобное? Как защититься? Пока в плане обнаружения есть идея смотреть таймаут между последним событием стакана и новыми тиками. Но что делать, если таймаут превышен? Достаточно снова вызвать MarketBookAdd?