Помогите пожалуйста - страница 2

 
Evgeniy Chumakov:


Ошибка кроется в выходе за пределы массива, о чем и говорит компилятор.

А что это значит?

 
Xander1603:

А что это значит?


Что массив размером n , а цикл выходит за пределы n .

И вообще не понятно что вы там считаете, есть массивы, в них не чего не заполнили ну что-то там считаете.

 
Xander1603:

А что это значит?

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

Снимокмт43

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
 
Evgeniy Chumakov:


Что массив размером n , а цикл выходит за пределы n .

И вообще не понятно что вы там считаете, есть массивы, в них не чего не заполнили ну что-то там считаете.

Сейчас попробую объяснить логику того что должно быть))

Идем по внутреннему циклу j начиная от i-ого элемента, и до i+OtklPeriod, где OtklPeriod по умолчанию 20,  т.е. от элемента i еще на двацатку с шагом по умолчанию 5.

double  max=High[iHighest(NULL,0,MODE_HIGH,OtklShag,j)];
        double  min=Low[iLowest(NULL,0,MODE_HIGH,OtklShag,j)];

Тут в общем то понятно, ищем максимум и минимум за период otklshag, по умолчанию равный 5, начиная с элемента j.
Затем 

double  Otklmax=max-iMA(NULL,0,InpBandsPeriod,0,MA_Type,Applied_Price,i);
        double  Otklmin=iMA(NULL,0,InpBandsPeriod,0,MA_Type,Applied_Price,i)-min;

Тут мы нашли максимальные отклонения за 5 баров вверх и вниз от нашей скользящей средней с периодом 20

double  dOtklmax=Otklmax*Otklmax;

Здесь Просто возводим в квадрат это отклонение.

dOtklSumMax[j]=dOtklSumMax[j-1]+dOtklSumMax[j]; 

А тут мы суммируем квадраты отклонений. У нас в сумме с входными данными по умолчанию в итоге должно получится 4 отклонения вверх, каждое из которых высчитывается, как отклонение за 5 баров, потом мы это возводим в квадрат и суммируем квадраты этих четырех значений. Аналогично для отклонений вниз. И выходим из цикла. Далее уже во внешнем цикле, используя значение суммы квадратов отклонений, считаем среднеквадратичное отклонение и идя уже по каждому элементу, строим канал, в котором средняя линии это обычная средняя, верхняя это средняя + полученное среднеквадратичное отклонение.
Вот собственно это должно было получиться


 
Xander1603:
Не могу понять почему при наложении индикатора на график он ничего не показывает.

А лично я не могу понять почему по четвёрке вопросы задаются в этом разделе, если есть специальный?


 
Сергей Таболин:

А лично я не могу понять почему по четвёрке вопросы задаются в этом разделе, если есть специальный?


Была тема индикаторы, я туда и задал

Могу пересоздать, только не знаю как это тут удалить
 

Память под массивы dOtklSumMax[], SrOtklMax[], dOtklSumMin[] и SrOtklMin[] надо выделить. Далее, dOtklSumMax[j - 1] на первом внутреннего цикла проходе не определён.

Но это лишнее, не нужны тут эти массивы. Надо переписать без них, просто сохраняя предыдущее значение вместо dOtklSumMax[j - 1].

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