Что за чудеса с терминалом или с чем? - страница 4

 
Serhios:

 

Возможно еще нужно будет проверить что писал Alexey Viktorov -- "переменная prev_calculated обнуляется

 

Может у кого-то есть еще какие-то догадки? 

А вот и ещё одно подтверждение


    if(rates_total==prev_calculated) return(rates_total); //Чтобы не работать на каждом тике
    //---
    //---
    //Print("Новый бар");
пока  rates_total==prev_calculated всё идёт нормально, весь код "ждёт" появления нового бара, но вдруг не дождавшись нового бара, rates_total != prev_calculated и тут-то происходит пересчёт индикатора по всей истории.
 
Serhios:

Да, без проблем


и там дальше пошли вычисления 

Ищите проблемы здесь, у меня точно та-же история была с миганием

ArrayInitialize(Buff,EMPTY_VALUE);
 
<< if(rates_total==prev_calculated) return(rates_total); //Чтобы не работать на каждом тике >>

Вот здесь порок: если расчёты тяжёлые, то малейший чих будет портить
prev_calculated и вызывать пересчёт на всю имеющуюся глубину со всеми вытекающими последствиями. Как паллиатив: изгнать prev_calculated нафиг и пересчитывать лишь последний бар; при этом не будет лишним также иметь запущенным независимый от МТ скрипт, периодически проверяющий интернет-подключение (например, пинком какого-нибудь известного адреса вроде ya.ru) и выполняющий переподключение по мере надобности. В МТ4 таким же точно пороком страдала переменная IndicatorCounted, заведённая скорее всего в предположении, что пользовательский индикатор ничего сложнее МА не рассчитывает. :)
 
Vitaly Muzichenko:

Ищите проблемы здесь, у меня точно та-же история была с миганием

ArrayInitialize(Buff,EMPTY_VALUE);
А можешь показать в какой строке кода это присутствует?
 
Serhios:
Сорри, такого не имеется 
Я вопрос-то задавал Виталию. :-)
 

вот где у нас инициализируются значения

 

 

 
Serhios:

вот где у нас инициализируются значения

 

 

Вот как... Виталий оказывается провидец :-)
 
Alexey Viktorov:
Вот как... Виталий оказывается провидец :-)
Вангует))
Причина обращения: