Diskussion zum Artikel "Die Stärke von ZigZag (Teil I). Entwicklung der Basisklasse des Indikators"
Die bisherigen Arbeiten des Autors zur Visualisierung sind bekannt und interessant.
Die Idee, den Spread bei der Konstruktion von Indikatoren zu berücksichtigen, ist absolut richtig, da es sich um einen wichtigen Preisparameter handelt, der aus irgendeinem Grund bei klassischen Indikatoren nicht berücksichtigt wird.
Was den ZigZag-Indikator betrifft, so ist auch in Ihrer Version auf den Bildern (Visualisierung) deutlich zu sehen, dass der Trend (wenn ich es richtig verstanden habe - die grüne Linie) manchmal eine kritische Verzögerung aufweist.
Der Grund dafür ist, dass wir, wenn wir den Trend als Handelskriterium verwenden (warum sollten wir sonst den ZigZag-Indikator verwenden), nicht nur den Spread, sondern auch die dynamischen Faktoren und vor allem die Amplitude der Rückwärtsemissionen (die bei der Bildung eines Trends zu berücksichtigen sind) in Betracht ziehen sollten. Dies ist jedoch ein Fehler der traditionellen Analyse bei der Bestimmung von Trends im Allgemeinen.
Es ist interessant, die Ergebnisse des Tests Ihres Expert Advisors zu sehen (wir werden sie wahrscheinlich in den Fortsetzungen des Artikels sehen).
Der Artikel ist nützlich, und die Visualisierung ist wie immer klar. Vielen Dank an den Autor für seine Arbeit.
Mit ZigZag können Sie Abstraktionen beliebiger Komplexität finden.
Im nächsten Artikel werden wir Beispiele für die Anwendung dieses Verfahrens zeigen.
low_ask_buffer[i] =low[i]+(spread[i]*_Point);Lassen Sie es zum Vergleich mit echten Ticks laufen.
fxsaber:
Боюсь, это неверно
low_ask_buffer[i] =low[i]+(spread[i]*_Point); Lassen Sie es zum Vergleich mit echten Zecken laufen.
Ich stimme zu. Es ist keine Tatsache, dass die Mindestspanne genau dann bestand, wenn der Geldkurs sein Minimum erreichte.
Und die historischen Daten (in Balken) enthalten genau die minimale Spanne.
Wir müssen also echte Ticks erhalten - CopyTicks(), und die minimale Differenz (ask-bid) auf dem minimalen Bid-Minimum-Ask (Low Ask) bestimmen.
Ist es das, was Sie sagen wollten?
Einverstanden. Es ist keine Tatsache, dass die Mindestspanne genau dann erreicht war, als der Geldkurs sein Minimum erreichte.
Und die historischen Daten (in Balken) enthalten genau die Mindestspanne.
Also müssen wir echte Ticks bekommen - CopyTicks(), und die minimale Differenz (ask-bid) auf dem minimalen Bid-Minimum-Ask (Low Ask) bestimmen.
Ist es das, was Sie sagen wollten?
Wahrscheinlich CopyTicks ist ein bisschen teuer für eine solche Sache. Es ist einfacher, nur echte Ticks zu verfolgen und ein ZigZag nach Ticks zu erstellen. Ehrlich gesagt, verstehe ich nicht, warum Sie sich für die Indikatorausführung von ZZ.... entschieden haben. Eine Visualisierung braucht man beim Schreiben eines TS sowieso nicht.
Ich habe mal genau die gleiche ZZ direkt in einen Expert Advisor gepostet. Das geht schnell, und mehr braucht man wohl auch nicht.
Wenn Sie einen echten Low Ask haben möchten, fügen Sie diesen Code zum Indikator hinzu.
Externer Parameter zur Aktivierung des Modus:
input bool RealTicksMode =false; // Modus "Echte Ticks
Methode zur Ermittlung des Minimum Ask aus echten Tickdaten:
//+------------------------------------------------------------------+ //| Gibt den minimalen Briefkurs aus Tickdaten zurück | //+------------------------------------------------------------------+ double GetLowAsk(const int i,const datetime &time[]) { //--- Beenden, wenn der Modus "Echte Ticks" deaktiviert ist if(!RealTicksMode) return(0.0); //--- Den letzten (aktuellen) Takt ausschließen if(i>=g_rates_total) return(0.0); //--- MqlTick ticks[]; double low_ask =0.0; datetime end_time =time[i]+PeriodSeconds(); //--- Abrufen von Ticks im angegebenen Bereich int copied_total=CopyTicksRange(_Symbol,ticks,COPY_TICKS_ALL,(ulong)time[i]*1000,(ulong)end_time*1000); if(copied_total>0) { low_ask=ticks[0].ask; for(int k=1; k<copied_total; k++) { if(ticks[k].ask<low_ask) low_ask=ticks[k].ask; } } //--- return(low_ask); }
//---
Wenn der Mindestpreis nicht ermittelt werden kann, wird die Mindestspanne verwendet.
//+------------------------------------------------------------------+ //| Füllt die Indikatorpuffer High Bid und Low Ask | //+------------------------------------------------------------------+ void FillAskBidBuffers(const int i,const datetime &time[],const double &high[],const double &low[],const int &spread[]) { //--- Beenden, wenn Sie das Startdatum nicht erreicht haben if(time[i]<first_date) return; //--- Ermittlung des Mindestpreises aus den Tickdaten double low_ask=GetLowAsk(i,time); //--- Speichern der Werte high_bid_buffer[i] =high[i]; low_ask_buffer[i] =(low_ask>0)? low_ask : low[i]+(spread[i]*_Point); }
Ergebnis:

Ehrlich gesagt verstehe ich nicht, warum Sie sich an das Indikatordesign von ZZ..... klammern wollen.
Für Studium und Forschung.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Die Stärke von ZigZag (Teil I). Entwicklung der Basisklasse des Indikators :
Viele Forscher schenken dem Erkennen des Preisverhaltens nicht genügend Aufmerksamkeit. Gleichzeitig werden komplexe Methoden eingesetzt, die sehr oft nur "Black Boxes" sind, wie z.B. maschinelles Lernen oder neuronale Netze. Die wichtigste Frage, die sich in diesem Fall stellt, ist, welche Daten für das Training eines bestimmten Modells vorgelegt werden müssen.
Im Allgemeinen werden ZigZag-Indikatoren basierend auf den Hochs und Tiefs der Balken ohne Berücksichtigung von Spreads (Spreizung) gebaut. Dieser Artikel stellt eine modifizierte Version vor, in der ein Spread bei der Konstruktion von Segmenten für untere ZigZag-Extrema berücksichtigt wird. Es wird davon ausgegangen, dass Positionen innerhalb des Preiskanals vom Handelssystem getätigt werden sollen. Dies ist wichtig, da es oft vorkommt, dass der Kaufpreis (Ask) deutlich höher ist als der Verkaufspreis (Bid). Dies tritt beispielsweise nachts auf. Es wäre also falsch, einen Indikator nur auf der Grundlage von Geldkursen (Bid) zu erstellen. Schließlich macht es keinen Sinn, die unteren Extrema des Indikators auf Basis von Balken-Tiefs zu bilden, wenn es keine Möglichkeit gibt, zu diesen Preisen zu kaufen. Natürlich kann der Spread in den Handelsbedingungen berücksichtigt werden, aber es ist besser, wenn alles sofort auf dem Chart sichtbar ist. Dies vereinfacht die Entwicklung der Handelsstrategie, da zunächst alles plausibler ist.
Darüber hinaus könnten Sie auch alle Punkte sehen wollen, an denen die Extrema des ZigZags aktualisiert wurden. In diesem Fall wird das Bild noch vollständiger. Betrachten wir nun den Indikatorcode. Wir werden nur auf die grundlegenden Merkmale und Funktionen eingehen.
Autor: Anatoli Kazharski