нужна помощь Индикатор рисует только на истории

 
int start()
  {    
   Fun_New_Bar();                               // Обращение к ф-ии
   {
   if (New_Bar==false)                          // Если бар не новый..
//   Alert("старый бар");
      return;                                   // ..то уходим
   }
      
    
   int co_b=IndicatorCounted();
   i =Bars-co_b-1-pp;
   Alert("бар =" + i);
  while(i>=0)
   {
   
   //тут идут вычисления показателей буфера


  ExtMapBuffer1[i]=iMA(NULL,0,per,0,0,0,i); 
  i--; 
  }
   Alert("период =" + per);
   Alert("бар =" + i);
    return(0);
  }
//----------------------------------------------------------------------------------------- 
  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[i])                        // Сравниваем время
     {
      New_Time=Time[i];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
    //  Alert("новый бар");
     }
  }

на истории отображает а дальше никак. Алерты вставлял, везде вроде правильные цифры.

pp=50; всегда.

 
А на каком расстоянии от текущего бара в сторону истории начинает рисовать если не тайна?
 
evillive:
А на каком удалении в историю от текущего бара рисует если не тайна?

50 баров от края левого, то есть практически всю историю, этому равен pp, только в конце ещё полоса резко вниз уходит.
 
индикаторная линия от 50го крайнего левого до нулевого.
 

То есть рисует вплоть до предыдущего бара, а на текущем - обрыв? Ну так может это проверка виновата? В чём смысл данной проверки на новый бар, ведь индикаторы потиково работают?

И вот этот код по моему не очень правильно так писать. Откуда там в функции i берётся? Time[1] может?

И что за цифры в алертах? Там же на бар[1] по коду алерт пишет ...

   Fun_New_Bar();                               // Обращение к ф-ии
   {
   if (New_Bar==false)                          // Если бар не новый..
//   Alert("старый бар");
      return;                                   // ..то уходим
   }

***

void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[i])                        // Сравниваем время
     {
      New_Time=Time[i];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
    //  Alert("новый бар");
     }
  }
 

спасибо, разобрался вроде=))))

функция правильная я её из учебника брал.

а исправил тем что переставил определение i в начало старт, и убрал рр,

только теперь какое-то некрасивое начало у индюка, ну лучше уж так.