/*
   Generated by EX4-TO-MQ4 decompiler V4.0.228.1e [-]
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Lime

double g_ibuf_76[];
extern string TimeFrame_value = "TimeFrame(0,M5,M15,M30,H1,D1)";
extern string TimeFrame = "0";
extern string Display_Mode = "0=sum all, 1=separate";
extern int DisplayMode = 0;
extern bool DisplayMarkets = FALSE;
extern string Broker_Time_Shift = "Broker server time shift";
extern int BrokerTimeShift = 0;
extern string Market_open_time = "Format(xx:xx-xx:xx)";
extern string LondonMarket = "08:00-17:00";
extern string NewYorkMarket = "13:00-22:00";
extern string SydneyMarket = "22:00-07:00";
extern string TokyoMarket = "00:00-09:00";
extern string note1 = "Change font colors automatically? True = Yes";
extern bool Changing_Colors = TRUE;
extern string note2 = "Default Font Color";
extern color FontColor = Black;
extern string note3 = "Font Size";
extern int FontSize = 24;
extern string note4 = "Font Type";
extern string FontType = "Comic Sans MS";
extern string note5 = "Display the Value in what corner?";
extern string note6 = "Upper left=0; Upper right=1";
extern string note7 = "Lower left=2; Lower right=3";
extern int WhatCorner = 1;
extern color FontColor1 = SeaGreen;
extern color FontColor2 = Red;
int g_timeframe_252 = 0;
double g_iclose_256;
int gi_unused_264 = 0;
int g_day_of_week_268 = 0;
int gi_272;
int g_str2int_276;
int gi_280;
int g_str2int_284;
int gi_288;
int g_str2int_292;
int gi_296;
int g_str2int_300;
int gi_304;
int g_str2int_308;
int gi_312;
int g_str2int_316;
int gi_320;
int g_str2int_324;
int gi_328;
int g_str2int_332;
double g_bid_336;

int init() {
   string ls_unused_0;
   int li_8;
   IndicatorBuffers(1);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, g_ibuf_76);
   SetIndexLabel(0, Symbol());
   if (DisplayMode == 1) {
      li_8 = GetCrossingPairIndex(Symbol());
      for (int li_12 = 0; li_12 < 1; li_12++)
         if (li_12 != li_8) SetIndexStyle(li_12, DRAW_LINE, STYLE_DOT, EMPTY, Silver);
   } else SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, EMPTY, Lime);
   if (TimeFrame == "M5") g_timeframe_252 = 5;
   else {
      if (TimeFrame == "M15") g_timeframe_252 = 15;
      else {
         if (TimeFrame == "M30") g_timeframe_252 = 30;
         else {
            if (TimeFrame == "H1") g_timeframe_252 = 60;
            else {
               if (TimeFrame == "D1") g_timeframe_252 = 1440;
               else g_timeframe_252 = 0;
            }
         }
      }
   }
   gi_272 = StrToInteger(StringSubstr(LondonMarket, 0, 2)) + BrokerTimeShift;
   g_str2int_276 = StrToInteger(StringSubstr(LondonMarket, 3, 2));
   gi_280 = StrToInteger(StringSubstr(LondonMarket, 6, 2)) + BrokerTimeShift;
   g_str2int_284 = StrToInteger(StringSubstr(LondonMarket, 9, 2));
   gi_288 = StrToInteger(StringSubstr(NewYorkMarket, 0, 2)) + BrokerTimeShift;
   g_str2int_292 = StrToInteger(StringSubstr(NewYorkMarket, 3, 2));
   gi_296 = StrToInteger(StringSubstr(NewYorkMarket, 6, 2)) + BrokerTimeShift;
   g_str2int_300 = StrToInteger(StringSubstr(NewYorkMarket, 9, 2));
   gi_304 = StrToInteger(StringSubstr(SydneyMarket, 0, 2)) + BrokerTimeShift;
   g_str2int_308 = StrToInteger(StringSubstr(SydneyMarket, 3, 2));
   gi_312 = StrToInteger(StringSubstr(SydneyMarket, 6, 2)) + BrokerTimeShift;
   g_str2int_316 = StrToInteger(StringSubstr(SydneyMarket, 9, 2));
   gi_320 = StrToInteger(StringSubstr(TokyoMarket, 0, 2)) + BrokerTimeShift;
   g_str2int_324 = StrToInteger(StringSubstr(TokyoMarket, 3, 2));
   gi_328 = StrToInteger(StringSubstr(TokyoMarket, 6, 2)) + BrokerTimeShift;
   g_str2int_332 = StrToInteger(StringSubstr(TokyoMarket, 9, 2));
   return (0);
}

int deinit() {
   ObjectsDeleteAll(0, OBJ_VLINE);
   ObjectDelete("Market_Price_Label");
   return (0);
}

int start() {
   string ls_8;
   int shift_16;
   int ind_counted_4 = IndicatorCounted();
   for (int li_0 = Bars - ind_counted_4 - 1; li_0 >= 0; li_0--) {
      if (DisplayMarkets && g_timeframe_252 != PERIOD_D1) setSessionLine(li_0);
      if (Changing_Colors == TRUE) {
         if (Bid > g_bid_336) FontColor = FontColor1;
         if (Bid < g_bid_336) FontColor = FontColor2;
         g_bid_336 = Bid;
      }
      ls_8 = (iClose(Symbol(), g_timeframe_252, li_0) - g_iclose_256) / MarketInfo(Symbol(), MODE_POINT);
      ls_8 = StringSubstr(ls_8, 0, 8);
      StringTrimRight(ls_8);
      while (StringGetChar(ls_8, StringLen(ls_8) - 1) == '0') ls_8 = StringSubstr(ls_8, 0, StringLen(ls_8) - 1);
      if (StringGetChar(ls_8, StringLen(ls_8) - 1) == '.') ls_8 = StringSubstr(ls_8, 0, StringLen(ls_8) - 1);
      ObjectCreate("Index_Value_Label", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("Index_Value_Label", ls_8, FontSize, FontType, FontColor);
      ObjectSet("Index_Value_Label", OBJPROP_CORNER, WhatCorner);
      ObjectSet("Index_Value_Label", OBJPROP_XDISTANCE, 1);
      ObjectSet("Index_Value_Label", OBJPROP_YDISTANCE, 1);
      shift_16 = iBarShift(NULL, g_timeframe_252, Time[li_0], TRUE);
      if ((TimeDayOfWeek(iTime(NULL, g_timeframe_252, shift_16)) == 1 && TimeDayOfWeek(iTime(NULL, g_timeframe_252, shift_16 + 1)) == 5) || (TimeDayOfWeek(iTime(NULL, g_timeframe_252, shift_16)) == 0 &&
         TimeDayOfWeek(iTime(NULL, g_timeframe_252, shift_16 + 1)) == 5)) g_iclose_256 = iClose(Symbol(), g_timeframe_252, shift_16 + 1);
      if (g_iclose_256 > 0.0 && TimeDayOfWeek(iTime(NULL, g_timeframe_252, li_0)) >= 1) {
         if (g_day_of_week_268 != TimeDayOfWeek(iTime(NULL, g_timeframe_252, li_0))) {
            g_day_of_week_268 = TimeDayOfWeek(iTime(NULL, g_timeframe_252, li_0));
            gi_unused_264 = 0;
         }
         if (DisplayMode == 0) {
            g_ibuf_76[li_0] = (iClose(Symbol(), g_timeframe_252, li_0) - g_iclose_256) / MarketInfo(Symbol(), MODE_POINT);
            continue;
         }
         g_ibuf_76[li_0] = (iClose(Symbol(), g_timeframe_252, li_0) - g_iclose_256) / MarketInfo(Symbol(), MODE_POINT);
      }
   }
   return (0);
}

string formatInteger(int ai_0) {
   if (ai_0 < 10) return ("0" + ai_0);
   return ("" + ai_0);
}

int setSessionLine(int ai_0) {
   if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_272 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_276) {
      ObjectDelete("London Open " + formatInteger(gi_272) + ":" + formatInteger(g_str2int_276));
      ObjectCreate("London Open " + formatInteger(gi_272) + ":" + formatInteger(g_str2int_276), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
      ObjectSet("London Open " + formatInteger(gi_272) + ":" + formatInteger(g_str2int_276), OBJPROP_COLOR, LimeGreen);
      ObjectSet("London Open " + formatInteger(gi_272) + ":" + formatInteger(g_str2int_276), OBJPROP_STYLE, STYLE_DOT);
   } else {
      if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_280 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_284) {
         ObjectDelete("London Close " + formatInteger(gi_280) + ":" + formatInteger(g_str2int_284));
         ObjectCreate("London Close " + formatInteger(gi_280) + ":" + formatInteger(g_str2int_284), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
         ObjectSet("London Close " + formatInteger(gi_280) + ":" + formatInteger(g_str2int_284), OBJPROP_COLOR, LimeGreen);
         ObjectSet("London Close " + formatInteger(gi_280) + ":" + formatInteger(g_str2int_284), OBJPROP_STYLE, STYLE_DOT);
      }
   }
   if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_288 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_292) {
      ObjectDelete("NewYork Open " + formatInteger(gi_288) + ":" + formatInteger(g_str2int_292));
      ObjectCreate("NewYork Open " + formatInteger(gi_288) + ":" + formatInteger(g_str2int_292), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
      ObjectSet("NewYork Open " + formatInteger(gi_288) + ":" + formatInteger(g_str2int_292), OBJPROP_COLOR, Orange);
      ObjectSet("NewYork Open " + formatInteger(gi_288) + ":" + formatInteger(g_str2int_292), OBJPROP_STYLE, STYLE_DOT);
   } else {
      if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_296 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_300) {
         ObjectDelete("NewYork Close " + formatInteger(gi_296) + ":" + formatInteger(g_str2int_300));
         ObjectCreate("NewYork Close " + formatInteger(gi_296) + ":" + formatInteger(g_str2int_300), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
         ObjectSet("NewYork Close " + formatInteger(gi_296) + ":" + formatInteger(g_str2int_300), OBJPROP_COLOR, Orange);
         ObjectSet("NewYork Close " + formatInteger(gi_296) + ":" + formatInteger(g_str2int_300), OBJPROP_STYLE, STYLE_DOT);
      }
   }
   if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_304 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_308) {
      ObjectDelete("Sydney Open " + formatInteger(gi_304) + ":" + formatInteger(g_str2int_308));
      ObjectCreate("Sydney Open " + formatInteger(gi_304) + ":" + formatInteger(g_str2int_308), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
      ObjectSet("Sydney Open " + formatInteger(gi_304) + ":" + formatInteger(g_str2int_308), OBJPROP_COLOR, DodgerBlue);
      ObjectSet("Sydney Open " + formatInteger(gi_304) + ":" + formatInteger(g_str2int_308), OBJPROP_STYLE, STYLE_DOT);
   } else {
      if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_312 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_316) {
         ObjectDelete("Sydney Close " + formatInteger(gi_312) + ":" + formatInteger(g_str2int_316));
         ObjectCreate("Sydney Close " + formatInteger(gi_312) + ":" + formatInteger(g_str2int_316), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
         ObjectSet("Sydney Close " + formatInteger(gi_312) + ":" + formatInteger(g_str2int_316), OBJPROP_COLOR, DodgerBlue);
         ObjectSet("Sydney Close " + formatInteger(gi_312) + ":" + formatInteger(g_str2int_316), OBJPROP_STYLE, STYLE_DOT);
      }
   }
   if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_320 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_324) {
      ObjectDelete("Tokyo Open " + formatInteger(gi_320) + ":" + formatInteger(g_str2int_324));
      ObjectCreate("Tokyo Open " + formatInteger(gi_320) + ":" + formatInteger(g_str2int_324), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
      ObjectSet("Tokyo Open " + formatInteger(gi_320) + ":" + formatInteger(g_str2int_324), OBJPROP_COLOR, Yellow);
      ObjectSet("Tokyo Open " + formatInteger(gi_320) + ":" + formatInteger(g_str2int_324), OBJPROP_STYLE, STYLE_DOT);
   } else {
      if (TimeHour(iTime(NULL, g_timeframe_252, ai_0)) == gi_328 && TimeMinute(iTime(NULL, g_timeframe_252, ai_0)) == g_str2int_332) {
         ObjectDelete("Tokyo Close " + formatInteger(gi_328) + ":" + formatInteger(g_str2int_332));
         ObjectCreate("Tokyo Close " + formatInteger(gi_328) + ":" + formatInteger(g_str2int_332), OBJ_VLINE, 0, iTime(NULL, g_timeframe_252, ai_0), 0);
         ObjectSet("Tokyo Close " + formatInteger(gi_328) + ":" + formatInteger(g_str2int_332), OBJPROP_COLOR, Yellow);
         ObjectSet("Tokyo Close " + formatInteger(gi_328) + ":" + formatInteger(g_str2int_332), OBJPROP_STYLE, STYLE_DOT);
      }
   }
   return (0);
}

int GetCrossingPairIndex(string as_0) {
   if (as_0 == Symbol()) return (0);
   return (-1);
}
