/* Generated by EX4-TO-MQ4 decompiler V4.0.225.1g [] Website: http://purebeam.biz E-mail : purebeam@gmail.com */ #property copyright "Tudor Ceban" #property link "www.scientificforex.com" #property indicator_chart_window double gda_76[200]; int gia_80[9]; double gda_84[9]; extern int DrawFirstLines = 3; extern color PaintedColor = Blue; extern color ProphetColor = Red; int gi_100 = 12; string gs_unused_104 = ""; string gs_dummy_112; double g_point_120; int g_count_128 = 49; int gi_132; bool gi_144 = TRUE; bool gi_148 = FALSE; void update_high(double &ada_0[], int ai_4) { for (int li_8 = ai_4 + 1; li_8 < ai_4 + 100; li_8++) if (ada_0[li_8] != 0.0) break; if (ada_0[li_8] == High[li_8]) { if (High[ai_4] > High[li_8]) ada_0[li_8] = 0; if (High[ai_4] < High[li_8]) ada_0[ai_4] = 0; } } void update_low(double &ada_0[], int ai_4) { for (int li_8 = ai_4 + 1; li_8 < ai_4 + 100; li_8++) if (ada_0[li_8] != 0.0) break; if (ada_0[li_8] == Low[li_8]) { if (Low[ai_4] < Low[li_8]) ada_0[li_8] = 0; if (Low[ai_4] > Low[li_8]) ada_0[ai_4] = 0; } } void update_fractals_one(double &ada_0[], int ai_4, int ai_8, bool ai_12 = TRUE) { int li_16 = is_fractal(ai_8, ai_4); if (li_16 == 0) ada_0[ai_8] = 0; if (li_16 == 1) { ada_0[ai_8] = High[ai_8]; if (ai_12) update_high(ada_0, ai_8); } if (li_16 == 2) { ada_0[ai_8] = Low[ai_8]; if (ai_12) update_low(ada_0, ai_8); } } int deinit() { int l_objs_total_0; Comment(""); string l_name_4 = ""; bool li_12 = TRUE; while (li_12) { li_12 = FALSE; l_objs_total_0 = ObjectsTotal(); for (int li_16 = 0; li_16 < l_objs_total_0; li_16++) { l_name_4 = ObjectName(li_16); if (StringFind(l_name_4, "Wave") != -1) { ObjectDelete(l_name_4); li_12 = TRUE; } } } return (0); } int is_fractal(int ai_0, int ai_4) { int li_8 = 1; int l_count_12 = 0; int l_count_16 = 0; while (li_8 < ai_4) { if (High[ai_0] > High[ai_0 + li_8]) { if (ai_0 - li_8 >= 0) if (High[ai_0] > High[ai_0 - li_8]) l_count_12++; } if (Low[ai_0] < Low[ai_0 + li_8]) { if (ai_0 - li_8 >= 0) if (Low[ai_0] < Low[ai_0 - li_8]) l_count_16++; } li_8++; } if (l_count_12 == ai_4 - 1) return (1); if (l_count_16 == ai_4 - 1) return (2); return (0); } int init() { if (Point == 0.00001) g_point_120 = 0.0001; else { if (Point == 0.001) g_point_120 = 0.01; else g_point_120 = Point; } if (DrawFirstLines > 5) DrawFirstLines = 5; gi_144 = TRUE; for (int l_index_0 = 0; l_index_0 < 200; l_index_0++) gda_76[l_index_0] = 0; gi_132 = MathRound(gi_100 + 1) / 2.0; for (l_index_0 = 0; l_index_0 < 9; l_index_0++) { gia_80[l_index_0] = -1; gda_84[l_index_0] = 0; } for (int li_4 = 199; li_4 > 0; li_4--) update_fractals_one(gda_76, gi_132, li_4); if (gi_144) { find_elliot_wave(); gi_144 = FALSE; } g_count_128 = 0; for (int l_datetime_8 = iTime(Symbol(), PERIOD_H1, 0); iBarShift(Symbol(), PERIOD_H1, l_datetime_8, TRUE) != -1; l_datetime_8 -= 3600) { } while (iBarShift(Symbol(), PERIOD_H1, l_datetime_8, TRUE) == -1) { l_datetime_8 -= 3600; g_count_128++; } return (0); } void update_elliot_lines() { double ld_0; double ld_8; int l_datetime_16; string ls_20 = "=====================\n" + "|| ELLIOTT WAVE PROPHET ||\n" + "|| Ïèíêè ||\n" + "|| Áðÿê ||\n" + "====== Waves Data : ======\n\n"; double ld_28 = 0; for (int li_36 = 1; li_36 < 9; li_36++) { ld_0 = ObjectGet("Wave " + li_36, OBJPROP_PRICE1); ld_8 = ObjectGet("Wave " + li_36, OBJPROP_PRICE2); if (ld_28 == 0.0) ld_28 = MathAbs(ld_8 - ld_0); ld_28 = MathAbs(ld_8 - ld_0); if (ld_0 != gda_84[li_36 - 1] && li_36 != 1) { l_datetime_16 = ObjectGet("Wave " + li_36, OBJPROP_TIME1); ObjectSet("Wave " + ((li_36 - 1)), OBJPROP_PRICE2, ld_0); ObjectSet("Wave " + ((li_36 - 1)), OBJPROP_TIME2, l_datetime_16); gda_84[li_36 - 1] = ld_0; gia_80[li_36 - 1] = iBarShift(Symbol(), Period(), l_datetime_16); update_waves(li_36 - 1); } if (ld_0 != gda_84[0] && li_36 == 1) { update_waves(); gda_84[0] = ld_0; } if (ld_8 != gda_84[li_36] && li_36 != 8) { l_datetime_16 = ObjectGet("Wave " + li_36, OBJPROP_TIME2); ObjectSet("Wave " + ((li_36 + 1)), OBJPROP_PRICE1, ld_8); ObjectSet("Wave " + ((li_36 + 1)), OBJPROP_TIME1, l_datetime_16); gda_84[li_36] = ld_8; gia_80[li_36] = iBarShift(Symbol(), Period(), l_datetime_16); update_waves(li_36 - 1); } if (li_36 == 1) ls_20 = ls_20 + "Wave " + li_36 + ": " + DoubleToStr(MathAbs(ld_8 - ld_0) / g_point_120, 1) + " pips \n"; if (li_36 == 2 || li_36 == 4) { ls_20 = ls_20 + "Wave " + li_36 + ": " + DoubleToStr(MathAbs(ld_8 - ld_0) / g_point_120, 1) + " pips " + DoubleToStr(100.0 * MathAbs((ld_8 - ld_0) / (ObjectGet("Wave " + ((li_36 - 1)), OBJPROP_PRICE1) - ObjectGet("Wave " + ((li_36 - 1)), OBJPROP_PRICE2))), 1) + " % from Wave " + ((li_36 - 1)) + "\n"; } if (li_36 == 3 || li_36 == 5) { ls_20 = ls_20 + "Wave " + li_36 + ": " + DoubleToStr(MathAbs(ld_8 - ld_0) / g_point_120, 1) + " pips " + DoubleToStr(100.0 * MathAbs((ld_8 - ld_0) / (ObjectGet("Wave " + ((li_36 - 2)), OBJPROP_PRICE1) - ObjectGet("Wave " + ((li_36 - 2)), OBJPROP_PRICE2))), 1) + " % from Wave " + ((li_36 - 2)) + "\n"; } if (li_36 == 7 || li_36 == 8) ls_20 = ls_20 + ObjectDescription("Wave " + li_36) + ": " + DoubleToStr(MathAbs(ld_8 - ld_0) / g_point_120, 1) + " pips " + DoubleToStr(100.0 * MathAbs((ld_8 - ld_0) / (ObjectGet("Wave 6", OBJPROP_PRICE1) - ObjectGet("Wave 6", OBJPROP_PRICE2))), 1) + " % from Wave A\n"; if (li_36 == 6) ls_20 = ls_20 + "Wave A" + ": " + DoubleToStr(MathAbs(ld_8 - ld_0) / g_point_120, 1) + " pips " + DoubleToStr(100.0 * MathAbs((ld_8 - ld_0) / (ObjectGet("Wave 5", OBJPROP_PRICE1) - ObjectGet("Wave 5", OBJPROP_PRICE2))), 1) + " % from Wave 5\n"; if (Time[0] < ObjectGet("Wave " + li_36, OBJPROP_TIME2)) ObjectSet("Wave " + li_36, OBJPROP_COLOR, ProphetColor); else ObjectSet("Wave " + li_36, OBJPROP_COLOR, PaintedColor); } Comment(ls_20); } void find_elliot_wave() { int l_index_0 = 0; int l_index_4 = 0; for (int l_index_8 = 0; l_index_8 < DrawFirstLines; l_index_8++) { while (gda_76[l_index_0] == 0.0) l_index_0++; for (l_index_4 = l_index_0 + 1; gda_76[l_index_4] == 0.0; l_index_4++) { } MyCreateObject("Wave " + ((DrawFirstLines - l_index_8)), Time[l_index_4], gda_76[l_index_4], Time[l_index_0], gda_76[l_index_0], DrawFirstLines - l_index_8); gia_80[DrawFirstLines - l_index_8] = l_index_0; gia_80[DrawFirstLines - l_index_8 - 1] = l_index_4; gda_84[DrawFirstLines - l_index_8] = gda_76[l_index_0]; l_index_0 = l_index_4; } gda_84[0] = gda_76[l_index_4]; double ld_12 = ObjectGet("Wave " + DrawFirstLines, OBJPROP_PRICE2); int li_20 = ObjectGet("Wave " + DrawFirstLines, OBJPROP_TIME2); int li_24 = 1; if (ld_12 > ObjectGet("Wave " + DrawFirstLines, OBJPROP_PRICE1)) li_24 = -1; double ld_28 = 50; int li_36 = 5; double ld_40 = 0.618; int li_48 = 0; for (l_index_8 = DrawFirstLines; l_index_8 < 8; l_index_8++) { if (l_index_8 == 1) { ld_40 = 0.618; li_48 = 1; } if (l_index_8 == 2) { ld_40 = 1.618; li_48 = 1; } if (l_index_8 == 3) { ld_40 = 0.382; li_48 = 3; } if (l_index_8 == 4) { ld_40 = 0.618; li_48 = 3; } if (l_index_8 == 5) { ld_40 = 0.618; li_48 = 5; } if (l_index_8 == 6) { ld_40 = 0.5; li_48 = 6; } if (l_index_8 == 7) { ld_40 = 1; li_48 = 6; } ld_12 = ObjectGet("Wave " + l_index_8, OBJPROP_PRICE2); li_20 = ObjectGet("Wave " + l_index_8, OBJPROP_TIME2); ld_28 = ld_40 * MathAbs(ObjectGet("Wave " + li_48, OBJPROP_PRICE2) - ObjectGet("Wave " + li_48, OBJPROP_PRICE1)); li_36 = MathFloor(ld_40 * MathAbs(ObjectGet("Wave " + li_48, OBJPROP_TIME1) - ObjectGet("Wave " + li_48, OBJPROP_TIME2))); MyCreateObject("Wave " + ((l_index_8 + 1)), li_20, ld_12, li_20 + li_36, ld_12 + li_24 * ld_28, l_index_8 + 1); gda_84[l_index_8] = ld_12; ld_12 += li_24 * ld_28; li_20 += li_36; li_24 = -li_24; } gda_84[8] = ld_12; update_waves(DrawFirstLines - 1); } void update_waves(int ai_0 = 0) { int li_44; int li_48; int l_count_56; double ld_4 = ObjectGet("Wave " + ((ai_0 + 1)), OBJPROP_PRICE2); int li_12 = ObjectGet("Wave " + ((ai_0 + 1)), OBJPROP_TIME2); int li_16 = 1; if (ld_4 > ObjectGet("Wave " + ((ai_0 + 1)), OBJPROP_PRICE1)) li_16 = -1; double ld_20 = 50; int li_28 = 60 * (5 * Period()); double ld_32 = 1; int li_40 = 0; for (int li_60 = ai_0 + 1; li_60 < 8; li_60++) { if (li_60 == 1) { ld_32 = 0.618; li_40 = 1; } if (li_60 == 2) { ld_32 = 1.618; li_40 = 1; } if (li_60 == 3) { ld_32 = 0.382; li_40 = 3; } if (li_60 == 4) { ld_32 = 0.618; li_40 = 3; } if (li_60 == 5) { ld_32 = 0.618; li_40 = 5; } if (li_60 == 6) { ld_32 = 0.5; li_40 = 6; } if (li_60 == 7) { ld_32 = 1; li_40 = 6; } if (gi_148) Print("Painting Wave " + ((li_60 + 1))); ld_4 = ObjectGet("Wave " + li_60, OBJPROP_PRICE2); li_12 = ObjectGet("Wave " + li_60, OBJPROP_TIME2); if (gi_148) Print("dtLast of Wave " + li_60 + " is " + li_12 + " Bar:" + iBarShift(Symbol(), Period(), li_12)); ld_20 = ld_32 * MathAbs(ObjectGet("Wave " + li_40, OBJPROP_PRICE2) - ObjectGet("Wave " + li_40, OBJPROP_PRICE1)); if (gi_148) Print("iBarShift Wave " + li_40 + " is " + iBarShift(Symbol(), Period(), ObjectGet("Wave " + li_40, OBJPROP_TIME2))); if (iBarShift(Symbol(), Period(), ObjectGet("Wave " + li_40, OBJPROP_TIME2)) > 0) li_28 = MathFloor(60.0 * (ld_32 * (iBarShift(Symbol(), Period(), ObjectGet("Wave " + li_40, OBJPROP_TIME1)) - iBarShift(Symbol(), Period(), ObjectGet("Wave " + li_40, OBJPROP_TIME2))) * Period())); else { li_28 = MathFloor(ld_32 * (ObjectGet("Wave " + li_40, OBJPROP_TIME2) - ObjectGet("Wave " + li_40, OBJPROP_TIME1))); if (gi_148) Print("dRatio" + ld_32 + " iPeriods " + li_28 + "s for Wave" + li_40 + "or " + DoubleToStr(li_28 / (60 * Period()), 2)); li_44 = ObjectGet("Wave " + li_40, OBJPROP_TIME1); li_48 = ObjectGet("Wave " + li_40, OBJPROP_TIME2); l_count_56 = 0; while (li_44 < li_48) { li_44 += 3600; if (TimeDayOfWeek(li_44) == 6 && li_44 < Time[0] + 60 * Period()) { l_count_56++; li_44 += 60 * (60 * g_count_128); } } if (l_count_56 != 0 && iBarShift(Symbol(), Period(), ObjectGet("Wave " + li_40, OBJPROP_TIME1)) > 0) li_28 = MathFloor(ld_32 * MathAbs(ObjectGet("Wave " + li_40, OBJPROP_TIME2) - ObjectGet("Wave " + li_40, OBJPROP_TIME1) - 60 * (60 * (l_count_56 * g_count_128)))); if (gi_148) Print("iWeekEnds=" + l_count_56 + " so iPeriods " + li_28 + "s or " + DoubleToStr(li_28 / (60 * Period()), 2)); } ObjectSet("Wave " + ((li_60 + 1)), OBJPROP_PRICE1, ld_4); ObjectSet("Wave " + ((li_60 + 1)), OBJPROP_TIME1, li_12); gda_84[li_60] = ld_4; ld_4 += li_16 * ld_20; li_12 += li_28; ObjectSet("Wave " + ((li_60 + 1)), OBJPROP_PRICE2, ld_4); ObjectSet("Wave " + ((li_60 + 1)), OBJPROP_TIME2, li_12); li_44 = ObjectGet("Wave " + ((li_60 + 1)), OBJPROP_TIME1); li_48 = ObjectGet("Wave " + ((li_60 + 1)), OBJPROP_TIME2); l_count_56 = 0; while (li_44 < li_48) { li_44 += 3600; if (TimeDayOfWeek(li_44) == 6 && li_44 < Time[0] + 60 * Period()) { l_count_56++; li_44 += 60 * (60 * g_count_128); } if (gi_148) if (li_60 == 2) Print(TimeToStr(li_44) + " Day " + TimeDayOfWeek(li_44)); } if (l_count_56 != 0) ObjectSet("Wave " + ((li_60 + 1)), OBJPROP_TIME2, li_12 + 60 * (60 * (l_count_56 * g_count_128))); if (gi_148) Print("Wave " + ((li_60 + 1)) + " has " + l_count_56 + " WeekEnds"); li_16 = -li_16; } } void MyCreateObject(string a_name_0, int a_datetime_8, double a_price_12, int a_datetime_20, double a_price_24, int ai_32 = 0) { ObjectCreate(a_name_0, OBJ_TREND, 0, a_datetime_8, a_price_12, a_datetime_20, a_price_24); ObjectSet(a_name_0, OBJPROP_RAY, FALSE); ObjectSet(a_name_0, OBJPROP_COLOR, PaintedColor); if (ai_32 < 6) ObjectSetText(a_name_0, a_name_0, 10); else { if (ai_32 == 6) ObjectSetText(a_name_0, "Wave A", 10); if (ai_32 == 7) ObjectSetText(a_name_0, "Wave B", 10); if (ai_32 == 8) ObjectSetText(a_name_0, "Wave C", 10); } ObjectSet(a_name_0, OBJPROP_WIDTH, 3); } int start() { update_elliot_lines(); return (0); }