

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Green

double g_ibuf_76[];
double g_ibuf_80[];
double g_ibuf_84[];
double g_ibuf_88[];
bool gi_92 = FALSE;
int gi_96 = 15;
int gi_100 = 5;
int gi_104;
int gi_108;
int gi_112;
int gi_116;
int gi_120;
int gi_124;
int gi_128;
double gd_132;
double gd_140;
double g_ibuf_148[];
double g_ibuf_152[];
double gda_unused_156[];
double g_ibuf_160[];
double gda_unused_164[];
bool gi_168 = FALSE;
bool gi_172 = FALSE;

int init() {
   IndicatorBuffers(7);
   SetIndexBuffer(0, g_ibuf_76);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(1, g_ibuf_80);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(2, g_ibuf_84);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(3, g_ibuf_88);
   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(4, g_ibuf_152);
   SetIndexBuffer(5, g_ibuf_148);
   SetIndexBuffer(6, g_ibuf_160);
   return (0);
}

int start() {
   gi_104 = Bars - gi_96 - 5;
   gi_124 = gi_96;
   gi_128 = gi_100;
   gi_120 = gi_104 - gi_124 - 1;
   for (gi_108 = gi_120; gi_108 >= 0; gi_108--) {
      g_ibuf_152[1] = 0;
      for (gi_112 = gi_124; gi_112 >= 1; gi_112--) {
         gd_132 = gi_124 + 1;
         gd_132 /= 3.0;
         gd_140 = 0;
         gd_140 = (gi_112 - gd_132) * (Close[gi_124 - gi_112 + gi_108]);
         g_ibuf_152[1] += gd_140;
      }
      g_ibuf_148[gi_108] = 6.0 * g_ibuf_152[1] / (gi_124 * (gi_124 + 1));
      gi_116 = gi_108;
      g_ibuf_160[gi_108] = g_ibuf_148[gi_116 + 1] + 2.0 * (g_ibuf_148[gi_116] - (g_ibuf_148[gi_116 + 1])) / (gi_128 + 1);
      g_ibuf_76[gi_108] = g_ibuf_148[gi_108];
      g_ibuf_80[gi_108] = g_ibuf_160[gi_108];
      g_ibuf_84[gi_108] = g_ibuf_148[gi_108];
      g_ibuf_88[gi_108] = g_ibuf_160[gi_108];
      if (g_ibuf_148[gi_108] < g_ibuf_160[gi_108]) {
         g_ibuf_88[gi_108] = EMPTY_VALUE;
         g_ibuf_84[gi_108] = EMPTY_VALUE;
      }
   }
   if (gi_92) {
      if (g_ibuf_148[1] > g_ibuf_160[1]) {
         if (!gi_168) {
            gi_168 = TRUE;
            gi_172 = FALSE;
         }
      }
      if (g_ibuf_148[1] < g_ibuf_160[1]) {
         if (!gi_172) {
            gi_172 = TRUE;
            gi_168 = FALSE;
         }
      }
   }
   return (0);
}