Как правильно написать в индикаторе функцию? - страница 2

 
Vladimir Baskakov #:
Если начнёшь с 200 бара к 0 , будешь знать весь путь заранее

Если начнешь завтра, то будешь знать сегодня

 
Taras Slobodyanik #:

Если начнешь завтра, то будешь знать сегодня

— А можно так — утром стулья, а вечером — деньги?
— Можно! Но деньги — вперёд!
 
Vitaly Muzichenko #:

Принтуйте в цикле, увидите очерёдность - обратная, или прямая

Сейчас в продолжении работы столкнулась вот с чем и своим малым опытом точно не могу понять почему так.
Есть код
если все условия совпадают должна быть буферная стрелка + алерт + графическая стрелка.
Все написала.
Буферная срелка не появляется но при этом срабатывают алерты каждую свечу
if(LastActiontime!=Time[0]) // выполнить 1 раз за свечу
     {
      int i,hhb,llb,n;

      for(i=BarsToCount; i>=0; i--)
        {
         hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);
         llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);

         double H1 = High[i];
         double O1 = Open[i];
         double L1 = Low[i];
         double C1 = Close[i];

         double H2 = High[i+1];
         double O2 = Open[i+1];
         double L2 = Low[i+1];
         double C2 = Close[i+1];



         double body = Close[i] - Open[i];
         double body2 = Close[i+1] - Open[i+1];

         int shift1=i+1;
         int shift2=i+2;
         int shift3=i+3;


         if(i==hhb || i+1 == hhb)  // Ситуация для проджажи
           {
            if(body < 0)
              {
               if(body2 > 0)
                 {
                  if(C2 < O1)
                    {
                     if(O2 > C1)
                       {
                        Buffer2[i] = High[hhb]+Intervall_arrow*Point;
                        Signal=true;                                  //Включить подачу сигнала
                       }
                    }
                 }
              }
           }

         if(Signal)
           {
            if(Alert_)
              {
               Alert("Пара: " + Symbol() + " Сигнал SELL" + " Таймфрейм: "+ IntegerToString(_Period));
              }
            
            if(Arrow_)
              {
               n++;
               //SetArrow(n,Time[shift1],Low[shift1]-Intervall_arrow*Point,217,Green);
               SetArrow1(n,Time[i],High[i]+Intervall_arrow*Point,218,Red);
              }
            Signal=false; // Выключить подачу сигнала
           }
складывается впечатление, что индикатор каждую свечу пробегает по истории и на какой-то ситуации из прошлого выдает алерт.
Так как на текущей свече нет ситуации и соответственно стрелку буферную не рисует.