/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_chart_window

extern string exp1 = "--- 1.Change this number ---";
extern int indi_number = 123;
extern string exp2 = "--- 2. Time Setting ---";
extern int GMTshift = 3;
extern string Start = "14:00";
extern string End = "16:00";
extern string exp3 = "--- 3. Display Setting ---";
extern int day_number = 6;
extern int offset = 10;
extern string exp4 = "--- 4. Color Setting ---";
extern color linecolor = Silver;
extern color textcolor = Silver;
extern color boxcolor1 = C'0x00,0x00,0x4F';
extern color boxcolor2 = MidnightBlue;
extern string exp5 = "--- 5. Others :) ---";
extern bool show_label = TRUE;

void init() {
   for (int l_count_0 = 0; l_count_0 < day_number; l_count_0++) {
      Buat_Obj("GUB2" + indi_number + l_count_0, boxcolor1);
      Buat_Garis("GUB0" + indi_number + l_count_0, linecolor);
      Buat_Garis("GUB1" + indi_number + l_count_0, linecolor);
      if (offset > 0) Buat_Obj("GUB3" + indi_number + l_count_0, boxcolor2);
   }
}

void deinit() {
   for (int l_count_0 = 0; l_count_0 < day_number; l_count_0++) {
      ObjectDelete("GUB2" + indi_number + l_count_0);
      ObjectDelete("GUB0" + indi_number + l_count_0);
      ObjectDelete("GUB1" + indi_number + l_count_0);
      if (offset > 0) ObjectDelete("GUB3" + indi_number + l_count_0);
      ObjectDelete("txt_" + indi_number + l_count_0 + "hi");
      ObjectDelete("txt_" + indi_number + l_count_0 + "lo");
      ObjectDelete("txt_" + indi_number + l_count_0 + "Range");
   }
   ObjectDelete("ext_lbl");
}

void Buat_Obj(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 Buat_Garis(string a_name_0, color a_color_8) {
   ObjectCreate(a_name_0, OBJ_TREND, 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 Tulis_Label(string a_name_0, string a_text_8, double ad_16, color a_color_24, int a_datetime_28) {
   if (ObjectFind(a_name_0) == 1) ObjectMove(a_name_0, 0, a_datetime_28, ad_16);
   else ObjectCreate(a_name_0, OBJ_TEXT, 0, a_datetime_28, ad_16);
   ObjectSetText(a_name_0, a_text_8, 8, "Arial", CLR_NONE);
   ObjectSet(a_name_0, OBJPROP_COLOR, a_color_24);
   ObjectSet(a_name_0, OBJPROP_PRICE1, ad_16);
   ObjectSet(a_name_0, OBJPROP_TIME1, a_datetime_28);
}

void SetText(int ai_0, string as_4, string as_12, string as_20) {
   int l_shift_44;
   int l_shift_48;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   int li_28 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + "00:00") + 3600 * GMTshift;
   int li_32 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_12) + 3600 * GMTshift;
   int li_36 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20) + 3600 * GMTshift;
   int li_40 = li_28 + 82800;
   if (li_36 < li_32) {
      li_36 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20) + 3600 * (GMTshift + 24);
      li_40 = li_32 + 82800;
   }
   if (TimeCurrent() >= li_32) {
      if (TimeCurrent() < li_36) li_36 = Time[0];
      if (TimeCurrent() < li_40) li_40 = Time[0];
      l_shift_44 = iBarShift(NULL, 0, li_32);
      l_shift_48 = iBarShift(NULL, 0, li_36);
      ld_52 = High[iHighest(NULL, 0, MODE_HIGH, l_shift_44 - l_shift_48 + 1, l_shift_48)];
      ld_60 = Low[iLowest(NULL, 0, MODE_LOW, l_shift_44 - l_shift_48 + 1, l_shift_48)];
      ld_68 = ld_52 + offset * Point;
      ld_76 = ld_60 - offset * Point;
      if (show_label) {
         Tulis_Label(as_4 + "hi", "H : [" + DoubleToStr(ld_52, Digits) + "]", ld_68, textcolor, li_32);
         Tulis_Label(as_4 + "lo", "L : [" + DoubleToStr(ld_60, Digits) + "]", ld_68, textcolor, li_32 + 12600.0);
         Tulis_Label(as_4 + "Range", "R : [" + DoubleToStr((ld_52 - ld_60) / Point, 0) + "]", ld_68, textcolor, li_32 + 25200);
      }
   }
}

void Gambar_Obj(int ai_0, string a_name_4, string as_12, string as_20, int ai_28) {
   int l_shift_48;
   int l_shift_52;
   double ld_56;
   double ld_64;
   double ld_72;
   double ld_80;
   int li_32 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + "00:00") + 3600 * GMTshift;
   int li_36 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_12) + 3600 * GMTshift;
   int li_40 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20) + 3600 * GMTshift;
   int l_datetime_44 = li_32 + 82800;
   if (li_40 < li_36) {
      li_40 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20) + 3600 * (GMTshift + 24);
      l_datetime_44 = li_36 + 82800;
   }
   if (TimeCurrent() >= li_36) {
      if (TimeCurrent() < li_40) li_40 = Time[0];
      if (TimeCurrent() < l_datetime_44) l_datetime_44 = Time[0];
      l_shift_48 = iBarShift(NULL, 0, li_36);
      l_shift_52 = iBarShift(NULL, 0, li_40);
      ld_56 = High[iHighest(NULL, 0, MODE_HIGH, l_shift_48 - l_shift_52 + 1, l_shift_52)];
      ld_64 = Low[iLowest(NULL, 0, MODE_LOW, l_shift_48 - l_shift_52 + 1, l_shift_52)];
      ld_72 = ld_56 + offset * Point;
      ld_80 = ld_64 - offset * Point;
      switch (ai_28) {
      case 0:
         ObjectSet(a_name_4, OBJPROP_TIME1, li_36);
         ObjectSet(a_name_4, OBJPROP_PRICE1, ld_72);
         ObjectSet(a_name_4, OBJPROP_TIME2, l_datetime_44);
         ObjectSet(a_name_4, OBJPROP_PRICE2, ld_72);
         break;
      case 1:
         ObjectSet(a_name_4, OBJPROP_TIME1, li_36);
         ObjectSet(a_name_4, OBJPROP_PRICE1, ld_80);
         ObjectSet(a_name_4, OBJPROP_TIME2, l_datetime_44);
         ObjectSet(a_name_4, OBJPROP_PRICE2, ld_80);
         break;
      case 2:
         ObjectSet(a_name_4, OBJPROP_TIME1, li_36);
         ObjectSet(a_name_4, OBJPROP_PRICE1, ld_56);
         ObjectSet(a_name_4, OBJPROP_TIME2, li_40);
         ObjectSet(a_name_4, OBJPROP_PRICE2, ld_64);
         break;
      case 3:
         ObjectSet(a_name_4, OBJPROP_TIME1, li_36);
         ObjectSet(a_name_4, OBJPROP_PRICE1, ld_72);
         ObjectSet(a_name_4, OBJPROP_TIME2, li_40);
         ObjectSet(a_name_4, OBJPROP_PRICE2, ld_80);
      }
      ObjectSet(a_name_4, OBJPROP_RAY, FALSE);
   }
}

int Hari_Trading(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));
}

void Tulis(string a_name_0, double a_corner_8, int a_y_16, int a_x_20, string a_text_24, int a_fontsize_32, string a_fontname_36, color a_color_44) {
   ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(a_name_0, a_text_24, a_fontsize_32, a_fontname_36, a_color_44);
   ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_8);
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_20);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_16);
}

void start() {
   int l_datetime_0 = TimeCurrent();
   if (Period() < PERIOD_H4) {
      Tulis("ext_lbl", 3, 5, 10, "ant-GUBreakout_V.0.4 by andee", 8, "Arial", SlateGray);
      for (int l_count_4 = 0; l_count_4 < day_number; l_count_4++) {
         if (TimeDayOfWeek(l_datetime_0) > 0 && TimeDayOfWeek(l_datetime_0) < 6) {
            Gambar_Obj(l_datetime_0, "GUB0" + indi_number + l_count_4, Start, End, 0);
            Gambar_Obj(l_datetime_0, "GUB1" + indi_number + l_count_4, Start, End, 1);
            Gambar_Obj(l_datetime_0, "GUB2" + indi_number + l_count_4, Start, End, 2);
            SetText(l_datetime_0, "txt_" + indi_number + l_count_4, Start, End);
            if (offset > 0) Gambar_Obj(l_datetime_0, "GUB3" + indi_number + l_count_4, Start, End, 3);
            l_datetime_0 = Hari_Trading(l_datetime_0);
         }
         if (TimeDayOfWeek(l_datetime_0) > 5 || TimeDayOfWeek(l_datetime_0) == 0) l_datetime_0 = Hari_Trading(l_datetime_0);
      }
   }
}
