English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
preview
Lernen Sie, wie man ein Handelssystem mit dem DeMarker entwickelt

Lernen Sie, wie man ein Handelssystem mit dem DeMarker entwickelt

MetaTrader 5Handel | 12 September 2022, 15:09
286 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

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:

  1. DeMarker - Definition
  2. DeMarker - Strategie
  3. DeMarker - Blaupause der Strategie
  4. DeMarker - Handelssystem
  5. 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

DeM starten

Danach wird das Fenster der Parameter dieses Indikators wie folgt aussehen:

DeM Param

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:

DeM gestartet

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.

    Strategie eins: DeMarker Stärke

      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

        Strategie zwei: DeMarker, OB und OS

          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

            Strategie drei: DeMarker-Divergenz:

              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.

                Strategie eins: DeMarker Stärke

                  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
                  Das Folgende ist die Blaupause dieser Strategie, um ihr Handelssystem zu erstellen.

                  DeMarker Stärke Blaupause

                    Strategie zwei: DeMarker, OB - OS

                      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
                      DeMarker OB, OS-Blaupause
                        Strategie drei: DeMarker-Divergenz

                          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

                          Blaupause für Divergenz

                          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:

                          Nav

                          Wenn Sie diesen Experten auf das Chart ziehen, sehen Sie das Fenster dieses Programms wie das folgende:

                           Einfacher DeMarker Fenster

                          Nachdem Sie auf „OK“ geklickt haben, sehen Sie, dass der Experte auf dem Chart läuft, wie in der folgenden Abbildung dargestellt.

                          Einfacher DeMarker gestartet

                          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.

                            Strategie eins: DeMarker Stärke:

                              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:

                              Stärke gestartet

                              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:

                              Stärke - starkes Signal

                              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:

                              Stärke - Schwaches Signal

                              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. 
                                Strategie zwei: DeMarker, OB-OS

                                  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:

                                  OB-OS gestartet

                                  Jetzt sind wir bereit, Signale auf der Grundlage dieser Strategie zu empfangen, und im Folgenden finden Sie einige Testbeispiele.

                                  Im Falle von überkauft:

                                  DeM, OB - OS - OB-Signal

                                  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:

                                  DeM, OB - OS - OS-Signal

                                  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:

                                  DeM, OB - OS - kein Signal

                                  Wie wir sehen können, haben wir ein generiertes Signal des aktuellen DeMarker-Wertes.

                                    Strategie drei: DeMarker-Divergenz

                                      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:

                                      Divergenz 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:

                                       Bullish-Divergenz-Signal

                                      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:

                                       Bärische-Divergenz Signal

                                      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

                                      Neuronale Netze leicht gemacht (Teil 19): Assoziationsregeln mit MQL5 Neuronale Netze leicht gemacht (Teil 19): Assoziationsregeln mit MQL5
                                      Wir fahren mit der Besprechung von Assoziationsregeln fort. Im vorigen Artikel haben wir den theoretischen Aspekt dieser Art von Problemen erörtert. In diesem Artikel werde ich die Implementierung der FP Growth-Methode mit MQL5 zeigen. Außerdem werden wir die implementierte Lösung anhand realer Daten testen.
                                      Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 21): Neues Auftragssystem (IV) Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 21): Neues Auftragssystem (IV)
                                      Schlussendlich wird das visuelle System in Betrieb genommen, obwohl es noch nicht vollständig ist. Hier finden die wichtigsten, gemachten Änderungen ein Ende. Es wird eine ganze Reihe weiterer geben, aber sie sind alle notwendig. Nun, die ganze Arbeit wird recht interessant sein.
                                      DoEasy. Kontrollen (Teil 9): Neuanordnung von WinForms-Objektmethoden, Steuerung von RadioButton und Steuerungen DoEasy. Kontrollen (Teil 9): Neuanordnung von WinForms-Objektmethoden, Steuerung von RadioButton und Steuerungen
                                      In diesem Artikel werde ich die Namen der Methoden der WinForms-Objektklasse festlegen und WinForms-Objekte Button und RadioButton erstellen.
                                      Lernen Sie, wie man ein Handelssystem mit dem VIDYA entwickelt Lernen Sie, wie man ein Handelssystem mit dem VIDYA entwickelt
                                      Willkommen zu einem neuen Artikel aus unserer Serie über das Lernen, wie man ein Handelssystem durch die beliebtesten technischen Indikatoren zu entwerfen, in diesem Artikel werden wir über ein neues technisches Werkzeug lernen und lernen, wie man ein Handelssystem durch Variable Index Dynamic Average (VIDYA) zu entwerfen.