Уважаемые разработчики, подскажите

 
Уважаемые разработчики, подскажите
Уважаемые разработчики, подскажите в чем у меня в индикаторе ошибка работает вроде все нормально, но в журнале выдает invalid shift
Текст индикатора:
Inputs : Max_per(50),K(0.01);
Vars : CurrentBar(0),shift(0),prevTrend(0),Trend(0),Per(0);
Vars : prevBars(0);

SetLooSetLoopCount(loops)pCount(0);
For CurrentBar = 0 To Bars-1 Begin
shift = Bars-1-CurrentBar;
If prevTrend = 0 Then
{
prevTrend = C[shift];
Exit;
};

If ((C[shift+1] > prevTrend)and(C[shift] <= prevTrend)) or ((C[shift+1] < prevTrend)and(C[shift] >= prevTrend)) Then Per = 0;
If Per < Max_per Then Per = Per + 1;
If C[shift] > prevTrend Then Trend = Close[Highest(MODE_CLOSE, shift+Per-1, Per)]*(1 - K) //Counting UpTrends
Else Trend = Close[Lowest(MODE_CLOSE, shift+Per-1, Per)]*(1 + K); //Counting DownTrends
SetIndexValue(shift, Trend);
prevTrend = Trend;
End;
Идея взята из статьи "Индикатор тренда на основе прорыва динамического ценового канала" Современный трейдинг №4 2001г.
 
Поправка вместо строки SetLooSetLoopCount(loops)pCount(0); надо SetLoopCount(0);
 
Highest и Lowest считают от смещения вправо, а не влево
то есть Вам нужно написать:
Lowest( MODE_CLOSE, shift-1, Per)
Причина обращения: