#property copyright "Copyright © 2008, arhikreol" #property link "arhikreol@gmail.com" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red int gi_76 = 4; int gi_80 = 1; int gi_84 = 1; int g_period_88 = 33; int gi_92 = 5; double gd_96 = 30.0; 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 g_ibuf_132[]; int gi_136 = 0; int gi_140 = 0; int init() { string ls_0 = "ProfitBase"; IndicatorBuffers(8); SetIndexBuffer(6, g_ibuf_112); SetIndexBuffer(7, g_ibuf_116); SetIndexStyle(4, DRAW_LINE); SetIndexBuffer(4, g_ibuf_104); SetIndexStyle(5, DRAW_LINE); SetIndexBuffer(5, g_ibuf_108); SetIndexBuffer(2, g_ibuf_120); SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2); SetIndexBuffer(3, g_ibuf_124); SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 2); SetIndexBuffer(0, g_ibuf_128); SetIndexStyle(0, DRAW_HISTOGRAM); SetIndexBuffer(1, g_ibuf_132); SetIndexStyle(1, DRAW_HISTOGRAM); IndicatorShortName(ls_0); SetIndexLabel(0, ls_0); SetIndexLabel(1, "Signal"); gi_136 = gi_76 + gi_80; SetIndexDrawBegin(0, gi_136); SetIndexDrawBegin(2, gi_136); SetIndexDrawBegin(3, gi_136); return (0); } int start() { double ld_12; double ld_20; double ld_28; double ld_36; double ld_44; int li_8 = IndicatorCounted(); if (Bars <= gi_140) return (0); if (li_8 < 1) { for (int li_0 = 1; li_0 <= gi_136; li_0++) g_ibuf_104[Bars - li_0] = 0; for (li_0 = 1; li_0 <= gi_140; li_0++) g_ibuf_108[Bars - li_0] = 0; for (li_0 = 1; li_0 <= gi_140; li_0++) g_ibuf_128[Bars - li_0] = 0; for (li_0 = 1; li_0 <= gi_140; li_0++) g_ibuf_132[Bars - li_0] = 0; } li_0 = Bars - gi_76; if (li_8 > gi_76) li_0 = Bars - li_8 - 1; while (li_0 >= 0) { ld_20 = 1000000; for (int li_4 = li_0 + gi_76 - 1; li_4 >= li_0; li_4--) { ld_12 = Low[li_4]; if (ld_20 > ld_12) ld_20 = ld_12; } g_ibuf_116[li_0] = ld_20; li_0--; } li_0 = Bars - gi_76; if (li_8 > gi_76) li_0 = Bars - li_8 - 1; while (li_0 >= 0) { ld_28 = -1000000; for (li_4 = li_0 + gi_76 - 1; li_4 >= li_0; li_4--) { ld_12 = High[li_4]; if (ld_28 < ld_12) ld_28 = ld_12; } g_ibuf_112[li_0] = ld_28; li_0--; } li_0 = Bars - gi_136; if (li_8 > gi_136) li_0 = Bars - li_8 - 1; while (li_0 >= 0) { ld_36 = 0.0; ld_44 = 0.0; for (li_4 = li_0 + gi_80 - 1; li_4 >= li_0; li_4--) { ld_36 += Close[li_4] - g_ibuf_116[li_4]; ld_44 += g_ibuf_112[li_4] - g_ibuf_116[li_4]; } if (ld_44 == 0.0) g_ibuf_104[li_0] = gi_84 + 100.0; else g_ibuf_104[li_0] = 100.0 * (ld_36 / ld_44) + gi_84; li_0--; } if (li_8 > 0) li_8--; int li_52 = Bars - li_8; li_0 = 0; int li_unused_56 = 0; while (li_0 < li_52) { g_ibuf_120[li_0] = iEnvelopesOnArray(g_ibuf_104, 0, g_period_88, MODE_SMA, gi_92, gd_96, MODE_LOWER, li_0); g_ibuf_124[li_0] = iEnvelopesOnArray(g_ibuf_104, 0, g_period_88, MODE_SMA, gi_92, gd_96, MODE_UPPER, li_0); g_ibuf_128[li_0] = 0; if (g_ibuf_104[li_0] <= g_ibuf_120[li_0]) g_ibuf_128[li_0] = g_ibuf_104[li_0] - g_ibuf_120[li_0]; if (g_ibuf_104[li_0] >= g_ibuf_124[li_0]) g_ibuf_128[li_0] = g_ibuf_104[li_0] - g_ibuf_124[li_0]; li_0++; } return (0); }