/*
   Generated by EX4-TO-MQ4 decompiler ONE FILE V4.0.218.3
   EX4 ID : 04E20A41724C2645BAEB3FDF008C44EC
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "www.Forex-Breakout-System.com"
#property link      "www.Forex-Breakout-System.com"
#property show_inputs

#property indicator_chart_window

extern string Author = "www.Forex-Breakout-System.com";
extern bool ShowValues = false;
extern bool ShowMidLines = false;
extern bool ShowMidValues = false;
extern color Color_PivotPoint = Green;
extern color Color_R1 = DeepSkyBlue;
extern color Color_R2 = Red;
extern color Color_S1 = Red;
extern color Color_S2 = Red;
extern color Color_M1 = Red;
extern color Color_M2 = Red;
extern color Color_M3 = Red;
extern color Color_M4 = Red;
int g_datetime_132 = 0;

int init() {
   LoadSettings();
   int l_str2time_0 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 00:00");
   int li_4 = l_str2time_0 + 86400;
   string l_name_8 = "Pivot Point";
   ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
   ObjectSet(l_name_8, OBJPROP_COLOR, Color_PivotPoint);
   ObjectSet(l_name_8, OBJPROP_WIDTH, 2);
   ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
   ObjectSet(l_name_8, OBJPROP_RAY, true);
   l_name_8 = "Pivot Point R1";
   ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
   ObjectSet(l_name_8, OBJPROP_COLOR, Color_R1);
   ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
   ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
   ObjectSet(l_name_8, OBJPROP_RAY, true);
   
   l_name_8 = "Pivot Point R2";
   ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
   ObjectSet(l_name_8, OBJPROP_COLOR, Color_R2);
   ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
   ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
   ObjectSet(l_name_8, OBJPROP_RAY, true);
   l_name_8 = "Pivot Point S1";
   ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
   ObjectSet(l_name_8, OBJPROP_COLOR, Color_S1);
   ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
   ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
   ObjectSet(l_name_8, OBJPROP_RAY, true);
   l_name_8 = "Pivot Point S2";
   ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
   ObjectSet(l_name_8, OBJPROP_COLOR, Color_S2);
   ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
   ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
   ObjectSet(l_name_8, OBJPROP_RAY, true);
   if (ShowValues == TRUE) {
      l_name_8 = "Pivot Point Value";
      ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_PivotPoint);
      ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
      l_name_8 = "Pivot Point R1 Value";
      ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_R1);
      ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
      l_name_8 = "Pivot Point R2 Value";
      ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_R2);
      ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
      l_name_8 = "Pivot Point S1 Value";
      ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_S1);
      ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
      l_name_8 = "Pivot Point S2 Value";
      ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_S2);
      ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
   }
   if (ShowMidLines == TRUE) {
      l_name_8 = "Pivot Point M1";
      ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_M1);
      ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
      ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
      ObjectSet(l_name_8, OBJPROP_RAY, FALSE);
      ObjectSet(l_name_8, OBJPROP_STYLE, STYLE_DOT);
      l_name_8 = "Pivot Point M2";
      ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_M2);
      ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
      ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
      ObjectSet(l_name_8, OBJPROP_RAY, FALSE);
      ObjectSet(l_name_8, OBJPROP_STYLE, STYLE_DOT);
      l_name_8 = "Pivot Point M3";
      ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_M3);
      ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
      ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
      ObjectSet(l_name_8, OBJPROP_RAY, FALSE);
      ObjectSet(l_name_8, OBJPROP_STYLE, STYLE_DOT);
      l_name_8 = "Pivot Point M4";
      ObjectCreate(l_name_8, OBJ_TREND, 0, l_str2time_0, Bid);
      ObjectSet(l_name_8, OBJPROP_COLOR, Color_M4);
      ObjectSet(l_name_8, OBJPROP_WIDTH, 1);
      ObjectSet(l_name_8, OBJPROP_BACK, TRUE);
      ObjectSet(l_name_8, OBJPROP_RAY, FALSE);
      ObjectSet(l_name_8, OBJPROP_STYLE, STYLE_DOT);
      if (ShowMidValues == TRUE) {
         l_name_8 = "Pivot Point M1 Value";
         ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
         ObjectSet(l_name_8, OBJPROP_COLOR, Color_M1);
         ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
         l_name_8 = "Pivot Point M2 Value";
         ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
         ObjectSet(l_name_8, OBJPROP_COLOR, Color_M2);
         ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
         l_name_8 = "Pivot Point M3 Value";
         ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
         ObjectSet(l_name_8, OBJPROP_COLOR, Color_M3);
         ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
         l_name_8 = "Pivot Point M4 Value";
         ObjectCreate(l_name_8, OBJ_TEXT, 0, l_str2time_0, Bid);
         ObjectSet(l_name_8, OBJPROP_COLOR, Color_M4);
         ObjectSet(l_name_8, OBJPROP_BACK, FALSE);
      }
   }
   return (0);
}

int deinit() {
   if (UninitializeReason() == REASON_PARAMETERS) ClearSavedValues();
   string l_name_0 = "Pivot Point";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point R1";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point R2";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point S1";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point S2";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point R1 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point R2 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point S1 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point S2 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M1";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M2";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M3";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M4";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M1 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M2 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M3 Value";
   ObjectDelete(l_name_0);
   l_name_0 = "Pivot Point M4 Value";
   ObjectDelete(l_name_0);
   return (0);
}

int start() {
   string l_name_0;
   double l_ihigh_8;
   double l_ilow_16;
   double l_iclose_24;
   double ld_32;
   double ld_40;
   double ld_48;
   double ld_56;
   double ld_64;
   int l_str2time_72;
   int l_str2time_76;
   double ld_80;
   if (TimeCurrent() - g_datetime_132 > 60) {
      g_datetime_132 = TimeCurrent();
      l_ihigh_8 = 0;
      l_ilow_16 = 0;
      l_iclose_24 = 0;
      GetPreviousDayHLC(l_ihigh_8, l_ilow_16, l_iclose_24);
      ld_32 = NormalizeDouble((l_ihigh_8 + l_ilow_16 + l_iclose_24) / 3.0, Digits);
      ld_40 = NormalizeDouble(ld_32 + (l_ihigh_8 - l_ilow_16), Digits);
      ld_48 = NormalizeDouble(ld_32 + (ld_32 - l_ilow_16), Digits);
      ld_56 = NormalizeDouble(ld_32 - (l_ihigh_8 - ld_32), Digits);
      ld_64 = NormalizeDouble(ld_32 - (l_ihigh_8 - l_ilow_16), Digits);
      l_str2time_72 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 00:00");
      l_str2time_76 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 23:59");
      l_name_0 = "Pivot Point";
      ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
      ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
      ObjectSet(l_name_0, OBJPROP_PRICE1, ld_32);
      ObjectSet(l_name_0, OBJPROP_PRICE2, ld_32);
      if (ShowValues == TRUE) {
         l_name_0 = "Pivot Point Value";
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_32);
         ObjectSetText(l_name_0, DoubleToStr(ld_32, Digits), 8);
      }
      l_name_0 = "Pivot Point R1";
      ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
      ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
      ObjectSet(l_name_0, OBJPROP_PRICE1, ld_48);
      ObjectSet(l_name_0, OBJPROP_PRICE2, ld_48);
      if (ShowValues == TRUE) {
         l_name_0 = "Pivot Point R1 Value";
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_48);
         ObjectSetText(l_name_0, DoubleToStr(ld_48, Digits), 8);
      }
      l_name_0 = "Pivot Point R2";
      ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
      ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
      ObjectSet(l_name_0, OBJPROP_PRICE1, ld_40);
      ObjectSet(l_name_0, OBJPROP_PRICE2, ld_40);
      if (ShowValues == TRUE) {
         l_name_0 = "Pivot Point R2 Value";
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_40);
         ObjectSetText(l_name_0, DoubleToStr(ld_40, Digits), 8);
      }
      l_name_0 = "Pivot Point S1";
      ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
      ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
      ObjectSet(l_name_0, OBJPROP_PRICE1, ld_56);
      ObjectSet(l_name_0, OBJPROP_PRICE2, ld_56);
      if (ShowValues == TRUE) {
         l_name_0 = "Pivot Point S1 Value";
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_56);
         ObjectSetText(l_name_0, DoubleToStr(ld_56, Digits), 8);
      }
      l_name_0 = "Pivot Point S2";
      ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
      ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
      ObjectSet(l_name_0, OBJPROP_PRICE1, ld_64);
      ObjectSet(l_name_0, OBJPROP_PRICE2, ld_64);
      if (ShowValues == TRUE) {
         l_name_0 = "Pivot Point S2 Value";
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_64);
         ObjectSetText(l_name_0, DoubleToStr(ld_64, Digits), 8);
      }
      if (ShowMidLines == TRUE) {
         ld_80 = 0;
         l_name_0 = "Pivot Point M1";
         ld_80 = ld_56 - (ld_56 - ld_64) / 2.0;
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
         ObjectSet(l_name_0, OBJPROP_PRICE2, ld_80);
         if (ShowMidValues == TRUE) {
            l_name_0 = "Pivot Point M1 Value";
            ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
            ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
            ObjectSetText(l_name_0, DoubleToStr(ld_80, Digits), 8);
         }
         l_name_0 = "Pivot Point M2";
         ld_80 = ld_32 - (ld_32 - ld_56) / 2.0;
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
         ObjectSet(l_name_0, OBJPROP_PRICE2, ld_80);
         if (ShowMidValues == TRUE) {
            l_name_0 = "Pivot Point M2 Value";
            ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
            ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
            ObjectSetText(l_name_0, DoubleToStr(ld_80, Digits), 8);
         }
         l_name_0 = "Pivot Point M3";
         ld_80 = ld_32 + (ld_48 - ld_32) / 2.0;
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
         ObjectSet(l_name_0, OBJPROP_PRICE2, ld_80);
         if (ShowMidValues == TRUE) {
            l_name_0 = "Pivot Point M3 Value";
            ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
            ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
            ObjectSetText(l_name_0, DoubleToStr(ld_80, Digits), 8);
         }
         l_name_0 = "Pivot Point M4";
         ld_80 = ld_48 + (ld_40 - ld_48) / 2.0;
         ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
         ObjectSet(l_name_0, OBJPROP_TIME2, l_str2time_76);
         ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
         ObjectSet(l_name_0, OBJPROP_PRICE2, ld_80);
         if (ShowMidValues == TRUE) {
            l_name_0 = "Pivot Point M4 Value";
            ObjectSet(l_name_0, OBJPROP_TIME1, l_str2time_72);
            ObjectSet(l_name_0, OBJPROP_PRICE1, ld_80);
            ObjectSetText(l_name_0, DoubleToStr(ld_80, Digits), 8);
         }
      }
   }
   return (0);
}

void GetPreviousDayHLC(double &a_ihigh_0, double &a_ilow_8, double &a_iclose_16) {
   int li_24 = 0;
   if (DayOfWeek() == 1) li_24 = 1;
   a_ihigh_0 = iHigh(Symbol(), PERIOD_D1, li_24 + 1);
   a_ilow_8 = iLow(Symbol(), PERIOD_D1, li_24 + 1);
   a_iclose_16 = iClose(Symbol(), PERIOD_D1, li_24 + 1);
}

void LoadSettings() {
   string lsa_0[100];
   double lda_4[100];
   int l_index_8;
   string ls_16;
   string ls_24;
   string l_dbl2str_32;
   lsa_0[1] = "Color_PivotPoint";
   lda_4[1] = Color_PivotPoint;
   lsa_0[2] = "Color_R1";
   lda_4[2] = Color_R1;
   lsa_0[3] = "Color_R2";
   lda_4[3] = Color_R2;
   lsa_0[4] = "Color_S1";
   lda_4[4] = Color_S1;
   lsa_0[5] = "Color_S2";
   lda_4[5] = Color_S2;
   lsa_0[6] = "Color_M1";
   lda_4[6] = Color_M1;
   lsa_0[7] = "Color_M2";
   lda_4[7] = Color_M2;
   lsa_0[8] = "Color_M3";
   lda_4[8] = Color_M3;
   lsa_0[9] = "Color_M4";
   lda_4[9] = Color_M4;
   int l_file_12 = FileOpen("SAVEDSETTINGS " + WindowExpertName() + ".txt", FILE_BIN|FILE_READ);
   if (l_file_12 != -1) {
      l_index_8 = 0;
      while (FileIsEnding(l_file_12) == FALSE) {
         ls_16 = FileReadString(l_file_12, 64);
         ls_24 = FileReadString(l_file_12, 20);
         for (l_index_8 = 1; l_index_8 <= 9; l_index_8++)
            if (ls_16 == lsa_0[l_index_8]) lda_4[l_index_8] = StrToInteger(ls_24);
      }
      FileClose(l_file_12);
   }
   l_file_12 = FileOpen("SAVEDSETTINGS " + WindowExpertName() + ".txt", FILE_BIN|FILE_WRITE);
   if (l_file_12 != -1) {
      for (l_index_8 = 1; l_index_8 <= 9; l_index_8++) {
         FileWriteString(l_file_12, lsa_0[l_index_8], 64);
         l_dbl2str_32 = DoubleToStr(lda_4[l_index_8], 4);
         FileWriteString(l_file_12, l_dbl2str_32, 20);
      }
   }
   FileClose(l_file_12);
   Color_PivotPoint = lda_4[1];
   Color_R1 = lda_4[2];
   Color_R2 = lda_4[3];
   Color_S1 = lda_4[4];
   Color_S2 = lda_4[5];
   Color_M1 = lda_4[6];
   Color_M2 = lda_4[7];
   Color_M3 = lda_4[8];
   Color_M4 = lda_4[9];
}

void ClearSavedValues() {
   int l_file_0 = FileOpen("SAVEDSETTINGS " + WindowExpertName() + ".txt", FILE_BIN|FILE_WRITE);
   FileClose(l_file_0);
}