Здравствуйте, помогите понять логику в написании индикатора?

 
Здравствуйте, помогите пожалуйста разобраться вот в этом из статьи https://www.mql5.com/ru/articles/1500 (туда тоже написал вопрос но не знаю ответят там или нет):

int counted_bars=IndicatorCounted(),
limit;

if(counted_bars>0)
counted_bars--;

limit=Bars-counted_bars;

for(int i=0;i<limit;i++)
-----------

if(counted_bars>0)
counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)
limit=barsToProcess;

-----------
я запутался в этих конструкциях, limit=Bars-counted_bars; это будет равно 2 или 1? а во второму случае зачем проверять условие и делать limit=barsToProcess; почему его сразу не присвоить без проверки условия? я пробовал, на индикаторе в данном случае отображается кривая за период barsToProcess а дальше на графике пусто, а как например работает Moving Average, у нее есть период, но прорисовывается от начала до конца?

Спасибо
 
neo8:

Здравствуйте, помогите пожалуйста разобраться вот в этом из статьи https://www.mql5.com/ru/articles/1500 (туда тоже написал вопрос но не знаю ответят там или нет):

-----------
я запутался в этих конструкциях, limit=Bars-counted_bars; это будет равно 2 или 1? а во второму случае зачем проверять условие и делать limit=barsToProcess; почему его сразу не присвоить без проверки условия? я пробовал, на индикаторе в данном случае отображается кривая за период barsToProcess а дальше на графике пусто, а как например работает Moving Average, у нее есть период, но прорисовывается от начала до конца?

Спасибо

А что Вы хотите получить?

int counted_bars=IndicatorCounted(),  // Получаем количество обработанных баров на предыдущем тике
    limit;

limit=Bars-counted_bars;              // Количество баров для расчета на текущем тике

if (limit>1)                          // Если баров для обработки больше 2 (нулевой и первый), то делаем полный перерасчет
   limit=Bars-MA_Period-1;

for(int i=limit;i>=0;i--)             
{

}
 
Спасибо за ответ, так стало понятней намного, буду смотерть теперь на практике