/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website: hTt P :/ / wwW. M e TaqUOt E s.N et
   E-mail :  s U Pp O r t@ m E t aquo T es . Ne t
*/
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 PowderBlue

extern int ExtDepth = 12;
extern int ExtDeviation = 5;
extern int ExtBackstep = 3;
double Globda_88[];
double Globda_92[];
double Globda_96[];
int Globi_100 = 3;
bool Globi_104 = FALSE;

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   int Locli_0;
   IndicatorBuffers(3);
   SetIndexStyle(0, DRAW_SECTION, STYLE_DOT);
   SetIndexBuffer(0, Globda_88);
   SetIndexBuffer(1, Globda_92);
   SetIndexBuffer(2, Globda_96);
   SetIndexEmptyValue(0, 0.0);
   IndicatorShortName("ZigZag(" + ExtDepth + "," + ExtDeviation + "," + ExtBackstep + ")");
   switch (Period()) {
   case PERIOD_M1:
      Locli_0 = 5;
      break;
   case PERIOD_M5:
      Locli_0 = 3;
      break;
   case PERIOD_M15:
      Locli_0 = 2;
      break;
   case PERIOD_M30:
      Locli_0 = 2;
      break;
   case PERIOD_H1:
      Locli_0 = 4;
      break;
   case PERIOD_H4:
      Locli_0 = 6;
      break;
   case PERIOD_D1:
      Locli_0 = 7;
      break;
   case PERIOD_W1:
      Locli_0 = 4;
      break;
   case PERIOD_MN1:
      Locli_0 = 1;
   }
   ExtDepth *= Locli_0;
   ExtDeviation *= Locli_0;
   ExtBackstep *= Locli_0;
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   int Locli_0;
   int Locli_8;
   int Locli_12;
   int Locli_16;
   int Locli_28;
   int Locli_32;
   double Locld_36;
   double Locld_44;
   double Locld_52;
   double Locld_60;
   double Locld_68;
   double Locld_76;
   int Locli_4 = IndicatorCounted();
   if (Locli_4 == 0 && Globi_104) {
      ArrayInitialize(Globda_88, 0.0);
      ArrayInitialize(Globda_92, 0.0);
      ArrayInitialize(Globda_96, 0.0);
   }
   if (Locli_4 == 0) {
      Locli_8 = Bars - ExtDepth;
      Globi_104 = TRUE;
   }
   if (Locli_4 > 0) {
      while (Locli_12 < Globi_100 && Locli_0 < 100) {
         Locld_44 = Globda_88[Locli_0];
         if (Locld_44 != 0.0) Locli_12++;
         Locli_0++;
      }
      Locli_0--;
      Locli_8 = Locli_0;
      if (Globda_96[Locli_0] != 0.0) {
         Locld_52 = Globda_96[Locli_0];
         Locli_16 = 1;
      } else {
         Locld_60 = Globda_92[Locli_0];
         Locli_16 = -1;
      }
      for (Locli_0 = Locli_8 - 1; Locli_0 >= 0; Locli_0--) {
         Globda_88[Locli_0] = 0.0;
         Globda_96[Locli_0] = 0.0;
         Globda_92[Locli_0] = 0.0;
      }
   }
   for (int Locli_20 = Locli_8; Locli_20 >= 0; Locli_20--) {
      Locld_36 = Low[iLowest(NULL, 0, MODE_LOW, ExtDepth, Locli_20)];
      if (Locld_36 == Locld_76) Locld_36 = 0.0;
      else {
         Locld_76 = Locld_36;
         if (Low[Locli_20] - Locld_36 > ExtDeviation * Point) Locld_36 = 0.0;
         else {
            for (int Locli_24 = 1; Locli_24 <= ExtBackstep; Locli_24++) {
               Locld_44 = Globda_96[Locli_20 + Locli_24];
               if (Locld_44 != 0.0 && Locld_44 > Locld_36) Globda_96[Locli_20 + Locli_24] = 0.0;
            }
         }
      }
      if (Low[Locli_20] == Locld_36) Globda_96[Locli_20] = Locld_36;
      else Globda_96[Locli_20] = 0.0;
      Locld_36 = High[iHighest(NULL, 0, MODE_HIGH, ExtDepth, Locli_20)];
      if (Locld_36 == Locld_68) Locld_36 = 0.0;
      else {
         Locld_68 = Locld_36;
         if (Locld_36 - High[Locli_20] > ExtDeviation * Point) Locld_36 = 0.0;
         else {
            for (Locli_24 = 1; Locli_24 <= ExtBackstep; Locli_24++) {
               Locld_44 = Globda_92[Locli_20 + Locli_24];
               if (Locld_44 != 0.0 && Locld_44 < Locld_36) Globda_92[Locli_20 + Locli_24] = 0.0;
            }
         }
      }
      if (High[Locli_20] == Locld_36) Globda_92[Locli_20] = Locld_36;
      else Globda_92[Locli_20] = 0.0;
   }
   if (Locli_16 == 0) {
      Locld_76 = 0;
      Locld_68 = 0;
   } else {
      Locld_76 = Locld_52;
      Locld_68 = Locld_60;
   }
   for (Locli_20 = Locli_8; Locli_20 >= 0; Locli_20--) {
      Locld_44 = 0.0;
      switch (Locli_16) {
      case 0:
         if (!(Locld_76 == 0.0 && Locld_68 == 0.0)) break;
         if (Globda_92[Locli_20] != 0.0) {
            Locld_68 = High[Locli_20];
            Locli_28 = Locli_20;
            Locli_16 = -1;
            Globda_88[Locli_20] = Locld_68;
            Locld_44 = 1;
         }
         if (Globda_96[Locli_20] == 0.0) break;
         Locld_76 = Low[Locli_20];
         Locli_32 = Locli_20;
         Locli_16 = 1;
         Globda_88[Locli_20] = Locld_76;
         Locld_44 = 1;
         break;
      case 1:
         if (Globda_96[Locli_20] != 0.0 && Globda_96[Locli_20] < Locld_76 && Globda_92[Locli_20] == 0.0) {
            Globda_88[Locli_32] = 0.0;
            Locli_32 = Locli_20;
            Locld_76 = Globda_96[Locli_20];
            Globda_88[Locli_20] = Locld_76;
            Locld_44 = 1;
         }
         if (!(Globda_92[Locli_20] != 0.0 && Globda_96[Locli_20] == 0.0)) break;
         Locld_68 = Globda_92[Locli_20];
         Locli_28 = Locli_20;
         Globda_88[Locli_20] = Locld_68;
         Locli_16 = -1;
         Locld_44 = 1;
         break;
      case -1:
         if (Globda_92[Locli_20] != 0.0 && Globda_92[Locli_20] > Locld_68 && Globda_96[Locli_20] == 0.0) {
            Globda_88[Locli_28] = 0.0;
            Locli_28 = Locli_20;
            Locld_68 = Globda_92[Locli_20];
            Globda_88[Locli_20] = Locld_68;
         }
         if (!(Globda_96[Locli_20] != 0.0 && Globda_92[Locli_20] == 0.0)) break;
         Locld_76 = Globda_96[Locli_20];
         Locli_32 = Locli_20;
         Globda_88[Locli_20] = Locld_76;
         Locli_16 = 1;
         break;
      default:
         return/*(WARN)*/;
      }
   }
   return (0);
}
