/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website: H tTp: // w WW . met Aq UOT es . N e T
   E-mail :  su PPo rT@ MEtaq U ot E s. N et
*/
#property copyright "Polynkov A.A."
#property link      ""

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 CLR_NONE
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 CLR_NONE
#property indicator_color5 CLR_NONE
#property indicator_color6 CLR_NONE
#property indicator_color7 CLR_NONE
#property indicator_color8 Lime

int Gi_76 = 120;
int Gi_80 = 3;
int Gi_unused_84 = 0;
double Gd_88 = 1.25;
int Gi_96 = 1102;
double G_ibuf_100[];
double G_ibuf_104[];
double G_ibuf_108[];
double G_ibuf_112[];
double G_ibuf_116[];
double G_ibuf_120[];
double G_ibuf_124[];
double G_ibuf_128[];
double Gda_132[10][10];
double Gda_136[10];
double Gda_140[10];
double Gda_144[20];
double Gd_148;
int G_shift_156;
int G_period_160;
int Gi_164;
double Gd_168;
double Gd_176;
double Gd_184;
int Gi_192;
int Gi_196;
int Gi_200;
int Gi_204;
int Gi_208;
double Gd_212;
double Gd_220;

int init() {
   IndicatorShortName(" iP(aaRG)v.8 <<Äëÿ òàéìôðåéìà Ì5 >>");
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, G_ibuf_100);
   SetIndexBuffer(1, G_ibuf_104);
   SetIndexBuffer(2, G_ibuf_108);
   SetIndexBuffer(3, G_ibuf_112);
   SetIndexBuffer(4, G_ibuf_116);
   SetIndexBuffer(5, G_ibuf_120);
   SetIndexBuffer(6, G_ibuf_124);
   SetIndexBuffer(7, G_ibuf_128);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 0);
   G_period_160 = MathRound(Gi_76);
   Gi_208 = Gi_80 + 1;
   ObjectCreate("pr" + Gi_96, OBJ_ARROW, 0, Time[G_period_160], G_ibuf_100[G_period_160]);
   ObjectSet("pr" + Gi_96, OBJPROP_ARROWCODE, 240);
   return (0);
}

int deinit() {
   ObjectDelete("pr" + Gi_96);
   return (0);
}

int start() {
   int Li_0;
   int ind_counted_4 = IndicatorCounted();
   G_shift_156 = iBarShift(Symbol(), Period(), ObjectGet("pr" + Gi_96, OBJPROP_TIME1));
   G_period_160 = Gi_76;
   Gda_144[1] = G_period_160 + 1;
   SetIndexDrawBegin(0, Bars - G_period_160 - 1);
   SetIndexDrawBegin(1, Bars - G_period_160 - 1);
   SetIndexDrawBegin(2, Bars - G_period_160 - 1);
   SetIndexDrawBegin(3, Bars - G_period_160 - 1);
   SetIndexDrawBegin(4, Bars - G_period_160 - 1);
   SetIndexDrawBegin(5, Bars - G_period_160 - 1);
   SetIndexDrawBegin(6, Bars - G_period_160 - 1);
   SetIndexDrawBegin(7, Bars - G_period_160 - 1);
   for (int Li_8 = 1; Li_8 <= Gi_208 * 2 - 2; Li_8++) {
      Gd_148 = 0;
      for (Gi_164 = Li_0; Gi_164 <= Li_0 + G_period_160; Gi_164++) Gd_148 += MathPow(Gi_164, Li_8);
      Gda_144[Li_8 + 1] = Gd_148;
   }
   for (Li_8 = 1; Li_8 <= Gi_208; Li_8++) {
      Gd_148 = 0.0;
      for (Gi_164 = Li_0; Gi_164 <= Li_0 + G_period_160; Gi_164++) {
         if (Li_8 == 1) Gd_148 += Close[Gi_164];
         else Gd_148 += Close[Gi_164] * MathPow(Gi_164, Li_8 - 1);
      }
      Gda_136[Li_8] = Gd_148;
   }
   for (Gi_196 = 1; Gi_196 <= Gi_208; Gi_196++) {
      for (Gi_192 = 1; Gi_192 <= Gi_208; Gi_192++) {
         Gi_200 = Gi_192 + Gi_196 - 1;
         Gda_132[Gi_192][Gi_196] = Gda_144[Gi_200];
      }
   }
   for (Gi_200 = 1; Gi_200 <= Gi_208 - 1; Gi_200++) {
      Gi_204 = 0;
      Gd_176 = 0;
      for (Gi_192 = Gi_200; Gi_192 <= Gi_208; Gi_192++) {
         if (MathAbs(Gda_132[Gi_192][Gi_200]) > Gd_176) {
            Gd_176 = MathAbs(Gda_132[Gi_192][Gi_200]);
            Gi_204 = Gi_192;
         }
      }
      if (Gi_204 == 0) return (0);
      if (Gi_204 != Gi_200) {
         for (Gi_196 = 1; Gi_196 <= Gi_208; Gi_196++) {
            Gd_184 = Gda_132[Gi_200][Gi_196];
            Gda_132[Gi_200][Gi_196] = Gda_132[Gi_204][Gi_196];
            Gda_132[Gi_204][Gi_196] = Gd_184;
         }
         Gd_184 = Gda_136[Gi_200];
         Gda_136[Gi_200] = Gda_136[Gi_204];
         Gda_136[Gi_204] = Gd_184;
      }
      for (Gi_192 = Gi_200 + 1; Gi_192 <= Gi_208; Gi_192++) {
         Gd_168 = Gda_132[Gi_192][Gi_200] / Gda_132[Gi_200][Gi_200];
         for (Gi_196 = 1; Gi_196 <= Gi_208; Gi_196++) {
            if (Gi_196 == Gi_200) Gda_132[Gi_192][Gi_196] = 0;
            else Gda_132[Gi_192][Gi_196] = Gda_132[Gi_192][Gi_196] - Gd_168 * Gda_132[Gi_200][Gi_196];
         }
         Gda_136[Gi_192] = Gda_136[Gi_192] - Gd_168 * Gda_136[Gi_200];
      }
   }
   Gda_140[Gi_208] = Gda_136[Gi_208] / Gda_132[Gi_208][Gi_208];
   for (Gi_192 = Gi_208 - 1; Gi_192 >= 1; Gi_192--) {
      Gd_184 = 0;
      for (Gi_196 = 1; Gi_196 <= Gi_208 - Gi_192; Gi_196++) {
         Gd_184 += (Gda_132[Gi_192][Gi_192 + Gi_196]) * (Gda_140[Gi_192 + Gi_196]);
         Gda_140[Gi_192] = 1 / Gda_132[Gi_192][Gi_192] * (Gda_136[Gi_192] - Gd_184);
      }
   }
   for (Gi_164 = Li_0; Gi_164 <= Li_0 + G_period_160; Gi_164++) {
      Gd_148 = 0;
      for (Gi_200 = 1; Gi_200 <= Gi_80; Gi_200++) Gd_148 += (Gda_140[Gi_200 + 1]) * MathPow(Gi_164, Gi_200);
      G_ibuf_100[Gi_164] = Gda_140[1] + Gd_148;
   }
   Gd_212 = 0.0;
   for (Gi_164 = Li_0; Gi_164 <= Li_0 + G_period_160; Gi_164++) Gd_212 += MathPow(Close[Gi_164] - G_ibuf_100[Gi_164], 2);
   Gd_212 = MathSqrt(Gd_212 / (G_period_160 + 1)) * Gd_88;
   Gd_220 = iStdDev(NULL, 0, G_period_160, 0, MODE_SMA, PRICE_CLOSE, Li_0) * Gd_88;
   for (Gi_164 = Li_0; Gi_164 <= Li_0 + G_period_160; Gi_164++) {
      G_ibuf_104[Gi_164] = G_ibuf_100[Gi_164] + Gd_212;
      G_ibuf_108[Gi_164] = G_ibuf_100[Gi_164] - Gd_212;
      G_ibuf_112[Gi_164] = G_ibuf_100[Gi_164] + Gd_220;
      G_ibuf_116[Gi_164] = G_ibuf_100[Gi_164] - Gd_220;
      G_ibuf_120[Gi_164] = G_ibuf_104[Gi_164] + (G_ibuf_112[Gi_164] - G_ibuf_104[Gi_164]) / 2.0;
      G_ibuf_124[Gi_164] = G_ibuf_116[Gi_164] + (G_ibuf_108[Gi_164] - G_ibuf_116[Gi_164]) / 2.0;
   }
   ObjectMove("pr" + Gi_96, 0, Time[G_period_160], G_ibuf_100[G_period_160]);
   int Li_12 = Bars - ind_counted_4;
   if (ind_counted_4 > 0) Li_12++;
   for (Li_0 = 0; Li_0 < Li_12; Li_0++) G_ibuf_128[Li_0] = (High[Li_0] + Low[Li_0]) / 2.0;
   return (0);
}
