Как найти проблему в индикаторе? - страница 2

 
varyar84:

...

Код идникатора:

 

Подскажите почему не происходит открытия сделок? что не так с индикатором?

Поменяйте строку в индикаторе

   i=MathMax(1,100-Counted_bars-1);           // Индекс первого непосчитанного (ограничение 100 баров)

 Это заплатка, но ошибка в этой строке.

 
Mislaid:

Поменяйте строку в индикаторе

 Это заплатка, но ошибка в этой строке.

Заработало! в

Огромное спасибо!

Можете пояснить суть ошибки, я не смог самостоятельно понять :( 

 
varyar84:

Заработало! в

Огромное спасибо!

Можете пояснить суть ошибки, я не смог самостоятельно понять :( 

Я не дружу с функцией IndicatorCounted(), но, если кто умеет, пусть объяснит. В справку лезть не хочется.
 
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=100-Counted_bars-1;           // Индекс первого непосчитанного (ограничение 100 баров)

IndicatorCounted() при первом вызове возвращает 0 при всех последующих вызовах возвращает количество баров имеющихся на графике. У вас от 100 отнималось количество баров, получалось отрицательное число.

потому и пишут обычно i=Bars-counted-1;  То есть при первом запуске в counted 0 и потому просчитываем все бары, при последующих в counted количество баров как и в Bars и отнимаем 1 остаётся 1 бар который и пересчитываем.

 
   i=MathMax(1,100-Counted_bars);           // Индекс первого непосчитанного (ограничение 100 баров)
А вот это хороший пример, если нужно просчитать только 100 последних баров, не просчитывая всю историю целиком. При первом запуске у нас функция MathMax вернёт 100 так как в Counted_bars 0 а при всех последующих запусках будет возвращать 1.
 
PozitiF:
А вот это хороший пример, если нужно просчитать только 100 последних баров, не просчитывая всю историю целиком. При первом запуске у нас функция MathMax вернёт 100 так как в Counted_bars 0 а при всех последующих запусках будет возвращать 1.
Не совсем так. Я говорил, что это костыль. Пусть индикатор висит на минутках, и 5 минут не было интернета. Что произойдет? По идее, он должен пересчитать шесть баров, а не два.
 
При переподключении происходит перерасчёт, пересчитает всё по новой.
 
Еще раз спасибо всем!
Причина обращения: