/*
   Generated by EX4-TO-MQ4 decompiler V4.0.220.2 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_chart_window

extern int YourBroker_GMT_TimeZone = 0;
extern bool Show_Countdown = TRUE;
extern int Session_Close_Alarm_Minutes = 10;
extern string Trading_Times = "только поменяйте наверху, не меняйте ни чего внизу";
extern int LondonOpen_GMT = 8;
extern int LondonClose_GMT = 17;
extern color LondonColor = Gold;
extern int NewYorkOpen_GMT = 13;
extern int NewYorkClose_GMT = 22;
extern color NewYorkColor = SeaGreen;
extern int SydneyOpen_GMT = 24;
extern int SydneyClose_GMT = 7;
extern color SydneyColor = FireBrick;
extern int TokyoOpen_GMT = 0;
extern int TokyoClose_GMT = 9;
extern color TokyoColor = Blue;
extern int Alert_text_in_window_0123 = 0;
extern int __in_window_corner_0123 = 0;
extern int starting_offset = 40;
extern int fontsize = 10;
int gi_160 = 0;
int gi_164 = 0;
int gi_168 = 0;
int gi_172 = 0;
int gi_176 = 0;
int gi_180 = 0;
int gi_184 = 0;
int gi_188 = 0;
bool gi_192 = FALSE;
bool gi_196 = FALSE;
bool gi_200 = FALSE;
bool gi_204 = FALSE;
int gi_208 = 0;
string g_text_212;

int init() {
   gi_160 = LondonOpen_GMT + YourBroker_GMT_TimeZone;
   if (gi_160 >= 24) gi_160 -= 24;
   if (gi_160 < 0) gi_160 += 24;
   gi_164 = LondonClose_GMT + YourBroker_GMT_TimeZone;
   if (gi_164 >= 24) gi_164 -= 24;
   if (gi_164 < 0) gi_164 += 24;
   gi_168 = NewYorkOpen_GMT + YourBroker_GMT_TimeZone;
   if (gi_168 >= 24) gi_168 -= 24;
   if (gi_168 < 0) gi_168 += 24;
   gi_172 = NewYorkClose_GMT + YourBroker_GMT_TimeZone;
   if (gi_172 >= 24) gi_172 -= 24;
   if (gi_172 < 0) gi_172 += 24;
   gi_176 = SydneyOpen_GMT + YourBroker_GMT_TimeZone;
   if (gi_176 >= 24) gi_176 -= 24;
   if (gi_176 < 0) gi_176 += 24;
   gi_180 = SydneyClose_GMT + YourBroker_GMT_TimeZone;
   if (gi_180 >= 24) gi_180 -= 24;
   if (gi_180 < 0) gi_180 += 24;
   gi_184 = TokyoOpen_GMT + YourBroker_GMT_TimeZone;
   if (gi_184 >= 24) gi_184 -= 24;
   if (gi_184 < 0) gi_184 += 24;
   gi_188 = TokyoClose_GMT + YourBroker_GMT_TimeZone;
   if (gi_188 >= 24) gi_188 -= 24;
   if (gi_188 < 0) gi_188 += 24;
   return (0);
}

int start() {
   int li_0 = 20;
   int li_4 = 0;
   int l_count_8 = 0;
   int li_12 = 0;
   int li_16 = 0;
   if (isMarketOpen(gi_160, gi_164, Time[0])) {
      l_count_8++;
      li_4 = (l_count_8 - 1) * li_0;
      if (gi_208 > 1) g_text_212 = "Лондонская сессия (" + gi_208 + " часов осталось)";
      else {
         li_12 = 60 - TimeMinute(TimeCurrent());
         if (li_12 > 1) {
            g_text_212 = "Лондонская сессия (" + li_12 + " минут осталось)";
            if (li_12 <= Session_Close_Alarm_Minutes && !gi_192) {
               Alert("Лондонская сессия закроется через " + li_12 + " минут.");
               gi_192 = TRUE;
            }
         } else {
            li_16 = 60 - TimeSeconds(TimeCurrent());
            if (!gi_192) {
               Alert("Лондонская сессия закроется через " + li_16 + " секунд.");
               gi_192 = TRUE;
            }
            g_text_212 = "Лондонская сессия (" + li_16 + " секунд осталось)";
         }
      }
      if (!Show_Countdown) g_text_212 = "Лондонская сессия";
      ObjectDelete("LondonLabel");
      ObjectCreate("LondonLabel", OBJ_LABEL, Alert_text_in_window_0123, 0, 0);
      ObjectSet("LondonLabel", OBJPROP_CORNER, __in_window_corner_0123);
      ObjectSet("LondonLabel", OBJPROP_XDISTANCE, 6);
      ObjectSet("LondonLabel", OBJPROP_YDISTANCE, starting_offset + li_4);
      ObjectSet("LondonLabel", OBJPROP_COLOR, LimeGreen);
      ObjectSetText("LondonLabel", g_text_212, fontsize, "Cambria Bold Italic", LondonColor);
   } else {
      ObjectDelete("LondonLabel");
      gi_192 = FALSE;
   }
   if (isMarketOpen(gi_168, gi_172, Time[0])) {
      l_count_8++;
      li_4 = (l_count_8 - 1) * li_0;
      if (gi_208 > 1) g_text_212 = "Нью-Йоркская сессия (" + gi_208 + " часов осталось)";
      else {
         li_12 = 60 - TimeMinute(TimeCurrent());
         if (li_12 > 1) {
            g_text_212 = "Нью-Йоркская сессия (" + li_12 + " минут осталось)";
            if (li_12 <= Session_Close_Alarm_Minutes && !gi_196) {
               Alert("Нью-Йоркская сессия закроется через " + li_12 + " минут.");
               gi_196 = TRUE;
            }
         } else {
            li_16 = 60 - TimeSeconds(TimeCurrent());
            if (!gi_196) {
               Alert("Нью-Йоркская сессия закроется через " + li_16 + " секунд.");
               gi_196 = TRUE;
            }
            g_text_212 = "Нью-Йоркская сессия  (" + li_16 + " секунд осталось)";
         }
      }
      if (!Show_Countdown) g_text_212 = "Нью-Йоркская сессия";
      ObjectDelete("NewYorkLabel");
      ObjectCreate("NewYorkLabel", OBJ_LABEL, Alert_text_in_window_0123, 0, 0);
      ObjectSet("NewYorkLabel", OBJPROP_CORNER, __in_window_corner_0123);
      ObjectSet("NewYorkLabel", OBJPROP_XDISTANCE, 6);
      ObjectSet("NewYorkLabel", OBJPROP_YDISTANCE, starting_offset + li_4);
      ObjectSet("NewYorkLabel", OBJPROP_COLOR, LimeGreen);
      ObjectSetText("NewYorkLabel", g_text_212, fontsize, "Cambria Bold Italic", NewYorkColor);
   } else {
      ObjectDelete("NewYorkLabel");
      gi_196 = FALSE;
   }
   if (isMarketOpen(gi_176, gi_180, Time[0])) {
      l_count_8++;
      li_4 = (l_count_8 - 1) * li_0;
      if (gi_208 > 1) g_text_212 = "Сиднейская сессия (" + gi_208 + " часов осталось)";
      else {
         li_12 = 60 - TimeMinute(TimeCurrent());
         if (li_12 > 1) {
            g_text_212 = "Сиднейская сессия (" + li_12 + " минут осталось)";
            if (li_12 <= Session_Close_Alarm_Minutes && !gi_200) {
               Alert("Сиднейская сессия закроется через  " + li_12 + " минут.");
               gi_200 = TRUE;
            }
         } else {
            li_16 = 60 - TimeSeconds(TimeCurrent());
            if (!gi_200) {
               Alert("Сиднейская сессия закроется через " + li_16 + " секунд.");
               gi_200 = TRUE;
            }
            g_text_212 = "Сиднейская сессия (" + li_16 + " секунд осталось)";
         }
      }
      if (!Show_Countdown) g_text_212 = "Сиднейская сессия";
      ObjectDelete("SydneyLabel");
      ObjectCreate("SydneyLabel", OBJ_LABEL, Alert_text_in_window_0123, 0, 0);
      ObjectSet("SydneyLabel", OBJPROP_CORNER, __in_window_corner_0123);
      ObjectSet("SydneyLabel", OBJPROP_XDISTANCE, 6);
      ObjectSet("SydneyLabel", OBJPROP_YDISTANCE, starting_offset + li_4);
      ObjectSet("SydneyLabel", OBJPROP_COLOR, LimeGreen);
      ObjectSetText("SydneyLabel", g_text_212, fontsize, "Cambria Bold Italic", SydneyColor);
   } else {
      ObjectDelete("SydneyLabel");
      gi_200 = FALSE;
   }
   if (isMarketOpen(gi_184, gi_188, Time[0])) {
      l_count_8++;
      li_4 = (l_count_8 - 1) * li_0;
      if (gi_208 > 1) g_text_212 = "Токийская сессия (" + gi_208 + " часов осталось)";
      else {
         li_12 = 60 - TimeMinute(TimeCurrent());
         if (li_12 > 1) {
            g_text_212 = "Токийская сессия (" + li_12 + " минут осталось)";
            if (li_12 <= Session_Close_Alarm_Minutes && !gi_204) {
               Alert("Токийская сессия закроется через " + li_12 + " минут.");
               gi_204 = TRUE;
            }
         } else {
            li_16 = 60 - TimeSeconds(TimeCurrent());
            if (!gi_204) {
               Alert("Токийская сессия закроется через " + li_16 + " секунд.");
               gi_204 = TRUE;
            }
            g_text_212 = "Токийская сессия (" + li_16 + " секунд осталось)";
         }
      }
      if (!Show_Countdown) g_text_212 = "Токийская сессия";
      ObjectDelete("TokyoLabel");
      ObjectCreate("TokyoLabel", OBJ_LABEL, Alert_text_in_window_0123, 0, 0);
      ObjectSet("TokyoLabel", OBJPROP_CORNER, __in_window_corner_0123);
      ObjectSet("TokyoLabel", OBJPROP_XDISTANCE, 6);
      ObjectSet("TokyoLabel", OBJPROP_YDISTANCE, starting_offset + li_4);
      ObjectSet("TokyoLabel", OBJPROP_COLOR, LimeGreen);
      ObjectSetText("TokyoLabel", g_text_212, fontsize, "Cambria Bold Italic", TokyoColor);
   } else {
      ObjectDelete("TokyoLabel");
      gi_204 = FALSE;
   }
   return (0);
}

bool isMarketOpen(int ai_0, int ai_4, int ai_8) {
   int l_hour_12 = TimeHour(ai_8);
   gi_208 = 0;
   if (l_hour_12 < ai_4) gi_208 = ai_4 - l_hour_12;
   if (l_hour_12 > ai_4) gi_208 = ai_4 + 24 - l_hour_12;
   if (ai_0 < ai_4 && (l_hour_12 >= ai_0 && l_hour_12 < ai_4)) return (TRUE);
   if (ai_0 > ai_4 && l_hour_12 >= ai_0 || l_hour_12 < ai_4) return (TRUE);
   return (FALSE);
}