//+------------------------------------------------------------------+
//|                                                        2EMAs.mq4 |
//|                        Copyright © 2010, Programming by SASHASAN |
//|                                               www.metaqoutes.com |
//+------------------------------------------------------------------+
#property copyright "Programming by SASHASAN"
#property link      "www.metaqoutes.com"

#property indicator_chart_window
#property  indicator_buffers 2

extern int     FastEMAPeriod = 10;
extern int     SlowEMAPeriod = 197;
extern color   LongLabelColor = Green;
extern color   ShortLabelColor = Red;
extern color   BaseLabelColor = Gray;
extern int     StartHourByGMT = 23;
extern int     LabelsCoordinate = 100;
extern string  LabelsFont = "Courier New";

double   BufferEma10 [];
double   BufferEma197[];
color    Colors[3];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(2);
   SetIndexBuffer(0,BufferEma10);
   SetIndexBuffer(1,BufferEma197);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
     
   Colors[0] = LongLabelColor;
   Colors[1] = ShortLabelColor;
   Colors[2] = BaseLabelColor;
  
   ObjectCreate("LabelTime",OBJ_LABEL,0,0,0);
   ObjectSet("LabelTime",OBJPROP_CORNER,1);
   ObjectSet("LabelTime",OBJPROP_XDISTANCE,5);
   ObjectSet("LabelTime",OBJPROP_YDISTANCE,LabelsCoordinate);
   ObjectSetText("LabelTime","",10,LabelsFont,Colors[2]);
   LabelsCoordinate += 15;
   ObjectCreate("LabelEma1",OBJ_LABEL,0,0,0);
   ObjectSet("LabelEma1",OBJPROP_CORNER,1);
   ObjectSet("LabelEma1",OBJPROP_XDISTANCE,5);
   ObjectSet("LabelEma1",OBJPROP_YDISTANCE,LabelsCoordinate);
   ObjectSetText("LabelEma1","",10,LabelsFont,Colors[2]);
   LabelsCoordinate += 15;
   ObjectCreate("LabelEma2",OBJ_LABEL,0,0,0);
   ObjectSet("LabelEma2",OBJPROP_CORNER,1);
   ObjectSet("LabelEma2",OBJPROP_XDISTANCE,5);
   ObjectSet("LabelEma2",OBJPROP_YDISTANCE,LabelsCoordinate);
   ObjectSetText("LabelEma2","",10,LabelsFont,Colors[2]);
   LabelsCoordinate +=15;

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectsDeleteAll();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
      {
      BufferEma10 [i] = iMA(Symbol(),NULL,FastEMAPeriod,0,MODE_SMA,PRICE_CLOSE,i);
      BufferEma197[i] = iMA(Symbol(),NULL,SlowEMAPeriod,0,MODE_SMA,PRICE_CLOSE,i);
      }
      
   ObjectSetText("LabelTime",StringConcatenate("Time :   ",TimeToStr(Time[2],TIME_MINUTES),"     ",
                              TimeToStr(Time[1],TIME_MINUTES)));
   ObjectSetText("LabelEma1",StringConcatenate("EMA 10 : ",DoubleToStr(BufferEma10[2],Digits),"   ",
                              DoubleToStr(BufferEma10[1],Digits)));
   ObjectSetText("LabelEma2",StringConcatenate("EMA 197 : ",DoubleToStr(BufferEma197[2],Digits),"   ",
                              DoubleToStr(BufferEma197[1],Digits)));

   if(Hour() == StartHourByGMT)
      {
      ObjectCreate("LabelTradeEma",OBJ_LABEL,0,0,0);
      ObjectSet("LabelTradeEma",OBJPROP_CORNER,1);
      ObjectSet("LabelTradeEma",OBJPROP_XDISTANCE,5);
      ObjectSet("LabelTradeEma",OBJPROP_YDISTANCE,LabelsCoordinate);
      ObjectSetText("LabelTradeEma","",10,LabelsFont,Colors[2]);
      
      if(BufferEma10[2] > BufferEma10[1])
         string a = StringConcatenate("EMA 10 : ",DoubleToStr(BufferEma10[2],Digits)," > ",
                                    DoubleToStr(BufferEma10[1],Digits));
      if(BufferEma10[2] < BufferEma10[1])
          a = StringConcatenate("EMA 10 : ",DoubleToStr(BufferEma10[2],Digits)," < ",
                                    DoubleToStr(BufferEma10[1],Digits));
      if(BufferEma197[2] > BufferEma197[1])
         string b = StringConcatenate("EMA 197 : ",DoubleToStr(BufferEma197[2],Digits)," > ",
                              DoubleToStr(BufferEma197[1],Digits));
      if(BufferEma197[2] < BufferEma197[1])
          b = StringConcatenate("EMA 10 : ",DoubleToStr(BufferEma197[2],Digits)," < ",
                                    DoubleToStr(BufferEma197[1],Digits));
         
         
      ObjectSetText("LabelEma1",a);            
      ObjectSetText("LabelEma2",b);

      if(BufferEma197[2] > BufferEma197[1] && BufferEma10[2] > BufferEma10[1])
            ObjectSetText("LabelTradeEma","SHORT TRADE EXPECTED",10,LabelsFont,Colors[1]);
      if(BufferEma197[2] < BufferEma197[1] && BufferEma10[2] < BufferEma10[1])
            ObjectSetText("LabelTradeEma","LONG TRADE EXPECTED",10,LabelsFont,Colors[0]);
      if((BufferEma197[2] > BufferEma197[1] && BufferEma10[2] < BufferEma10[1]) ||
          (BufferEma197[2] < BufferEma197[1] && BufferEma10[2] > BufferEma10[1]) )
            ObjectSetText("LabelTradeEma","NO TRADE TODAY",10,LabelsFont,Colors[2]);
      }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+