Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Eine Möglichkeit. Es gibt noch andere.
Wir haben den ersten Strahl. Der Einfachheit halber - ausgehend von der Nullleiste. Der Null-Balken hat ein Maximum und ein Minimum. Der Kurs bewegt sich innerhalb des Balkens, ohne seine Extrema zu verändern. Da sich die Extrema nicht verändern, sollte der erste Strahl stillstehen und sich nicht bewegen. Aber das ist nicht der Fall. Der erste Strahl ruckt. Ändert seine Position. Dies ist lediglich eine Beschreibung der äußeren Erscheinungsform der Instabilität. Wenn der Algorithmus stabil arbeitet und sich die Marktparameter (Höchst- und Tiefstwert des letzten Balkens), von denen die Zickzack-Operation abhängt, nicht ändern, sollte der erste Strahl nicht schwanken. Ich habe selbst mit diesem Problem gekämpft. Aber bemerkte Merkmale von Suchfunktionen haben mich gezwungen, auf das Forum zu gehen.
========================
Wenn wir während der Berechnung des Indikators das Fenster verschieben (Shift,Shift+ExtDepth), kann das Auftreten eines neuen Extremums entweder mit einem neuen Preis oder damit zusammenhängen, dass das alte Extremum das Fenster verlassen hat. - Es wäre besser, dies explizit anzugeben. Um das klarzustellen. In der Sprachbeschreibung. Um die verborgenen Möglichkeiten der Sprache nicht zu erforschen.
Zu diesem Zweck wird die Zeile if(highpos!=shift) val=0.0; . Wie das im Standardcode gemacht wird, verstehe ich nicht. Nach der Tatsache zu urteilen, dass in meiner Variante baumelnde Extrema verschwinden, wird es entweder nicht richtig oder gar nicht gemacht. - Meine Lösung für dieses Problem ist anders: if (High[shift]=val) ZigZagBuffer[shift]=val; und if (Low[shift]=val) ZigZagBuffer[shift]=val;
Aber im Grunde ist es dasselbe. Doch damit sind nicht alle Probleme gelöst. Es ist die Art und Weise, wie wir die Folgen bekämpfen und nicht die Ursache. Ich habe versucht, die Folgen auf dieselbe Weise zu bekämpfen. Aber beim ersten Strahl funktioniert es nicht. Das Problem ist, dass der Zickzack-Algorithmus, sagen wir mal, nicht zerlegt. Lassen Sie mich das erklären. Die Berechnung wird über die gesamte Historie durchgeführt. Und wenn wir einen Teil davon korrigieren, bleibt die Verarbeitung unvollständig, sozusagen in der Nähe der Null-Linie. Ich finde nicht die richtigen Worte. Diese Unvollständigkeit in der Nähe der Nulllinie macht das Problem der korrekten Identifizierung von Extrema deutlich.
Ich habe vor nicht allzu langer Zeit versucht, die Fensterparameter anzupassen (Shift, Shift+ExtDepth). Ich habe neulich auch mit dem Fenster experimentiert. Aber bisher ohne Ergebnis.
Dieses Problem ist bekannt und kann theoretisch gelöst werden (ich habe den Algorithmus schon lange im Kopf). Wenn keine andere Lösung gefunden wird, werde ich den Zickzack-Algorithmus optimieren. Dabei wird wie folgt vorgegangen:
1) Der erste Durchlauf wird wie beim aktuellen Algorithmus über die gesamte Historie durchgeführt
2) Bei jedem Tick von Null Bar bis tief in die Historie werden zwei Extrema des Zigzag gesucht, das letzte Extremum wird zwangsweise gelöscht.
3) aus dem letzten (jetzt letzten) folgt wieder dem Standardverfahren der Zickzackberechnung.
4) Wenn das aktuelle Ende (der Schwanz des ZigZag) theoretisch ein Extremum sein kann (wir haben das Höchste vom letzten Tief oder umgekehrt), wird es auch ein Extremum.
5) mit einem neuen Häkchen wieder von vorne beginnen (Punkt 2)
Aber das ist nicht passiert. Der erste Strahl zuckt. Er ändert seine Position.
Ich habe das noch nicht gesehen. Bleibt ein Ende des Balkens fest? Und welche. Wenn es auf der Nullleiste liegt, sollte man sich vielleicht die Bedingungen genauer ansehen, unter denen Variablen vom Typ Double verglichen werden.
Dies scheint mir eher auf den Algorithmus als auf die Sprache zu verweisen. Eine Erinnerung daran, dass die Funktionen, die wir diskutieren, eigentlich nach dem maximalen (minimalen) Preiswert über das Intervall suchen, und nicht nach dem Extremwert, wäre also in einem Buch oder in einigen Kommentaren angebracht.
Punkt 4) wird beim nächsten Tick mit einer Datei über Punkt 2) verarbeitet
Dieses Problem ist bekannt und theoretisch lösbar (ein Algorithmus ist schon seit langem in Planung).
Das Problem ist, dass ich den Indikator, der den Zickzackkurs verwendet, unter sehr strengen Bedingungen teste. Auf Minuten und mit 2-1-1 Parametern. Was ist der Zweck solcher Tests? Diese Art der Prüfung deckt alle versteckten Schwachstellen recht schnell auf. Außerdem soll der Indikator ausnahmslos auf allen Zeitskalen funktionieren. Der Markt ist ein fraktales Gebilde. Es gibt viele Menschen, die auf Minutenbasis handeln. Warum sollten wir ihnen die Möglichkeit vorenthalten, mit dem vertrauten Werkzeug in einem kleinen Zeitrahmen zu arbeiten?
Meine Version gefällt mir besser.) Es funktioniert mit ganzen Zahlen. Wenn ein solcher Vergleich von Doubles (vom Typ Low[shift]==val) durchgeführt wird, kann es zu Beats kommen.
Bisher habe ich noch keine Schwierigkeiten bei der Arbeit mit Double gehabt. Diese Nummern werden unverändert im Speicher abgelegt. Aber mein Vergleich nimmt Werte aus einer einzigen Speicherzelle. Wenn an dieser Stelle ein Problem auftritt, handelt es sich um ein Problem der Hardware (d. h. des Computers). Es muss etwas an der Hardware getan werden.
Ich habe den Eindruck, dass sich dies nicht auf die Sprache, sondern auf den Algorithmus bezieht. Daher wäre eine Erinnerung daran, dass die Funktionen, die wir erörtern, eigentlich nach dem maximalen (minimalen) Preiswert über das Intervall suchen, und nicht nach einem Extremwert, für ein Buch oder einige Kommentare angebracht.
Ich habe es nur ein Extremum genannt. Es handelt sich dabei um das Maximum und Minimum des gewählten Intervalls. Es ist eine lange Aussprache. Aber die Bedeutung ist dieselbe.
Das gab es lange Zeit auf CodeBase.mql4.com. Aber diese Beschreibung ist sehr schwer zu verstehen. Und widersprüchlich. Ich glaube, Slava hat im Laufe des Sommers den Code des Zickzacks verfeinert. Danach war nur noch ein Teil der früheren Beschreibung auf der Website vorhanden.
Die Arbeit mit Double hat bisher keine Schwierigkeiten bereitet. Diese Nummern werden unverändert im Speicher abgelegt. Und mein Vergleich nimmt Werte aus einer einzigen Speicherstelle. Wenn hier ein Problem auftritt, ist es eine Frage der Hardware - des Computers. Es muss etwas an der Hardware getan werden.