Indikatoren: Harmonic Pattern Finder V2 - Seite 5

 

Also David,

ich habe deine Idee einer puristischen PRZ ausprobiert und muss sagen, dass sie mir gefällt. Ich dachte, das könnte dich interessieren, also poste ich ein Code-Snippet, das du unter Zeile 802 einfügen kannst. Dadurch wird der projizierte Punkt D nicht zum ersten Verhältnis oder der PRZ-Stopp zum letzten Verhältnis. Stattdessen werden die Muster herausgefiltert, die nur für den Holisten und nicht für den Puristen da sind, d.h. die nicht alle Verhältnisse in der PRZ enthalten.

               //--- Puristische PRZ müssen die genauen Verhältnisse enthalten
               if(true)
                 {
                  if(cd2bcConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2bc_min*BC;
                        double farRatio=C-pattern.cd2bc_max*BC;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2bc_min*BC;
                        double farRatio=C+pattern.cd2bc_max*BC;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(ad2xaConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=A-pattern.ad2xa_min*XA;
                        double farRatio=A-pattern.ad2xa_max*XA;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=A+pattern.ad2xa_min*XA;
                        double farRatio=A+pattern.ad2xa_max*XA;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(cd2xcConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2xc_min*XC;
                        double farRatio=C-pattern.cd2xc_max*XC;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2xc_min*XC;
                        double farRatio=C+pattern.cd2xc_max*XC;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                  if(cd2abConstraint)
                    {
                     bool contained;
                     if(startsInTrough)
                       {
                        double nearRatio=C-pattern.cd2ab_min*AB;
                        double farRatio=C-pattern.cd2ab_max*AB;
                        contained=nearD>=farRatio && nearRatio>=farD;
                       }
                     else
                       {
                        double nearRatio=C+pattern.cd2ab_min*AB;
                        double farRatio=C+pattern.cd2ab_max*AB;
                        contained=nearD<=farRatio && nearRatio<=farD;
                       }
                     if(!contained)
                        continue;
                    }
                 }

Sie können auch das "true" in den Klammern von Zeile 2 oben durch eine Variable wie "InpPuristPRZ" ersetzen und die Variable als Eingabe deklarieren, wenn Sie den puristischen PRZ-Modus in den Einstellungen ein-/ausschalten wollen. Intervallverhältnisse werden durch bloße Überlappung geprüft, oder dass ein Teil des Intervalls in der PRZ liegt (statt nur Schlupf).

Mit freundlichen Grüßen,

André

 

Hallo Andre,

ich habe die Dateien heruntergeladen und alexstal_outsidebar in den Ordner "Include" installiert. Dann habe ich alexstal_ZZprof, swingchart, fastzz und Harmonic Pattern Finder V2 im Ordner \MQL5\Indicators\Example gespeichert.

Ich habe die Plattform geschlossen und nach erneutem Öffnen den Harmonic Pattern Finder auf den Chart gezogen. Auf der Registerkarte Experten erhalte ich die folgende Meldung:


Der Indikator ist auf dem EU- und XAG-Chart geladen.

Bitte teilen Sie mir mit, was ich falsch gemacht habe.


Mit freundlichen Grüßen Eckbert

 
Eckbert Gevers:

Hallo Andre,

ich habe die Dateien heruntergeladen und alexstal_outsidebar in den Ordner "Include" installiert. Dann habe ich alexstal_ZZprof, swingchart, fastzz und Harmonic Pattern Finder V2 im Ordner \MQL5\Indicators\Example gespeichert.

Ich habe die Plattform geschlossen und nach erneutem Öffnen den Harmonic Pattern Finder auf den Chart gezogen. Auf der Registerkarte Experten erhalte ich die folgende Meldung:


Der Indikator ist auf dem EU- und XAG-Chart geladen.

Bitte teilen Sie mir mit, was ich falsch gemacht habe.


Mit freundlichen Grüßen Eckbert

Hallo Andre, ich konnte das Problem beheben. Habe einen neuen Download-Ordner angelegt und alles ist in Ordnung.

Danke Eckbert

 

Hallo Andre,

Ist es möglich, diesen Indikator in einem EA zu verwenden?

Ich benutze die icustom mit allen Eingabeparametern, aber ich kann nicht auf die Puffer zugreifen, die notwendig sind, um Spitzen und Talsohlen zu erkennen

und vor allem die Puffer mit den Punkten A, B, C und D

Gibt es einen EA mit einem Beispiel?

 
João José:

Hallo Andre,

Ist es möglich, diesen Indikator in einem EA zu verwenden?

Ich benutze die icustom mit allen Eingabeparametern, aber ich kann nicht auf die Puffer zugreifen, die notwendig sind, um Spitzen und Talsohlen zu erkennen

und vor allem die Puffer mit den Punkten A, B, C und D

Gibt es einen EA mit einem Beispiel?

Hallo João,

Es ist möglich, den Code in einem EA zu verwenden, aber das würde Modifikationen erfordern, es sei denn, Sie schreiben einen EA, der die auf dem Chart gezeichneten Objekte interpretiert. Ich habe keinen EA gesehen, der darauf basiert, um ein Beispiel zu geben, aber ich kann Ihnen meine Meinung dazu sagen.

Erstens, wenn Sie einen Ansatz mit dem Kopieren von Puffern in Betracht ziehen, sollten Sie sich darüber im Klaren sein, dass nur doppelt typisierte Arrays durch ICustom() gemeinsam genutzt werden können. Das bedeutet, dass Sie ein Array für jeden Punkt und ein weiteres für jedes Muster benötigen würden. Sie bräuchten also plötzlich 4*18=72 Puffer nur für die AB=CD-Muster und doppelt so viele für die projizierten und aktiven Muster. Ganz zu schweigen von der ständigen Neubearbeitung dieser Felder, um zu vermeiden, dass "alte" Muster den empfangenden EA verwirren, und von den Informationen, die verloren gehen, wie z. B. der PRZ-Stopp (aber das lässt sich mit einem weiteren Puffer für jedes Muster beheben). Auch wenn es möglich ist, unter der Plattformgrenze von 512 gemeinsamen Puffern zu bleiben, ist es nicht das, was die meisten vernünftigen Programmierer getan hätten.

Ein besserer Ansatz ist es, Teile des Indikatorcodes direkt in einen EA zu integrieren, um die Beschränkungen von iCustom() zu umgehen. Auf diese Weise können Sie den Speicher für jedes übereinstimmende und projizierte Muster auf einfache Weise delegieren und auch die Entwicklung der Muster besser verfolgen. Das erfordert natürlich eine Umstrukturierung der Musterabgleichsabschnitte des Codes (beginnend mit "//--- main loop" in Zeile 408), so dass die Muster nicht gezeichnet werden, sondern anderen Teilen des EAs Informationen darüber zur Verfügung gestellt werden, was einige Details wie das Entfernen von zeichnungsspezifischen Funktionen und die Beibehaltung des Overheads zur Beseitigung von Duplikaten beinhalten könnte.

 

Sehr schöner Indikator. Ich denke, die beste auf dem Netz. Haben Sie in Erwägung gezogen, das Elliott-Wellen-Muster in diesen Indikator zu implementieren? Es könnte wirklich interessant sein mit den Projektionen....

 
Andre Enger:

Hallo João,

Es ist möglich, den Code in einem EA zu verwenden, aber das würde Änderungen erfordern, es sei denn, Sie schreiben einen EA, der die auf dem Chart gezeichneten Objekte interpretiert. Ich habe keinen EA gesehen, der darauf basiert, um ein Beispiel zu geben, aber ich kann Ihnen meine Meinung dazu sagen.

Erstens, wenn Sie einen Ansatz mit dem Kopieren von Puffern in Betracht ziehen, sollten Sie sich darüber im Klaren sein, dass nur doppelt typisierte Arrays durch ICustom() gemeinsam genutzt werden können. Das bedeutet, dass Sie ein Array für jeden Punkt und ein weiteres für jedes Muster benötigen würden. Sie bräuchten also plötzlich 4*18=72 Puffer nur für die AB=CD-Muster und doppelt so viele für die projizierten und aktiven Muster. Ganz zu schweigen von der ständigen Neubearbeitung dieser Felder, um zu vermeiden, dass "alte" Muster den empfangenden EA verwirren, und von den Informationen, die verloren gehen, wie z. B. der PRZ-Stopp (aber das lässt sich mit einem weiteren Puffer für jedes Muster beheben). Auch wenn es möglich ist, unter der Plattformgrenze von 512 gemeinsamen Puffern zu bleiben, ist es nicht das, was die meisten vernünftigen Programmierer getan hätten.

Ein besserer Ansatz ist es, Teile des Indikatorcodes direkt in einen EA zu integrieren, um die Einschränkungen von iCustom() zu umgehen. Auf diese Weise können Sie den Speicher für jedes übereinstimmende und projizierte Muster auf einfache Weise delegieren und auch die Entwicklung der Muster besser verfolgen. Das erfordert natürlich eine Umstrukturierung der Pattern-Matching-Abschnitte des Codes (ab "//--- main loop" in Zeile 408) in einer Weise, dass es nicht gehen und zeichnen die Muster, sondern bieten Informationen von ihnen zu anderen Teilen des EA.This könnte einige Details wie das Entfernen von Zeichnung spezifische Funktionalität und halten Overhead, um Duplikate zu entfernen, aber ist die primäre Änderung erforderlich, um eine grundlegende "Matcher", die im Code abgefragt werden können, um Muster zu finden, nach denen Handelsaufträge gesendet werden können.


Danke, ich werde den zweiten Ansatz ausprobieren (und ja, es wird nur für D-Punkte bei AB=CD-Mustern sein)
 
João José:

Danke, ich werde den zweiten Ansatz ausprobieren (und ja, es wird nur für D-Punkte bei AB=CD-Mustern sein)

Andre,

Ich habe mich für den ersten Ansatz entschieden.

Direkt nach dem Aufruf der Funktion DisplayPattern habe ich 9 neue Puffer hinzugefügt, um A, B, C, D und Bull/Bear zu speichern. Und einige weitere Anpassungen für Standardwerte.

Es funktioniert bereits, danke

 
danizani95:

Sehr schöner Indikator. Ich denke, die beste auf dem Netz. Haben Sie in Erwägung gezogen, das Elliott-Wellen-Muster in diesen Indikator zu implementieren? Es könnte wirklich interessant sein mit den Projektionen....

Vielen Dank für das Feedback.

Soweit ich weiß, sind Elliot-Wellen an sich nicht harmonisch, sondern es handelt sich um eine eher lose definierte Theorie von Wellenstrukturen. Elliot-Wellen haben drei aufeinanderfolgende höhere Höchststände vor zwei niedrigeren Tiefstständen (Kauf beim zweiten Tiefststand), und es gibt verschiedene Zusammensetzungen und Klassifizierungen, wie dies geschehen kann. Einige technische Analysten scheinen zu glauben, dass die Beziehung zwischen Harmonischen und Elliot-Wellen darin besteht, dass das X-A-Segment der Elliot-Impulsphase und der ABCD-Teil der Elliot-Korrektur entsprechen sollte. Daher sind verschiedene harmonische Muster, wie der Gartley und die Fledermaus, verschiedene Manifestationen desselben Elliot-Phänomens.

Das Hinzufügen von Elliot-Wellen-Markern zum Indikator ist von geringerem Nutzen, da einige der Muster selbst vollständige Elliot-Wellen sind. Eine Sache, die ich für eine neue Version in Betracht gezogen habe, ist ein Filtermechanismus, der es einfach macht, benutzerdefinierte Filter zum Musterfinder hinzuzufügen. Es ist dann schnell möglich, z. B. einen "Elliot-Wellen-Filter" hinzuzufügen, der jene harmonischen Muster entfernt, bei denen es keine feiner skalierte Impulsstruktur im XA-Schenkel gibt. Dies könnte z. B. dadurch erkannt werden, dass geprüft wird, ob ein ZigZag auf einem niedrigeren Zeitrahmen drei aufeinanderfolgende höhere Höchststände aufweist.

Grüße

 
João José:

Andre,

Ich habe mich für den ersten Ansatz entschieden.

Direkt nach dem Aufruf der Funktion DisplayPattern habe ich 9 neue Puffer hinzugefügt, um A, B, C, D und Bulle/Bär zu speichern. Und einige weitere Anpassungen für Standardwerte.

Es funktioniert bereits, danke

Super!