/*

*/
#property copyright "Nikelodeon"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

extern bool lines = TRUE;
extern int step = 500;
extern bool Dell = TRUE;
double g_ibuf_88[];
double g_ibuf_92[];
double gd_96;

int init() {
   if (Digits == 4 || Digits == 2) gd_96 = Point;
   else
      if (Digits == 5 || Digits == 3) gd_96 = 10.0 * Point;
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 108);
   SetIndexBuffer(0, g_ibuf_88);
   SetIndexEmptyValue(0, 0.0);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 108);
   SetIndexBuffer(1, g_ibuf_92);
   SetIndexEmptyValue(1, 0.0);
   ObjectsDeleteAll(0, OBJ_TEXT);
   ObjectsDeleteAll(0, OBJ_ARROW);
   ObjectsDeleteAll(0, OBJ_TREND);
   return (0);
}

int deinit() {
   ObjectsDeleteAll(0, OBJ_TEXT);
   ObjectsDeleteAll(0, OBJ_ARROW);
   ObjectsDeleteAll(0, OBJ_TREND);
   return (0);
}

void SetArrow(int ai_0, int a_datetime_4, double a_price_8, int ai_16, color a_color_20) {
   ObjectCreate("Arrow-" + ai_0, OBJ_ARROW, 0, a_datetime_4, a_price_8);
   ObjectSet("Arrow-" + ai_0, OBJPROP_ARROWCODE, ai_16);
   ObjectSet("Arrow-" + ai_0, OBJPROP_COLOR, a_color_20);
}

void SetArrow1(int ai_0, int a_datetime_4, double a_price_8, int ai_16, color a_color_20) {
   ObjectCreate("Arrow+" + ai_0, OBJ_ARROW, 0, a_datetime_4, a_price_8);
   ObjectSet("Arrow+" + ai_0, OBJPROP_ARROWCODE, ai_16);
   ObjectSet("Arrow+" + ai_0, OBJPROP_COLOR, a_color_20);
}

void SetText(int ai_0, int a_datetime_4, double a_price_8, string a_text_16, color a_color_24) {
   ObjectCreate("x" + ai_0, OBJ_TEXT, 0, a_datetime_4, a_price_8);
   ObjectSetText("x" + ai_0, a_text_16);
   ObjectSet("x" + ai_0, OBJPROP_COLOR, a_color_24);
}

void SetText1(int ai_0, int a_datetime_4, double a_price_8, string a_text_16, color a_color_24) {
   ObjectCreate("y" + ai_0, OBJ_TEXT, 0, a_datetime_4, a_price_8);
   ObjectSetText("y" + ai_0, a_text_16);
   ObjectSet("y" + ai_0, OBJPROP_COLOR, a_color_24);
}

void Setline(int ai_0, int a_datetime_4, double a_price_8, int a_datetime_16, double a_price_20, int a_datetime_28) {
   ObjectCreate("-" + ai_0, OBJ_TREND, 0, a_datetime_4, a_price_8, a_datetime_16, a_price_20, a_datetime_28);
   ObjectSet("-" + ai_0, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet("-" + ai_0, OBJPROP_RAY, FALSE);
   ObjectSet("-" + ai_0, OBJPROP_COLOR, Yellow);
}

void Setline1(int ai_0, int a_datetime_4, double a_price_8, int a_datetime_16, double a_price_20, int a_datetime_28) {
   ObjectCreate("+" + ai_0, OBJ_TREND, 0, a_datetime_4, a_price_8, a_datetime_16, a_price_20, a_datetime_28);
   ObjectSet("+" + ai_0, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet("+" + ai_0, OBJPROP_RAY, FALSE);
   ObjectSet("+" + ai_0, OBJPROP_COLOR, LightBlue);
}

int start() {
   int li_104;
   int li_108;
   int li_112;
   int li_116;
   double lda_128[1000];
   double lda_132[1000];
   int lia_136[100];
   int lia_140[100];
   int l_ind_counted_0 = IndicatorCounted();
   bool l_bars_4 = FALSE;
   int li_8 = 0;
   int li_12 = 0;
   int li_16 = 0;
   int li_20 = 0;
   int li_24 = 0;
   bool li_28 = FALSE;
   bool li_32 = FALSE;
   bool li_36 = FALSE;
   bool li_40 = FALSE;
   bool li_44 = FALSE;
   bool li_48 = FALSE;
   bool li_52 = FALSE;
   bool li_56 = FALSE;
   bool li_60 = FALSE;
   bool li_64 = FALSE;
   bool li_68 = FALSE;
   bool li_72 = FALSE;
   bool li_76 = FALSE;
   bool li_80 = FALSE;
   bool li_84 = FALSE;
   bool li_88 = FALSE;
   bool li_92 = FALSE;
   bool li_96 = FALSE;
   int li_unused_124 = 0;
   lia_136[1] = 0;
   if (l_bars_4 != Bars) l_bars_4 = Bars;
   int li_100 = step;
   for (li_12 = li_100; li_12 >= 0; li_12--) {
      li_16 = li_12 + 1;
      li_20 = li_12 + 2;
      li_24 = li_12 + 3;
      if (iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_12) > iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_16) && iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_16) > iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_20) &&
         iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_20) > iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_24)) li_92 = TRUE;
      else li_92 = FALSE;
      if (iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_12) < iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_16) && iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_16) < iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_20) &&
         iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_20) < iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, li_24)) li_96 = TRUE;
      else li_96 = FALSE;
      if (Period() == PERIOD_M5) {
         li_108 = 15;
         li_112 = 5;
      }
      if (Period() == PERIOD_M15) {
         li_108 = 7;
         li_112 = 3;
      }
      if (Period() == PERIOD_H1) {
         li_108 = 25;
         li_112 = 15;
      }
      if (Period() == PERIOD_H4) {
         li_108 = 30;
         li_112 = 20;
      }
      if (Period() == PERIOD_D1) {
         li_108 = 35;
         li_112 = 25;
      }
      if (li_96 && Open[li_20] > Close[li_20] && Open[li_16] > Close[li_20] && Close[li_16] < Open[li_20] && Close[li_16] > Open[li_16]) li_76 = TRUE;
      else li_76 = FALSE;
      if (Open[li_20] > Close[li_20] && Open[li_16] > Close[li_20] && Open[li_16] < Open[li_20] && Close[li_16] > Open[li_20]) li_84 = TRUE;
      else li_84 = FALSE;
      if (Close[li_20] < Open[li_20] && Open[li_16] < Close[li_20] && Close[li_16] > Open[li_20]) li_28 = TRUE;
      else li_28 = FALSE;
      if (!li_28) {
         if (Close[li_20] < Open[li_20] && Close[li_16] > Open[li_16] && Open[li_16] < Close[li_20] && Close[li_16] > Close[li_20] + (Open[li_20] - Close[li_20]) / 2.0) li_36 = TRUE;
         else li_36 = FALSE;
      } else li_36 = FALSE;
      if (Close[li_24] < Open[li_24] && Open[li_20] < Close[li_24] && Close[li_20] < Close[li_24] && (Open[li_16] > Close[li_20] && Open[li_16] > Open[li_20]) && Close[li_16] >= Close[li_24]) li_32 = TRUE;
      else li_32 = FALSE;
      if (Open[li_16] - Low[li_16] > 3.0 * MathMax(High[li_16] - Close[li_16], Close[li_16] - Open[li_16]) && Close[li_16] - Low[li_16] > 3.0 * MathMax(High[li_16] - Close[li_16], Close[li_16] - Open[li_16])) li_40 = TRUE;
      else li_40 = FALSE;
      if (li_92 && Open[li_20] < Close[li_20] && Open[li_16] < Close[li_20] && Close[li_16] > Open[li_20] && Close[li_16] < Open[li_16]) li_80 = TRUE;
      else li_80 = FALSE;
      if (Open[li_20] < Close[li_20] && Open[li_16] < Close[li_20] && Open[li_16] > Open[li_20] && Close[li_16] < Open[li_20]) li_88 = TRUE;
      else li_88 = FALSE;
      if (Close[li_20] > Open[li_20] && Close[li_16] < Open[li_16] && Open[li_16] > Close[li_20] && Close[li_16] < Open[li_20]) li_52 = TRUE;
      else li_52 = FALSE;
      if (!li_52) {
         if (Close[li_20] > Open[li_20] && Open[li_16] > Close[li_20] && Close[li_16] < Close[li_20] - (Close[li_20] - Open[li_20]) / 2.0) li_60 = TRUE;
         else li_60 = FALSE;
      } else li_60 = FALSE;
      if (Close[li_24] > Open[li_24] && Open[li_20] > Close[li_24] && Close[li_20] > Close[li_24] && (Open[li_16] < Close[li_20] && Open[li_16] < Open[li_20]) && Close[li_16] < Close[li_24]) li_56 = TRUE;
      else li_56 = FALSE;
      if (li_92 && High[li_16] - Open[li_16] > 3.0 * MathMax(Close[li_16] - Low[li_16], Open[li_16] - Close[li_16]) && High[li_16] - Close[li_16] > 3.0 * MathMax(Close[li_16] - Low[li_16], Open[li_16] - Close[li_16])) li_64 = TRUE;
      else li_64 = FALSE;
      if (li_28 || li_36 || li_32 || li_76 || li_84 && Close[li_12] > Close[li_16] && Close[li_12] > Open[li_16]) {
         li_44 = TRUE;
         li_48 = TRUE;
      } else {
         g_ibuf_88[li_12] = 0.0;
         li_44 = FALSE;
         li_48 = FALSE;
      }
      if (li_52 || li_60 || li_56 || li_64 || li_80 || li_88 && Close[li_12] < Close[li_16] && Close[li_12] < Open[li_16]) {
         li_68 = TRUE;
         li_72 = TRUE;
      } else {
         g_ibuf_92[li_12] = 0.0;
         li_68 = FALSE;
         li_72 = FALSE;
      }
      if (li_40) {
         if (li_96) {
            li_44 = TRUE;
            li_48 = TRUE;
         } else {
            li_44 = FALSE;
            li_48 = FALSE;
         }
         if (li_92) {
            li_68 = TRUE;
            li_72 = TRUE;
         } else {
            li_68 = FALSE;
            li_72 = FALSE;
         }
      }
      if (li_76) {
         if (li_44) {
            li_104++;
            lda_128[li_104] = Low[li_16];
            Setline(li_104, Time[li_16], lda_128[li_104], Time[li_12], lda_128[li_104], 65280);
            SetText(li_104, Time[li_16], Low[li_16] - li_108 * gd_96, "BullHarami", Lime);
         }
         if (li_48) SetArrow(li_104, Time[li_16], Low[li_16] - li_112 * gd_96, SYMBOL_ARROWUP, Lime);
      }
      if (li_84) {
         if (li_44) {
            li_104++;
            SetText(li_104, Time[li_16], Low[li_16] - li_108 * gd_96, "BullCross", Aqua);
            lda_128[li_104] = Low[li_16];
            Setline(li_104, Time[li_16], lda_128[li_104], Time[li_12], lda_128[li_104], 16776960);
         }
         if (li_48) SetArrow(li_104, Time[li_16], Low[li_16] - li_112 * gd_96, SYMBOL_ARROWUP, Aqua);
      }
      if (li_28) {
         if (li_44) {
            li_104++;
            lda_128[li_104] = Low[li_16];
            Setline(li_104, Time[li_16], lda_128[li_104], Time[li_12], lda_128[li_104], 16748574);
            SetText(li_104, Time[li_16], Low[li_16] - li_108 * gd_96, "BullEngulf", DodgerBlue);
         }
         if (li_48) SetArrow(li_104, Time[li_16], Low[li_16] - li_112 * gd_96, SYMBOL_ARROWUP, DodgerBlue);
      }
      if (li_36) {
         if (li_44) {
            li_104++;
            lda_128[li_104] = Low[li_16];
            Setline(li_104, Time[li_16], lda_128[li_104], Time[li_12], lda_128[li_104], 16776960);
            SetText(li_104, Time[li_16], Low[li_16] - li_108 * gd_96, "BullPierce", Aqua);
         }
         if (li_48) SetArrow(li_104, Time[li_16], Low[li_16] - li_112 * gd_96, SYMBOL_ARROWUP, Aqua);
      }
      if (li_32) {
         if (li_44) {
            li_104++;
            SetText(li_104, Time[li_20], Low[li_20] - li_108 * gd_96, "MorningStar", Aqua);
            lda_128[li_104] = Low[li_20];
            Setline(li_104, Time[li_20], lda_128[li_104], Time[li_12], lda_128[li_104], 16776960);
         }
         if (li_48) SetArrow(li_104, Time[li_20], Low[li_20] - li_112 * gd_96, SYMBOL_ARROWUP, Aqua);
      }
      if (li_40) {
         if (li_44) {
            li_104++;
            SetText(li_104, Time[li_16], Low[li_16] - li_108 * gd_96, "Hammer", OrangeRed);
            lda_128[li_104] = Low[li_16];
            Setline(li_104, Time[li_16], lda_128[li_104], Time[li_12], lda_128[li_104], 17919);
         }
         if (li_48) SetArrow(li_104, Time[li_16], Low[li_16] - li_112 * gd_96, SYMBOL_ARROWUP, OrangeRed);
      }
      if (li_80) {
         if (li_68) {
            li_116++;
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 3937500);
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "BearHarami", Crimson);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, Crimson);
      }
      if (li_88) {
         if (li_68) {
            li_116++;
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "BearCross", Crimson);
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 3937500);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, Crimson);
      }
      if (li_40) {
         if (li_68) {
            li_116++;
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "Hammer", OrangeRed);
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 17919);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, OrangeRed);
      }
      if (li_52) {
         if (li_68) {
            li_116++;
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 3937500);
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "BearEngulf", Crimson);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, Crimson);
      }
      if (li_60) {
         if (li_68) {
            li_116++;
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 3937500);
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "DarkCloud", Crimson);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, Crimson);
      }
      if (li_56) {
         if (li_68) {
            li_116++;
            lda_132[li_116] = High[li_20];
            Setline1(li_116, Time[li_20], lda_132[li_116], Time[li_12], lda_132[li_116], 16711935);
            SetText1(li_116, Time[li_20], High[li_20] + (li_108 + 15) * gd_96, "EveningStar", Fuchsia);
         }
         if (li_72) SetArrow1(li_116, Time[li_20], High[li_20] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, Fuchsia);
      }
      if (li_64) {
         if (li_68) {
            li_116++;
            SetText1(li_116, Time[li_16], High[li_16] + (li_108 + 15) * gd_96, "Shooter", OrangeRed);
            lda_132[li_116] = High[li_16];
            Setline1(li_116, Time[li_16], lda_132[li_116], Time[li_12], lda_132[li_116], 16711680);
         }
         if (li_72) SetArrow1(li_116, Time[li_16], High[li_16] + (li_112 + 10) * gd_96, SYMBOL_ARROWDOWN, OrangeRed);
      }
      if (lines) {
         ObjectMove("-" + li_104, 1, Time[1], lda_128[li_104]);
         ObjectMove("+" + li_116, 1, Time[1], lda_132[li_116]);
         for (int li_144 = 1; li_144 < 50; li_144++) {
            if (Close[li_12] < lda_128[li_144]) {
               ObjectSet("-" + li_144, OBJPROP_COLOR, DodgerBlue);
               ObjectSet("-" + li_144, OBJPROP_STYLE, STYLE_DASHDOT);
               ObjectSet("x" + li_144, OBJPROP_COLOR, DarkBlue);
               ObjectSet("Arrow-" + li_144, OBJPROP_COLOR, DodgerBlue);
               if (Dell) {
                  ObjectDelete("-" + li_144);
                  ObjectDelete("x" + li_144);
                  ObjectDelete("Arrow-" + li_144);
               }
            }
         }
         for (int li_148 = 1; li_148 < 50; li_148++) {
            if (Close[li_12] > lda_132[li_148]) {
               ObjectSet("+" + li_148, OBJPROP_COLOR, White);
               ObjectSet("+" + li_148, OBJPROP_STYLE, STYLE_DASHDOT);
               ObjectSet("y" + li_148, OBJPROP_COLOR, White);
               ObjectSet("Arrow+" + li_148, OBJPROP_COLOR, White);
               if (Dell) {
                  ObjectDelete("+" + li_148);
                  ObjectDelete("y" + li_148);
                  ObjectDelete("Arrow+" + li_148);
               }
            }
         }
      }
      li_8 -= 1;
   }
   return (0);
}
