/*
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);
}