//+------------------------------------------------------------------+
//|                                                   Max1_Histo.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Red

#property indicator_width1 16
#property indicator_width2 16
#property indicator_width3 16
#property indicator_width4 16

extern bool AllON=true;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,ExtMapBuffer4);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   if(!AllON)return(0);
   int    counted_bars=IndicatorCounted();
//----
   double MaxBase,Max2,Max3,Max4,Max5,Max6,Max7,Max8;
   int    pos=Bars-2;
   if(counted_bars>2) pos=Bars-counted_bars-1;
     int zone1,zone2,zone3,zone4,zone5,zone6,zone7;
   for(int x=1;x<pos;x++)
    {
     MaxBase=iCustom(NULL,0,"MAX_chart2",7,x);
     Max2=   iCustom(NULL,0,"MAX_chart3",1,x);
     Max3=   iCustom(NULL,0,"MAX_chart3",2,x);
     Max4=   iCustom(NULL,0,"MAX_chart3",3,x);
     Max5=   iCustom(NULL,0,"MAX_chart3",4,x);
     Max6=   iCustom(NULL,0,"MAX_chart3",5,x);
     Max7=   iCustom(NULL,0,"MAX_chart3",6,x);
     Max8=   iCustom(NULL,0,"MAX_chart3",7,x);
     zone1=0;zone2=0;zone3=0;zone4=0;zone5=0;zone6=0;zone7=0;
     double Buff1=0,Buff2=0;
     if((Open[x]>MaxBase&&Open[x]<Max2)
         ||(Close[x]>MaxBase&&Close[x]<Max2)
         ||(Open[x]<MaxBase&&Close[x]>MaxBase)
         ||(Close[x]<MaxBase&&Open[x]>MaxBase)
         ||(Open[x]<MaxBase&&Open[x]>Max2)
         ||(Close[x]<MaxBase&&Close[x]>Max2))
      zone1=1;
     if((Open[x]>Max2&&Open[x]<Max3)
         ||(Close[x]>Max2&&Close[x]<Max3)
         ||(Open[x]<Max2&&Open[x]>Max3)
         ||(Close[x]<Max2&&Close[x]>Max3))
      zone2=1;
     if((Open[x]>Max3&&Open[x]<Max4)
         ||(Close[x]>Max3&&Close[x]<Max4)
         ||(Open[x]<Max3&&Open[x]>Max4)
         ||(Close[x]<Max3&&Close[x]>Max4))
      zone3=1;
     if((Open[x]>Max4&&Open[x]<Max5)
         ||(Close[x]>Max4&&Close[x]<Max5)
         ||(Open[x]<Max4&&Open[x]>Max5)
         ||(Close[x]<Max4&&Close[x]>Max5))
      zone4=1;
     if((Open[x]>Max5&&Open[x]<Max6)
         ||(Close[x]>Max5&&Close[x]<Max6)
         ||(Open[x]<Max5&&Open[x]>Max6)
         ||(Close[x]<Max5&&Close[x]>Max6))
      zone5=1;
     if((Open[x]>Max6&&Open[x]<Max7)
         ||(Close[x]>Max6&&Close[x]<Max7)
         ||(Open[x]<Max6&&Open[x]>Max7)
         ||(Close[x]<Max6&&Close[x]>Max7))
      zone6=1;
     if((Open[x]>Max7&&Open[x]<Max8)
         ||(Close[x]>Max7&&Close[x]<Max8)
         ||(Open[x]>Max8&&Close[x]<Max8)
         ||(Close[x]>Max8&&Open[x]<Max8)
         ||(Open[x]<Max7&&Open[x]>Max8)
         ||(Close[x]<Max7&&Close[x]>Max8))
      zone7=1;
      
      if(zone7==1) Buff1=Max7;
      if(zone6==1) Buff1=Max6;
      if(zone5==1) Buff1=Max5;
      if(zone4==1) Buff1=Max4;
      if(zone3==1) Buff1=Max3;
      if(zone2==1) Buff1=Max2;
      if(zone1==1) Buff1=MaxBase;

      if(zone1==1) Buff2=Max2;
      if(zone2==1) Buff2=Max3;
      if(zone3==1) Buff2=Max4;
      if(zone4==1) Buff2=Max5;
      if(zone5==1) Buff2=Max6;
      if(zone6==1) Buff2=Max7;
      if(zone7==1) Buff2=Max8;
      
      ExtMapBuffer1[x]=Buff1;
      ExtMapBuffer2[x]=Buff2;
/*
     zone1=0;zone2=0;zone3=0;zone4=0;zone5=0;zone6=0;zone7=0;
     Buff1=0;Buff2=0;
     if((Open[x]<=Max2&&Open[x]>=Max3)
         ||(Close[x]<=Max2&&Close[x]>=Max3))
      zone2=1;
     if(Open[x]<=Max3&&Open[x]>=Max4)
      zone3=1;
     if(Open[x]<=Max4&&Open[x]>=Max5)
      zone4=1;
     if(Open[x]<=Max5&&Open[x]>=Max6)
      zone5=1;
     if(Open[x]<=Max6&&Open[x]>=Max7)
      zone6=1;
     if(Open[x]<=Max7&&Open[x]>=Max8)
      zone7=1;
      
      if(zone7==1) Buff1=Max7;
      if(zone6==1) Buff1=Max6;
      if(zone5==1) Buff1=Max5;
      if(zone4==1) Buff1=Max4;
      if(zone3==1) Buff1=Max3;
      if(zone2==1) Buff1=Max2;
      if(zone1==1) Buff1=MaxBase;

      if(zone1==1) Buff2=Max2;
      if(zone2==1) Buff2=Max3;
      if(zone3==1) Buff2=Max4;
      if(zone4==1) Buff2=Max5;
      if(zone5==1) Buff2=Max6;
      if(zone6==1) Buff2=Max7;
      if(zone7==1) Buff2=Max8;
      
      ExtMapBuffer1[x]=Buff1;
      ExtMapBuffer2[x]=Buff2;
*/  }
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+