//+------------------------------------------------------------------+ //| SFCC5.mq4 | //| Turey_S.F.C.C.5.| //| &&&&&&&&&& | //+------------------------------------------------------------------+ #property copyright "Turey_S.F.C.C.5." #property indicator_separate_window #property indicator_minimum 0.0 #property indicator_maximum 1.0 #property indicator_buffers 6 #property indicator_color1 Orange #property indicator_color2 Aqua #property indicator_color3 Red #property indicator_color4 Aqua #property indicator_color5 Red int g_applied_price_76 = PRICE_CLOSE; int gi_80 = 9; int gi_84 = 0; double gd_88 = 0.0; int gi_96 = 1; int gi_100 = 1; double gd_104 = 0.0; int gi_112 = 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 gda_148[]; int g_index_152; int gi_156; int gi_160; int gi_164 = 4; double gd_168; double gd_176; double gd_184; double gd_192; double gd_200; double gd_208; double gd_216 = 3.1415926535; bool gi_224 = FALSE; bool gi_228 = FALSE; int init() { IndicatorBuffers(8); SetIndexStyle(0, DRAW_ARROW); SetIndexArrow(0, 108); SetIndexBuffer(0, g_ibuf_116); SetIndexStyle(1, DRAW_ARROW); SetIndexBuffer(1, g_ibuf_120); SetIndexArrow(1, 108); SetIndexStyle(2, DRAW_ARROW); SetIndexBuffer(2, g_ibuf_124); SetIndexArrow(2, 108); SetIndexStyle(3, DRAW_ARROW); SetIndexBuffer(3, g_ibuf_128); SetIndexArrow(3, SYMBOL_THUMBSUP); SetIndexStyle(4, DRAW_ARROW); SetIndexBuffer(4, g_ibuf_132); SetIndexArrow(4, SYMBOL_THUMBSDOWN); SetIndexBuffer(5, g_ibuf_136); SetIndexBuffer(6, g_ibuf_140); SetIndexBuffer(7, g_ibuf_144); IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS)); string ls_0 = "SFCC5"; IndicatorShortName(ls_0); SetIndexLabel(0, "SFCC5"); SetIndexLabel(1, "Up"); SetIndexLabel(2, "Dn"); SetIndexShift(0, gi_84); SetIndexShift(1, gi_84); SetIndexShift(2, gi_84); SetIndexEmptyValue(0, EMPTY_VALUE); SetIndexEmptyValue(1, EMPTY_VALUE); SetIndexEmptyValue(2, EMPTY_VALUE); SetIndexEmptyValue(3, EMPTY_VALUE); SetIndexEmptyValue(4, EMPTY_VALUE); SetIndexDrawBegin(0, gi_80 * gi_164 + gi_80 + 1); SetIndexDrawBegin(1, gi_80 * gi_164 + gi_80 + 1); SetIndexDrawBegin(2, gi_80 * gi_164 + gi_80 + 1); SetIndexDrawBegin(3, gi_80 * gi_164 + gi_80 + 1); SetIndexDrawBegin(4, gi_80 * gi_164 + gi_80 + 1); gd_168 = 3.0 * gd_216; gi_156 = gi_80 - 1; gi_160 = gi_80 * gi_164 + gi_156; ArrayResize(gda_148, gi_160); gd_200 = 0; for (g_index_152 = 0; g_index_152 < gi_160 - 1; g_index_152++) { if (g_index_152 <= gi_156 - 1) gd_184 = 1.0 * g_index_152 / (gi_156 - 1); else gd_184 = (g_index_152 - gi_156 + 1) * (2.0 * gi_164 - 1.0) / (gi_164 * gi_80 - 1.0) + 1.0; gd_176 = MathCos(gd_216 * gd_184); gd_208 = 1.0 / (gd_168 * gd_184 + 1.0); if (gd_184 <= 0.5) gd_208 = 1; gda_148[g_index_152] = gd_208 * gd_176; gd_200 += gda_148[g_index_152]; } return (0); } int start() { int li_12; double l_ima_16; double ld_24; double ld_32; double ld_40; double ld_48; string ls_56; int l_ind_counted_8 = IndicatorCounted(); if (l_ind_counted_8 > 0) li_12 = Bars - l_ind_counted_8; if (l_ind_counted_8 < 0) return (0); if (l_ind_counted_8 == 0) li_12 = Bars - gi_160 - 1; if (l_ind_counted_8 < 1) { for (int l_index_0 = 1; l_index_0 < gi_80 * gi_164 + gi_80; l_index_0++) { g_ibuf_116[Bars - l_index_0] = 0; g_ibuf_120[Bars - l_index_0] = 0; g_ibuf_124[Bars - l_index_0] = 0; } } for (int li_4 = li_12; li_4 >= 0; li_4--) { gd_192 = 0; for (l_index_0 = 0; l_index_0 <= gi_160 - 1; l_index_0++) { l_ima_16 = iMA(NULL, 0, 1, 0, MODE_LWMA, g_applied_price_76, l_index_0 + li_4); gd_192 += gda_148[l_index_0] * l_ima_16; } if (gd_200 > 0.0) g_ibuf_116[li_4] = (gd_104 / 100.0 + 1.0) * gd_192 / gd_200; if (gd_88 > 0.0) { g_ibuf_140[li_4] = MathAbs(g_ibuf_116[li_4] - (g_ibuf_116[li_4 + 1])); ld_24 = 0; for (l_index_0 = 0; l_index_0 <= gi_80 - 1; l_index_0++) ld_24 += g_ibuf_140[li_4 + l_index_0]; g_ibuf_144[li_4] = ld_24 / gi_80; ld_32 = 0; for (l_index_0 = 0; l_index_0 <= gi_80 - 1; l_index_0++) ld_32 += MathPow(g_ibuf_140[li_4 + l_index_0] - (g_ibuf_144[li_4 + l_index_0]), 2); ld_40 = MathSqrt(ld_32 / gi_80); ld_48 = gd_88 * ld_40; if (MathAbs(g_ibuf_116[li_4] - (g_ibuf_116[li_4 + 1])) < ld_48) g_ibuf_116[li_4] = g_ibuf_116[li_4 + 1]; } if (gi_96 > 0) { g_ibuf_136[li_4] = g_ibuf_136[li_4 + 1]; if (g_ibuf_116[li_4] - (g_ibuf_116[li_4 + 1]) > ld_48) g_ibuf_136[li_4] = 1; if (g_ibuf_116[li_4 + 1] - g_ibuf_116[li_4] > ld_48) g_ibuf_136[li_4] = -1; if (g_ibuf_136[li_4] > 0.0) { g_ibuf_120[li_4] = 0.6; g_ibuf_128[li_4] = 0.8; if (g_ibuf_136[li_4 + gi_100] < 0.0) g_ibuf_120[li_4 + gi_100] = g_ibuf_116[li_4 + gi_100]; g_ibuf_124[li_4] = EMPTY_VALUE; g_ibuf_132[li_4] = EMPTY_VALUE; if (gi_112 > 0 && g_ibuf_136[li_4 + 1] < 0.0 && li_4 == 0) { } } if (g_ibuf_136[li_4] < 0.0) { g_ibuf_124[li_4] = 0.6; g_ibuf_132[li_4] = 0.8; if (g_ibuf_136[li_4 + gi_100] > 0.0) g_ibuf_124[li_4 + gi_100] = g_ibuf_116[li_4 + gi_100]; g_ibuf_120[li_4] = EMPTY_VALUE; g_ibuf_128[li_4] = EMPTY_VALUE; if (gi_112 > 0 && g_ibuf_136[li_4 + 1] > 0.0 && li_4 == 0) { } } } } if (g_ibuf_136[2] < 0.0 && g_ibuf_136[1] > 0.0 && Volume[0] > 1.0 && !gi_224) { ls_56 = " " + Symbol() + " M" + Period() + ": Signal for BUY"; if (gi_112 > 0) { } gi_224 = TRUE; gi_228 = FALSE; } if (g_ibuf_136[2] > 0.0 && g_ibuf_136[1] < 0.0 && Volume[0] > 1.0 && !gi_228) { ls_56 = " " + Symbol() + " M" + Period() + ": Signal for SELL"; if (gi_112 > 0) { } gi_228 = TRUE; gi_224 = FALSE; } return (0); }