Порядок обработки функций OnChartEvent и OnCalculate - страница 3

 
А как префиксы имён на разных графиках могут влиять на работу? Добавлю. Если индикатор на маленьком количестве графиков, все работает.
Кстати, версия 152.8 бесплатная. Можете скачать и потестировать.
При ExtPanel=false будет отключено чартевент

Но и вообще посмотрите на получившуюся "игрушку". Там много интересного. По.умолчанию включён графический интерфейс и выключено все, что было включено по умолчанию в версиях до 150 включительно. При включенном графическом интерфейсе включена отработка событий.
 
Можно включить динамические и статический вилы. На часовом графике usdjpy вилы показывают почти идеальное место для покупки пары. Почему почти идеальное место? Немного поднялись от минимума.
В первой волне начальная диагональ. Вторая волна завершена. Сейчас находимся в начале третьей.


Статические вилы


Динамические вилы

 
Eugeni Neumoin:
Есть функции, работающие только в онкалькуляте. И они перестают работать, но не всегда, при включении режима отработки событий. Не надо фантазировать. Получается, что онкалкуляте просто удаляется из очереди. Как-то так.

Если OnChartEvent тяжелый или сам генерирует другие ChartEvent-ы, то до OnCalculate-а действительно может дело не дойти.

Но тогда, по идее, все должно подвисать, ведь индикатор работает в потоке чарта, и если он постоянно считает что-то, то чарт висит.

Упрощайте OnChartEvent, пока не избавитесь от тормозов или наоборот оставьте его пустым и дополняйте, пока тормоза не появятся.

Более конкретно без кода подсказать не смогу.

 
Eugeni Neumoin:
А как префиксы имён на разных графиках могут влиять на работу? Добавлю. Если индикатор на маленьком количестве графиков, все работает.

Например, если ресурс (resource) имеет общее имя, то он используется (и модифицируется) всеми копиями сразу.

То же, если запустить на одном чарте, несколько индикаторов одновременно, и у всех будут одинаковые параметры (и ShortName), то работать будет только одна копия.

Если "на маленьком количестве графиков, все работает", то я думаю тут явно что-то системное.
Попробуйте добавить уникальный префикс к именам объектов, и уникальный ShortName индикатора.

...я делаю префикс(суффикс) так - собираю все значимые параметры в строку + текущий ChartID, и из этой строки вычисляю crc32.

 
Taras Slobodyanik:

Из ресурсов только кнопки. Они встроены в тело индикатора при компиляции. То есть каждый экземпляр имеет встроенные ресурсы с кнопками.

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

Чтобы у разных индикаторов был свой набор имен. Но это было актуально до 150 версии включительно, когда на график выводили до 10 экземпляров индикатора для работы с вилами Эндрюса.

В версиях, начиная с 151, можно обойтись и одним экземпляром индикатора на графике. Тут реализована сложная система. При выводе нескольких экземпляров с графическим интерфейсом может работать только один экземпляр.

Кнопки от нескольких экземпляров могут накладываться друг на друга. И при нажатии на одну кнопку сработают все наложенные друг на друга кнопки и будут одновременно все экземпляры  индикатора что-то отрабатывать. Чтобы этого не происходило создан сложный алгоритм поведения. И об этом есть информация в статье.

Накладка может быть следующего свойства. При выводе на несколько графиков оного финансового инстумента. Не рекомендуется на разных графиках использовать один номер волновой разметки. Разметка, создаваемая на одном графике, на очередном тике корректируется на соседнем графике. При этом могут какие-то эффекты происходить. То есть скрытие части волновой разметки или волнового зигзага на одном графике может не срабатывать, так как экземпляр индикатора на другом графике может "сопротивляться". И скрыть часть разметки может не получиться. Этот эффект недавно заметил. Но мнять это пока не планирую. Во первых, это достаточно экзотическое явление.

Во вторых, это очень сложно выправлять. Волновой зигзаг отладил года два назад. Код очень сложный и объемный. Мне в правку этого кода залазить сейчас и лениво и очень долго придется въезжать в тему. Другие, более насущные сбои исправляю. Постепенно разные сбои выявляю и устраняю их. Сбои некоторые могут проявиться при определенных сочетаниях баров на графике. Как только что-то замечаю, сразу исправляю. Так, чтобы никто не успел столкнуться со сбоями.


В общем, с именами объектов тема достаточно хорошо проработана. Каждый экземпляр работает со своими объектами.

===========

Скорее всего ошибку я где-то посадил. Код огромный. И ошибку очень сложно отследить. Проявляется не всегда и надо долго ждать, когда прорисуется ошибка. Исправлю.

Причина обращения: