Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Code Base поможет в усвоении теоретических знаний. Заходи и изучай!
Oleh Chernov
170
Oleh Chernov 2015.02.17 12:10 

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

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

Файлы:
Vladimir Karputov
Модератор
46133
Vladimir Karputov 2015.02.17 12:36  
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
В старой версии компилятора во избежание критического завершения программ многие ошибки обрабатывались средой исполнения. Например, деление на ноль или выход за пределы массива являются критическими ошибками и обычно приводят к аварийному завершению работы программ. Новый компилятор позволяет обнаружить реальные или потенциальные источники ошибок и повысить качество кода. В этой статье мы рассмотрим возможные ошибки, возникающие при компиляции старых программ и методы их устранения.
Oleh Chernov
170
Oleh Chernov 2015.02.17 12:53  
barabashkakvn:

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

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

Файлы:
Vladimir Karputov
Модератор
46133
Vladimir Karputov 2015.02.17 13:03  
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);
Oleh Chernov
170
Oleh Chernov 2015.02.17 13:10  
barabashkakvn:

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

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

 

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

спасибо. буду пробовать.
Oleh Chernov
170
Oleh Chernov 2015.02.19 17:43  

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

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

Файлы:
Oleh Chernov
170
Oleh Chernov 2015.02.20 09:16  
Спасибо всем. Нашел выход.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий