#property copyright "Copyright © 2012, Leif Karlsson"

#property indicator_chart_window
#property indicator_buffers 8

#property indicator_color1 Lime
#property indicator_color2 Lime

#property indicator_color3 Lime
#property indicator_color4 Lime

#property indicator_color5 Yellow
#property indicator_color6 Yellow

#property indicator_color7 Lime
#property indicator_color8 Lime


//---- input parameters
extern double StdDrv = 1.5;

//---- buffers
double Buffer1[];
double Buffer2[];

double Buffer3[];
double Buffer4[];

double Buffer5[];
double Buffer6[];

double Buffer7[];
double Buffer8[];

//+------------------------------------------------------------------+
int init() {

   SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY, 2);
   SetIndexStyle(1, DRAW_HISTOGRAM, EMPTY, 2);
   
   SetIndexStyle(2, DRAW_HISTOGRAM, EMPTY, 2);
   SetIndexStyle(3, DRAW_HISTOGRAM, EMPTY, 2);
   
   SetIndexStyle(4, DRAW_HISTOGRAM, EMPTY, 2);
   SetIndexStyle(5, DRAW_HISTOGRAM, EMPTY, 2);
      
   SetIndexStyle(6, DRAW_HISTOGRAM, EMPTY, 1);
   SetIndexStyle(7, DRAW_HISTOGRAM, EMPTY, 1);
   
   SetIndexBuffer(0, Buffer1);
   SetIndexBuffer(1, Buffer2);
   
   SetIndexBuffer(2, Buffer3);
   SetIndexBuffer(3, Buffer4);
   
   SetIndexBuffer(4, Buffer5);
   SetIndexBuffer(5, Buffer6);   
   
   SetIndexBuffer(6, Buffer7);
   SetIndexBuffer(7, Buffer8);      

   return(0);
}
//+------------------------------------------------------------------+
int start() {

   static int _FirstVisibleBar;
   int i, CountedBars;
   double Ma, SD, SizeOfLine;
   
   CountedBars = IndicatorCounted();
   SizeOfLine = (WindowPriceMax() - WindowPriceMin())/400.0;

   if(_FirstVisibleBar == WindowFirstVisibleBar()) {
      i = Bars - CountedBars - 1;
   }
   else {
      i = Bars;
      _FirstVisibleBar = WindowFirstVisibleBar();
   }
   
   while(i > 0) {
   
      Ma = iMA(NULL, PERIOD_M1, Period(), 0, MODE_SMA, PRICE_MEDIAN, iBarShift(NULL, PERIOD_M1, Time[i-1]-60));
      SD = iStdDev(NULL, PERIOD_M1, Period(), 0, MODE_SMA, PRICE_CLOSE, iBarShift(NULL, PERIOD_M1, Time[i-1]-60));
      
      Buffer1[i] = Ma + StdDrv*SD + 0.5*SizeOfLine; 
      Buffer2[i] = Ma + StdDrv*SD - 0.5*SizeOfLine; 
   
      Buffer3[i] = Ma - StdDrv*SD + 0.5*SizeOfLine; 
      Buffer4[i] = Ma - StdDrv*SD - 0.5*SizeOfLine;    
      
      Buffer5[i] = Ma + 0.5*SizeOfLine; 
      Buffer6[i] = Ma - 0.5*SizeOfLine; 
      
      Buffer7[i] = High[i];
      Buffer8[i] = Low[i];   
                       
      i--;
   }
   
   Ma = iMA(NULL, PERIOD_M1, (iTime(NULL, PERIOD_M1, 0)/60 % Period()) + 1, 0, MODE_SMA, PRICE_MEDIAN, 0);
   SD = iStdDev(NULL, PERIOD_M1, (iTime(NULL, PERIOD_M1, 0)/60 % Period()) + 1, 0, MODE_SMA, PRICE_CLOSE, 0);
   
   Buffer1[0] = Ma + StdDrv*SD + 0.5*SizeOfLine; 
   Buffer2[0] = Ma + StdDrv*SD - 0.5*SizeOfLine; 
   
   Buffer3[0] = Ma - StdDrv*SD + 0.5*SizeOfLine; 
   Buffer4[0] = Ma - StdDrv*SD - 0.5*SizeOfLine;    
      
   Buffer5[0] = Ma + 0.5*SizeOfLine; 
   Buffer6[0] = Ma - 0.5*SizeOfLine; 
      
   Buffer7[0] = High[0];
   Buffer8[0] = Low[0];   
   
   return(0);
}
//+------------------------------------------------------------------+