   //+------------------------------------------------------------------+
//|                                                  LE1EMA.mq4      |
//|                                         Copyright © 2011, bdeyes |
//|                                         Copyright © 2012, smarco |
//+------------------------------------------------------------------+
#property copyright "allpeople"
 
///////////////////////////////////////////////////////////
// This indicator covers all the major EMAs and is       //
// a supporting indicator for the following thread on    //
// Forex factory - Another simple system - Time-Frame 15 //
///////////////////////////////////////////////////////////
 
#property indicator_chart_window
#property indicator_buffers 0


extern string note1 = "----Select MA----";
extern string help1 = "Set to true to add MA to chart";

extern color EMA10colour = Blue;
extern color EMA30colour = Green;
extern color EMA200colour = DeepPink;

extern bool MA_H4_10_EMA = true;
extern bool MA_D1_10_EMA = true; 
extern bool MA_W1_10_EMA = true; 
extern bool MA_MN1_10_EMA = true;

extern bool MA_M5_30_EMA = true;

extern bool MA_D1_200_EMA = true; 
extern bool MA_H4_200_EMA = true;

 
extern string note2 = "Line & text settings";
extern string help2 = "Amount to shift text to the right";
extern int text_shift = 10; // amount to shift text to the right of bar[0]
extern string help3 = "Lenght of line to display";
extern int line_length = 10; // amount to extend line to the right of bar[0]
extern string help4 = "Font size of bar label";
extern int font_size = 9; // font size of bar label

 
// local variables
int current = 0; // variable points to current bar
int line_adjustment;
int text_adjustment;
int line_leader; 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
    IndicatorShortName("Simple EMAv2");
    return(0);
}
 
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
    ObjectDelete("H4_10_EMA");
    ObjectDelete("H4_10_EMA_label");
   
    ObjectDelete("D1_10_EMA");
    ObjectDelete("D1_10_EMA_label");     

    ObjectDelete("W1_10_EMA");
    ObjectDelete("W1_10_EMA_label");
  
    ObjectDelete("MN1_10_EMA");
    ObjectDelete("MN1_10_EMA_label");

    ObjectDelete("M5_30_EMA");
    ObjectDelete("M5_30_EMA_label");

    ObjectDelete("H4_200_EMA");
    ObjectDelete("H4_200_EMA_label");
    
    ObjectDelete("D1_200_EMA");
    ObjectDelete("D1_200_EMA_label");
 
    return(0);
}
 
//+------------------------------------------------------------------+
//| Custom indicator start function                                  |
//+------------------------------------------------------------------+
int start()
{
    int i;
    int counted_bars = IndicatorCounted();
    if(counted_bars < 0) return(-1);
    if(counted_bars > 0) counted_bars--;
    i = Bars - counted_bars;
    
    while (i >= 0)
    {
        current = i;
        i--;
    }

    switch(Period())
    {
        case PERIOD_M1: 
          line_adjustment=950; 
          text_adjustment=750;
          line_leader=250; 
          break;
        case PERIOD_M5: 
          line_adjustment=7500; 
          text_adjustment=6500;
          line_leader=1000; 
          break;
        case PERIOD_M15: 
          line_adjustment=15000; 
          text_adjustment=10000;
          line_leader=2000; 
          break;
        case PERIOD_M30: 
          line_adjustment=20000; 
          text_adjustment=16500;
          line_leader=4000; 
          break;
        case PERIOD_H1: 
          line_adjustment=40000; 
          text_adjustment=35000;
          line_leader=8000; 
          break;
        case PERIOD_H4: 
          line_adjustment=125000; 
          text_adjustment=100000;
          line_leader=20000; 
          break;
        case PERIOD_D1: 
          line_adjustment=1000000;
          text_adjustment=850000;
          line_leader=200000; 
          break;
        default: 
          line_adjustment=7500;
          text_adjustment=6500;
          line_leader=1000; 
          break;
    }        

    /////////////////////////////////////////////////////////////////////////////////////
    // H4 10 EMA
    if (MA_H4_10_EMA)
    {
      if (ObjectFind("H4_10_EMA") != -1)
        ObjectDelete("H4_10_EMA");
        
      ObjectCreate("H4_10_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_H4,10,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_H4,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("H4_10_EMA", OBJPROP_RAY, false);
      ObjectSet("H4_10_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("H4_10_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("H4_10_EMA", OBJPROP_COLOR, EMA10colour);

      if (ObjectFind("H4_10_EMA_label") != -1)
        ObjectDelete("H4_10_EMA_label");
        
      ObjectCreate("H4_10_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_H4,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("H4_10_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("H4_10_EMA_label", OBJPROP_COLOR, EMA10colour);
      ObjectSetText("H4_10_EMA_label", "4HR 10 EMA", font_size, "Arial", EMA10colour); 
    }
    
    /////////////////////////////////////////////////////////////////////////////////////
    // Daily 10 EMA line
    if (MA_D1_10_EMA)
    {
      if (ObjectFind("D1_10_EMA") != -1)
        ObjectDelete("D1_10_EMA");
    
      ObjectCreate("D1_10_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_D1,10,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_D1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("D1_10_EMA", OBJPROP_RAY, false);
      ObjectSet("D1_10_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("D1_10_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("D1_10_EMA", OBJPROP_WIDTH, 2);
      ObjectSet("D1_10_EMA", OBJPROP_COLOR, EMA10colour);
    
      if (ObjectFind("D1_10_EMA_label") != -1)
        ObjectDelete("D1_10_EMA_label");
    
      ObjectCreate("D1_10_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_D1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("D1_10_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("D1_10_EMA_label", OBJPROP_COLOR, EMA10colour);
      ObjectSetText("D1_10_EMA_label", "DAY 10 EMA", font_size, "Arial", EMA10colour); 
    }

    /////////////////////////////////////////////////////////////////////////////////////        
    // Week 10 EMA
    if (MA_W1_10_EMA)
    {
      if (ObjectFind("W1_10_EMA") != -1)
        ObjectDelete("W1_10_EMA");
    
      ObjectCreate("W1_10_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_W1,10,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_W1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("W1_10_EMA", OBJPROP_RAY, false);
      ObjectSet("W1_10_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("W1_10_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("W1_10_EMA", OBJPROP_WIDTH, 2);
      ObjectSet("W1_10_EMA", OBJPROP_COLOR, EMA10colour);
      
      if (ObjectFind("W1_10_EMA_label") != -1)
        ObjectDelete("W1_10_EMA_label");
    
      ObjectCreate("W1_10_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_W1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("W1_10_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("W1_10_EMA_label", OBJPROP_COLOR, EMA10colour);
    
      ObjectSetText("W1_10_EMA_label", "WEEK 10 EMA", font_size, "Arial", EMA10colour); 
    }
    
    ///////////////////////////////////////////////////////////////////////////////////// 
    // Month 10 EMA
    if (MA_MN1_10_EMA)
    {
      if (ObjectFind("MN1_10_EMA") != -1)
        ObjectDelete("MN1_10_EMA");
      
      ObjectCreate("MN1_10_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_MN1,10,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_MN1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("MN1_10_EMA", OBJPROP_RAY, false);
      ObjectSet("MN1_10_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("MN1_10_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("MN1_10_EMA", OBJPROP_COLOR, EMA10colour);
      ObjectSet("MN1_10_EMA", OBJPROP_WIDTH, 3);

      if (ObjectFind("MN1_10_EMA_label") != -1)
        ObjectDelete("MN1_10_EMA_label");
    
      ObjectCreate("MN1_10_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_MN1,10,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("MN1_10_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("MN1_10_EMA_label", OBJPROP_COLOR, EMA10colour);
      ObjectSetText("MN1_10_EMA_label", "MONTH 10 EMA", font_size, "Arial", EMA10colour); 
    }
    
    /////////////////////////////////////////////////////////////////////////////////////
    // Daily 200 EMA
    if (MA_D1_200_EMA)
    {
      if (ObjectFind("D1_200_EMA") != -1)
        ObjectDelete("D1_200_EMA");

      ObjectCreate("D1_200_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_D1,200,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_D1,200,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("D1_200_EMA", OBJPROP_RAY, false);
      ObjectSet("D1_200_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("D1_200_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("D1_200_EMA", OBJPROP_WIDTH, 2);
      ObjectSet("D1_200_EMA", OBJPROP_COLOR, EMA200colour);

      if (ObjectFind("D1_200_EMA_label") != -1)
        ObjectDelete("D1_200_EMA_label");

      ObjectCreate("D1_200_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_D1,200,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("D1_200_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("D1_200_EMA_label", OBJPROP_COLOR, EMA200colour);
      ObjectSetText("D1_200_EMA_label", "DAY 200 EMA", font_size, "Arial", EMA200colour); 
    }
    
    /////////////////////////////////////////////////////////////////////////////////////
    // H4 200 EMA line
    if (MA_H4_200_EMA)
    {
      if (ObjectFind("H4_200_EMA") != -1)
        ObjectDelete("H4_200_EMA");

      ObjectCreate("H4_200_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("H4_200_EMA", OBJPROP_RAY, false);
      ObjectSet("H4_200_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("H4_200_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("H4_200_EMA", OBJPROP_COLOR, EMA200colour);

      if (ObjectFind("H4_200_EMA_label") != -1)
        ObjectDelete("H4_200_EMA_label");

      ObjectCreate("H4_200_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("H4_200_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("H4_200_EMA_label", OBJPROP_COLOR, EMA200colour);
      ObjectSetText("H4_200_EMA_label", "4HR 200 EMA", font_size, "Arial", EMA200colour); 
    }


    /////////////////////////////////////////////////////////////////////////////////////
    // M5 30 EMA
    if (MA_M5_30_EMA)
    {
      if (ObjectFind("M5_30_EMA") != -1)
        ObjectDelete("M5_30_EMA");
      ObjectCreate("M5_30_EMA", OBJ_TREND, 0, Time[0]+line_leader, iMA(NULL, PERIOD_M5,30,0,MODE_EMA,PRICE_CLOSE,0), (Time[0]+line_length+line_adjustment), iMA(NULL, PERIOD_M5,30,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("M5_30_EMA", OBJPROP_RAY, false);
      ObjectSet("M5_30_EMA", OBJPROP_TIME1, Time[0]+line_leader);
      ObjectSet("M5_30_EMA", OBJPROP_TIME2, (Time[0]+line_length+line_adjustment));
      ObjectSet("M5_30_EMA", OBJPROP_COLOR, EMA30colour);

      if (ObjectFind("M5_30_EMA_label") != -1)
        ObjectDelete("M5_30_EMA_label");
      ObjectCreate("M5_30_EMA_label", OBJ_TEXT, 0, (Time[0]+text_shift+text_adjustment), iMA(NULL, PERIOD_M5,30,0,MODE_EMA,PRICE_CLOSE,0));
      ObjectSet("M5_30_EMA_label", OBJPROP_TIME1, (Time[0]+text_shift+text_adjustment));
      ObjectSet("M5_30_EMA_label", OBJPROP_COLOR, EMA30colour);
      ObjectSetText("M5_30_EMA_label", "5M 30 EMA", font_size, "Arial", EMA30colour); 
    }
    
    /////////////////////////////////////////////////////////////////////////////////////
    return(0);
}
 
//+------------------------------------------------------------------+