Массивы буферов линий индикатора расширяются только в OnCalculate
Проблема
Как следствие, если OnChartEvent пришло раньше OnCalculate (а именно так и бывает) при переключении на таймфрейм с бОльшим числом баров, то при пересчёте линии индикатора гарантирован array out of range
.
Решение
В обработчиках событий кроме OnCalculate проверять синхронизацию сравнением числа баров на графике и числа элементов в буфере линий. Возможет редкий вариант, когда "синхронизации" не произошло, но размеры совпадают, но это не критично, т.к. после такой смены графика всё равно будет вызван OnCalculate с prev_calculated = 0
(надеюсь), и при этом выход за пределы массива буфера не произойдёт (размер то не изменился).
Edited by FXcoder