//+------------------------------------------------------------------+
//|                                           Awesome 4 color v1.mq4 |
//|                              Awesome 4 color modfications by cja |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
#property description "4 color code by CJA"

#property  indicator_separate_window
#property indicator_buffers 4
#property indicator_color1  clrGreen
#property indicator_color2  clrLimeGreen
#property indicator_color3  clrMaroon
#property indicator_color4  clrRed
#property indicator_width1  3
#property indicator_width2  3
#property indicator_width3  3
#property indicator_width4  3
#property strict

//---- indicator buffers

extern int Number_of_Bars  = 1000;//Number of Bars to Display


double ind_buffer1[], ind_buffer1s[];
double ind_buffer2[], ind_buffer2s[];
double ind_buffer3[];
double slope[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   IndicatorBuffers(6);
   SetIndexBuffer(0,ind_buffer1);  SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(1,ind_buffer1s); SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(2,ind_buffer2);  SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(3,ind_buffer2s); SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(4,ind_buffer3);
   SetIndexBuffer(5,slope);
   IndicatorShortName("Awesome 4 color");

   return(0);
  }
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars=IndicatorCounted();
   int i,limit,limitDisplay;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-2);
         if (Number_of_Bars==0)
               limitDisplay = limit;
         else  limitDisplay = MathMin(limit,MathMin(Bars,Number_of_Bars));
   
   //
   //
   //
   //
   //
   
   for(i=limit; i>=0; i--) ind_buffer3[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i);
   for(i=limit; i>=0; i--)
   {
      ind_buffer1s[i] = EMPTY_VALUE;
      ind_buffer1[i]  = EMPTY_VALUE;
      ind_buffer2s[i] = EMPTY_VALUE;
      ind_buffer2[i]  = EMPTY_VALUE;
      if (i<(Bars-1)&& i<=limitDisplay)
      {
         slope[i]  = slope[i+1];
            if(ind_buffer3[i]>ind_buffer3[i+1]) slope[i] =  1;
            if(ind_buffer3[i]<ind_buffer3[i+1]) slope[i] = -1;
            if(ind_buffer3[i]>0)
            if (slope[i]==1)
                  ind_buffer1s[i] = ind_buffer3[i];
            else  ind_buffer1[i]  = ind_buffer3[i];
            if(ind_buffer3[i]<0)
            if(slope[i]==1)
                  ind_buffer2[i]  = ind_buffer3[i];
            else  ind_buffer2s[i] = ind_buffer3[i];
       }  
   }
return(0);
}

