Поведение функций iTime и подобных за пределами окна или неверные значения Bars и SERIES_BARS_COUNT
Проблема
Во-первых, теперь число баров в окне ограничено параметром TERMINAL_MAXBARS
. Раньше (и в 4) новые бары добавлялись справа, число баров росло. Теперь же левый бар при приходе нового справа удаляется. Вероятно, отсюда идёт часть проблем.
Собственно проблема - если вызвать iTime
за пределами TERMINAL_MAXBARS
, то получим 0 (1970.01.01 00:00:00
).
Кроме того, Bars
и SERIES_BARS_COUNT
показывают значения за пределами TERMINAL_MAXBARS
. Возможно, исходная проблема в этом.
Решение
- Везде использовать только обёртки.
- Во всех обёртках использовать число баров как минимальное из
SERIES_BARS_COUNT
иTERMINAL_MAXBARS
. - Во всех обёртках для
iTime
и подобных для 5 (а для совместимости и для 4) делать проверку на выход за пределы реального максимального числа баров.
Если везде используются обёртки для получения числа баров, то наверно можно ограничиться коррекцией числа баров в них.
Конечно, всё это существенно замедлит код, если используются подобные функции. Причём теперь и для 4, если обёртки делать и для него (для совместимости/соответствия).