#property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Green #property indicator_color2 Violet #property indicator_color3 Black #property indicator_color4 Blue #property indicator_color5 Red double g_ibuf_76[]; double g_ibuf_80[]; double g_ibuf_84[]; double g_ibuf_88[]; double g_ibuf_92[]; int gi_96 = 10; int gi_100 = 0; bool gi_104 = FALSE; bool gi_108 = FALSE; int g_period_112 = 9; int g_period_116 = 45; string gs_unused_120 = "SMA- 0, EMA - 1, SMMA - 2, LWMA- 3"; string gs_unused_128 = "settings TypeMA1=0, TypeMA2=3"; int g_ma_method_136 = MODE_SMA; int g_ma_method_140 = MODE_LWMA; double gd_144 = 0.0; double gd_152 = 0.0; double gd_unused_160 = 0.0; double gd_168 = 0.0; double gd_176 = 0.0; double gd_184 = 0.0; int gi_unused_192 = 0; int gi_unused_196 = 0; int init() { SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1, Green); SetIndexBuffer(0, g_ibuf_76); SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1, Violet); SetIndexBuffer(1, g_ibuf_80); SetIndexStyle(2, DRAW_LINE); SetIndexLabel(2, "line"); SetIndexBuffer(2, g_ibuf_84); SetIndexStyle(3, DRAW_LINE); SetIndexLabel(3, "MA1 " + g_period_112); SetIndexStyle(4, DRAW_LINE); SetIndexLabel(4, "MA2 " + g_period_116); SetIndexBuffer(3, g_ibuf_88); SetIndexBuffer(4, g_ibuf_92); return (0); } int deinit() { for (int l_count_0 = 0; l_count_0 < Bars; l_count_0++) { ObjectDelete("SELL SIGNAL: " + DoubleToStr(l_count_0, 0)); ObjectDelete("BUY SIGNAL: " + DoubleToStr(l_count_0, 0)); ObjectDelete("EXIT: " + DoubleToStr(l_count_0, 0)); } return (0); } int start() { double l_price_12; double ld_unused_20; int li_0 = IndicatorCounted(); double l_low_28 = 0; double l_high_36 = 0; double ld_44 = 1.2; if (li_0 > 0) li_0--; int li_8 = Bars - li_0; if (gi_104) li_8 = 100; for (int li_4 = 0; li_4 < li_8; li_4++) { l_high_36 = High[iHighest(NULL, 0, MODE_HIGH, gi_96, li_4)]; l_low_28 = Low[iLowest(NULL, 0, MODE_LOW, gi_96, li_4)]; switch (gi_100) { case 1: l_price_12 = Open[li_4]; break; case 2: l_price_12 = Close[li_4]; break; case 3: l_price_12 = High[li_4]; break; case 4: l_price_12 = Low[li_4]; break; case 5: l_price_12 = (High[li_4] + Low[li_4] + Close[li_4]) / 3.0; break; case 6: l_price_12 = (Open[li_4] + High[li_4] + Low[li_4] + Close[li_4]) / 4.0; break; case 7: l_price_12 = (Open[li_4] + Close[li_4]) / 2.0; break; default: l_price_12 = (High[li_4] + Low[li_4]) / 2.0; } gd_144 = 0.66 * ((l_price_12 - l_low_28) / (l_high_36 - l_low_28) - 0.5) + 0.67 * gd_152; gd_144 = MathMin(MathMax(gd_144, -0.999), 0.999); gd_168 = MathLog((gd_144 + 1.0) / (1 - gd_144)) / 2.0 + gd_176 / 2.0; g_ibuf_76[li_4] = 0; g_ibuf_80[li_4] = 0; if (gd_168 < 0.0 && gd_176 > 0.0) { if (gi_108) { ObjectCreate("EXIT: " + DoubleToStr(li_4, 0), OBJ_TEXT, 0, Time[li_4], l_price_12); ObjectSetText("EXIT: " + DoubleToStr(li_4, 0), "EXIT AT " + DoubleToStr(l_price_12, 4), 7, "Arial", White); } gi_unused_192 = 0; } if (gd_168 > 0.0 && gd_176 < 0.0) { if (gi_108) { ObjectCreate("EXIT: " + DoubleToStr(li_4, 0), OBJ_TEXT, 0, Time[li_4], l_price_12); ObjectSetText("EXIT: " + DoubleToStr(li_4, 0), "EXIT AT " + DoubleToStr(l_price_12, 4), 7, "Arial", White); } gi_unused_196 = 0; } if (gd_168 >= 0.0) { g_ibuf_76[li_4] = gd_168; g_ibuf_84[li_4] = gd_168; } else { g_ibuf_80[li_4] = gd_168; g_ibuf_84[li_4] = gd_168; } ld_unused_20 = li_4; if (gd_168 < (-ld_44) && gd_168 > gd_176 && gd_176 <= gd_184) { if (gi_108) { ObjectCreate("SELL SIGNAL: " + DoubleToStr(li_4, 0), OBJ_TEXT, 0, Time[li_4], l_price_12); ObjectSetText("SELL SIGNAL: " + DoubleToStr(li_4, 0), "SELL AT " + DoubleToStr(l_price_12, 4), 7, "Arial", Red); } gi_unused_196 = 1; } if (gd_168 > ld_44 && gd_168 < gd_176 && gd_176 >= gd_184) { if (gi_108) { ObjectCreate("BUY SIGNAL: " + DoubleToStr(li_4, 0), OBJ_TEXT, 0, Time[li_4], l_price_12); ObjectSetText("BUY SIGNAL: " + DoubleToStr(li_4, 0), "BUY AT " + DoubleToStr(l_price_12, 4), 7, "Arial", Lime); } gi_unused_192 = 1; } gd_152 = gd_144; gd_184 = gd_176; gd_176 = gd_168; } for (li_4 = 0; li_4 < li_8; li_4++) g_ibuf_88[li_4] = iMAOnArray(g_ibuf_84, Bars, g_period_112, 0, g_ma_method_136, li_4); for (li_4 = 0; li_4 < li_8; li_4++) g_ibuf_92[li_4] = iMAOnArray(g_ibuf_88, Bars, g_period_116, 0, g_ma_method_140, li_4); return (0); }