#property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 Aqua #property indicator_color2 Black #property indicator_color3 Black #property indicator_color4 Black #property indicator_color5 White #property indicator_color6 Red #property indicator_color7 Red extern int KeelOver = 55; extern int Slalom = 17; double g_ibuf_84[]; double g_ibuf_88[]; double g_ibuf_92[]; double g_ibuf_96[]; double g_ibuf_100[]; double g_ibuf_104[]; double g_ibuf_108[]; int gi_112; int gi_116; int gi_120; int gi_124 = 3; int gi_128; int gi_132; int gi_136; int gi_140; double gd_144; double gd_152; double gd_160; double g_low_168; double g_high_176; double g_low_184; double g_high_192; double gd_200; double gd_208; double g_high_216; double g_low_224; bool gi_232; bool gi_236; bool gi_240; bool gi_244; bool gi_unused_248 = FALSE; string gs_none_252 = "None"; int init() { SetIndexBuffer(0, g_ibuf_84); SetIndexStyle(0, DRAW_SECTION, STYLE_DOT); SetIndexEmptyValue(0, 0.0); SetIndexBuffer(1, g_ibuf_88); SetIndexStyle(1, DRAW_NONE); SetIndexEmptyValue(1, 0.0); SetIndexBuffer(2, g_ibuf_92); SetIndexStyle(2, DRAW_NONE); SetIndexEmptyValue(2, 0.0); SetIndexBuffer(3, g_ibuf_96); SetIndexStyle(3, DRAW_NONE); SetIndexEmptyValue(3, 0.0); SetIndexBuffer(4, g_ibuf_100); SetIndexStyle(4, DRAW_ARROW); SetIndexArrow(4, 108); SetIndexEmptyValue(4, 0.0); SetIndexBuffer(5, g_ibuf_104); SetIndexStyle(5, DRAW_ARROW); SetIndexArrow(5, 233); SetIndexEmptyValue(5, 0.0); SetIndexBuffer(6, g_ibuf_108); SetIndexStyle(6, DRAW_ARROW); SetIndexArrow(6, 234); SetIndexEmptyValue(6, 0.0); return (0); } int start() { gi_120 = 240 - KeelOver; gd_152 = Ask - Bid; if (gi_120 <= 3 * KeelOver) return (-1); if (KeelOver <= 2 * Slalom) return (-1); for (gi_112 = 239; gi_112 > 240 - KeelOver; gi_112--) { g_ibuf_96[gi_112] = 0.0; g_ibuf_92[gi_112] = 0.0; g_ibuf_88[gi_112] = 0.0; g_ibuf_84[gi_112] = 0.0; g_ibuf_100[gi_112] = 0.0; g_ibuf_104[gi_112] = 0.0; g_ibuf_108[gi_112] = 0.0; } The_First_Crusade(); gd_200 = -1; gi_128 = -1; gd_208 = -1; gi_132 = -1; g_high_216 = -1; gi_136 = -1; g_low_224 = -1; gi_140 = -1; The_Second_Crusade(); gd_200 = -1; gi_128 = -1; gd_208 = -1; gi_132 = -1; gs_none_252 = "None"; The_Third_Crusade(); Shift_Zerro(); return (0); } void The_First_Crusade() { for (gi_112 = gi_120; gi_112 > 0; gi_112--) { g_low_184 = Low[iLowest(NULL, 0, MODE_LOW, Slalom, gi_112)]; g_high_192 = High[iHighest(NULL, 0, MODE_HIGH, Slalom, gi_112)]; if (g_low_184 == gd_208) g_low_184 = 0.0; else { gd_208 = g_low_184; if (Low[gi_112] - g_low_184 > gd_152) g_low_184 = 0.0; else { for (gi_116 = 1; gi_116 <= gi_124; gi_116++) { gd_144 = g_ibuf_92[gi_112 + gi_116]; if (gd_144 != 0.0 && gd_144 > g_low_184) g_ibuf_92[gi_112 + gi_116] = 0.0; } } } if (g_high_192 == gd_200) g_high_192 = 0.0; else { gd_200 = g_high_192; if (g_high_192 - High[gi_112] > gd_152) g_high_192 = 0.0; else { for (gi_116 = 1; gi_116 <= gi_124; gi_116++) { gd_144 = g_ibuf_96[gi_112 + gi_116]; if (gd_144 != 0.0 && gd_144 < g_high_192) g_ibuf_96[gi_112 + gi_116] = 0.0; } } } g_ibuf_92[gi_112] = g_low_184; g_ibuf_96[gi_112] = g_high_192; g_low_168 = Low[iLowest(NULL, 0, MODE_LOW, KeelOver, gi_112)]; g_high_176 = High[iHighest(NULL, 0, MODE_HIGH, KeelOver, gi_112)]; if (g_low_168 == g_low_224) g_low_168 = 0.0; else { g_low_224 = g_low_168; if (Low[gi_112] - g_low_168 > gd_152) g_low_168 = 0.0; else { for (gi_116 = 1; gi_116 <= gi_124; gi_116++) { gd_144 = g_ibuf_84[gi_112 + gi_116]; if (gd_144 != 0.0 && gd_144 > g_low_168) g_ibuf_84[gi_112 + gi_116] = 0.0; } } } if (g_high_176 == g_high_216) g_high_176 = 0.0; else { g_high_216 = g_high_176; if (g_high_176 - High[gi_112] > gd_152) g_high_176 = 0.0; else { for (gi_116 = 1; gi_116 <= gi_124; gi_116++) { gd_144 = g_ibuf_88[gi_112 + gi_116]; if (gd_144 != 0.0 && gd_144 < g_high_176) g_ibuf_88[gi_112 + gi_116] = 0.0; } } } g_ibuf_84[gi_112] = g_low_168; g_ibuf_88[gi_112] = g_high_176; } } void The_Second_Crusade() { for (gi_112 = gi_120; gi_112 > 0; gi_112--) { g_low_184 = g_ibuf_92[gi_112]; g_high_192 = g_ibuf_96[gi_112]; if (g_low_184 == 0.0 && g_high_192 == 0.0) continue; if (g_high_192 != 0.0) { if (gd_200 > 0.0) { if (gd_200 < g_high_192) g_ibuf_96[gi_128] = 0; else g_ibuf_96[gi_112] = 0; } if (gd_200 < g_high_192 || gd_200 < 0.0) { gd_200 = g_high_192; gi_128 = gi_112; } gd_208 = -1; } if (g_low_184 != 0.0) { if (gd_208 > 0.0) { if (gd_208 > g_low_184) g_ibuf_92[gi_132] = 0; else g_ibuf_92[gi_112] = 0; } if (g_low_184 < gd_208 || gd_208 < 0.0) { gd_208 = g_low_184; gi_132 = gi_112; } gd_200 = -1; } g_low_168 = g_ibuf_84[gi_112]; g_high_176 = g_ibuf_88[gi_112]; if (g_low_168 == 0.0 && g_high_176 == 0.0) continue; if (g_high_176 != 0.0) { if (g_high_216 > 0.0) { if (g_high_216 < g_high_176) g_ibuf_88[gi_136] = 0; else g_ibuf_88[gi_112] = 0.0; } if (g_high_216 < g_high_176 || g_high_216 < 0.0) { g_high_216 = g_high_176; gi_136 = gi_112; } g_low_224 = -1; } if (g_low_168 != 0.0) { if (g_low_224 > 0.0) { if (g_low_224 > g_low_184) g_ibuf_84[gi_140] = 0; else g_ibuf_84[gi_112] = 0; } if (g_low_168 < g_low_224 || g_low_224 < 0.0) { g_low_224 = g_low_168; gi_140 = gi_112; } g_high_216 = -1; } } } void The_Third_Crusade() { bool li_0 = TRUE; for (gi_112 = gi_120; gi_112 > 0; gi_112--) { g_ibuf_100[gi_112] = 0.0; g_ibuf_104[gi_112] = 0.0; g_ibuf_108[gi_112] = 0.0; gd_160 = (5.0 * Close[gi_112] + 2.0 * Open[gi_112] + High[gi_112] + Low[gi_112]) / 9.0; if (g_ibuf_84[gi_112] != 0.0) { gi_232 = TRUE; li_0 = FALSE; } if (g_ibuf_88[gi_112] != 0.0) { gi_232 = FALSE; li_0 = FALSE; } if (g_ibuf_88[gi_112] != 0.0 || g_ibuf_84[gi_112] != 0.0) g_ibuf_84[gi_112] = gd_160; else g_ibuf_84[gi_112] = 0.0; if (g_ibuf_92[gi_112] != 0.0) { gs_none_252 = "Zig"; gd_208 = gd_160; gi_236 = FALSE; gi_240 = FALSE; gi_244 = FALSE; } if (g_ibuf_96[gi_112] != 0.0) { gs_none_252 = "Zag"; gd_200 = gd_160; gi_236 = FALSE; gi_240 = FALSE; gi_244 = FALSE; } if (g_ibuf_92[gi_112] == 0.0 && g_ibuf_96[gi_112] == 0.0 && li_0 == FALSE) Slalom_With_A_Scalpel(); } } void Shift_Zerro() { gi_112 = 0; gd_160 = (5.0 * Close[0] + 2.0 * Open[0] + High[0] + Low[0]) / 9.0; Slalom_With_A_Scalpel(); g_ibuf_84[0] = gd_160; } void Slalom_With_A_Scalpel() { if (gs_none_252 == "Zig") { if (gi_232 == TRUE) { if (gd_160 - gd_208 >= gd_152 && gi_236 == FALSE) { gi_236 = TRUE; g_ibuf_104[gi_112] = Low[gi_112 + 1]; gi_132 = gi_112; } if (gd_160 <= gd_208 && gi_236 == TRUE) { gi_236 = FALSE; g_ibuf_104[gi_132] = 0.0; gi_132 = -1; } } if (gi_232 == FALSE) { if (gd_160 > gd_208 && gi_240 == FALSE) { gi_240 = TRUE; g_ibuf_100[gi_112] = gd_160; gi_132 = gi_112; } if (gd_160 <= gd_208 && gi_240 == TRUE) { gi_240 = FALSE; g_ibuf_100[gi_132] = 0.0; gi_132 = -1; } } } if (gs_none_252 == "Zag") { if (gi_232 == FALSE) { if (gd_200 - gd_160 >= gd_152 && gi_244 == FALSE) { gi_244 = TRUE; g_ibuf_108[gi_112] = High[gi_112 + 1]; gi_128 = gi_112; } if (gd_160 >= gd_200 && gi_244 == TRUE) { gi_244 = FALSE; g_ibuf_108[gi_128] = 0.0; gi_128 = -1; } } if (gi_232 == TRUE) { if (gd_200 > gd_160 && gi_240 == FALSE) { gi_240 = TRUE; g_ibuf_100[gi_112] = gd_160; gi_128 = gi_112; } if (gd_160 >= gd_200 && gi_240 == TRUE) { gi_240 = FALSE; g_ibuf_100[gi_128] = 0.0; gi_128 = -1; } } } }