#property indicator_chart_window
//+------------------------------------------------------------------+
 datetime Array_Time_Frame []= {0};
 int      MA_Periord       []= {0};  

extern int MA_Method       = MODE_SMA ;
extern int AppPrice        = PRICE_CLOSE;
extern string Info         = "Short-term Moving avarage overlay ";
extern int TimeFrame       = 5;

extern int Short_term_Fast_MA         = 100;
extern int Short_term_Slow_MA         = 200 ;
extern int  Short_term_MA_Width =1;
extern color Short_term_Fast_MA_COL   = Blue;
extern bool Show_Fast_MA   = True;
extern color Short_term_Slow_MA_COL   = Green;
extern bool Show_Slow_MA   = True;

extern string Info2        = "Mid-term Moving avarage overlay ";
extern int Mid_term_TimeFrame      = 60  ;
extern int Mid_term_Fast_MA        = 100 ;
extern int Mid_term_Slow_MA        = 200 ;
extern color Mid_term_Fast_MA_COL  = Blue;
extern int   Mid_term_MA_Width =2;
extern bool Show_Mid_term_Fast_MA  = True;
extern color Slow_Mid_term_MA_COL  = Green;
extern bool Show_Mid_term_Slow_MA  = True;

extern string Info3        = "Long-term Moving avarage overlay ";
extern int Long_term_TimeFrame      = 1440;
extern int Long_term_Fast_MA        = 100;
extern int Long_term_Slow_MA        = 200;
extern color Long_term_Fast_MA_COL  = Blue;
extern bool Show_Long_term_Fast_MA  = True;
extern color Slow_Long_term_MA_COL  = Green;
extern bool Show_Long_term_Slow_MA  = True;
extern int  Long_term_MA_Width = 3;
int MA_Time_Frame ;
int Get_Periord ;

//-----------------------------------------------+
int init()
 {
   MA_Time_Frame = ArraySize(Array_Time_Frame);
   Get_Periord   = ArraySize(MA_Periord);
  
return(0); 
 }
//-----------------------------------------------+ 
int deinit()
 {
   ObjectsDeleteAll(" (M5) Moving Avarage 100"); 
   ObjectsDeleteAll(" (M5) Moving Avarage 200");  
   ObjectsDeleteAll(" (H1) Moving Avarage 100"); 
   ObjectsDeleteAll(" (H1) Moving Avarage 200");
   ObjectsDeleteAll(" (D1) Moving Avarage 100"); 
   ObjectsDeleteAll(" (D1) Moving Avarage 200");
  return(0);
 }
//-----------------------------------------------+
int start()
 {

  {
    for(int x = 0; x < MA_Time_Frame; x++)              
    for(int y = 0; y < Get_Periord;   y++)
  {                            
   
   if (Show_Fast_MA ) 
   
   double   MA100 = iMA(NULL, TimeFrame, Short_term_Fast_MA, 0,  MA_Method, AppPrice, 0);
        
        ObjectCreate(" (M5) Moving Avarage 1"+x+y, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_WIDTH, Short_term_MA_Width);
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_COLOR, Short_term_Fast_MA_COL);
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_PRICE1, MA100);
        // setting object visibility. object will be shown only on H1 minute and 1 hour charts
        ObjectSet(" (M5) Moving Avarage 1"+x+y, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1 | OBJ_PERIOD_D1);

       }
  
 //-------------------------------------------------------------------------------   
    {
      for(int xs = 0; xs < MA_Time_Frame; xs++)              
      for(int ys = 0; ys < Get_Periord;   ys++)
    {                             
   
  
   if (Show_Slow_MA )
  
  
   
    
 
  double   MA200 = iMA(NULL, TimeFrame, Short_term_Slow_MA, 0, MA_Method, AppPrice, 0);
        
        ObjectCreate(" (M5) Moving Avarage 2"+xs+ys, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys, OBJPROP_WIDTH, Short_term_MA_Width);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys, OBJPROP_COLOR, Short_term_Slow_MA_COL);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys, OBJPROP_PRICE1, MA200);
        ObjectSet(" (M5) Moving Avarage 2"+xs+ys,OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1 | OBJ_PERIOD_D1);
       }
      
       //-------------------------------------------------------------------------------     
   
  {
    for(int xMid_term_ = 0; xMid_term_ < MA_Time_Frame; xMid_term_++)              
    for(int yMid_term_ = 0; yMid_term_ < Get_Periord;   yMid_term_++)
  {                            
   
   if (Show_Fast_MA ) 
   double   Mid_term_MA100 = iMA(NULL, Mid_term_TimeFrame, Long_term_Fast_MA, 0, 0, 0, 0);
        
        ObjectCreate(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_WIDTH, Mid_term_MA_Width);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_COLOR, Mid_term_Fast_MA_COL);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_PRICE1, Mid_term_MA100);
        ObjectSet(" (H1) Moving Avarage 1"+xMid_term_+yMid_term_, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5 | OBJ_PERIOD_D1);
       }
    }
 //-------------------------------------------------------------------------------   
    {
      for(int xsMid_term_ = 0; xsMid_term_ < MA_Time_Frame; xsMid_term_++)              
      for(int ysMid_term_ = 0; ysMid_term_ < Get_Periord;   ysMid_term_++)
    {                             
   
   if (Show_Slow_MA)
   
  
  
   double   Mid_term_MA200 = iMA(NULL, Mid_term_TimeFrame, Mid_term_Slow_MA, 0, MA_Method, AppPrice, 0);
        
        ObjectCreate(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_WIDTH, Mid_term_MA_Width);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_COLOR, Slow_Mid_term_MA_COL);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_PRICE1, Mid_term_MA200);
        ObjectSet(" (H1) Moving Avarage 2"+xsMid_term_+ysMid_term_, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5 | OBJ_PERIOD_D1);
       }
      } 
//-------------------------------------------------------------------------------     
  {
    for(int xLong_term = 0; xLong_term< MA_Time_Frame; xLong_term++)              
    for(int yLong_term = 0; yLong_term < Get_Periord;   yLong_term++)
  {                            
   
   if (Show_Fast_MA ) 
   double   Long_term_MA100 = iMA(NULL, Long_term_TimeFrame, Mid_term_Fast_MA, 0, 0, 0, 0);
        
        ObjectCreate(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_WIDTH, Long_term_MA_Width);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_COLOR, Mid_term_Fast_MA_COL);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_PRICE1, Long_term_MA100);
        ObjectSet(" (D1) Moving Avarage 1"+xLong_term+yLong_term, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5 | OBJ_PERIOD_H1);
       }
    }
 //-------------------------------------------------------------------------------   
    {
      for(int xsLong_term = 0; xsLong_term < MA_Time_Frame; xsLong_term++)              
      for(int ysLong_term = 0; ysLong_term < Get_Periord;   ysLong_term++)
    {                             
   
   if (Show_Slow_MA )
   double   Long_term_MA200 = iMA(NULL, Long_term_TimeFrame, Long_term_Slow_MA, 0, MA_Method, AppPrice, 0);
        
        ObjectCreate(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJ_HLINE, 0,  Time[0], 0);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_STYLE, STYLE_SOLID);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_WIDTH, Long_term_MA_Width);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_COLOR, Slow_Mid_term_MA_COL);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_TIME1, Time[0]);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_PRICE1, Long_term_MA200);
        ObjectSet(" (D1) Moving Avarage 2"+xsLong_term+ysLong_term, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5 | OBJ_PERIOD_H1);
       }
      } 
//-------------------------------------------------------------------------------     
       
   
   }
  
 }
  return(0);
 }


