//+------------------------------------------------------------------+
//|                                                    MA+StdDev.mq4 |
//|                                                         Zen_Leow |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Zen_Leow"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 White
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 Yellow
//---- indicator parameters
extern int MA_Period = 1440;
//extern int StdDev_Period = 1080;
extern int MA_Method = 1;
extern int MA_Applied_Price = 6;
extern int MA_Shift = 0;
//---- indicator buffers
double MA_Buffer[];
double MAStdDev_Buffer1[];
double MAStdDev_Buffer2[];
double MAStdDev_Buffer3[];
double MAStdDev_Buffer4[];
double MAStdDev_Buffer5[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MA_Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,MAStdDev_Buffer1);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,MAStdDev_Buffer2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,MAStdDev_Buffer3);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,MAStdDev_Buffer4);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,MAStdDev_Buffer5);
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
   
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int i;                           // Bar index       
   int Counted_bars;                // Number of counted bars
   
   //MA_Method settings:
   //0 = Simple moving average,
   //1 = Exponential moving average,
   //2 = Smoothed moving average,
   //3 = Linear weighted moving average.

   //MA_Applied_Price settings:
   //0 = Close price.
   //1 = Open price.
   //2 = High price.
   //3 = Low price.
   //4 = Median price, (high+low)/2.
   //5 = Typical price, (high+low+close)/3.
   //6 = Weighted close price, (high+low+close+close)/4. 
   
   //--------------------------------------------------------------------   
   Counted_bars=IndicatorCounted(); // Number of counted bars   
   i=Bars-Counted_bars-1;           // Index of the first uncounted   
   
   while(i>=0)                      // Loop for uncounted bars     
   {
      
      
      //Comment((iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/100000))*1000);
      Comment(iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000));
      MA_Buffer[i] = iMA( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i);
      MAStdDev_Buffer1[i] = MA_Buffer[i] + (iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000))*1.645;//*(MA_Period/StdDev_Period);
      MAStdDev_Buffer2[i] = MA_Buffer[i] + (iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000))*2;//*(MA_Period/StdDev_Period);
      MAStdDev_Buffer3[i] = MA_Buffer[i] + (iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000))*2.576;//*(MA_Period/StdDev_Period);
      MAStdDev_Buffer4[i] = MA_Buffer[i] + (iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000))*3.206;//*(MA_Period/StdDev_Period);     
      MAStdDev_Buffer5[i] = MA_Buffer[i] + (iStdDev( NULL, 0, MA_Period, MA_Shift, MA_Method, MA_Applied_Price, i)+(MODE_SPREAD/1000))*6;//*(MA_Period/StdDev_Period);
      i--; 
   }
   return(0);
}
//+------------------------------------------------------------------+