
Сообщение от
LionFx
Скорее всего, для одного и того же исходного массива функция iMAOnArray не пересчитывает все данные каждый раз при вызове (при условии одинаковых настроек), а считает только новые данные. Поэтому создается от этого исходного массива, что-то вроде ссылки на такой-же массив, но с уже посчитанными данными (предположение). И iMAOnArray использует его в дальнейшем. При объявлении массива на глобальном уровне, все в порядке. А иначе исходный массив то на каждом тике пересоздается.
А как же тогда с динамическим массивом? Он создается, но ему ни размер не поменять, ни значения не присвоить. Собсно и статический массив ведет себя так же. Создается, но не инициализируется. Отсюда и глюки.
И тут именно глюк компилятора похоже.
Нет. Это не глюк компилятора, а глюк исполняющей подсистемы MQL. Дело в том, что любые локальные переменные(если они не static) создаются и инициализируются исполняющей подсистемой MQL на стеке автоматом, тобишь на лету, в момент вызова функции. И вероятнее всего, что именно в этом механизме у них какая-то собака порылась. Причем есть четкая зависимость от того, как эта переменная используется в коде дальше.