//+------------------------------------------------------------------+
//|                                                   GentorCCIM .mq4 |
//|                                                   Egorov Gennadiy |  
//+------------------------------------------------------------------+
#property copyright "Egorov Gennadiy"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 5

#property indicator_color1 Red
#property indicator_color2 Black
#property indicator_color3 Lime
#property indicator_color4 Yellow
#property indicator_color5 Green


#property indicator_level1 300
#property indicator_level2 200
#property indicator_level3 100
#property indicator_level4 50
#property indicator_level5 -50
#property indicator_level6 -100
#property indicator_level7 -200
#property indicator_level8 -300
//---- input parameters
extern int       A_period=14;
extern int       B_period=6;
extern int       EMA=34;
extern int       num_bars=300;
// parameters
int shift=0;

//---- buffers
double FastWoodieCCI[];
double SlowWoodieCCI[];
double HistoWoodieCCI[];
double LineHighEMA[];
double LineLowEMA[];

//---- indicator buffers

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(2);
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,FastWoodieCCI);
   SetIndexStyle(1,DRAW_LINE,0,2);
   SetIndexBuffer(1,SlowWoodieCCI);
   SetIndexStyle(2,DRAW_HISTOGRAM,0,1);
   SetIndexBuffer(2,HistoWoodieCCI);
   SetIndexStyle(3,DRAW_LINE,1,3);
   SetIndexBuffer(3,LineHighEMA);
   SetIndexStyle(4,DRAW_LINE,1,3);
   SetIndexBuffer(4,LineLowEMA);
  
   
   
//---- initialization done
   return(0);
  }
  
 
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i;
   int   counted_bars = IndicatorCounted();
   
//---- check for possible errors
   if ( counted_bars<0 ) 
        return(-1);
   
  //---- last counted bar will be recounted
  if ( counted_bars > 0 ) 
       counted_bars--;
       
   counted_bars = Bars - counted_bars;
  
   for (shift = 0; shift < counted_bars; shift++)
   {        
      //
      FastWoodieCCI[shift]=iCCI(NULL,0,B_period,PRICE_TYPICAL,shift);
      SlowWoodieCCI[shift]=iCCI(NULL,0,A_period,PRICE_TYPICAL,shift);
      HistoWoodieCCI[shift]=iCCI(NULL,0,A_period,PRICE_TYPICAL,shift);
//----------------color coding---------------------------
      LineLowEMA[shift]=0;
      LineHighEMA[shift]=0;
     
      double EmaValue = iMA( NULL, 0, EMA, 0, MODE_EMA, PRICE_TYPICAL, shift );
      if ( Close[shift] > EmaValue )
         LineHighEMA[shift]=EMPTY_VALUE;
      else
      if (Close[shift] < EmaValue )
         LineLowEMA[shift]=EMPTY_VALUE;      
                   
   }
     
      
//---- done
   return(0);
  }
//+------------------------------------------------------------------+