Lernen Sie, wie man ein Handelssystem mit dem DeMarker entwickelt
Einführung
In diesem neuen Artikel aus unserer Serie geht es darum, wie man Handelssysteme auf der Grundlage der beliebtesten technischen Indikatoren entwickelt. Wir lernen ein neues technisches Werkzeug oder einen Indikator im Detail kennen, der beim Handel zu unseren Gunsten eingesetzt werden kann. Bei diesem Indikator handelt es sich um den DeMarker-Indikator, den wir in den folgenden Themen behandeln werden:
- DeMarker - Definition
- DeMarker - Strategie
- DeMarker - Blaupause der Strategie
- DeMarker - Handelssystem
- Schlussfolgerung
Wir werden das MetaTrader 5-Handelsterminal und MQL5 verwenden, das in das Terminal integriert ist, um den Code des Handelssystems zu schreiben und zu testen. Wenn Sie nicht wissen, wie man MetaTrader 5 herunterlädt und benutzt, können Sie das Thema Schreiben von MQL5-Code in MetaEditor in einem früheren Artikel lesen, um mehr darüber zu erfahren.
Ich rate Ihnen, das in diesem Artikel Gelernte selbst anzuwenden, wenn Sie Ihre Handels- und Programmierfähigkeiten weiterentwickeln und den größtmöglichen Nutzen daraus ziehen wollen, denn Übung ist ein sehr wichtiger Faktor bei jedem Lernschritt. Ich möchte erwähnen und bestätigen, dass das Hauptziel der genannten Strategien darin besteht, das Hauptkonzept hinter dem Indikator zu lernen. Das Hauptziel ist also nur lehrreich und Sie müssen jede Strategie testen, bevor Sie sie in einem realen Konto verwenden, um sicherzustellen, dass sie profitabel oder für Ihren Handel geeignet ist.
Haftungsausschluss: Alle Informationen werden in der vorliegenden Form nur zu Informationszwecken bereitgestellt und sind nicht für Handelszwecke oder als Ratschläge gedacht. Die Informationen garantieren keinen Erfolg. Wenn Sie sich dafür entscheiden, diese Materialien auf einem Ihrer Handelskonten zu verwenden, tun Sie dies auf eigenes Risiko und Sie sind allein verantwortlich.
DeMarker - Definition
Wenn wir den DeMarker-Indikator genauer kennen lernen wollen, müssen wir lernen, was er ist, was er misst, wie wir ihn berechnen können und wie wir ihn lesen können, um ihn zu unseren Gunsten zu nutzen. Der DeMarker-Indikator ist ein technischer Oszillator und wurde von dem technischen Analysten Thomas DeMark entwickelt. Es ist klar, dass der Name dieses Indikators auf seinen Schöpfer zurückgeht und er auch als "DeM"-Indikator bekannt ist. Dieser technische Indikator misst die Nachfrage nach dem Instrument und bewertet die Tendenz des Marktes, indem er die aktuellen Höchst- und Tiefstpreise mit den vorherigen Preisen vergleicht.
Um diesen Indikator manuell zu berechnen, können wir die folgenden Schritte durchführen:
DMark (i) = SMA (DeMax, N) / (SMA (DeMax, N) + SMA (DeMin, N))
Wobei:
- DMark (i) = der aktuelle DeMark-Wert.
- SMA - einfacher gleitender Durchschnitt;
- DeMax = der Höchstwert von DeMark
- N = der verwendete Zeitraum
- DeMin = der Mindestwert von DeMark
Der DeMax kann wie folgt berechnet werden:
DeMax (i) = HIGH (i) - HIGH (i - 1)
sonst:
DeMax (i) = 0
Die DeMin kann berechnet werden durch:
DeMin (i) = LOW (i - 1) - LOW (i)
sonst:
DeMin (i) = 0
Nach der Berechnung des Indikators können wir feststellen, dass er eine Oszillatorlinie zwischen 0 und 1 erzeugt, um die Nachfrage des Instruments zu messen, wie wir bereits erwähnt haben. Heutzutage brauchen wir ihn nicht mehr manuell zu berechnen, da er in die Handelsplattform MetaTrader 5 integriert ist und wir ihn nur aus den verfügbaren Indikatoren auswählen müssen, um ihn auf dem Chart zu starten und abzulesen.
Hier sehen Sie, wie Sie diesen technischen Indikator DeMarker in MetaTrader 5 einfügen können:
Beim Öffnen des MetaTrader 5-Terminals drücken wir auf Insert --> Indicators --> Oscillators --> DeMarker
Danach wird das Fenster der Parameter dieses Indikators wie folgt aussehen:
1 - um die Periodenlänge zu bestimmen.
2 - zum Einstellen der Linienfarbe des Indikators.
3 -zum Einstellen des Linienstils des Indikators.
4 - zum Einstellen der Linienstärke des Indikators.
Nachdem Sie die vorherigen Parameter eingestellt und auf "OK" gedrückt haben, wird der Indikator wie folgt in das Chart eingefügt:
Wie wir im vorherigen Chart im unteren Teil sehen, haben wir den Indikator gestartet und wir sehen eine Oszillatorlinie zwischen 0 und 1. Wir können diesen Indikator ablesen, indem wir die Position der Linie in dem genannten Bereich bestimmen. Nähert sich der Indikator dem Wert von 0,70, bedeutet dies, dass wir uns in einer überkauften Situation befinden, nähert er sich jedoch dem Wert von 0,30, bedeutet dies, dass wir uns in einer überverkauften Situation befinden.
DeMarker - Strategie
Jetzt müssen wir lernen, wie wir den DeMarker-Indikator auf der Grundlage des ihm zugrunde liegenden Konzepts verwenden können. Wir werden also lernen, wie wir sie mit drei einfachen Strategien nutzen können.
Auf der Grundlage dieser Strategie müssen wir Signale für starke oder schwache DeMarker erhalten, indem wir den DeMarker-Wert und den Durchschnitt der letzten 5 Perioden des Indikators beobachten. Wenn der aktuelle Wert des DeMarker-Indikators größer ist als die letzten 5 DeMarker-Perioden, ist dies ein Signal der Stärke. Im anderen Fall, wenn der aktuelle Wert des Indikators niedriger ist als die letzten 5 Perioden von DeMarker, ist dies ein Signal der Schwäche.
Einfach:
DeMarker-Wert >= 5-periodischer Mittelwert (MW) von DeMarker --> DeMarker ist stark
DeMarker-Wert <= 5-periodischer MW von DeMarker --> DeMarker ist schwach
Auf der Grundlage dieser Strategie müssen wir Signale erhalten, wenn der Indikator überkaufte und überverkaufte Zonen erreicht. Wenn der aktuelle DeMarker-Wert größer oder gleich dem Wert von 0,70 ist, ist dies ein Signal dafür, dass man sich einer überkauften Zone (OB) nähert. Wenn der aktuelle Wert von DeMarker unter 0,30 liegt, ist dies ein Signal dafür, dass sich der Kurs einer überverkauften Zone (OS) nähert.
Einfach:
DeMarker-Wert >= 0,70 --> Überkauft
DeMarker-Wert <= 0,30 --> Überverkauft
Auf der Grundlage dieser Strategie müssen wir Signale für bullische oder bärische Divergenzen erhalten, die einen Einblick in die Wahrscheinlichkeit einer Änderung der aktuellen Bewegung geben. Um diese Signale zu erhalten, müssen wir vier Werte beobachten: das aktuelle Hoch, das vorherige Hoch, den aktuellen DeMarker und den vorherigen DeMarker. Es ist gut zu erwähnen, dass dies eine einfache Situation der Divergenz ist, aber die effektivste ist der Vergleich und die Beobachtung der Hochs und Tiefs der Preise mit den Hochs und Tiefs des Indikators. In dieser einfachen Situation müssen wir ein bärisches Divergenzsignal erhalten, wenn das aktuelle Hoch größer ist als das vorherige Hoch und gleichzeitig der aktuelle DeMarker-Wert niedriger ist als der vorherige DeMarker-Wert. Wenn das aktuelle Tief unter dem vorherigen liegt und der aktuelle Wert von Bears Power größer ist als der vorherige, ist dies ein Signal für eine bullische Divergenz.
Einfach:
Aktuelles Hoch > vorheriges Hoch, und, aktueller DeMarker < vorheriger --> bärische Divergenz
Aktuelles Tief < vorheriges Tief, und aktueller DeMarker > vorheriger --> Bullische Divergenz
DeMarker - Blaupause der Strategie
Nachdem wir gelernt haben, wie Sie den DeMarker-Indikator mit Hilfe einfacher Strategien einsetzen können. In diesem Thema werden wir eine einfache Blaupause für jede Strategie erstellen, um uns zu helfen, ein Handelssystem für sie reibungslos zu erstellen.
Gemäß dieser Strategie müssen wir ein Handelssystem erstellen, mit dem zwei Werte automatisch überprüft werden können, nachdem sie erstellt oder definiert wurden. Diese Werte sind die aktuellen DeMarker-Werte und die letzten fünf DeMarker-Durchschnittswerte. Wenn der aktuelle Wert größer als der Durchschnitt ist, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:
- DeMarker is strong (DeMarker ist stark)
- Aktueller DeMarker-Wert
- 5 -perodiger MW DeMarker Wert
Im anderen Szenario, wenn der aktuelle Wert niedriger als der Durchschnitt ist, muss das Handelssystem die folgenden Werte auf der Grundlage dieser Bedingung zurückgeben:
- DeMarker is weak (DeMarker ist schwach)
- Aktueller DeMarker-Wert
- 5 -perodiger MW DeMarker Wert
Nach dieser Strategie müssen wir ein Handelssystem erstellen, mit dem wir unsere Signale auf der Grundlage bestimmter Bedingungen generieren können. Das Handelssystem muss drei Werte kontinuierlich überprüfen, nämlich den aktuellen DeMarker-Wert, das 0,70-Niveau des Indikators und das 0,30-Niveau des Indikators. Wenn der aktuelle DeMarker-Wert größer oder gleich der 0,70-Marke ist, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart anzeigen:
- Overbought (Überkauft)
- DeMarker-Wert
Im anderen Szenario, wenn der aktuelle DeMarker-Wert kleiner oder gleich der 0,30-Marke ist, muss das Handelssystem die folgenden Werte auf dem Chart anzeigen:
- Oversold (Überverkauft)
- DeMarker-Wert
Nach dieser Strategie müssen wir ein Handelssystem entwickeln, das Signale für steigende oder fallende Divergenzen generieren kann, indem wir vier Werte kontinuierlich überprüfen. Wenn das aktuelle Hoch größer ist als das vorherige Hoch und gleichzeitig der aktuelle DeMarker-Wert kleiner ist als der vorherige DeMarker-Wert, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart zurückgeben:
- Bärische Divergenz,
- Aktueller Höchstwert
- Vorheriges Hoch
- Aktueller DeMarker-Wert
- Vorheriger DeMarker-Wert
Im anderen Szenario, wenn der aktuelle Tiefststand niedriger ist als der vorherige Tiefststand und gleichzeitig der aktuelle DeMarker-Wert größer ist als der vorherige DeMarker-Wert, muss das System die folgenden Werte im Chart anzeigen:
- Bullische Divergenz:
- Aktueller Höchstwert
- Vorheriges Hoch
- Aktueller DeMarker-Wert
- Vorheriger DeMarker-Wert
DeMarker - Handelssystem
In diesem Teil werden wir für jede der genannten Strategien ein Handelssystem erstellen, das im MetaTrader 5 ausgeführt werden kann, um Automatisierungssignale zu generieren. Zunächst werden wir ein einfaches Handelssystem erstellen, das als Grundlage für alle genannten Strategien dient. Dieses System generiert den aktuellen Wert des DeMarker-Indikators als Kommentar auf dem Chart. Im Folgenden wird beschrieben, wie Sie dieses System mit den folgenden Codezeilen erstellen:
Schritt eins:
Wir erstellen ein Array, deMarkerArray, vom Typ "double", um mit Bruchzahlen arbeiten zu können.
double deMarkerArray[];
Schritt zwei.
Wir verwenden die Funktion "ArraySetAsSeries", um das Flag AS_SERIES für deMarkerArray zu setzen, die einen booleschen Wert zurückgibt, der wahr oder falsch ist.
ArraySetAsSeries(deMarkerArray,true);
Dritter Schritt:
Wir definieren den Indikator mit Hilfe der Funktion "iDeMarker", die das Handle des DeMarker-Indikators zurückgibt. Die Parameter sind:
- symbol: Name des Symbols, wir verwenden "_Symbol", das das aktuelle Symbol des Charts.
- period: Um den Zeitrahmen zu bestimmen, wir verwenden (_period), der den Zeitrahmen des aktuellen Charts spiegelt.
- ma_period: Zur Bestimmung der Mittelungslänge, wir verwenden 14.
int deMarkerDef = iDeMarker(_Symbol,_Period,14);
Vierter Schritt:
Wir holen uns die Daten aus dem Puffer des DeMarker-Indikators mit der Funktion "CopyBuffer". Die Parameter sind:
- indicator_handle: Wir verwenden die Variable deMarkerDef mit dem vordefinierten Indikator-Handle.
- buffer_num: Dient zur Bestimmung der Nummer des Indikatorpuffers, wir verwenden 0.
- start_pos: Als Startposition verwenden wir 0.
- count: Bestimmt die kopierende Anzahl, wir benötigen 3.
- buffer[]: Um das zu kopierende Ziel-Array zu bestimmen, wir verwenden deMarekerArray.
CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
Schritt fünf:
Definition des aktuellen deMarker-Wertes durch Verwendung der Funktion "NormalizeDouble", um einen Wert vom Typ double zurückzugeben. Die Parameter sind:
- value: zur Bestimmung der normierten Zahl.
- digits: zur Bestimmung der Nachkommastellen.
double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
Schritt sechs:
Wir verwenden die Funktion "Comment", um den Wert des aktuellen DeMarker-Indikators als Kommentar auf dem Chart auszugeben.
Comment("DeMarker Value is ",deMarkerVal);
Wenn Sie den vollständigen Code dieses Handelssystems möchten, können Sie ihn nachstehend sehen.
//+------------------------------------------------------------------+ //| Simple DeMarker System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+void OnTick() void OnTick() { double deMarkerArray[]; ArraySetAsSeries(deMarkerArray,true); int deMarkerDef = iDeMarker(_Symbol,_Period,14); CopyBuffer(deMarkerDef,0,0,3,deMarkerArray); double deMarkerVal = NormalizeDouble(deMarkerArray[0],6); Comment("DeMarker Value is ",deMarkerVal); } //+------------------------------------------------------------------+
Nachdem wir diesen Code kompiliert haben, können wir ihn im Navigator von MetaTrader 5 wie folgt finden:
Wenn Sie diesen Experten auf das Chart ziehen, sehen Sie das Fenster dieses Programms wie das folgende:
Nachdem Sie auf „OK“ geklickt haben, sehen Sie, dass der Experte auf dem Chart läuft, wie in der folgenden Abbildung dargestellt.
Wie wir auf dem Chart in der oberen rechten Ecke sehen können, ist das einfache DeMarker System an den Chart angehängt. Wir sind nun bereit, die gewünschten Signale gemäß dieser Strategie zu erhalten. Die vorangegangenen Schritte sind die gleichen, um alle Codes der erwähnten Strategie zu kompilieren und sie in MetaTrader 5 auszuführen.
Das Folgende ist für generierte Signale aus dem Testen nach diesem einfachen Handelssystem:
Wie Sie in der oberen linken Ecke des Charts sehen können, ist der aktuelle Wert des DeMarker-Indikators zu sehen.
Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:
//+------------------------------------------------------------------+ //| DeMarker Strength.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double deMarkerArray[]; ArraySetAsSeries(deMarkerArray,true); int deMarkerDef = iDeMarker(_Symbol,_Period,14); CopyBuffer(deMarkerDef,0,0,6,deMarkerArray); double deMarkerVal = NormalizeDouble(deMarkerArray[0],4); double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4); double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4); double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4); double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4); double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4); double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5; if(deMarkerVal>deMarkerAvgVal) { Comment("DeMarker is strong","\n", "Current DeMarker Value is ",deMarkerVal,"\n", "AVG DeMarker Value is ",deMarkerAvgVal); } if(deMarkerVal<deMarkerAvgVal) { Comment("DeMarker is weak","\n", "Current DeMarker Value is ",deMarkerVal,"\n", "AVG DeMarker Value is ",deMarkerAvgVal); } } //+------------------------------------------------------------------+
Unterschiede in diesem Code:
Definition der letzten fünf deMarker-Werte mit Hilfe der Funktion "NormalizeDouble" nach der Definition des aktuellen deMarker-Wertes mit Hilfe derselben Funktion.
double deMarkerVal = NormalizeDouble(deMarkerArray[0],4); double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4); double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4); double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4); double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4); double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);
Berechnung von deMarkerAvgVal auf der Grundlage der letzten fünf deMarker-Werte des Typs "double", um eine Variable deMarkerAvgVal zu erstellen, die der Summe der letzten fünf berechneten Werte entspricht, die dann durch 5 geteilt werden, um den Durchschnittswert zu erhalten.
double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;
Festlegung der Bedingungen für die Strategie,
indem der aktuelle deMarker mit dem deMarkerAvg-Wert verglichen wird. Im Falle eines starken Signals von deMarker müssen wir sehen, dass der aktuelle deMarker-Wert größer ist als der deMarkerAvg-Wert. Wir werden den Operator "If" und seine Syntax verwenden:
if(Ausdruck) --> Operator
Im Falle von Stärke, dann wenn der deMarkerVal größer ist als der deMarkerAvgVal, der der Ausdruck in der Syntax ist, brauchen wir das Handelssystem, um ein Stärke-Signal (strong) als Kommentar auf dem Chart auszugeben.
if(deMarkerVal>deMarkerAvgVal) { Comment("DeMarker is strong","\n", "Current DeMarker Value is ",deMarkerVal,"\n", "AVG DeMarker Value is ",deMarkerAvgVal); }
Im Falle einer Schwäche des deMarker, müssen wir sehen, dass der aktuelle deMarker Wert niedriger ist als der deMarkerAvgVal, was als Kommentar auf dem Chart als schwach (weak) der Schwäche und der anderen Werte ausgegeben werden soll, jeder Wert in einer separaten Zeile.
if(deMarkerVal<deMarkerAvgVal) { Comment("DeMarker is weak","\n", "Current DeMarker Value is ",deMarkerVal,"\n", "AVG DeMarker Value is ",deMarkerAvgVal); }
Nach dem Kompilieren dieses Codes und dem Ausführen über den Navigator, wie wir es gelernt haben, können wir sehen, dass der Experte dieser Strategie wie folgt läuft:
Wie wir in der oberen rechten Ecke sehen können, haben wir den Experten dieser Strategie an das Chart angehängt und wir sind bereit, Signale zu erhalten, wie die folgenden Beispiele aus dem Test.
Im Falle eines starken Signals:
Wie wir auf dem Chart in der oberen linken Ecke sehen können, hat dieses Handelssystem ein Signal generiert, das auf dieser Handelsstrategie basiert, und es ist das gleiche wie das folgende:
- DeMarker ist stark (strong) --> weil wir den aktuellen Wert von DeMarker über den letzten fünf Durchschnittswerten des DeMarker-Indikators haben.
- Aktueller DeMarker-Wert.
- MW DeMarker-Wert.
Im Falle eines Schwächesignals:
Wie wir auf dem Chart oben links sehen können, haben wir ein Signal, das dem folgenden entspricht:
- DeMarker ist schwach (weak) --> weil der aktuelle Wert von DeMarker unter den letzten fünf Durchschnittswerten des DeMarker Indikators liegt.
- Aktueller DeMarker-Wert.
- MW DeMarker-Wert.
Das Folgende ist der vollständige Code dieser Strategie:
//+------------------------------------------------------------------+ //| Simple DeMarker System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+void OnTick() void OnTick() { double deMarkerArray[]; ArraySetAsSeries(deMarkerArray,true); int deMarkerDef = iDeMarker(_Symbol,_Period,14); CopyBuffer(deMarkerDef,0,0,3,deMarkerArray); double deMarkerVal = NormalizeDouble(deMarkerArray[0],6); if(deMarkerVal<=0.30) { Comment("Oversold","\n", "DeMarker Value is ",deMarkerVal); } if(deMarkerVal>=0.70) { Comment("Overbought","\n", "DeMarker Value is ",deMarkerVal); } if(deMarkerVal>0.30 && deMarkerVal<0.70) { Comment("DeMarker Value is ",deMarkerVal); } } //+------------------------------------------------------------------+
Unterschiede in diesem Code:
Bedingungen dieses Codes.
Im Falle eines überverkauften Signals, wenn der aktuelle Wert kleiner oder gleich 0,30 ist, was der Ausdruck in der "if"-Funktion ist, handelt es sich um ein überverkauftes Signal, was der Operator ist, den wir als Kommentar im Chart sehen müssen.
if(deMarkerVal<=0.30) { Comment("Oversold","\n", "DeMarker Value is ",deMarkerVal); }
Im Falle eines überkauften Signals, das der Operator ist, ist diese Situation gegeben, wenn der aktuelle deMarker-Wert größer oder gleich 0,70 ist.
if(deMarkerVal>=0.70) { Comment("Overbought","\n", "DeMarker Value is ",deMarkerVal); }
Liegt kein Signal oder ein Gleichgewicht vor, so wird dies signalisiert, wenn der aktuelle deMarker-Wert zwischen 0,30 und 0,70 liegt.
if(deMarkerVal>0.30 && deMarkerVal<0.70) { Comment("DeMarker Value is ",deMarkerVal); }
Nach dem Kompilieren dieses Codes und dem Ausführen des Experten werden wir feststellen, dass er mit dem Chart wie folgt verbunden ist:
Jetzt sind wir bereit, Signale auf der Grundlage dieser Strategie zu empfangen, und im Folgenden finden Sie einige Testbeispiele.
Im Falle von überkauft:
Wie in der vorherigen Grafik oben links zu sehen ist, ist das erzeugte Signal dasselbe wie das folgende:
- Overbought (Überkauft)
- DeMarker aktueller Wert
Im Falle von Überverkauft:
Wie wir sehen können, ist das erzeugte Signal dasselbe wie das folgende:
- Oversold (Überverkauft)
- DeMarker aktueller Wert
Im Falle eines fehlenden Signals oder Gleichgewichts:
Wie wir sehen können, haben wir ein generiertes Signal des aktuellen DeMarker-Wertes.
Im Folgenden finden Sie den vollständigen Code zur Erstellung eines Handelssystems für diese Strategie.
//+------------------------------------------------------------------+ //| DeMarker Divergence.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double deMarkerArray[]; MqlRates pArray[]; ArraySetAsSeries(deMarkerArray,true); ArraySetAsSeries(pArray,true); int deMarkerDef = iDeMarker(_Symbol,_Period,14); int pData = CopyRates(_Symbol,_Period,0,14,pArray); CopyBuffer(deMarkerDef,0,0,14,deMarkerArray); double deMarkerVal = NormalizeDouble(deMarkerArray[0],4); double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4); double currentHigh = NormalizeDouble(pArray[0].high,6); double currentLow = NormalizeDouble(pArray[0].low,6); double prevHigh = NormalizeDouble(pArray[1].high,6); double prevLow = NormalizeDouble(pArray[1].low,6); if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal) { Comment("Bearish divergence","\n", "Current High is ",currentHigh,"\n", "Prev. High Value is ",prevHigh,"\n", "Current DeMarker Value is ",deMarkerVal,"\n", "Prev. DeMarker Value is ",deMarkerPrevVal); } if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal) { Comment("Bullish divergence","\n", "Current Low is ",currentLow,"\n", "Prev. Low Value is ",prevLow,"\n", "Current DeMarker Value is ",deMarkerVal,"\n", "Prev. DeMarker Value is ",deMarkerPrevVal); } } //+------------------------------------------------------------------+
Unterschiede in diesem Code:
Erstellung von zwei Arrays, eines für deMarkerArray vom Typ "double", das andere für pArray (Preise) unter Verwendung der Funktion "MqlRates" zur Speicherung von Informationen über Preis, Volumen und Spread.
double deMarkerArray[]; MqlRates pArray[];
Wir setzen des Flag AS_SERIES für diese beiden erstellten Arrays.
ArraySetAsSeries(deMarkerArray,true); ArraySetAsSeries(pArray,true);
Festlegung von deMarketDef, pData
int deMarkerDef = iDeMarker(_Symbol,_Period,14); int pData = CopyRates(_Symbol,_Period,0,14,pArray);
Füllen von deMarkerArray
CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);
Definition von deMarkerVal, deMarkerPrevVal, aktueller Höchstwert, aktueller Tiefstwert, vorheriger Höchstwert und vorheriger Höchstwert.
double deMarkerVal = NormalizeDouble(deMarkerArray[0],4); double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4); double currentHigh = NormalizeDouble(pArray[0].high,6); double currentLow = NormalizeDouble(pArray[0].low,6); double prevHigh = NormalizeDouble(pArray[1].high,6); double prevLow = NormalizeDouble(pArray[1].low,6);
Bedingungen der Strategie.
Im Falle einer bärischen Divergenz:
if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal) { Comment("Bearish divergence","\n", "Current High is ",currentHigh,"\n", "Prev. High Value is ",prevHigh,"\n", "Current DeMarker Value is ",deMarkerVal,"\n", "Prev. DeMarker Value is ",deMarkerPrevVal); }
Im Falle einer bullischen Divergenz:
if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal) { Comment("Bullish divergence","\n", "Current Low is ",currentLow,"\n", "Prev. Low Value is ",prevLow,"\n", "Current DeMarker Value is ",deMarkerVal,"\n", "Prev. DeMarker Value is ",deMarkerPrevVal); }
Nachdem wir auch diesen Code kompiliert haben, können wir ihn im Navigator finden, um ihn auszuführen. Durch Drücken von „OK“ wird der Experte wie folgt an das Chart gestartet:
Wie wir in der oberen linken Ecke des vorherigen Charts sehen können, haben wir den Experten auf dem Chart gestartet und können nun Signale von diesem Experten erhalten, die auf dieser Handelsstrategie basieren, wie die folgenden.
Im Falle einer bullischen Divergenz:
Wie wir in der oberen linken Ecke des vorherigen Charts sehen können, haben wir folgendes Signal erzeugt:
- Bullische Divergenz:
- Aktueller Höchstwert
- Vorheriges Hoch
- Aktueller DeMarker-Wert
- Vorheriger DeMarker-Wert
Im Falle einer bärischen Divergenz:
Wie wir in der oberen linken Ecke des vorherigen Charts sehen können, haben wir das folgende Signal erzeugt:
- Bärische Divergenz,
- Aktueller Höchstwert
- Vorheriges Hoch
- Aktueller DeMarker-Wert
- Vorheriger DeMarker-Wert
Schlussfolgerung
Nach dem, was Sie in diesem Artikel gelernt haben, ist davon auszugehen, dass Sie diesen technischen DeMarker-Indikator bereits im Detail kennen, denn wir haben gelernt, was er ist, was er misst, wie wir ihn berechnen können und wie wir ihn durch einfache Strategien, die auf dem Hauptkonzept dahinter basieren, lesen und nutzen können. Diese einfachen Strategien waren:
- DeMarker-Stärke: um Signale der Stärke oder Schwäche zu erhalten, die auf der Position des aktuellen DeMarkers und dem Durchschnitt der letzten 5 Perioden des DeMarker-Wertes basieren.
- DeMarker, OB - OS: um Signale von überkauft oder überverkauft zu erhalten, basierend auf der Position des aktuellen DeMarker-Wertes in seiner Skala von 0 bis 1.
- DeMarker-Divergenz: um Signale für bullische oder bearische Divergenzen zu erhalten, die auf der Position des aktuellen DeMarkers, des vorherigen DeMarkers, des aktuellen Hochs und des vorherigen Hochs basieren.
Darüber hinaus haben wir für jede der genannten Strategien eine Schritt-für-Schritt-Blaupause entworfen, die uns hilft, ein Handelssystem für sie zu erstellen. Dann lernten wir das interessanteste Thema, weil wir ein Handelssystem erstellt, basierend auf dem, was wir in den Entwürfen der genannten Strategien entworfen, um Signale automatisch durch den MetaTrader 5 zu erhalten.
Ich bekräftige nochmals, dass Sie jede Strategie testen müssen, bevor Sie sie verwenden, um sicherzustellen, dass sie für Ihren Handel geeignet ist, denn es gibt nichts, was für alle Menschen geeignet ist. Ich hoffe, dass dieser Artikel für Sie nützlich ist und Sie nützliche Einblicke in das Thema des Artikels oder in verwandte Themen erhalten haben. Wenn Sie weitere ähnliche Artikel lesen möchten, können Sie meine früheren Artikel in dieser Serie für Anfänger über die wichtigsten technischen Indikatoren lesen und wie wir ein einfaches Handelssystem auf deren Grundlage erstellen können.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/11394
- 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.