Ошибка функции Bars

 
В процессе написания/тестирования советника столкнулся с такой проблемой: функция Bars в какой то момент перестает считаться, а точнее возвращает одно и тоже значение. Build 509. Подскажите кто сталкивался с данной проблемой и ее решением.
 

Структура кода:

int counted_Bars;
int start()
{

if (counted_Bars!=Bars)
{
GetNewBar();
counted_Bars=Bars;
}
}

Comment(Bars,"|",counted_Bars,"|",iBars(Symbol(),Period()));

В итоге все 3 параметра в комменте останавливаются и данные по функции GetNewBar(); не обновляются: 8452|8452|8452.

 
if (counted_Bars!=Bars)

У вас это условие отрабатывает?

В комменте первый и третий параметры одинаковые. Сначала в counted_Bars запишется Bars, а только потом пойдет коммент.

 
splxgf:

У вас это условие отрабатывает?

В комменте первый и третий параметры одинаковые. Сначала в counted_Bars запишется Bars, а только потом пойдет коммент.

Я все это понимаю. Вопрос именно, что достигает определенного значения и останавливается. Т.е. помимо того, что counted_Bars==Bars, еще и Bars сам не делает ++ на каждом баре.

Итого я получаю, что Bars на всех барах выдает одно и тоже значение!

 
luckysaratov:

Я все это понимаю. Вопрос именно, что достигает определенного значения и останавливается. Т.е. помимо того, что counted_Bars==Bars, еще и Bars сам не делает ++ на каждом баре.

Итого я получаю, что Bars на всех барах выдает одно и тоже значение!


Количество баров в окне достигло максимального количества, установленного в "Сервис" - "Настройки" - "Графики" - "Макс. баров в окне"?
 
Scriptong:

Количество баров в окне достигло максимального количества, установленного в "Сервис" - "Настройки" - "Графики" - "Макс. баров в окне"?

Стоит 65000, а останавливается на 4000+ 8000+ в зависимости от таймфреймов
 

Где код который 100% покажет воспроизведение ошибки и журнал сообщений.

С ошибками в своих программах к телепатам или задействуйте Time[0].

 
luckysaratov:

Стоит 65000, а останавливается на 4000+ 8000+ в зависимости от таймфреймов
Мало, грузите историю "F2 - загрузить"
 
а когда останавливается ? в пятницу вечером? :) или в любое время?
 
luckysaratov:

Структура кода:

int counted_Bars;
int start()
{

if (counted_Bars!=Bars)
{
GetNewBar();
counted_Bars=Bars;
}
}

Comment(Bars,"|",counted_Bars,"|",iBars(Symbol(),Period()));

В итоге все 3 параметра в комменте останавливаются и данные по функции GetNewBar(); не обновляются: 8452|8452|8452.

Код GetNewBar() приведите, пожалуйста.


И коммент у вас вне функции start(), так и задумано?

 

Реально глючит фукнция GetNewBar()

i - перебираем бары в массиве

j - массив индикаторов.

Т.е. банальная сдвижка на 1, что при новом баре не пересчитывать достаточно много индикаторов. Какое либо есть ограничение на длину массивов?

void GetNewBar()
{
for(int i=N-1;i>0;i--)
for(int j=0;j<iSar;j++)
SAR[j][i]=SAR[j][i-1];
}

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