#property indicator_separate_window
#property indicator_minimum -60.0
#property indicator_maximum 60.0
#property indicator_buffers 6
#property indicator_color1 Moccasin
#property indicator_color2 Moccasin
#property indicator_color3 Yellow
#property indicator_color4 Yellow
#property indicator_color5 DodgerBlue
#property indicator_color6 DodgerBlue
#property indicator_level1 48.0
#property indicator_level2 32.0
#property indicator_level4 13.0
#property indicator_level5 -13.0
#property indicator_level7 -32.0
#property indicator_level8 -48.0

extern int g_period_76 = 8;
extern int gi_80 = -40;
extern int g_period_84 = 1;
double gd_88 = 2.7;
double gd_96 = 2.7;
double gd_104 = -0.99;
double gd_112 = -0.99;
double gd_120 = -1.5;
double gd_128 = 1.5;
extern int gi_136 = 0;
int gi_140 = 1;
double gd_144 = 44.0;
double gd_152 = 44.0;
extern int CountBars = 800;
double g_ibuf_164[];
double g_ibuf_168[];
double g_ibuf_172[];
double g_ibuf_176[];
double g_ibuf_180[];
double g_ibuf_184[];
double g_ibuf_188[];
double g_ibuf_192[];

int init() {
   IndicatorBuffers(8);
   SetIndexBuffer(0, g_ibuf_164);
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 4);
   SetIndexLabel(0, "Volatilnost");
   SetIndexDrawBegin(0, Bars - CountBars);
   SetIndexShift(0, gi_136 + 0);
   SetIndexBuffer(1, g_ibuf_184);
   SetIndexStyle(1, DRAW_NONE);
   SetIndexLabel(1, "Volatilnost");
   SetIndexDrawBegin(1, Bars - CountBars);
   SetIndexShift(1, gi_136 + 0);
   SetIndexBuffer(2, g_ibuf_168);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexLabel(2, "DI+");
   SetIndexDrawBegin(2, Bars - CountBars);
   SetIndexShift(2, gi_136 + 0);
   SetIndexBuffer(3, g_ibuf_172);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexLabel(3, "Temp+");
   SetIndexDrawBegin(3, Bars - CountBars);
   SetIndexShift(3, gi_136 + 0);
   SetIndexBuffer(4, g_ibuf_176);
   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexLabel(4, "DI-");
   SetIndexDrawBegin(4, Bars - CountBars);
   SetIndexShift(4, gi_136 + 0);
   SetIndexBuffer(5, g_ibuf_180);
   SetIndexStyle(5, DRAW_NONE);
   SetIndexLabel(5, "Temp-");
   SetIndexDrawBegin(5, Bars - CountBars);
   SetIndexShift(5, gi_136 + 0);
   SetIndexBuffer(6, g_ibuf_188);
   SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexLabel(6, "6");
   SetIndexDrawBegin(6, Bars - CountBars);
   SetIndexBuffer(7, g_ibuf_192);
   SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexLabel(7, "7");
   SetIndexDrawBegin(7, Bars - CountBars);
   IndicatorShortName("GlasNeba(" + g_period_76 + ")");
   return (0);
}

int start() {
   double ld_0;
   double ld_8;
   double ld_16;
   double ld_24;
   double l_high_32;
   double l_low_40;
   int li_48;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   int li_84 = IndicatorCounted();
   g_ibuf_184[li_48] = 0;
   g_ibuf_188[li_48] = 0;
   if (li_84 >= li_48) li_48 = Bars - li_84 - 1;
   int li_88 = li_48;
   while (li_48 >= 0) {
      l_low_40 = Low[li_48];
      l_high_32 = High[li_48];
      ld_0 = l_high_32 - (High[li_48 + 1]);
      ld_8 = Low[li_48 + 1] - l_low_40;
      if (ld_0 < 0.0) ld_0 = 0;
      if (ld_8 < 0.0) ld_8 = 0;
      if (ld_0 == ld_8) {
         ld_0 = 0;
         ld_8 = 0;
      } else {
         if (ld_0 < ld_8) ld_0 = 0;
         else
            if (ld_8 < ld_0) ld_8 = 0;
      }
      ld_52 = MathAbs(l_high_32 - l_low_40);
      ld_60 = MathAbs(l_high_32 - (Close[li_48 + 1]));
      ld_68 = MathAbs(l_low_40 - (Close[li_48 + 1]));
      ld_16 = MathMax(ld_52, ld_60);
      ld_24 = MathMax(ld_16, ld_68);
      if (ld_24 == 0.0) {
         g_ibuf_188[li_48 + 1] = li_48;
         g_ibuf_184[li_48] = li_48;
      } else {
         g_ibuf_188[li_48 + 1] = gd_152 * ld_8 / ld_24;
         g_ibuf_184[li_48] = gd_144 * ld_0 / ld_24;
      }
      li_48--;
   }
   if (li_84 > 0) li_84--;
   int li_92 = Bars - li_84;
   for (li_48 = 0; li_48 <= li_92; li_48++) g_ibuf_168[li_48] = iMAOnArray(g_ibuf_184, Bars, g_period_76, 0, MODE_EMA, li_48) * gd_88;
   for (li_48 = 0; li_48 <= li_92; li_48++) g_ibuf_172[li_48] = iMAOnArray(g_ibuf_168, Bars, g_period_84, 0, MODE_EMA, li_48) * gd_104;
   for (li_48 = 0; li_48 <= li_92; li_48++) g_ibuf_176[li_48] = iMAOnArray(g_ibuf_188, Bars, g_period_76, 0, MODE_EMA, li_48) * gd_96;
   for (li_48 = 0; li_48 <= li_92; li_48++) g_ibuf_180[li_48] = iMAOnArray(g_ibuf_176, Bars, g_period_84, 0, MODE_EMA, li_48) * gd_112;
   if (li_84 >= li_48) li_48 = Bars - li_84 - 1;
   for (li_48 = li_88; li_48 >= 0; li_48--) {
      ld_76 = MathAbs(g_ibuf_172[li_48] + g_ibuf_180[li_48]);
      if (ld_76 == 0.0) g_ibuf_192[li_48] = 0;
      else g_ibuf_192[li_48] = MathAbs(g_ibuf_168[li_48] - g_ibuf_176[li_48]) / ld_76 * gi_80;
      if (gi_140 == 1) g_ibuf_192[li_48] = (g_ibuf_168[li_48] - g_ibuf_176[li_48]) / ld_76 * gi_80;
   }
   for (li_48 = 0; li_48 < li_92; li_48++) g_ibuf_184[li_48] = iMAOnArray(g_ibuf_192, Bars, g_period_76, 0, MODE_EMA, li_48) * gd_128;
   for (li_48 = 0; li_48 < li_92; li_48++)
      if (li_48 >= 1) g_ibuf_164[li_48] = iMAOnArray(g_ibuf_192, Bars, g_period_76, 0, MODE_EMA, li_48) * gd_120;
   return (0);
}
