/*
   Generated by Free EX4 TO MQ4 decompile Service 
   Website: http://www.ex4Tomq4.net 
   E-mail : info@ex4Tomq4.net 
*/
#property copyright "Morning Star"
#property link      "http://Grand Forex.ir"

#property indicator_chart_window

extern int NumberOfDays = 50;
extern string Session1start = "02:00";
extern string Session1end = "04:00";
extern color Session1color = 179,0,0;
extern string Session2start = "04:00";
extern string Session2end = "10:00";
extern color Session2color = 155,0,0;
extern string Session3start = "10:00";
extern string Session3end = "12:00";
extern color Session3color = 179,0,0;
extern string Session4start = "12:00";
extern string Session4end = "15:00";
extern color Session4color = 155,0,0;
extern string Session5start = "15:00";
extern string Session5end = "19:00";
extern color Session5color = 179,0,0;
extern string Session6start = "23:00";
extern string Session6end = "23:59";
extern color Session6color = 155,0,0;

void init() {
   DeleteObjects();
   for (int l_count_0 = 0; l_count_0 < NumberOfDays; l_count_0++) {
      CreateObjects("Session1" + l_count_0, Session1color);
      CreateObjects("Session2" + l_count_0, Session2color);
      CreateObjects("Session3" + l_count_0, Session3color);
      CreateObjects("Session4" + l_count_0, Session4color);
      CreateObjects("Session5" + l_count_0, Session5color);
      CreateObjects("Session6" + l_count_0, Session6color);
   }
   Comment("");
}

void deinit() {
   DeleteObjects();
   Comment("");
}

void CreateObjects(string a_name_0, color a_color_8) {
   ObjectCreate(a_name_0, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
   ObjectSet(a_name_0, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(a_name_0, OBJPROP_COLOR, a_color_8);
   ObjectSet(a_name_0, OBJPROP_BACK, TRUE);
}

void DeleteObjects() {
   for (int l_count_0 = 0; l_count_0 < NumberOfDays; l_count_0++) {
      ObjectDelete("Session1" + l_count_0);
      ObjectDelete("Session2" + l_count_0);
      ObjectDelete("Session3" + l_count_0);
      ObjectDelete("Session4" + l_count_0);
      ObjectDelete("Session5" + l_count_0);
      ObjectDelete("Session6" + l_count_0);
   }
}

void start() {
   int l_datetime_0 = TimeCurrent();
   for (int l_count_4 = 0; l_count_4 < NumberOfDays; l_count_4++) {
      DrawObjects(l_datetime_0, "Session1" + l_count_4, Session1start, Session1end);
      DrawObjects(l_datetime_0, "Session2" + l_count_4, Session2start, Session2end);
      DrawObjects(l_datetime_0, "Session3" + l_count_4, Session3start, Session3end);
      DrawObjects(l_datetime_0, "Session4" + l_count_4, Session4start, Session4end);
      DrawObjects(l_datetime_0, "Session5" + l_count_4, Session5start, Session5end);
      DrawObjects(l_datetime_0, "Session6" + l_count_4, Session6start, Session6end);
      for (l_datetime_0 = decDateTradeDay(l_datetime_0); TimeDayOfWeek(l_datetime_0) > 5; l_datetime_0 = decDateTradeDay(l_datetime_0)) {
      }
   }
}

void DrawObjects(int ai_0, string a_name_4, string as_12, string as_20) {
   int l_str2time_28 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_12);
   int l_str2time_32 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20);
   int l_shift_52 = iBarShift(NULL, 0, l_str2time_28);
   int l_shift_56 = iBarShift(NULL, 0, l_str2time_32);
   double l_high_36 = High[iHighest(NULL, 0, MODE_HIGH, l_shift_52 - l_shift_56, l_shift_56)];
   double l_low_44 = Low[iLowest(NULL, 0, MODE_LOW, l_shift_52 - l_shift_56, l_shift_56)];
   ObjectSet(a_name_4, OBJPROP_TIME1, l_str2time_28);
   ObjectSet(a_name_4, OBJPROP_PRICE1, l_high_36);
   ObjectSet(a_name_4, OBJPROP_TIME2, l_str2time_32);
   ObjectSet(a_name_4, OBJPROP_PRICE2, l_low_44);
}

int decDateTradeDay(int ai_0) {
   int li_4 = TimeYear(ai_0);
   int li_8 = TimeMonth(ai_0);
   int li_12 = TimeDay(ai_0);
   int l_hour_16 = TimeHour(ai_0);
   int l_minute_20 = TimeMinute(ai_0);
   li_12--;
   if (li_12 == 0) {
      li_8--;
      if (li_8 == 0) {
         li_4--;
         li_8 = 12;
      }
      if (li_8 == 1 || li_8 == 3 || li_8 == 5 || li_8 == 7 || li_8 == 8 || li_8 == 10 || li_8 == 12) li_12 = 31;
      if (li_8 == 2) {
         if (MathMod(li_4, 4) == 0.0) li_12 = 29;
         else li_12 = 28;
      }
      if (li_8 == 4 || li_8 == 6 || li_8 == 9 || li_8 == 11) li_12 = 30;
   }
   return (StrToTime(li_4 + "." + li_8 + "." + li_12 + " " + l_hour_16 + ":" + l_minute_20));
}