![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если OnChartEvent тяжелый или сам генерирует другие ChartEvent-ы, то до OnCalculate-а действительно может дело не дойти.
Но тогда, по идее, все должно подвисать, ведь индикатор работает в потоке чарта, и если он постоянно считает что-то, то чарт висит.
Упрощайте OnChartEvent, пока не избавитесь от тормозов или наоборот оставьте его пустым и дополняйте, пока тормоза не появятся.
Более конкретно без кода подсказать не смогу.
А как префиксы имён на разных графиках могут влиять на работу? Добавлю. Если индикатор на маленьком количестве графиков, все работает.
Например, если ресурс (resource) имеет общее имя, то он используется (и модифицируется) всеми копиями сразу.
То же, если запустить на одном чарте, несколько индикаторов одновременно, и у всех будут одинаковые параметры (и ShortName), то работать будет только одна копия.
Если "на маленьком количестве графиков, все работает", то я думаю тут явно что-то системное.
Попробуйте добавить уникальный префикс к именам объектов, и уникальный ShortName индикатора.
...я делаю префикс(суффикс) так - собираю все значимые параметры в строку + текущий ChartID, и из этой строки вычисляю crc32.
Из ресурсов только кнопки. Они встроены в тело индикатора при компиляции. То есть каждый экземпляр имеет встроенные ресурсы с кнопками.
Кнопки никак не модифицируются. Если несколько экземпляров индикатора выводится на график, то необходимо для каждого экземпляра задавать свое значение ExtSet.
Чтобы у разных индикаторов был свой набор имен. Но это было актуально до 150 версии включительно, когда на график выводили до 10 экземпляров индикатора для работы с вилами Эндрюса.
В версиях, начиная с 151, можно обойтись и одним экземпляром индикатора на графике. Тут реализована сложная система. При выводе нескольких экземпляров с графическим интерфейсом может работать только один экземпляр.
Кнопки от нескольких экземпляров могут накладываться друг на друга. И при нажатии на одну кнопку сработают все наложенные друг на друга кнопки и будут одновременно все экземпляры индикатора что-то отрабатывать. Чтобы этого не происходило создан сложный алгоритм поведения. И об этом есть информация в статье.
Накладка может быть следующего свойства. При выводе на несколько графиков оного финансового инстумента. Не рекомендуется на разных графиках использовать один номер волновой разметки. Разметка, создаваемая на одном графике, на очередном тике корректируется на соседнем графике. При этом могут какие-то эффекты происходить. То есть скрытие части волновой разметки или волнового зигзага на одном графике может не срабатывать, так как экземпляр индикатора на другом графике может "сопротивляться". И скрыть часть разметки может не получиться. Этот эффект недавно заметил. Но мнять это пока не планирую. Во первых, это достаточно экзотическое явление.
Во вторых, это очень сложно выправлять. Волновой зигзаг отладил года два назад. Код очень сложный и объемный. Мне в правку этого кода залазить сейчас и лениво и очень долго придется въезжать в тему. Другие, более насущные сбои исправляю. Постепенно разные сбои выявляю и устраняю их. Сбои некоторые могут проявиться при определенных сочетаниях баров на графике. Как только что-то замечаю, сразу исправляю. Так, чтобы никто не успел столкнуться со сбоями.
В общем, с именами объектов тема достаточно хорошо проработана. Каждый экземпляр работает со своими объектами.
===========
Скорее всего ошибку я где-то посадил. Код огромный. И ошибку очень сложно отследить. Проявляется не всегда и надо долго ждать, когда прорисуется ошибка. Исправлю.