Да, забыл сказать:
На графике естесстенно отображается какая-то галиматья, а не центр нужного (удовлетворяющего условиям) бара :(
На графике естесстенно отображается какая-то галиматья, а не центр нужного (удовлетворяющего условиям) бара :(
High[i+1], Low[i+1] при первом вызове индикатора (когда IndicatorCounted()=0) на последнем цикле обращаются за пределы массива истории. Здесь следует использовать for(int i=0; i<limit-1; i++). А галиматью показывает, потому что галиматью запрограммировал. К тому же не показал блок инициализации.
index XXXX is out of range [0-0]
попытка обращения к массиву нулевой длины
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В логах вот такая запись.
XXXX - это число от 0 и более
Что это за выход из диапазона [0-0]??? Что это за ошибка, почему возникла?
Вот кусок кода:
int start() { int limit; int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) return(-1); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- macd counted in the 1-st additional buffer for(int i=0; i<limit; i++) ind_buffer3[i] = (High[i] - Low[i])/2+Low[i]; for(i=0; i<limit; i++) { if (High[i]>High[i+1]) if (Open[i]<=ind_buffer3[i]) if (Close[i]<=ind_buffer3[i]) { ind_buffer1[i] = ind_buffer3[i]; ind_buffer2[i] = 0.0; } if (Low[i]<Low[i+1]) if (Open[i]>=ind_buffer3[i]) if (Close[i]>=ind_buffer3[i]) { ind_buffer2[i] = ind_buffer3[i]; ind_buffer1[i] = 0.0; } } //---- done return(0); }Даже если не делать таких 3-х этажных IF'ов, всеравно ничего не меняет.