/*
   Generated by EX4-TO-MQ4 decompiler V4.0.438.4 [-]
   Website: https://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright � 2012, Russ Horn"
#property link      "http://www.rapidresultsmethod.com"

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 Gold
#property indicator_color5 Black
#property indicator_color6 Red
#property indicator_color7 DodgerBlue
#property indicator_color8 Black

extern int Lead = 8;
int g_ma_method_80 = MODE_EMA;
int g_applied_price_84 = PRICE_CLOSE;
extern int Follow = 13;
int g_ma_method_92 = MODE_EMA;
int g_applied_price_96 = PRICE_CLOSE;
int g_period_100 = 13;
int g_ma_method_104 = MODE_SMA;
double gd_108 = 50.0;
double g_ibuf_116[];
double g_ibuf_120[];
double g_ibuf_124[];
double g_ibuf_128[];
double g_ibuf_132[];
double g_ibuf_136[];
double g_ibuf_140[];
double g_ibuf_144[];
double gd_148 = 0.0;

int init() {
   g_period_100 = Follow;
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1.0);
   SetIndexStyle(6, DRAW_LINE, STYLE_SOLID);
   SetIndexBuffer(6, g_ibuf_116);
   SetIndexDrawBegin(6, Follow);
   SetIndexStyle(5, DRAW_LINE, STYLE_SOLID);
   SetIndexBuffer(5, g_ibuf_140);
   SetIndexStyle(0, DRAW_HISTOGRAM);
   SetIndexBuffer(0, g_ibuf_124);
   SetIndexStyle(1, DRAW_HISTOGRAM);
   SetIndexBuffer(1, g_ibuf_128);
   SetIndexStyle(2, DRAW_HISTOGRAM);
   SetIndexBuffer(2, g_ibuf_132);
   SetIndexStyle(3, DRAW_HISTOGRAM);
   SetIndexBuffer(3, g_ibuf_136);
   SetIndexStyle(7, DRAW_NONE);
   SetIndexBuffer(7, g_ibuf_120);
   SetIndexStyle(4, DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexBuffer(4, g_ibuf_144);
   IndicatorShortName("DPI");
   SetIndexLabel(0, "Lead");
   SetIndexLabel(1, "Follow");
   g_period_100 = Follow;
   gd_148 = gd_108 / 100.0;
   return (0);
}

int start() {
   double ld_4;
   double ld_12;
   double ld_20;
   int li_28 = IndicatorCounted();
   if (li_28 < 0) return (-1);
   if (li_28 > 0) li_28--;
   int li_0 = Bars - li_28;
   for (int li_32 = 0; li_32 < li_0; li_32++) g_ibuf_116[li_32] = iMA(NULL, 0, Lead, 0, g_ma_method_80, g_applied_price_84, li_32) - iMA(NULL, 0, Follow, 0, g_ma_method_92, g_applied_price_96, li_32);
   for (li_32 = 0; li_32 < li_0; li_32++) g_ibuf_120[li_32] = iMAOnArray(g_ibuf_116, Bars, g_period_100, 0, g_ma_method_104, li_32);
   for (li_32 = 0; li_32 < li_0; li_32++) {
      ld_4 = g_ibuf_116[li_32] - g_ibuf_120[li_32];
      g_ibuf_140[li_32] = ld_4;
      g_ibuf_144[li_32] = EMPTY_VALUE;
      if (g_ibuf_140[li_32] > 0.0 && g_ibuf_116[li_32] > 0.0) g_ibuf_144[li_32] = MathMin(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      if (g_ibuf_140[li_32] < 0.0 && g_ibuf_116[li_32] < 0.0) g_ibuf_144[li_32] = MathMax(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      if (g_ibuf_116[li_32] > 0.0) ld_12 = MathMax(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      else ld_12 = 0;
      if (g_ibuf_140[li_32] < 0.0) ld_20 = MathMin(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      else {
         ld_20 = 0;
         ld_12 = MathMax(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      }
      if (g_ibuf_116[li_32] < 0.0) ld_20 = MathMin(g_ibuf_140[li_32], g_ibuf_116[li_32]);
      if (MathAbs(ld_12) >= MathAbs(ld_20)) {
         g_ibuf_132[li_32] = MathMax(ld_12, ld_20);
         if (ld_12 < 0.0 || ld_20 < 0.0) g_ibuf_136[li_32] = MathMin(ld_12, ld_20);
         else g_ibuf_136[li_32] = EMPTY_VALUE;
         g_ibuf_124[li_32] = EMPTY_VALUE;
         g_ibuf_128[li_32] = EMPTY_VALUE;
      } else {
         g_ibuf_124[li_32] = MathMin(ld_12, ld_20);
         if (ld_12 > 0.0 || ld_20 > 0.0) g_ibuf_128[li_32] = MathMax(ld_12, ld_20);
         else g_ibuf_128[li_32] = EMPTY_VALUE;
         g_ibuf_132[li_32] = EMPTY_VALUE;
         g_ibuf_136[li_32] = EMPTY_VALUE;
      }
   }
   return (0);
}