/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2009, Forexsignal30"
#property link      "http://www.forexsignal30.com"

#property indicator_separate_window
#property indicator_minimum -100.0
#property indicator_maximum 100.0
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Red

int gi_76 = 21;
int gi_80 = 5;
int gi_84 = 3;
double g_ibuf_88[];
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];

int init() {
   IndicatorBuffers(7);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexArrow(0, 119);
   SetIndexBuffer(0, g_ibuf_96);
   SetIndexEmptyValue(0, 0.0);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexArrow(1, 119);
   SetIndexBuffer(1, g_ibuf_100);
   SetIndexEmptyValue(1, 0.0);
   SetIndexStyle(2, DRAW_ARROW);
   SetIndexBuffer(2, g_ibuf_104);
   SetIndexEmptyValue(2, 0.0);
   SetIndexStyle(3, DRAW_ARROW);
   SetIndexBuffer(3, g_ibuf_108);
   SetIndexEmptyValue(3, 0.0);
   SetIndexBuffer(4, g_ibuf_88);
   SetIndexBuffer(5, g_ibuf_92);
   SetIndexBuffer(6, g_ibuf_112);
   SetIndexEmptyValue(0, 0.0);
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);
   ArraySetAsSeries(g_ibuf_88, TRUE);
   ArraySetAsSeries(g_ibuf_92, TRUE);
   IndicatorShortName("Forexsignal30 extreme");
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   double ld_0;
   double ld_8;
   double ld_16;
   double ld_24;
   double ld_32;
   double ld_40;
   bool li_48;
   for (int li_52 = Bars - gi_76; li_52 >= 0; li_52--) {
      ld_0 = Low[iLowest(NULL, 0, MODE_LOW, gi_76, li_52)];
      if (ld_0 == ld_40) ld_0 = 0.0;
      else {
         ld_40 = ld_0;
         if (Low[li_52] - ld_0 > gi_80 * Point) ld_0 = 0.0;
         else {
            for (int li_56 = 1; li_56 <= gi_84; li_56++) {
               ld_8 = g_ibuf_88[li_52 + li_56];
               if (ld_8 != 0.0 && ld_8 > ld_0) g_ibuf_88[li_52 + li_56] = 0.0;
            }
         }
      }
      g_ibuf_88[li_52] = ld_0;
      ld_0 = High[iHighest(NULL, 0, MODE_HIGH, gi_76, li_52)];
      if (ld_0 == ld_32) ld_0 = 0.0;
      else {
         ld_32 = ld_0;
         if (ld_0 - High[li_52] > gi_80 * Point) ld_0 = 0.0;
         else {
            for (li_56 = 1; li_56 <= gi_84; li_56++) {
               ld_8 = g_ibuf_92[li_52 + li_56];
               if (ld_8 != 0.0 && ld_8 < ld_0) g_ibuf_92[li_52 + li_56] = 0.0;
            }
         }
      }
      g_ibuf_92[li_52] = ld_0;
   }
   ld_32 = -1;
   int li_60 = -1;
   ld_40 = -1;
   int li_64 = -1;
   for (li_52 = Bars - gi_76; li_52 >= 0; li_52--) {
      ld_16 = g_ibuf_88[li_52];
      ld_24 = g_ibuf_92[li_52];
      if (ld_16 == 0.0 && ld_24 == 0.0) continue;
      if (ld_24 != 0.0) {
         if (ld_32 > 0.0) {
            if (ld_32 < ld_24) g_ibuf_92[li_60] = 0;
            else g_ibuf_92[li_52] = 0;
         }
         if (ld_32 < ld_24 || ld_32 < 0.0) {
            ld_32 = ld_24;
            li_60 = li_52;
         }
         ld_40 = -1;
      }
      if (ld_16 != 0.0) {
         if (ld_40 > 0.0) {
            if (ld_40 > ld_16) g_ibuf_88[li_64] = 0;
            else g_ibuf_88[li_52] = 0;
         }
         if (ld_16 < ld_40 || ld_40 < 0.0) {
            ld_40 = ld_16;
            li_64 = li_52;
         }
         ld_32 = -1;
      }
   }
   for (li_52 = Bars - 1; li_52 >= 0; li_52--) {
      if (li_52 >= Bars - gi_76) {
         g_ibuf_88[li_52] = 0.0;
         g_ibuf_92[li_52] = 0.0;
      } else {
         if (g_ibuf_88[li_52] > 0.0) li_48 = TRUE;
         ld_8 = g_ibuf_92[li_52];
         if (ld_8 != 0.0) {
            g_ibuf_88[li_52] = ld_8;
            li_48 = FALSE;
         }
      }
      if (li_48) g_ibuf_112[li_52] = -1;
      else g_ibuf_112[li_52] = 1;
   }
   for (li_52 = Bars - 4; li_52 >= 0; li_52--) {
      if (g_ibuf_112[li_52] < 0.0) {
         if (g_ibuf_112[li_52 + 2] > 0.0) {
            if (g_ibuf_112[li_52 + 1] > 0.0) {
               g_ibuf_100[li_52 + 1] = -70;
               g_ibuf_108[li_52 + 1] = -70;
               g_ibuf_100[li_52] = -90;
               g_ibuf_108[li_52] = -90;
               g_ibuf_96[li_52] = -90;
               g_ibuf_104[li_52] = -90;
            } else {
               g_ibuf_96[li_52] = -30;
               g_ibuf_104[li_52] = -30;
            }
         } else {
            if (g_ibuf_112[li_52 + 1] > 0.0) {
               g_ibuf_96[li_52] = -90;
               g_ibuf_104[li_52] = -90;
               g_ibuf_100[li_52] = -90;
               g_ibuf_108[li_52] = -90;
            } else {
               g_ibuf_96[li_52] = 0.001;
               g_ibuf_104[li_52] = 0.001;
            }
         }
      } else {
         if (g_ibuf_112[li_52 + 2] > 0.0) {
            if (g_ibuf_112[li_52 + 1] > 0.0) {
               g_ibuf_100[li_52] = 0.001;
               g_ibuf_108[li_52] = 0.001;
            } else {
               g_ibuf_96[li_52] = 90;
               g_ibuf_104[li_52] = 90;
               g_ibuf_100[li_52] = 90;
               g_ibuf_108[li_52] = 90;
            }
         } else {
            if (g_ibuf_112[li_52 + 1] > 0.0) {
               g_ibuf_100[li_52] = 30;
               g_ibuf_108[li_52] = 30;
            } else {
               g_ibuf_96[li_52 + 1] = 70;
               g_ibuf_104[li_52 + 1] = 70;
               g_ibuf_96[li_52] = 90;
               g_ibuf_104[li_52] = 90;
               g_ibuf_100[li_52] = 90;
               g_ibuf_108[li_52] = 90;
            }
         }
      }
   }
   return (0);
}
