//+------------------------------------------------------------------+ 
//|                                                                  | 
//|                                                                  | 
//+------------------------------------------------------------------+ 
#property copyright "" 
#property version   "1.0" 
#property strict 
#property indicator_chart_window 

input int      TextSize = 8; //размер шрифта 
input color    TextColor = clrBlueViolet; //цвет текста 
input int      TextAngle = 90; //угол поворота текста 
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей 
extern int     Candle_size = 5;
double HL;
//+------------------------------------------------------------------+ 
int OnInit() 
{ 
   return(INIT_SUCCEEDED); 
} 

int OnCalculate (const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const datetime &time[],     // Time 
                 const double &open[],       // Open 
                 const double &high[],       // High 
                 const double &low[],        // Low 
                 const double &close[],      // Close 
                 const long &tick_volume[],  // Tick Volume 
                 const long &volume[],       // Real Volume 
                 const int &spread[])         // Spread 
{ 
   int i; 
   for ( i = 0; i < MaxBar; i++ )
   
       HL = MathAbs(High[i]-Low[i]); //1//фильтр по величине свечи
       if ( HL>=Candle_size)         //2// !!!! если эти две строки убрать то индикатор работает
   
      { 
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   { 
             ObjectDelete("candlesize"+ IntegerToString(i)); 
      } 
      
         
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point); 
      ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle 
                 ); 
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((High[i]-Low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor 
                     ); 
                     
   } 
   return(rates_total); 
} 

int StepPer () 
{ 
     int i = 0; 
     switch (Period()) 
     { 
          case PERIOD_M1: 
          i = 5; 
          break; 
          case PERIOD_M5: 
          i = 15; 
          break; 
          case PERIOD_M15: 
          i = 25; 
          break; 
          case PERIOD_M30: 
          i = 40; 
          break; 
          case PERIOD_H1: 
          i = 60; 
          break; 
          case PERIOD_H4: 
          i = 90; 
          break; 
          case PERIOD_D1: 
          i = 220; 
          break; 
          case PERIOD_W1: 
          i = 500; 
          break; 
          case PERIOD_MN1: 
          i = 2000; 
          break; 
          default:  
          break; 
     } 
     return (i); 
} 
//+------------------------------------------------------------------+ 
