Корректное обращение к массиву Time[] в OnInit() выдаёт ошибку выхода за пределы массива.

 

Просто есть в функции OnInit() подстрока Time[0]. И при переключении тайм фрейма советник ругается сообщением array out of range in 'МойСоветник.mqh'(137, 25) и вылетает с кодом uninit reason 8. Но только, когда на экране написано большими буквами "Ожидание обновления".

Убираю Time[0] и глюк прекращается.

 
vipermagi:

Просто есть в функции OnInit() подстрока Time[0]. И при переключении тайм фрейма советник ругается сообщением array out of range in 'МойСоветник.mqh'(137, 25) и вылетает с кодом uninit reason 8. Но только, когда на экране написано большими буквами "Ожидание обновления".

Убираю Time[0] и глюк прекращается.

А что ArraySize(Time) в этот момент выдает?
 
vipermagi:

Просто есть в функции OnInit() подстрока Time[0]. И при переключении тайм фрейма советник ругается сообщением array out of range in 'МойСоветник.mqh'(137, 25) и вылетает с кодом uninit reason 8. Но только, когда на экране написано большими буквами "Ожидание обновления".

Убираю Time[0] и глюк прекращается.

Тестер? 

 
. ... Rick D. ... .:
А что ArraySize(Time) в этот момент выдает?
Нолик выдаёт.
Алексей Тарабанов:

Тестер? 

Нет, обычный.

 
vipermagi:
Нолик выдаёт.

Нет, обычный.

Придется паузу предварять или цикл пока ноль ждем
 
Дед пенсионер:
Придется паузу предварять или цикл пока ноль ждем

Может зависнуть при запуске терминала)
В онинит нельзя делать паузы и ожидания.

Лучше перенести это в основной расчет и там проверять.

 
Taras Slobodyanik:

Может зависнуть при запуске терминала)
В онинит нельзя делать паузы и ожидания.

Лучше перенести это в основной расчет и там проверять.

По моему, это баг системы - запускать OnInit() до подгрузки данных графика.

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