/*
   Generated by ex4-to-mq4 decompiler (forex-warez.com) 4.0.509.5
   Website: W W W.fO r e X - W ar Ez.CO M
   E-mail : an DRey b BR V @GMail.CoM
*/
#property copyright "Copyright © 2008, Dr. Zain Agha"
#property link      "http://www.zwinner.com"

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 2.0
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

int Gi_unused_76 = 100;
extern int gi_76 = 8;
extern int WingDingUp = 110;
extern int WingDingDn = 110;
double G_ibuf_92[];
double G_ibuf_96[];
double G_ibuf_100[];

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   IndicatorBuffers(3);
   SetIndexBuffer(0, G_ibuf_96);
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, WingDingUp);
   SetIndexBuffer(1, G_ibuf_100);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, WingDingDn);
   SetIndexBuffer(2, G_ibuf_92);
   IndicatorShortName("ZWINNER TREND INDICATOR");
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   double Ld_0;
   double Ld_8;
   double Ld_16;
   int Li_24 = IndicatorCounted();
   double Ld_28 = 0;
   double Ld_36 = 0;
   double Ld_unused_44 = 0;
   double Ld_unused_52 = 0;
   double Ld_60 = 0;
   double Ld_unused_68 = 0;
   double low_76 = 0;
   double high_84 = 0;
   if (Li_24 > 0) Li_24--;
   int Li_92 = Bars - Li_24;
   for (int Li_96 = 0; Li_96 < Bars; Li_96++) {
      high_84 = High[iHighest(NULL, 0, MODE_HIGH, gi_76, Li_96)];
      low_76 = Low[iLowest(NULL, 0, MODE_LOW, gi_76, Li_96)];
      Ld_16 = (High[Li_96] + Low[Li_96]) / 2.0;
      if (high_84 - low_76 == 0.0) Ld_28 = 0.67 * Ld_36 + (-0.33);
      else Ld_28 = 0.66 * ((Ld_16 - low_76) / (high_84 - low_76) - 0.5) + 0.67 * Ld_36;
      Ld_28 = MathMin(MathMax(Ld_28, -0.999), 0.999);
      if (1 - Ld_28 == 0.0) G_ibuf_92[Li_96] = Ld_60 / 2.0 + 0.5;
      else G_ibuf_92[Li_96] = MathLog((Ld_28 + 1.0) / (1 - Ld_28)) / 2.0 + Ld_60 / 2.0;
      Ld_36 = Ld_28;
      Ld_60 = G_ibuf_92[Li_96];
   }
   bool Li_100 = TRUE;
   for (Li_96 = Bars; Li_96 >= 0; Li_96--) {
      Ld_8 = G_ibuf_92[Li_96];
      Ld_0 = G_ibuf_92[Li_96 + 1];
      if ((Ld_8 < 0.0 && Ld_0 > 0.0) || Ld_8 < 0.0) Li_100 = FALSE;
      if ((Ld_8 > 0.0 && Ld_0 < 0.0) || Ld_8 > 0.0) Li_100 = TRUE;
      if (!Li_100) {
         G_ibuf_100[Li_96] = 1.0;
         G_ibuf_96[Li_96] = EMPTY_VALUE;
      } else {
         G_ibuf_96[Li_96] = 1.0;
         G_ibuf_100[Li_96] = EMPTY_VALUE;
      }
   }
   return (0);
}
