Нейронный советник

 

Собрал советник из этой темы: 

https://www.mql5.com/ru/articles/830

Советник скомпилировался, но на тестах выходит ошибка "array out of range".

На отладке показывает на строчку - BAR[bar]=rate.close-zlevel;

Кто подскажет как этот баг исправить?

Нейросети бесплатно и сердито - соединяем NeuroPro и MetaTrader 5
Нейросети бесплатно и сердито - соединяем NeuroPro и MetaTrader 5
  • www.mql5.com
Если специализированные нейросетевые программы для трейдинга вам кажутся дорогими и сложными (или наоборот - примитивными), то попробуйте NeuroPro - она на русском языке, бесплатна и содержит оптимальный набор возможностей для любителей. О том, как использовать ее с MetaTrader 5, вы узнаете из этой статьи.
Файлы:
1.PNG  37 kb
2.PNG  43 kb
NP_NN_2.mq5  6324 kb
 
Dmitrii Shershov:

Собрал советник из этой темы: 

https://www.mql5.com/ru/articles/830

Советник скомпилировался, но на тестах выходит ошибка "array out of range".

На отладке показывает на строчку - BAR[bar]=rate.close-zlevel;

Кто подскажет как этот баг исправить?

у Вас  BAR[bar] больше чем количество элементов в массиве

и нужно учесть, что bar начинается не с единицы, а с нуля
 
Renat Akhtyamov #:

у Вас  BAR[bar] больше чем количество элементов в массиве

BAR[512] - так тоже не работает

 
Dmitrii Shershov #:

BAR[512] - так тоже не работает

В массиве всего 512 элементов. Поэтому индекс 512 - это 513-ый элемент массива, которого в нем нет. Как сказали выше, индексация массивов начинается с 0.

 
Ihor Herasko #:

В массиве всего 512 элементов. Поэтому индекс 512 - это 513-ый элемент массива, которого в нем нет. Как сказали выше, индексация массивов начинается с 0.

      BAR[0]=rate.close-zlevel;

В таком варианте тоже не работает.
 
Dmitrii Shershov #:

      BAR[0]=rate.close-zlevel;

В таком варианте тоже не работает.

Вы не поняли

Там вообще весь код надо переделывать

Везде, где фигурирует 512

Это и синдромы тоже

Грубо говоря, вам нужно сделать 511 как входов, так и синдромов

 
Ivan Butko #:

Вы не поняли

Там вообще весь код надо переделывать

Везде, где фигурирует 512

Это и синдромы тоже

Грубо говоря, вам нужно сделать 511 как входов, так и синдромов

Теперь ясно, благодарю!

 
Dmitrii Shershov #:

Теперь ясно, благодарю!

ждем результаты теста торговли

 
Ivan Butko #:

Вы не поняли

Там вообще весь код надо переделывать

Везде, где фигурирует 512

Это и синдромы тоже

Грубо говоря, вам нужно сделать 511 как входов, так и синдромов

Хотя не понятно, в оригинальном файле такая же структура массива!

Файлы:
NeuroPro.mq5  35 kb
 
Dmitrii Shershov #:

Хотя не понятно, в оригинальном файле такая же структура массива!

В оригинале всё правильно. 

Но, в оригинале автор не использует весь массив. 

Он просто показал, сколько максимально можно использовать входов - 512. 
От нуля до 511, включая 0. Это и есть 512 штук. Но объявление массива должно содержать число 512. 

Это количество выбрано для того, чтобы напомнить о его словах в статье - максимальное количество столбцов в программе редактирования CSV-файлов - 512. 

 
Ivan Butko #:

В оригинале всё правильно. 

Но, в оригинале автор не использует весь массив. 

Он просто показал, сколько максимально можно использовать входов - 512. 
От нуля до 511, включая 0. Это и есть 512 штук. Но объявление массива должно содержать число 512. 

Это количество выбрано для того, чтобы напомнить о его словах в статье - максимальное количество столбцов в программе редактирования CSV-файлов - 512. 

Все понял, вопрос решился так:

   double BAR[513]; // 512 - максимально возможное кол-во полей в DBF-формате

В таком варианте компилятор собрал советника (долго правда).

Все работает.

Благодарю всех за помощь!