Глюк индикатора при сдвиге

[Удален]  

Довольно легкий индикатор показывает что-то наподобии локальных экстремумов, но при перемещении по графику вперед/назад возникает глюк, такого вида (индикатор фиолетовый):

До навигации:

При навигации, глюк:

Если индикатор убрать с поля и заново поставить, то все нормализуется обратно...

При этом от кода это не особо завсит насколько я понимаю - у меня не один индикатор так глючит...

Кто-нить сталкивался с такой проблемой?

 
У Вас в коде ошибка, выкладывайте.
[Удален]  
Вот код:
#property copyright "Copyright © 2007,Ryumkin"
#property link      ""
 
#property indicator_buffers 1
#property indicator_chart_window
#property indicator_color1 DarkViolet
#property indicator_width1 1
 
double pdLocalExtremum[], dPt1, dPt2, dPt3;
 
int init()
{
   SetIndexStyle(0, DRAW_SECTION);
   SetIndexBuffer(0, pdLocalExtremum);
   return(0);
}
 
bool sign(double d) { return (d>=0); }
 
int deinit()
{
   return(0);
}
 
int start()
{
   int iCountedBars = IndicatorCounted(), iLimit = Bars - iCountedBars - 1;
   dPt1 = Close[iLimit]; dPt2 = Close[iLimit]; dPt3 = Close[iLimit];
   for(int i=iLimit; i>=0; i--)
   {
      dPt3 = Close[i];
      double dD31 = dPt3-dPt1, dD21 = dPt2-dPt1; // 
      if(MathAbs(dD31)>=MathAbs(dD21) && sign(dD31)==sign(dD21)) // The signal has not changed the direction
      {
      
      }
      else // Signal has changed the direction
      {
         pdLocalExtremum[i+1] = dPt2;
         dPt1 = dPt2;
      }
      dPt2 = dPt3;
   }
   return(0);
}
[Удален]  
up
 
Руки пока не дошли. Кстати, в коде элементарная ошибка (которую я увидел сразу), Вы уверены что выложили то, что тестируете?
[Удален]  

Да это абсолютно точно... А где ошибка?

 
ryumkin:

Да это абсолютно точно... А где ошибка?


Подход ошибочен - dPt2 = dPt3;

При первом подключении индикатора, прошлым значением будет значение на предыдущем баре, а затем на предыдущем тике. Либо на каждом тике пересчитывайте индикатор на весь диапазон баров, либо создайте дополнительные буферы для значений которые нужно брать с предыущего бара.

[Удален]  

Подход меня не сильно волнует, так как это лишь набросок, а вот то что график прыгает меня волнует сильно...

 
ryumkin:

Подход меня не сильно волнует, так как это лишь набросок, а вот то что график прыгает меня волнует сильно...


No Comments!
 
В общем, код написан так, что непонятно какая идея в нем заложена (то есть, ошибки не объясняются логикой). Напишите своими словами то, что хотели закодировать, так будет проще.
[Удален]  

Индикатор соединяет точки изменения направления, т.е. если график идет вверх на протяжении нескольких временных интервалов, то точек будет всего 2 вначале и конце.