MetaTrader5
Professioneller ZigZag-Indikator für MetaTrader 5: So optimierst du deine Handelsstrategien
Achtung! Diese Version des ZigZag-Indikators basiert auf ZigZag-Code und wurde hier mit Genehmigung seines Autors, PPC, veröffentlicht. Ich habe diese Version getestet und einen Fehler im Algorithmus behoben.
Dieser Code ist die MQL5-Version des ZigZag-Indikators für MetaTrader 4.
Wichtig! Die AlexSTAL_OutsideBar.mqh-Bibliothek sollte im ..\MQL5\Include-Ordner des MetaTrader 5-Clientterminals abgelegt werden.
Das war's?
Ich denke, der ZigZag ist eine Art Verdichtung des Preisdiagramms. Der ZigZag kann entweder auf Basis des Schlusskurses (Close-Preis) oder der Hoch- und Tiefpreise der Kerze (die am häufigsten verwendete Methode) berechnet werden.
Während ich mit dem Standard-ZigZag gearbeitet habe, der von MetaQuotes vorgeschlagen wurde, habe ich einige Fehler entdeckt. Das Hauptproblem ist, dass der Standard-ZigZag die Fälle von Outside Bars nicht berücksichtigt.
Im Jahr 2007 hat Rashid Umarov (Rosh) den Zigzag2 R-Code veröffentlicht, der Outside Bars verarbeitet (mit dem DRAW_ZIGZAG-Stil anstelle von DRAW_SECTION).
Lass uns die Merkmale einer "korrekten" ZigZag-Implementierung definieren:
Die Hochs und Tiefs müssen sich strikt abwechseln;
Das Hoch muss unter allen Kerzen auf der rechten Seite bis zum nächsten (entgegengesetzten) Tief höher (oder gleich) sein;
Das Tief muss unter allen Kerzen auf der linken Seite bis zum nächsten (entgegengesetzten) Hoch niedriger (oder gleich) sein.
Betrachten wir ein Beispiel (EURUSD, H1, 2006, 8.-13. Dezember). Hier haben wir zwei Fälle mit einer Outside Bar. Der typische ZigZag kann das "korrekte" Bild nicht erstellen.
Abbildung 1. Typischer ZigZag mit Eingabeparametern [12;5;3] und [12;0;0]
Abbildung 2. Zigzag2 R mit Eingabeparametern [12;5;3]
Abbildung 3. Zigzag2 R mit Eingabeparametern [12;0;0]
Auf den ersten Blick scheint die korrekte Konstruktion in Abbildung 3 präsentiert zu werden, aber hier sind einige Merkmale:
In diesem Fall wurde sie korrekt konstruiert aufgrund der Eingabeparameter, aber grundsätzlich muss der Algorithmus mit beliebigen Parametern arbeiten.Die Outside Bar auf der linken Seite ist nicht korrekt, aufgrund der Reihenfolge der Hoch-/Tiefbildung der Kerze:
Die ZigZag-Segmente müssen auf diese Weise konstruiert werden.
Ich habe viele Fälle der folgenden ZigZag-Algorithmen getestet: ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Aber keiner von ihnen hat das Problem korrekt gelöst.
Hier sind die Abbildungen mit diesem Indikator:
Abbildung 4. Professioneller ZigZag mit Eingabeparametern [12;0]
Abbildung 5. Professioneller ZigZag mit Eingabeparametern [23;0]
Einige Merkmale dieser Version:
Ein-Pass-Algorithmus
Er berechnet und zeichnet nur das letzte Segment neu (das Segment kann nicht storniert werden, außer bei der Aktualisierung der Historie)
Es hat den Optimierungsalgorithmus für die Berechnungen innerhalb der Kerze (es verwendet keine Neuberechnung im Tick, wenn sich der Preis innerhalb der 0 (unvollendeten) Kerze geändert hat oder die Preisänderung unter dem Schwellenwert liegt, der durch den MinMotion-Eingabeparameter definiert ist)
Es gibt zwei Algorithmen für die Anordnung der Hoch-/Tiefbildung: unter Verwendung des Kerzentyp (schnell, aber nicht präzise) und der Daten aus dem niedrigeren Zeitrahmen (es benötigt die Historie, du musst die Anwesenheit und Korrektheit überprüfen oder du musst die OutsideBar-Bibliothek modifizieren)
Die ProExtra-Version wird nicht veröffentlicht, da die Korrektheit der MetaTrader 5-Kurse nicht überprüft wurde.Hier sind einige zusätzliche Beispiele für falsche Konstruktionen des ZigZags:
Abbildung 6. EURUSD, H1, 29. November - 7. Dezember. (Rote Linie: ZigZag mit Eingabeparametern [7;0;0]. Blaue Linie: Zigzag2 R mit Eingabeparametern [7;0;0].)
Abbildung 7. EURUSD, H1, 2010, 29. November - 7. Dezember. Die korrekte Konstruktion der ZigZag-Segmente.
Fazit
Leider ist diese Version nicht perfekt, aber ich arbeite daran.Wegen des Kanalalgorithmus (iHighest/iLowest) überspringt er manchmal die Hochs.
Bitte informiere mich über Fehler und Merkmale dieses Indikators.
2011.01.19