
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red

extern int NumBars = 499;
extern int EnableAlerts = 1;
extern int SignalID = 0;
double G_ibuf_88[];
double G_ibuf_92[];
double Gd_96;
double Gd_104 = 0.0;


int init() {
   string Lsa_0[256];
   for (int index_4 = 0; index_4 < 256; index_4++) Lsa_0[index_4] = CharToStr(index_4);
   int str2int_8 = StrToInteger(Lsa_0[67] + Lsa_0[111] + Lsa_0[112] + Lsa_0[121] + Lsa_0[32] + Lsa_0[82] + Lsa_0[105] + Lsa_0[103] + Lsa_0[104] + Lsa_0[116] + Lsa_0[32] +
      Lsa_0[169] + Lsa_0[32] + Lsa_0[75] + Lsa_0[97] + Lsa_0[122] + Lsa_0[97] + Lsa_0[111] + Lsa_0[111] + Lsa_0[32] + Lsa_0[50] + Lsa_0[48] + Lsa_0[49] + Lsa_0[49] + Lsa_0[32]);
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexBuffer(0, G_ibuf_88);
   SetIndexArrow(0, 159);
   SetIndexEmptyValue(0, 0.0);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexBuffer(1, G_ibuf_92);
   SetIndexArrow(1, 159);
   SetIndexEmptyValue(1, 0.0);
   Gd_96 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
   SetIndexDrawBegin(0, 0);
   return (0);
}


int deinit() {
   return (0);
}


int start() {
   double Lda_60[100];
   int ind_counted_0 = IndicatorCounted();
   int Li_4 = 9;
   double Ld_8 = 9.0;
   double Ld_16 = 1.1;
   int Li_24 = 0;
   int Li_28 = 0;
   bool Li_32 = TRUE;
   double Ld_36 = 0;
   double Ld_44 = 0;
   double Ld_52 = 0;
   int index_64 = 0;
   double Ld_68 = 0;
   int index_76 = 0;
   double Ld_80 = 0;
   double Ld_unused_88 = 0;
   double Ld_96 = 0;
   int Li_104 = 0;
   int Li_108 = 0;
   double iatr_112 = 0;
   double Ld_120 = 5;
   double Ld_unused_128 = 15;
   double Ld_136 = 0;
   double Ld_144 = 0;
   double Ld_unused_152 = 0;
   double Ld_unused_160 = 0;
   double Ld_unused_168 = 0;
   double Ld_unused_176 = 0;
   double Ld_unused_184 = 0;
   double Ld_unused_192 = 0;
   double Ld_unused_200 = 0;
   double Ld_unused_208 = 0;
   double Ld_unused_216 = 0;
   double Ld_unused_224 = 0;
   double Ld_unused_232 = 0;
   double Ld_unused_240 = 0;
   double Ld_unused_248 = 0;
   double Ld_unused_256 = 0;
   double Ld_unused_264 = 0;
   double Ld_unused_272 = 0;
   double Ld_unused_280 = 0;
   double Ld_unused_288 = 0;
   double Ld_unused_296 = 0;
   double Ld_unused_304 = 0;
   double Ld_unused_312 = 0;
   double Ld_unused_320 = 0;
   double Ld_unused_328 = 0;
   if (Bars < NumBars) Li_24 = Bars;
   else Li_24 = NumBars;
   if (Close[Li_24 - 2] > Close[Li_24 - 1]) Li_32 = TRUE;
   else Li_32 = FALSE;
   Ld_36 = Close[Li_24 - 2];
   for (Li_28 = Li_24 - 3; Li_28 >= 0; Li_28--) {
      Ld_52 = Gd_96 + High[Li_28] - Low[Li_28];
      if (MathAbs(Gd_96 + High[Li_28] - (Close[Li_28 + 1])) > Ld_52) Ld_52 = MathAbs(Gd_96 + High[Li_28] - (Close[Li_28 + 1]));
      if (MathAbs(Low[Li_28] - (Close[Li_28 + 1])) > Ld_52) Ld_52 = MathAbs(Low[Li_28] - (Close[Li_28 + 1]));
      if (Li_28 == Li_24 - 3) for (index_76 = 0; Li_28 <= Li_4 - 1; index_76++) Lda_60[index_76] = Ld_52;
      Lda_60[index_64] = Ld_52;
      Ld_68 = 0;
      Ld_80 = Li_4;
      Li_108 = index_64;
      for (index_76 = 0; index_76 <= Li_4 - 1; index_76++) {
         Ld_68 += Lda_60[Li_108] * Ld_80;
         Ld_80 -= 1.0;
         Li_108--;
         if (Li_108 == -1) Li_108 = Li_4 - 1;
      }
      Ld_68 = 2.0 * Ld_68 / (Ld_8 * (Ld_8 + 1.0));
      index_64++;
      if (index_64 == Li_4) index_64 = 0;
      Ld_44 = Ld_16 * Ld_68;
      if (Li_32 && Low[Li_28] < Ld_36 - Ld_44) {
         Li_32 = FALSE;
         Ld_36 = Gd_96 + High[Li_28];
      }
      if ((!Li_32) && Gd_96 + High[Li_28] > Ld_36 + Ld_44) {
         Li_32 = TRUE;
         Ld_36 = Low[Li_28];
      }
      if (Li_32 && Low[Li_28] > Ld_36) Ld_36 = Low[Li_28];
      if ((!Li_32) && Gd_96 + High[Li_28] < Ld_36) Ld_36 = Gd_96 + High[Li_28];
      iatr_112 = iATR(NULL, 0, 10, Li_28);
      Ld_136 = 0;
      Ld_144 = 0;
      if (Li_32) {
         if (Li_104 != 1) Ld_96 = Low[Li_28] - iatr_112 * Ld_120 / 5.6;
         if (Li_104 == 1) Ld_96 = -1.0;
         if (Ld_96 > 0.0) {
            Ld_136 = Ld_96;
            Ld_144 = 0;
         } else {
            Ld_136 = 0;
            Ld_144 = 0;
         }
         G_ibuf_88[Li_28] = Ld_136;
         Li_104 = 1;
      } else {
         if (Li_104 != 2) Ld_96 = Gd_96 + High[Li_28] + iatr_112 * Ld_120 / 5.6;
         if (Li_104 == 2) Ld_96 = -1.0;
         if (Ld_96 > 0.0) {
            Ld_136 = 0;
            Ld_144 = Ld_96;
         } else {
            Ld_136 = 0;
            Ld_144 = 0;
         }
         G_ibuf_92[Li_28] = Ld_144;
         Li_104 = 2;
      }
   }
   if (EnableAlerts == 1) {
      if (Ld_136 > 0.0 && Gd_104 != 1.0) {
         Gd_104 = 1;
         Alert(Symbol(), " ", Period(), " Alert!! ", "BUY SIGNAL");
      }
      if (Ld_144 > 0.0 && Gd_104 != 2.0) {
         Gd_104 = 2;
         Alert(Symbol(), " ", Period(), " Alert!! ", "SELL SIGNAL");
      }
   }
   return (0);
}
