ATM_SessionsGMT+2





//+------------------------------------------------------------------+
//|                                                        times.mq4 |
//|                                                                  |
//|               Made/Modified by sh _j .                           |
//|                                                                  |
//|  tweaked by Accrete to generalize session names/code and add     |
//|  a fourth session box   www.accrete.com                          |
//+------------------------------------------------------------------+
#property copyright "Morning Star"
#property link      "http://Grand Forex.ir"

#property indicator_chart_window

 
extern int    NumberOfDays = 50;        
extern string Session1start    = "00:00";   
extern string Session1end      = "08:59";   
extern color  Session1color    = DimGray; 
extern string Session2start     = "09:00";   
extern string Session2end       = "09:59";   
extern color  Session2color     = DodgerBlue;//DarkGray       
extern string Session3start     = "10:00";   
extern string Session3end       = "11:59";   
extern color  Session3color     = DodgerBlue; 
extern string Session4start     = "14:00";   
extern string Session4end       = "14:59";   
extern color  Session4color     = DarkGray; 
extern string Session5start     = "15:00";   
extern string Session5end       = "18:59";   
extern color  Session5color     = DarkGray; 
extern string Session6start     = "23:00";//last hour of NY session   
extern string Session6end       = "23:59";   
extern color  Session6color     = DimGray; 

//+------------------------------------------------------------------+
//| CSession3tom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  DeleteObjects();
  for (int i=0; i<NumberOfDays; i++) {
    CreateObjects("Session1"+i, Session1color);
    CreateObjects("Session2"+i, Session2color);
    CreateObjects("Session3"+i, Session3color);
    CreateObjects("Session4"+i, Session4color);
    CreateObjects("Session5"+i, Session5color);
    CreateObjects("Session6"+i, Session6color);
  }
  Comment("");
}

//+------------------------------------------------------------------+
//| CSession3tor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  DeleteObjects();
  Comment("");
}

 
void CreateObjects(string no, color cl) {
  ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0);
  ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
  ObjectSet(no, OBJPROP_COLOR, cl);
  ObjectSet(no, OBJPROP_BACK, True);
}

//+------------------------------------------------------------------+
//| Óäàëåíèå îáúåêòîâ èíäèêàòîðà                                     |
//+------------------------------------------------------------------+
void DeleteObjects() {
  for (int i=0; i<NumberOfDays; i++) {
    ObjectDelete("Session1"+i);
    ObjectDelete("Session2"+i);
    ObjectDelete("Session3"+i);
    ObjectDelete("Session4"+i);
    ObjectDelete("Session5"+i);
    ObjectDelete("Session6"+i);
  }
}

//+------------------------------------------------------------------+
//| CSession3tom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  datetime dt=CurTime();

  for (int i=0; i<NumberOfDays; i++) {
    DrawObjects(dt, "Session1"+i, Session1start, Session1end);
    DrawObjects(dt, "Session2"+i, Session2start, Session2end);
    DrawObjects(dt, "Session3"+i, Session3start, Session3end);
    DrawObjects(dt, "Session4"+i, Session4start, Session4end);
    DrawObjects(dt, "Session5"+i, Session5start, Session5end);
    DrawObjects(dt, "Session6"+i, Session6start, Session6end);
    dt=decDateTradeDay(dt);
    while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
  }
}

  
void DrawObjects(datetime dt, string no, string tb, string te) {
  datetime t1, t2;
  double   p1, p2;
  int      b1, b2;

  t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
  t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
  b1=iBarShift(NULL, 0, t1);
  b2=iBarShift(NULL, 0, t2);
  p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
  p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];
  ObjectSet(no, OBJPROP_TIME1 , t1);
  ObjectSet(no, OBJPROP_PRICE1, p1);
  ObjectSet(no, OBJPROP_TIME2 , t2);
  ObjectSet(no, OBJPROP_PRICE2, p2);
}


datetime decDateTradeDay (datetime dt) {
  int ty=TimeYear(dt);
  int tm=TimeMonth(dt);
  int td=TimeDay(dt);
  int th=TimeHour(dt);
  int ti=TimeMinute(dt);

  td--;
  if (td==0) {
    tm--;
    if (tm==0) {
      ty--;
      tm=12;
    }
    if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
    if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28;
    if (tm==4 || tm==6 || tm==9 || tm==11) td=30;
  }
  return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
}
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: