Привет всем! Вот код с проблемой:
for(int i=0; i<Bars-1;i++)
{
if(Close[i+1]>=Close[i+2]&&Close[i+2]>Open[i+2]
&&Close[i+2]>=Close[i+3]&&Close[i+3]>Open[i+3]
&&Close[i+3]>=Close[i+4]&&Close[i+4]>Open[i+4]
&&Close[i+5]<=Open[i+5])
Buffer1[i]=High[i]+0.0002;
if(Close[i+1]<=Close[i+2]&&Close[i+2]<Open[i+2]
&&Close[i+2]<=Close[i+3]&&Close[i+3]<Open[i+3]
&&Close[i+3]<=Close[i+4]&&Close[i+4]<Open[i+4]
&&Close[i+5]>=Open[i+5])
Buffer5[i]=Low[i]-0.0002;
}
return(rates_total);
Не могу понять где здесь ошибка, ПОМОГИТЕ!!!
ну, тут все просто.
самое крайнее значение для Close это Close[Bars-1] .... а у вас Close[Bars+1], Close[Bars+2] and so on...
ну, тут все просто.
самое крайнее значение для Close это Close[Bars-1] ....
не понял, можно подробнее, пожалуйста...
у меня Close[i+1] где i - это порядковый номер бара...
не понял, можно подробнее, пожалуйста...
у меня Close[i+1] где i - это порядковый номер бара...
У вас ещё и Close[i+2] есть.
for(int i=0; i<Bars-1;i++) // перебор всех баров
Open[i+5] // текущий бар + 5 баров
А теперь представьте что i = последний доступный бар, как же тогда можно получить i+5, если его нет?
Сделайте перебор для for(int i=0; i<Bars-1 -5;i++) и будет вам счастье.
for(int i=0; i<Bars-1;i++) // перебор всех баров
Open[i+5] // текущий бар + 5 баров
А теперь представьте что i = последний доступный бар, как же тогда можно получить i+5, если его нет?
Сделайте перебор для for(int i=0; i<Bars-1 -5;i++) и будет вам счастье.
Спасибо, понял! Я же думал что і+5 это будет 6 бар справа, а выходит он у меня в будущее смотрел...
Это и есть 6-й, но справа налево, самое настоящее прошлое. Доисторическое, можно сказать, так как в истории его нет.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет всем! Вот код с проблемой:
for(int i=0; i<Bars-1;i++)
{
if(Close[i+1]>=Close[i+2]&&Close[i+2]>Open[i+2]
&&Close[i+2]>=Close[i+3]&&Close[i+3]>Open[i+3]
&&Close[i+3]>=Close[i+4]&&Close[i+4]>Open[i+4]
&&Close[i+5]<=Open[i+5])
Buffer1[i]=High[i]+0.0002;
if(Close[i+1]<=Close[i+2]&&Close[i+2]<Open[i+2]
&&Close[i+2]<=Close[i+3]&&Close[i+3]<Open[i+3]
&&Close[i+3]<=Close[i+4]&&Close[i+4]<Open[i+4]
&&Close[i+5]>=Open[i+5])
Buffer5[i]=Low[i]-0.0002;
}
return(rates_total);
Не могу понять где здесь ошибка, ПОМОГИТЕ!!!