// Original "M-Candles.mq4" edited by ExplosionKibo

#property indicator_chart_window

extern int TFBar       = 240;           
extern int NumberOfBar = 1000;
extern ENUM_APPLIED_PRICE price= PRICE_CLOSE;
extern color linecolor= clrDodgerBlue;
extern int linewidth= 1;
extern ENUM_LINE_STYLE linestyle=STYLE_SOLID;
extern string linename="close price";

// --- Main Start -------------------------------
int start() 
   {
   int shb=0;
   double po, pc, ph, pl; 
   double x;
   datetime to, tc;        // TimeOpen, TimeClose
   bool Period_Chk=false;   
   switch (TFBar)
   {    
   case 1:Period_Chk=true;break;
   case 5:Period_Chk=true;break;
   case 15:Period_Chk=true;break;
   case 30:Period_Chk=true;break;
   case 60:Period_Chk=true;break;
   case 240:Period_Chk=true;break;
   case 1440:Period_Chk=true;break;
   case 10080:Period_Chk=true;break;
   case 43200:Period_Chk=true;break;
   }
   if (Period_Chk==0 )  { Comment("Wrong TimeFarme input, correct one of these = 1,5,15,30,60,240(H4), 1440(D1),10080(W1), 43200(MN) !");   return(0);}
   if (Period()>TFBar)  { Comment("Input Time should > "+Period());  return(0);}
    
   shb=0;
   while (shb<NumberOfBar) 
      {
      to = iTime(Symbol(), TFBar, shb);
      tc = iTime(Symbol(), TFBar, shb) + TFBar*60;
      po = iOpen(Symbol(), TFBar, shb);
      pc = iClose(Symbol(), TFBar, shb);
      ph = iHigh(Symbol(), TFBar, shb);
      pl = iLow(Symbol(), TFBar, shb);
            
      if (price == PRICE_OPEN)      x=po;
      if (price == PRICE_HIGH)      x=ph;
      if (price == PRICE_LOW)       x=pl;
      if (price == PRICE_CLOSE)     x=pc;
      if (price == PRICE_MEDIAN)    x=pc;
      if (price == PRICE_WEIGHTED)  x=pc;
      if (price == PRICE_TYPICAL)   x=pc;
      
           
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_TIME1, to);  
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_PRICE1, x); 
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_TIME2, tc); 
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_PRICE2, x); 
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_WIDTH, linewidth);
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_COLOR, linecolor);
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_STYLE, linestyle);
      ObjectSet(linename+TFBar+" Minut Bar # "+shb, OBJPROP_RAY, false);
      shb++;
      }       
      
  
  return(0);
}
//+------------------------------------------------------------------+
void init() 
   {
   int i;
   for (i=0; i<NumberOfBar; i++) 
      {
      ObjectDelete(linename+TFBar+" Minut Bar # "+i);
      }
   for (i=0; i<NumberOfBar; i++) 
      {
      ObjectCreate(linename+TFBar+" Minut Bar # "+i, OBJ_TREND, 0, 0,0, 0,0);
      }
   Comment("");
   }

//+------------------------------------------------------------------+
void deinit() 
   {
   for (int i=0; i<NumberOfBar; i++) 
      {
      ObjectDelete(linename+TFBar+" Minut Bar # "+i);
      }
   Comment("");
   }

