
#property copyright ""
#property link      ""

#property indicator_chart_window

extern int pipschange = 20;
extern int SL = 30;
extern bool show_daily_pivot = TRUE;
extern bool show_hilo_yesterday = TRUE;
extern bool show_Yrangocpivot = TRUE;
string gs_96 = "Pivot=";
string gs_104 = "S1=";
string gs_112 = "S2=";
string gs_120 = "S3=";
string gs_128 = "R1=";
string gs_136 = "R2=";
string gs_144 = "R3=";
string gs_152 = "Open=";
string gs_160 = " Resistance=";
string gs_168 = " Buy Breakout=";
string gs_176 = " Reversal (Sell)=";
string gs_184 = " Support=";
string gs_192 = " Sell Breakout=";
string gs_200 = " Reversal (Buy)=";
string g_str_concat_208;
double gd_216;
double gd_224;
double gd_232;
double gd_240;
double gd_248;
double gd_256;
double gd_264;
int ti_0;
double gd_280;
double gd_288;
double gd_296;
double gd_304;
double gd_312;
double gd_320;
double gd_328;
double gd_336;
double g_iopen_344;
double gd_352;
double gd_360;
double gd_368;
double gd_376;
double gd_384;
double gd_392;
double gd_400;
int g_str2time_408;
int g_str2time_412;
double gd_416 = 0.0;
double gd_424 = 0.0;
double gd_432 = 0.0;
double gd_440 = 0.0;
double gd_448 = 0.0;
double gd_456 = 0.0;
string gs_464 = "yrango forex";

color word_color = White;
color word_color2 = White;
int init() {
   ///Yrangodelete();

   IndicatorShortName(gs_464);
   return (0);
}

int deinit() {
   ///Yrangodelete();
   return (0);
}

int start() {
   double ld_8;
   double ld_16;
   double ld_24;
   double lda_68[1][6];
   double ld_72;
   double ld_80;
   double ld_88;
   double l_iopen_100;
   double l_ihigh_108;
   double l_ilow_116;
   double l_iclose_124;
   string ls_132;
   string ls_140;
   string ls_148;
   string l_dbl2str_156;
   string l_dbl2str_164;
   string ls_unused_172;
   string l_dbl2str_180;
   string l_str_concat_188;
   string l_str_concat_196;
   int li_204;
   int l_ind_counted_4 = IndicatorCounted();
   double l_pips_36 = 1;
   bool li_44 = FALSE;
   double ld_48 = MarketInfo(Symbol(), MODE_SPREAD);
   if (Digits == 5 || Digits == 3) {
      l_pips_36 = 10;
      ld_48 /= 10.0;
      li_44 = TRUE;
   }
   double ld_56 = Point * l_pips_36;
   int li_64 = Bars - l_ind_counted_4 - 1;
   creataalltext();
  
   if (l_ind_counted_4 < 0) return (-1);
   for (int li_0 = li_64; li_0 >= 0; li_0--) {
      ArrayCopyRates(lda_68, Symbol(), PERIOD_D1);
      if (DayOfWeek() == 1) {
         if (TimeDayOfWeek(iTime(Symbol(), PERIOD_D1, 1)) == 5) {
            ld_72 = lda_68[1][4];
            ld_80 = lda_68[1][3];
            ld_88 = lda_68[1][2];
         } else {
            for (int li_96 = 5; li_96 >= 0; li_96--) {
               if (TimeDayOfWeek(iTime(Symbol(), PERIOD_D1, li_96)) == 5) {
                  ld_72 = lda_68[li_96][4];
                  ld_80 = lda_68[li_96][3];
                  ld_88 = lda_68[li_96][2];
                  break;
               }
            }
         }
      } else {
         ld_72 = lda_68[1][4];
         ld_80 = lda_68[1][3];
         ld_88 = lda_68[1][2];
      }
      gd_232 = ld_72;
      gd_216 = ld_80;
      gd_224 = ld_88;
      g_iopen_344 = iOpen(Symbol(), PERIOD_D1, 0);
      gd_240 = (gd_216 + gd_224 + gd_232) / 3.0;
      gd_248 = 2.0 * gd_240 - gd_216;
      gd_256 = gd_240 - (gd_216 - gd_224);
      gd_264 = 2.0 * gd_240 - (2.0 * gd_216 - gd_224);
      ti_0 = 2.0 * gd_240 - gd_224;
      gd_280 = gd_240 + (gd_216 - gd_224);
      gd_288 = 2.0 * gd_240 + (gd_216 - 2.0 * gd_224);
      gd_368 = gd_216 / gd_224 * gd_232;
      gd_360 = (gd_216 / gd_224 + 0.83) / 1.83 * gd_232;
      gd_352 = (gd_216 / gd_224 + 2.66) / 3.66 * gd_232;
      gd_392 = gd_232 - (gd_368 - gd_232);
      gd_384 = gd_232 - (gd_360 - gd_232);
      gd_376 = gd_232 - (gd_352 - gd_232);
      gd_296 = gd_240 - (pipschange + 1) * ld_56;
      gd_304 = gd_240 + (pipschange + 1) * ld_56;
      ld_8 = g_iopen_344 + pipschange * ld_56;
      ld_16 = g_iopen_344 - pipschange * ld_56;
      if (g_iopen_344 > gd_240) ld_24 = g_iopen_344 - gd_240;
      else ld_24 = gd_240 - g_iopen_344;
      if (ld_24 >= pipschange / 2 * ld_56) {
         gd_296 = ld_16;
         gd_304 = ld_8;
      }
      gd_416 = 0;
      gd_424 = 0;
      gd_432 = 0;
      gd_440 = 0;
      gd_448 = 0;
      gd_456 = 0;
      gd_416 = (iHigh(Symbol(), PERIOD_D1, 1) - iLow(Symbol(), PERIOD_D1, 1)) / ld_56;
      for (gd_456 = 1; gd_456 <= 5.0; gd_456++) gd_424 += (iHigh(Symbol(), PERIOD_D1, gd_456) - iLow(Symbol(), PERIOD_D1, gd_456)) / ld_56;
      for (gd_456 = 1; gd_456 <= 10.0; gd_456++) gd_432 += (iHigh(Symbol(), PERIOD_D1, gd_456) - iLow(Symbol(), PERIOD_D1, gd_456)) / ld_56;
      for (gd_456 = 1; gd_456 <= 20.0; gd_456++) gd_440 += (iHigh(Symbol(), PERIOD_D1, gd_456) - iLow(Symbol(), PERIOD_D1, gd_456)) / ld_56;
      gd_424 /= 5.0;
      gd_432 /= 10.0;
      gd_440 /= 20.0;
      gd_448 = (gd_416 + gd_424 + gd_432 + gd_440) / 4.0;
      l_iopen_100 = iOpen(Symbol(), PERIOD_D1, 0);
      l_ihigh_108 = iHigh(Symbol(), PERIOD_D1, 0);
      l_ilow_116 = iLow(Symbol(), PERIOD_D1, 0);
      l_iclose_124 = iClose(Symbol(), PERIOD_D1, 0);
      ls_132 = DoubleToStr((l_iclose_124 - l_iopen_100) / ld_56, li_44);
      ls_132 = StringConcatenate(ls_132, "   (", l_iclose_124, ")");
      ls_140 = DoubleToStr((l_ihigh_108 - l_iopen_100) / ld_56, li_44);
      ls_140 = StringConcatenate(ls_140, "   (", l_ihigh_108, ")");
      ls_148 = DoubleToStr((l_ilow_116 - l_iopen_100) / ld_56, li_44);
      ls_148 = StringConcatenate(ls_148, "   (", l_ilow_116, ")");
      l_dbl2str_156 = DoubleToStr(ld_48, li_44);
      l_dbl2str_164 = DoubleToStr(gd_448, Digits - 4);
      ls_unused_172 = (iHigh(Symbol(), PERIOD_D1, 1) - iLow(Symbol(), PERIOD_D1, 1)) / ld_56;
      l_dbl2str_180 = DoubleToStr((l_ihigh_108 - l_ilow_116) / ld_56, li_44);
      gd_312 = gd_296 - pipschange * ld_56;
      gd_328 = gd_296 + SL * ld_56;
      gd_320 = gd_304 + pipschange * ld_56;
      gd_336 = gd_304 - SL * ld_56;
      l_str_concat_188 = StringConcatenate(gd_304, " TP# ", gd_320, " SL# ", gd_336);
      l_str_concat_196 = StringConcatenate(gd_296, " TP# ", gd_312, " SL# ", gd_328);
      Makelabel("YrangoOpenPrice label", StringConcatenate(gs_152, g_iopen_344), Lime, g_iopen_344, 0);
      Makeline("YrangoOpenPrice line", Lime, g_iopen_344);
      if (show_hilo_yesterday == TRUE) {
         Makelabel("YrangoYesterdayLow label", StringConcatenate("Yesterday Low=", gd_224), White, gd_224, 0);
         Makeline("YrangoYesterdayLow line", White, gd_224);
         Makelabel("YrangoYesterdayHigh label", StringConcatenate("Yesterday High=", gd_216), White, gd_216, 0);
         Makeline("YrangoYesterdayHigh line", White, gd_216);
      }
      if (show_daily_pivot == TRUE) {
         Makelabel("YrangoDailyPivot label", StringConcatenate(gs_96, gd_240), White, gd_240, 0);
         Makeline("YrangoDailyPivot line", White, gd_240);
         Makelabel("YrangoDailyS1 label", StringConcatenate(gs_104, gd_248), White, gd_248, 0);
         Makeline("YrangoDailyS1 line", Red, gd_248);
         Makelabel("YrangoDailyS2 label", StringConcatenate(gs_112, gd_256), White, gd_256, 0);
         Makeline("YrangoDailyS2 line", Red, gd_256);
         Makelabel("YrangoDailyS3 label", StringConcatenate(gs_120, gd_264), White, gd_264, 0);
         Makeline("YrangoDailyS3 line", Red, gd_264);
         Makelabel("YrangoDailyR1 label", StringConcatenate(gs_128, ti_0), White, ti_0, 5);
         Makeline("YrangoDailyR1 line", White, ti_0);
         Makelabel("YrangoDailyR2 label", StringConcatenate(gs_136, gd_280), White, gd_280, 5);
         Makeline("YrangoDailyR2 line", White, gd_280);
         Makelabel("YrangoDailyR3 label", StringConcatenate(gs_144, gd_288), White, gd_288, 5);
         Makeline("YrangoDailyR3 line", White, gd_288);
      }
      if (show_Yrangocpivot == TRUE) {
         Makeline("YrangocH5 line", White, gd_368);
         Makelabel("YrangocH5 label", StringConcatenate(gs_160, gd_368), White, gd_368, 5);
         Makeline("YrangocH4 line", White, gd_360);
         Makelabel("YrangocH4 label", StringConcatenate(gs_168, gd_360), White, gd_360, 5);
         Makeline("YrangocH3 line", White, gd_352);
         Makelabel("YrangocH3 label", StringConcatenate(gs_176, gd_352), White, gd_352, 5);
         Makeline("YrangocL5 line", Red, gd_392);
         Makelabel("YrangocL5 label", StringConcatenate(gs_184, gd_392), White, gd_392, 0);
         Makeline("YrangocL4 line", Red, gd_384);
         Makelabel("YrangocL4 label", StringConcatenate(gs_192, gd_384), White, gd_384, 0);
         Makeline("YrangocL3 line", Red, gd_376);
         Makelabel("YrangocL3 label", StringConcatenate(gs_200, gd_376), White, gd_376, 0);
      }
      g_str_concat_208 = "\n";
      //g_str_concat_208 = StringConcatenate(g_str_concat_208, " Yrango Forex , Bulgaria\n");
      //g_str_concat_208 = StringConcatenate(g_str_concat_208, " \n\n");
      Comment(g_str_concat_208);
      li_204 = 65535;
      settext("spread_value_label", l_dbl2str_156, 8, li_204, 90, 60);
      if ((l_iclose_124 - l_iopen_100) / ld_56 < 0.0) li_204 = 255;
      if ((l_iclose_124 - l_iopen_100) / ld_56 > 0.0) li_204 = 65280;
      settext("change_value_label", ls_132, 20, li_204, 90, 90);
      li_204 = 65535;
      settext("highest_value_label", ls_140, 8, li_204, 90, 80);
      settext("lowest_value_label", ls_148, 8, li_204, 90, 120);
      settext("hilo_value_label", l_dbl2str_180, 8, li_204, 90, 140);
      settext("dav_value_label", l_dbl2str_164, 8, li_204, 90, 150);
      settext("buy_trap_value_label", l_str_concat_188, 8, li_204, 90, 170);
      settext("sell_trap_value_label", l_str_concat_196, 8, li_204, 90, 190);
   }
   return (0);
}

///void Yrangodelete() {
///   ObjectDelete("YrangoWeeklyS1 label");
///   ObjectDelete("YrangoWeeklyS1 line");
///   ObjectDelete("YrangoWeeklyR1 label");
///   ObjectDelete("YrangoWeeklyR1 line");
///   ObjectDelete("YrangoYesterdayLow label");
///   ObjectDelete("YrangoYesterdayLow line");
///   ObjectDelete("YrangoYesterdayHigh label");
///   ObjectDelete("YrangoYesterdayHigh line");
///   ObjectDelete("YrangoOpenPrice line");
///   ObjectDelete("YrangoOpenPrice label");
///   ObjectDelete("YrangoDailyPivot line");
///   ObjectDelete("YrangoDailyPivot label");
///   ObjectDelete("YrangoDailyS1 label");
///   ObjectDelete("YrangoDailyS1 line");
///   ObjectDelete("YrangoDailyS2 label");
///   ObjectDelete("YrangoDailyS2 line");
///   ObjectDelete("YrangoDailyS3 label");
///   ObjectDelete("YrangoDailyS3 line");
///   ObjectDelete("YrangoDailyR1 label");
///   ObjectDelete("YrangoDailyR1 line");
///   ObjectDelete("YrangoDailyR2 label");
///   ObjectDelete("YrangoDailyR2 line");
///   ObjectDelete("YrangoDailyR3 label");
///   ObjectDelete("YrangoDailyR3 line");
///   ObjectDelete("YrangocH5 line");
///   ObjectDelete("YrangocH5 label");
///   ObjectDelete("YrangocH4 line");
///   ObjectDelete("YrangocH4 label");
///   ObjectDelete("YrangocH3 line");
///   ObjectDelete("YrangocH3 label");
///   ObjectDelete("YrangocL5 line");
///   ObjectDelete("YrangocL5 label");
///   ObjectDelete("YrangocL4 line");
///   ObjectDelete("YrangocL4 label");
///   ObjectDelete("YrangocL3 line");
///   ObjectDelete("YrangocL3 label");
///   ObjectDelete("change_label");
///   ObjectDelete("change_value_label");
///   ObjectDelete("hilo_label");
///   ObjectDelete("hilo_value_label");
///   ObjectDelete("dav_label");
///   ObjectDelete("dav_value_label");
///   ObjectDelete("highest_label");
///   ObjectDelete("highest_value_label");
///   ObjectDelete("lowest_label");
///   ObjectDelete("lowest_value_label");
///   ObjectDelete("spread_label");
///   ObjectDelete("spread_value_label");
///   ObjectDelete("buy_trap_label");
///   ObjectDelete("buy_trap_value_label");
///   ObjectDelete("sell_trap_label");
///   ObjectDelete("sell_trap_value_label");
///   Comment("");
///}


void Makeline(string a_name_0, color a_color_8, double ad_12) {
   g_str2time_408 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 00:00");
   g_str2time_412 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 23:00");
   if (ObjectFind(a_name_0) != 0) ObjectCreate(a_name_0, OBJ_TREND, 0, 0, 0, 0);
   ObjectSet(a_name_0, OBJPROP_STYLE, STYLE_DOT);
   ObjectSet(a_name_0, OBJPROP_COLOR, a_color_8);
   ObjectSet(a_name_0, OBJPROP_WIDTH, 1);
   ObjectSet(a_name_0, OBJPROP_TIME1, g_str2time_408);
   ObjectSet(a_name_0, OBJPROP_TIME2, g_str2time_412);
   ObjectSet(a_name_0, OBJPROP_PRICE1, ad_12);
   ObjectSet(a_name_0, OBJPROP_PRICE2, ad_12);
   ObjectSet(a_name_0, OBJPROP_RAY, FALSE);
}

void Makelabel(string a_name_0, string a_text_8, color a_color_16, double ad_20, int ai_28) {
   if (ObjectFind(a_name_0) != 0) ObjectCreate(a_name_0, OBJ_TEXT, 0, 0, 0);
   ObjectMove(a_name_0, 0, Time[0], ad_20 + ai_28 * gd_400);
   ObjectSetText(a_name_0, a_text_8, 8, "arial", word_color);
}

void creataalltext() {
   int li_0 = 65535;
   createtext("spread_label");
   settext("spread_label", "Spread:", 8, li_0, 5, 60);
   createtext("spread_value_label");
   createtext("highest_label");
   settext("highest_label", "Today Highest:", 8, li_0, 5, 80);
   createtext("highest_value_label");
   createtext("change_label");
   settext("change_label", "Change:", 8, li_0, 5, 100);
   createtext("change_value_label");
   createtext("lowest_label");
   settext("lowest_label", "Today Lowest:", 8, li_0, 5, 120);
   createtext("lowest_value_label");
   createtext("hilo_label");
   settext("hilo_label", "Hi to Low:", 8, li_0, 5, 140);
   createtext("hilo_value_label");
   //createtext("dav_label");
   //settext("dav_label", "Daily Average:", 8, li_0, 5, 150);
   //createtext("dav_value_label");
   //createtext("buy_trap_label");
   //settext("buy_trap_label", "Buy Trap: ", 8, li_0, 5, 170);
   //createtext("buy_trap_value_label");
   //createtext("sell_trap_label");
   //settext("sell_trap_label", "Sell Trap: ", 8, li_0, 5, 190);
   //createtext("sell_trap_value_label");
}

void createtext(string a_name_0) {
   ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0);
}

void settext(string a_name_0, string a_text_8, int a_fontsize_16, color a_color_20, int a_x_24, int a_y_28) {
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_24);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_28);
   ObjectSetText(a_name_0, a_text_8, a_fontsize_16, "Arial", word_color2);
}