Давай рассмотрим проблемы возникающие при разработке мультивалютного индикатора. Я не юуду ссылаться не на один код. И приводить не буду. В любом индикаторе должен быть двойной контроль истории.
Контроль по ошибке "ERR_HISTORY_WILL_UPDATED 4066 Запрошенные исторические данные в состоянии обновления", говорящей о том что идет подгрузка истории (пока она не закончится о корректной работе индикатора говорить не приходится.
И тут возникает еще одна ошибка, кторая требует двойной инициализации индикатора. Это особенность загрузки данных с другого инструмента. Вначале загружаются близкие данные, а потом более глубокие. Загрузка наоборот. И в итоге мы обращаемся к нулевому бару другого инструмента, ошибки нет и мы считаем что можно работать. Но в это время продолжается загрузка более отдаленных данных. И здесь может помочь контроль количества баров на другом инструменте. Возможно, я пока такой контроль не делал.
И есть еще одна особенность, но касается она младших таймфреймов (минутки, пятиминутки и даже 15-минутки). Есть периоды времени когда не поступают тики, а значит нет сформированных баров. И для корректной работы индикатора необходимо делать синхронизацию по времени. Обычно я ищу бар на другом инструменте по времени обрабатываемого бара на текущем инструменте, проверяю на корректность.
Но из-за недостающих баров один и тот же индикатор на разных инструментах будет работать по разному. И поэтому надо подбирать инструменты с более полной историей.
И еще одно замечание. Количество баров на истории не совпадает. И поэтому надо для первой корректной отрисовки искать самый старый бар, но по времени он должен быть самым молодым из этих баров.
Для последующей отработки можно цикл считать стандартными методами.
Но контроль истории должен быть всегда. От него нельзя отказываться.
Если какое-то время не было обращения к другому инструцменту, то в следующий раз опять получим загрузку истории.
Конечно, если по всем нужным иснтрументам открыты графики с нужным таймфреймом, то такая ошибка не возникает.