/*
   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 indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Yellow
#property indicator_width1 3
#property indicator_style1 0
#property indicator_color2 Black
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Yellow
#property indicator_color6 Lime
#property indicator_width6 2
#property indicator_color7 OrangeRed
#property indicator_width7 2

extern int KeelOver = 55;
extern int Slalom = 17;
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
int gi_112;
int gi_116;
int gi_120;
int gi_124 = 3;
int gi_128;
int gi_132;
int gi_136;
int gi_140;
double gd_144;
double gd_152;
double gd_160;
double g_low_168;
double g_high_176;
double g_low_184;
double g_high_192;
double gd_200;
double gd_208;
double g_high_216;
double g_low_224;
bool gi_232;
bool gi_236;
bool gi_240;
bool gi_244;
bool gi_unused_248 = FALSE;
string gs_none_252 = "None";

int init() {
   SetIndexBuffer(0, g_ibuf_84);
   SetIndexStyle(0, DRAW_SECTION, STYLE_SOLID);
   SetIndexEmptyValue(0, 0.0);
   SetIndexBuffer(1, g_ibuf_88);
   SetIndexStyle(1, DRAW_NONE);
   SetIndexEmptyValue(1, 0.0);
   SetIndexBuffer(2, g_ibuf_92);
   SetIndexStyle(2, DRAW_NONE);
   SetIndexEmptyValue(2, 0.0);
   SetIndexBuffer(3, g_ibuf_96);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexEmptyValue(3, 0.0);
   SetIndexBuffer(4, g_ibuf_100);
   SetIndexStyle(4, DRAW_ARROW);
   SetIndexArrow(4, 108);
   SetIndexEmptyValue(4, 0.0);
   SetIndexBuffer(5, g_ibuf_104);
   SetIndexStyle(5, DRAW_ARROW);
   SetIndexArrow(5, 233);
   SetIndexEmptyValue(5, 0.0);
   SetIndexBuffer(6, g_ibuf_108);
   SetIndexStyle(6, DRAW_ARROW);
   SetIndexArrow(6, 234);
   SetIndexEmptyValue(6, 0.0);
   return (0);
}

int start() {
   gi_120 = Bars - KeelOver;
   gd_152 = Ask - Bid;
   if (gi_120 <= 3 * KeelOver) return (-1);
   if (KeelOver <= 2 * Slalom) return (-1);
   for (gi_112 = Bars - 1; gi_112 > Bars - KeelOver; gi_112--) {
      g_ibuf_96[gi_112] = 0.0;
      g_ibuf_92[gi_112] = 0.0;
      g_ibuf_88[gi_112] = 0.0;
      g_ibuf_84[gi_112] = 0.0;
      g_ibuf_100[gi_112] = 0.0;
      g_ibuf_104[gi_112] = 0.0;
      g_ibuf_108[gi_112] = 0.0;
   }
   The_First_Crusade();
   gd_200 = -1;
   gi_128 = -1;
   gd_208 = -1;
   gi_132 = -1;
   g_high_216 = -1;
   gi_136 = -1;
   g_low_224 = -1;
   gi_140 = -1;
   The_Second_Crusade();
   gd_200 = -1;
   gi_128 = -1;
   gd_208 = -1;
   gi_132 = -1;
   gs_none_252 = "None";
   The_Third_Crusade();
   Shift_Zerro();
   return (0);
}

void The_First_Crusade() {
   for (gi_112 = gi_120; gi_112 > 0; gi_112--) {
      g_low_184 = Low[iLowest(NULL, 0, MODE_LOW, Slalom, gi_112)];
      g_high_192 = High[iHighest(NULL, 0, MODE_HIGH, Slalom, gi_112)];
      if (g_low_184 == gd_208) g_low_184 = 0.0;
      else {
         gd_208 = g_low_184;
         if (Low[gi_112] - g_low_184 > gd_152) g_low_184 = 0.0;
         else {
            for (gi_116 = 1; gi_116 <= gi_124; gi_116++) {
               gd_144 = g_ibuf_92[gi_112 + gi_116];
               if (gd_144 != 0.0 && gd_144 > g_low_184) g_ibuf_92[gi_112 + gi_116] = 0.0;
            }
         }
      }
      if (g_high_192 == gd_200) g_high_192 = 0.0;
      else {
         gd_200 = g_high_192;
         if (g_high_192 - High[gi_112] > gd_152) g_high_192 = 0.0;
         else {
            for (gi_116 = 1; gi_116 <= gi_124; gi_116++) {
               gd_144 = g_ibuf_96[gi_112 + gi_116];
               if (gd_144 != 0.0 && gd_144 < g_high_192) g_ibuf_96[gi_112 + gi_116] = 0.0;
            }
         }
      }
      g_ibuf_92[gi_112] = g_low_184;
      g_ibuf_96[gi_112] = g_high_192;
      g_low_168 = Low[iLowest(NULL, 0, MODE_LOW, KeelOver, gi_112)];
      g_high_176 = High[iHighest(NULL, 0, MODE_HIGH, KeelOver, gi_112)];
      if (g_low_168 == g_low_224) g_low_168 = 0.0;
      else {
         g_low_224 = g_low_168;
         if (Low[gi_112] - g_low_168 > gd_152) g_low_168 = 0.0;
         else {
            for (gi_116 = 1; gi_116 <= gi_124; gi_116++) {
               gd_144 = g_ibuf_84[gi_112 + gi_116];
               if (gd_144 != 0.0 && gd_144 > g_low_168) g_ibuf_84[gi_112 + gi_116] = 0.0;
            }
         }
      }
      if (g_high_176 == g_high_216) g_high_176 = 0.0;
      else {
         g_high_216 = g_high_176;
         if (g_high_176 - High[gi_112] > gd_152) g_high_176 = 0.0;
         else {
            for (gi_116 = 1; gi_116 <= gi_124; gi_116++) {
               gd_144 = g_ibuf_88[gi_112 + gi_116];
               if (gd_144 != 0.0 && gd_144 < g_high_176) g_ibuf_88[gi_112 + gi_116] = 0.0;
            }
         }
      }
      g_ibuf_84[gi_112] = g_low_168;
      g_ibuf_88[gi_112] = g_high_176;
   }
}

void The_Second_Crusade() {
   for (gi_112 = gi_120; gi_112 > 0; gi_112--) {
      g_low_184 = g_ibuf_92[gi_112];
      g_high_192 = g_ibuf_96[gi_112];
      if (g_low_184 == 0.0 && g_high_192 == 0.0) continue;
      if (g_high_192 != 0.0) {
         if (gd_200 > 0.0) {
            if (gd_200 < g_high_192) g_ibuf_96[gi_128] = 0;
            else g_ibuf_96[gi_112] = 0;
         }
         if (gd_200 < g_high_192 || gd_200 < 0.0) {
            gd_200 = g_high_192;
            gi_128 = gi_112;
         }
         gd_208 = -1;
      }
      if (g_low_184 != 0.0) {
         if (gd_208 > 0.0) {
            if (gd_208 > g_low_184) g_ibuf_92[gi_132] = 0;
            else g_ibuf_92[gi_112] = 0;
         }
         if (g_low_184 < gd_208 || gd_208 < 0.0) {
            gd_208 = g_low_184;
            gi_132 = gi_112;
         }
         gd_200 = -1;
      }
      g_low_168 = g_ibuf_84[gi_112];
      g_high_176 = g_ibuf_88[gi_112];
      if (g_low_168 == 0.0 && g_high_176 == 0.0) continue;
      if (g_high_176 != 0.0) {
         if (g_high_216 > 0.0) {
            if (g_high_216 < g_high_176) g_ibuf_88[gi_136] = 0;
            else g_ibuf_88[gi_112] = 0.0;
         }
         if (g_high_216 < g_high_176 || g_high_216 < 0.0) {
            g_high_216 = g_high_176;
            gi_136 = gi_112;
         }
         g_low_224 = -1;
      }
      if (g_low_168 != 0.0) {
         if (g_low_224 > 0.0) {
            if (g_low_224 > g_low_184) g_ibuf_84[gi_140] = 0;
            else g_ibuf_84[gi_112] = 0;
         }
         if (g_low_168 < g_low_224 || g_low_224 < 0.0) {
            g_low_224 = g_low_168;
            gi_140 = gi_112;
         }
         g_high_216 = -1;
      }
   }
}

void The_Third_Crusade() {
   bool li_0 = TRUE;
   for (gi_112 = gi_120; gi_112 > 0; gi_112--) {
      g_ibuf_100[gi_112] = 0.0;
      g_ibuf_104[gi_112] = 0.0;
      g_ibuf_108[gi_112] = 0.0;
      gd_160 = (5.0 * Close[gi_112] + 2.0 * Open[gi_112] + High[gi_112] + Low[gi_112]) / 9.0;
      if (g_ibuf_84[gi_112] != 0.0) {
         gi_232 = TRUE;
         li_0 = FALSE;
      }
      if (g_ibuf_88[gi_112] != 0.0) {
         gi_232 = FALSE;
         li_0 = FALSE;
      }
      if (g_ibuf_88[gi_112] != 0.0 || g_ibuf_84[gi_112] != 0.0) g_ibuf_84[gi_112] = gd_160;
      else g_ibuf_84[gi_112] = 0.0;
      if (g_ibuf_92[gi_112] != 0.0) {
         gs_none_252 = "Zig";
         gd_208 = gd_160;
         gi_236 = FALSE;
         gi_240 = FALSE;
         gi_244 = FALSE;
      }
      if (g_ibuf_96[gi_112] != 0.0) {
         gs_none_252 = "Zag";
         gd_200 = gd_160;
         gi_236 = FALSE;
         gi_240 = FALSE;
         gi_244 = FALSE;
      }
      if (g_ibuf_92[gi_112] == 0.0 && g_ibuf_96[gi_112] == 0.0 && li_0 == FALSE) Slalom_With_A_Scalpel();
   }
}

void Shift_Zerro() {
   gi_112 = 0;
   gd_160 = (5.0 * Close[0] + 2.0 * Open[0] + High[0] + Low[0]) / 9.0;
   Slalom_With_A_Scalpel();
   g_ibuf_84[0] = gd_160;
}

void Slalom_With_A_Scalpel() {
   if (gs_none_252 == "Zig") {
      if (gi_232 == TRUE) {
         if (gd_160 - gd_208 >= gd_152 && gi_236 == FALSE) {
            gi_236 = TRUE;
            g_ibuf_104[gi_112] = Low[gi_112 + 1];
            gi_132 = gi_112;
         }
         if (gd_160 <= gd_208 && gi_236 == TRUE) {
            gi_236 = FALSE;
            g_ibuf_104[gi_132] = 0.0;
            gi_132 = -1;
         }
      }
      if (gi_232 == FALSE) {
         if (gd_160 > gd_208 && gi_240 == FALSE) {
            gi_240 = TRUE;
            g_ibuf_100[gi_112] = gd_160;
            gi_132 = gi_112;
         }
         if (gd_160 <= gd_208 && gi_240 == TRUE) {
            gi_240 = FALSE;
            g_ibuf_100[gi_132] = 0.0;
            gi_132 = -1;
         }
      }
   }
   if (gs_none_252 == "Zag") {
      if (gi_232 == FALSE) {
         if (gd_200 - gd_160 >= gd_152 && gi_244 == FALSE) {
            gi_244 = TRUE;
            g_ibuf_108[gi_112] = High[gi_112 + 1];
            gi_128 = gi_112;
         }
         if (gd_160 >= gd_200 && gi_244 == TRUE) {
            gi_244 = FALSE;
            g_ibuf_108[gi_128] = 0.0;
            gi_128 = -1;
         }
      }
      if (gi_232 == TRUE) {
         if (gd_200 > gd_160 && gi_240 == FALSE) {
            gi_240 = TRUE;
            g_ibuf_100[gi_112] = gd_160;
            gi_128 = gi_112;
         }
         if (gd_160 >= gd_200 && gi_240 == TRUE) {
            gi_240 = FALSE;
            g_ibuf_100[gi_128] = 0.0;
            gi_128 = -1;
         }
      }
   }
}