Ошибки при компиляции

 

Добрый день. Пытаюсь изменить старый индикатор под новые требование(индикатор для metatrader 4). Выдает 2015.02.16 10:45:08.368    array out of range in 'Tricolor_Flat.mq4' (75,20).

Я только начинающий, поэтому не обессудьте. Поделитесь опытом.

Файлы:
 
olegimp:

Добрый день. Пытаюсь изменить старый индикатор под новые требование(индикатор для metatrader 4). Выдает 2015.02.16 10:45:08.368    array out of range in 'Tricolor_Flat.mq4' (75,20).

Я только начинающий, поэтому не обессудьте. Поделитесь опытом.

Эта ошибка называется - выход за диапазон массива. И если хотите помощь - то Вы должны прикрепить *.mq4 файл.

Статью прочитать: https://www.mql5.com/ru/articles/1391

Типичные ошибки в программах на MQL4 и методы их устранения
Типичные ошибки в программах на MQL4 и методы их устранения
  • 2014.03.24
  • MetaQuotes Software Corp.
  • www.mql5.com
В старой версии компилятора во избежание критического завершения программ многие ошибки обрабатывались средой исполнения. Например, деление на ноль или выход за пределы массива являются критическими ошибками и обычно приводят к аварийному завершению работы программ. Новый компилятор позволяет обнаружить реальные или потенциальные источники ошибок и повысить качество кода. В этой статье мы рассмотрим возможные ошибки, возникающие при компиляции старых программ и методы их устранения.
 
barabashkakvn:

Эта ошибка называется - выход за диапазон массива. И если хотите помощь - то Вы должны прикрепить *.mq4 файл.

Статью прочитать: https://www.mql5.com/ru/articles/1391

Файлы:
 
olegimp:

Под новые требования нужно: вместо функции 

start()

использовать 

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime &time[],     // Time
                 const double &open[],       // Open
                 const double &high[],       // High
                 const double &low[],        // Low
                 const double &close[],      // Close
                 const long &tick_volume[],  // Tick Volume
                 const long &volume[],       // Real Volume
                 const int &spread[]         // Spread
                 )

 

а также нужно динамические массивы превращать в индикаторные буферы с помощью

//--- превращение динамических массивов в индикаторные буферы
   SetIndexBuffer(Индекс_Вашего_динамического_массива,Ваш_динамический_массив,INDICATOR_DATA);
 
barabashkakvn:

Под новые требования нужно: вместо функции 

использовать 

 

а также нужно динамические массивы превращать в индикаторные буферы с помощью

спасибо. буду пробовать.
 

Добрый вечер. Не получается доработать индикатор. Направьте в правильное русло. Работает на таймфреймах М1 и Н4, на остальных дает сообщение array out of range (107,20)

Буду признателен за оказанную помощь.  

Файлы:
 
Спасибо всем. Нашел выход.
Причина обращения: