English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
preview
Erfahren Sie, wie Sie ein Handelssystem durch Accumulation/Distribution (AD) entwerfen

Erfahren Sie, wie Sie ein Handelssystem durch Accumulation/Distribution (AD) entwerfen

MetaTrader 5Handel | 10 Juni 2022, 10:03
307 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

In diesem neuen Artikel aus unserer Serie geht es darum, die beliebtesten technischen Indikatoren im Detail kennenzulernen, indem wir lernen, wie wir sie durch einfache Strategien nutzen können. Dann entwerfen wir Handelssysteme für diese Strategien durch MQL5, um diese Handelssysteme auf der Handelsplattform MetaTrader 5 auszuführen, und lernen einen neuen technischen Indikator kennen, der einer der Indikatoren der Volumenfamilie ist, der uns eine andere Perspektive über das Instrument zeigen kann, nämlich das Volumen Messung, dieser Indikator ist die Accumulation/Distribution, die auch (AD) genannt wird. Wir werden diesen Indikator durch die folgenden Themen behandeln:

  1. AD-Definition
  2. AD-Strategie
  3. AD-Strategie Blaupause
  4. AD-Handelssystem
  5. Schlussfolgerung

In den vorherigen Themen werden wir diesen neuen technischen Indikator, den AD-Indikator, ausführlich kennenlernen, um zu erfahren, wie wir ihn verwenden können. Dann ein darauf basierendes Handelssystem entwerfen. Durch das Thema der AD-Definition erfahren wir, was ein AD-Indikator ist, was er misst und wie wir ihn manuell berechnen können, um das Hauptkonzept dahinter zu verstehen. Wir werden diese Berechnung zum besseren Verständnis auf ein Beispiel anwenden. Nachdem wir die Grundlagen des AD-Indikators im Detail kennengelernt haben, lernen wir, wie wir ihn durch einfache Strategien auf der Grundlage des dahinter stehenden Konzepts verwenden können, und zwar durch das Thema der AD-Strategie. Dann werden wir eine Blaupause für jede erwähnte Strategie entwerfen, um uns dabei zu helfen, ein Handelssystem für sie zu entwerfen und zu erstellen, dies wird durch das Thema der AD-Strategie-Blaupause geschehen. Nachdem wir alle Blaupausen für alle erwähnten einfachen Strategien entworfen haben, kommen wir zum interessantesten Teil dieses Artikels, da wir lernen werden, wie wir unseren Code erstellen oder schreiben, um ein Handelssystem mit MQL5 zu erstellen, um sie im MetaTrader 5-Handel ausführen zu können Plattform, dies wird durch das Thema AD-Handelssystem geschehen.

Durch diese erwähnten Themen werden wir den AD-Indikator im Detail behandeln, indem wir lernen, wie man ihn benutzt. Danach werden wir ein Handelssystem für die genannten einfachen Strategien erstellen. Was ich hier gerne anmerken möchte, ist, dass ich Ihnen rate, zu versuchen, das Gelernte anzuwenden, indem Sie die erwähnten Codes selbst schreiben, da dies Ihnen helfen wird, Ihr Verständnis zu vertiefen, da das Hauptziel dieses Artikels das gleiche ist wie bei anderen in dieser Serie geben Sie als Programmieranfänger Einblicke in das Programmieren oder Entwerfen eines Handelssystems anhand der beliebtesten Indikatoren. Außerdem werden wir die MetaQuotes Language (MQL5) verwenden und unsere Codes mit dem MetaEditor schreiben, der in MetaTrader 5 integriert ist. Wenn Sie wissen möchten, wie man MetaTrader 5 installiert oder wie man den MetaEditor verwendet, können Sie das Thema Schreiben von MQL5-Code im MetaEditor aus meinem vorherigen Artikel lesen.

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 keinerlei Ergebnis. 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.

Lassen Sie uns nun unsere Themen durchgehen, um eine neue Meile auf unserer Lernreise über Trading und MQL5 zu gehen.

AD-Definition

In diesem Teil werden wir uns ausführlich mit dem Accumulation/Distribution (AD)-Indikator befassen und feststellen, was er ist, was er misst, wie wir ihn berechnen können, und das Konzept dahinter. Der AD-Linienindikator wurde von Marc Chaikin entwickelt. Es ist ein volumenbasierter Indikator, was bedeutet, dass das Volumen bei seiner Berechnung verwendet wird und uns Einblicke in das Volumen gibt, was eine wichtige Perspektive im Handel im Allgemeinen ist, da es den kumulativen Geldfluss in und aus misst Instrument und es verwendet das Volumen, um den Trend zu bestätigen oder die Umkehrung zu warnen. Wenn Sie mehr über den Trend, seine Typen und wie wir ihn identifizieren möchten, erfahren möchten, können Sie dieses Thema aus einem früheren Artikel lesen.

Wie jeder kumulative Indikator ist die AD-Linie die laufende Summe für das Geldflussvolumen jeder Periode, und dies wird in den Berechnungsschritten sehr deutlich, genauso wie wir jetzt sehen werden, um zu erfahren, wie wir die AD-Linie durch berechnen können folgenden Schritte.

Es gibt drei Schritte, um die AD-Linie zu berechnen:

  1. Berechnen Sie den Geldflussmultiplikator = ((Close-Low)-(High-Close))/(High-Low)
  2. Berechnen Sie das Geldflussvolumen = Geldflussmultiplikator * Periodenvolumen
  3. AD-Linie = vorheriger AD-Linienwert + aktuelles Geldflussvolumen

Jetzt müssen wir ein Beispiel sehen, um diese Schritte anzuwenden, um die AD-Linie zu berechnen, wenn wir die folgenden Daten für ein Instrument haben:

Tag Hoch Tief Schlusskurs Volumen
1 55 53 54 12000
2 56 54 55 10000
3 61 59 60 15000
4 67 64 65 20000
5 63 58 60 10000
6 58 52 55 5000
7 64 58 60 7000
8 52 47 50 7500
9 52 48 48 8000
10 50 48 49 5000
11 49 47 48 6000
12 48 47 47 7500
13 50 46 48 9000
14 52 45 47 10000
15 55 46 49 7000
16 53 45 47 7500
17 51 43 46 6000
18 50 42 44 5000
19 50 43 45 15000

Jetzt müssen wir die AD-Linie basierend auf den zuvor angegebenen Daten berechnen, und die Berechnung wird die gleiche wie die folgende sein:

Zuerst berechnen wir den Geldflussmultiplikator = ((Schluss-Tief)-(Hoch-Schluss))/(Hoch-Tief), dann finden wir ihn gleich wie in der folgenden Abbildung:

AD-Berechnung

Zweitens berechnen wir das Geldflussvolumen = Geldflussmultiplikator * Periodenvolumen, dann können wir es wie in der folgenden Abbildung finden:

AD-Berechnung 1

Drittens berechnen wir die AD-Linie = vorheriger AD-Linienwert + aktuelles Geldflussvolumen, dann finden wir es gleich wie in der folgenden Abbildung:

AD-Berechnung 2

Jetzt haben wir die AD-Linie manuell berechnet, das müssen wir nicht tun, aber wir haben es getan, um das Konzept hinter dem AD-Indikator zu verstehen. Wenn wir heutzutage den AD-Indikator sehen möchten, müssen wir ihn nur unter den verfügbaren Indikatoren auf dem MetaTrader 5-Terminal auswählen und Ihnen im Folgenden zeigen, wie Sie ihn in das Diagramm einfügen.

Klicken Sie zunächst beim Öffnen von MetaTrader 5 auf die Registerkarte Einfügen --> Indikatoren --> Volumen --> Akkumulation/Verteilung

AD einfügen

Nach der Auswahl des Indikators wird das folgende Fenster für die Parameter des AD-Indikators geöffnet:

AD-Einfügefenster

1- Auswahl des Volumens Tick oder Real.

2- Farbe der AD-Linie.

3- Linientypen des AD.

4- Linienstärke des AD.

Nachdem Sie bestimmt haben, was Sie verwenden müssen, und OK gedrückt haben, wird die folgende Abbildung für die AD-Anzeige angezeigt:

AD angehängt

Jetzt müssen wir wissen, wie wir den AD-Indikator verwenden können, und das werden wir durch das folgende Thema lernen.


AD-Strategie

Nachdem wir gelernt haben, was der AD-Indikator ist, was er misst und wie wir ihn manuell berechnen können, haben wir das Konzept dahinter kennengelernt. In diesem Teil werden wir lernen, wie wir den AD-Indikator zu unseren Gunsten nutzen können, um unseren Handel zu verbessern, und wir werden dies durch einfache Strategien lernen, und ich hoffe, Sie können mehr neue Ideen bekommen, die für Ihren Handel von Vorteil sein können.

Ich muss etwas Wichtiges erwähnen, weil Sie feststellen könnten, dass diese Strategien optimiert werden muss. Das ist sehr normal, da das Hauptziel hier darin besteht, einfache Strategien zu teilen, die hilfreich sein können, damit wir das Grundkonzept hinter dem AD-Indikator verstehen und wie können mit MQL5 ein Handelssystem für sie erstellen. Sie müssen also jede Strategie testen, bevor Sie sie auf Ihrem echten Konto verwenden, da sie möglicherweise optimiert oder bearbeitet werden muss. Außerdem können Sie die Länge der nutzbaren Zeiträume so bearbeiten, dass sie signifikanter oder für Ihren Handel geeignet sind.

Jetzt werden wir einfache Strategien sehen, die vom AD-Indikator verwendet werden können,

  • Strategie eins: einfache AD-Bewegung:

Gemäß dieser Strategie müssen wir die Bewegung der AD-Linie kennen, ob sie steigt oder fällt. Wir führen einen einfachen Vergleich zwischen dem aktuellen AD-Wert und dem vorherigen AD-Wert durch, wenn der aktuelle AD-Wert größer als der vorherige AD-Wert ist, steigt die AD-Linie und umgekehrt, wenn der aktuelle Wert kleiner als der vorherige Wert ist. die AD-Linie ist rückläufig.

Einfach ausgedrückt können wir sagen:

Aktuelles AD > Vorheriges AD --> die AD-Linie steigt

Aktuelle AD < Vorherige AD --> die AD-Linie ist fällt

  • Strategie zwei: einfache AD-Stärke:

Gemäß dieser Strategie müssen wir wissen, ob die aktuelle Bewegung der AD-Linie stark oder schwach ist, und wir tun dies durch einen einfachen Vergleich zwischen dem aktuellen AD-Wert und dem maximalen oder minimalen Wert der letzten zehn AD-Werte. Ist der aktuelle Wert größer als der Maximalwert der vorherigen 10 AD-Werte, so ist der aktuelle AD-Wert stark und umgekehrt, ist der aktuelle Wert kleiner als der Minimalwert der vorherigen 10 AD-Werte, ist der aktuelle AD-Wert stark schwach.

Einfach, wie das Folgende:

Aktueller AD > Maximalwert der letzten 10 AD-Werte --> der aktuelle AD-Wert ist stark

Aktueller AD < Mindestwert der vorherigen 10 AD-Werte --> der aktuelle AD-Wert ist schwach

  • Strategie drei: einfache AD – Aufwärtstrend:

Gemäß dieser Strategie müssen wir wissen, ob die aktuelle Aufwärtsbewegung während des Aufwärtstrends stark ist oder ob es eine bärische Divergenz in ihrer einfachen Form gibt. Die bärische Divergenz ist einfach, wenn wir sehen, dass der Preis ein neues Hoch erzeugt, aber der Indikator diese Bewegung nicht bestätigt, da er sich nach unten bewegt, und wir werden dies überprüfen, indem wir die letzten beiden aufeinanderfolgenden Werte des AD und die letzten beiden aufeinanderfolgenden Werte des Hochs vergleichen nur aus Gründen der Einfachheit, aber Sie können den Untersuchungszeitraum bearbeiten, um aussagekräftigere Einblicke zu erhalten. Wir müssen hier also von dem Konzept profitieren, dass es besser ist zu sehen, dass das Volumen mit dem Trend geht, während des Aufwärtstrends steigt das Volumen mit Aufwärtsbewegungen und sinkt mit Korrekturen nach unten.

Wir vergleichen den aktuellen AD-Wert mit dem vorherigen AD-Wert und den aktuellen Höchstpreis mit dem vorherigen Höchstpreis. Ist der aktuelle AD-Wert größer als der vorherige AD-Wert und das aktuelle Hoch größer als das vorherige Hoch, so liegt während des Aufwärtstrends eine starke Aufwärtsbewegung vor. Oder, wenn der aktuelle AD-Wert kleiner als der vorherige AD-Wert und das aktuelle Hoch größer als das vorherige Hoch ist, dann gibt es eine bärische Divergenz.

Einfach, wie das Folgende:

Die aktuelle AD > die vorherige AD und das aktuelle Hoch > das vorherige Hoch --> Starke Aufwärtsbewegung während des Aufwärtstrends

Die aktuelle AD < die vorherige AD und das aktuelle Hoch > das vorherige Hoch --> Bärische Divergenz

  • Strategie vier: einfache AD – Abwärtstrend:

Diese Strategie wird das Gegenteil der einfachen AD-Aufwärtstrendstrategie sein, wir müssen wissen, ob die aktuelle Abwärtsbewegung während des Abwärtstrends stark ist oder ob es eine bullische Divergenz in ihrer einfachen Form gibt. Die bullische Divergenz ist, wenn wir sehen, dass der Preis ein neues Tief schafft, aber der Indikator diese Bewegung nicht bestätigt und sich nach oben bewegt, und wir werden dies überprüfen, indem wir die letzten beiden aufeinanderfolgenden Werte des AD-Indikators und die letzten beiden aufeinanderfolgenden Werte des Tiefs vergleichen. Wenn der aktuelle AD-Wert niedriger ist als der vorherige AD-Wert und das aktuelle Tief niedriger ist als das vorherige Tief, so gibt es während des Abwärtstrends eine starke Abwärtsbewegung. Oder, wenn der aktuelle AD-Wert größer ist als der vorherige AD-Wert und das aktuelle Tief kleiner als das vorherige Tief ist, dann liegt eine bullische Divergenz vor.

Es wird so einfach sein wie folgt:

Die aktuelle AD < die vorherige AD und das aktuelle Tief < das vorherige Tief --> Starke Abwärtsbewegung während des Abwärtstrends

Die aktuelle AD > die vorherige AD und das aktuelle Tief < das vorherige Tief --> Bullische Divergenz 


Setup-Strategie Blaupause

Jetzt ist es an der Zeit, unsere Schritte zur Erstellung unseres Handelssystems zu organisieren, denn in diesem Teil erstellen wir Schritt für Schritt eine Blaupause für jede Strategie, die uns hilft, unser Handelssystem reibungslos zu erstellen. Ich glaube, dass dieser Schritt in jedem Prozess der Erstellung eines Handelssystems sehr wichtig ist. Also werden wir für jede Strategie einen Entwurf entwerfen, um zu wissen, was wir tun müssen, und sie werden die gleichen sein wie die folgenden.

Zuerst müssen wir eine Blaupause für eine einfache Strategie entwerfen, die den aktuellen AD-Wert als Kommentar zum Diagramm darstellt, um die Grundlage für kommende Strategien zu bilden. Wir nennen es die einfache AD und alles, was wir von diesem System tun müssen, ist, den aktuellen AD-Wert als Kommentar auf dem Diagramm anzuzeigen, und das Folgende ist die Blaupause dafür:

Einfache AD-Blaupause 

Jetzt müssen wir eine Blaupause für jede erwähnte Strategie entwerfen,

  • Strategie eins: einfache AD-Bewegung:

Für jeden Tick muss das Handelssystem während der Ausführung die zwei Werte des aktuellen AD und des vorherigen kontinuierlich überprüfen und entscheiden, ob der aktuelle größer als der vorherige ist. Wir müssen im Kommentar auf dem Chart schreiben, die AD-Linie steigt, den aktueller Wert und den vorheriger Wert des AD und jeder Wert steht in einer separaten Zeile. Andererseits muss der Kommentar bei fallender AD-Linie, dem aktuellen AD-Wert und dem vorherigen AD-Wert und jedem Wert davon in einer separaten Zeile und schreiben. Das Folgende ist die Blaupause, um dieses Handelssystem zu erstellen:

Einfacher AD-Blaupause

  • Strategie zwei: einfache AD-Stärke:

Gemäß dieser Strategie müssen wir ein Handelssystem entwerfen, das bei jedem Tick drei Werten kontinuierlich überprüfen kann, ob es ausgeführt wird. Aufgrund der drei Werte, nämlich des aktuellen AD-Werts, des Maximalwert der letzten zehn AD-Werte und des Minimalwert der letzten zehn AD-Werte, müssen wir entscheiden, ob der aktuelle AD-Wert größer als der Maximalwert ist. Dann ist der aktuelle AD-Wert stark und den aktuellen AD-Wert, den maximalen AD-Wert und den minimalen AD-Wert und jeden Wert in einer separaten Zeile ausgeben. Wenn andererseits der aktuelle AD-Wert unter dem Mindestwert liegt, muss das System anzeigen, dass der aktuelle AD-Wert schwach ist, dazu den aktuellen AD-Wert, das AD-Maximum, AD-Minimum und jeden Wert in einer separaten Zeile.

Das Folgende ist die Blaupause dafür:

Einfacher AD-Stärke-Blaupause

  • Strategie drei: einfacher AD – Aufwärtstrend:

Wir müssen ein Handelssystem für diese Strategie erstellen, das vier Werte prüfen kann, den aktuellen AD, den vorherigen AD, das aktuelle Hoch und das vorherige Hoch, und dies bei jedem Tick während des Aufwärtstrends. Dann muss das System entscheiden, ob der aktuelle AD größer als der vorherige AD ist und wenn das aktuelle Hoch größer als das vorherige Hoch ist, muss das System einen Kommentar auf dem Chart über eine starke Aufwärtsbewegung während des Aufwärtstrends zurückgeben. den aktuellen und den vorherigen AD aktueller und vorheriger Höchststand und jeden Wert davon in einer separaten Zeile. Der andere Fall, den wir kennzeichnen müssen, ist, wenn der aktuelle AD kleiner als der vorherige und das aktuelle Hoch größer als das vorherige Hoch ist. Wir benötigen das System, um eine rückläufige Divergenz, den aktuellen und den vorherige AD und das aktuelle und vorherige Hoch ausgeben und jeder Wert in einer separaten Zeile.

Das Folgende ist die Blaupause, um dieses Handelssystem zu erstellen:

Einfache AD-Aufwärtstrend-Blaupause

  • Strategie vier: einfache AD – Abwärtstrend:

Wir müssen ein Handelssystem für diese Strategie erstellen, das vier Werte prüfen kann, den aktuellen, den vorherige AD, das aktuelle Tief und das vorherige Tief, und dies bei jedem Tick während eins Abwärtstrends. Dann muss das System entscheiden, ob der aktuelle AD kleiner als der vorherige AD ist. Wenn das aktuelle Tief kleiner als das vorherige Tief ist, muss das System einen Kommentar auf dem Chart einer starken Abwärtsbewegung während des Abwärtstrends ausgeben, mit aktuellem und vorhergehend AD, dem aktuell und vorherigen Tief, jeder Wert davon in einer separaten Zeile. Der andere Fall, den wir kennzeichnen müssen, ist, wenn der aktuelle AD größer als der vorherige und das aktuelle Tief kleiner als das vorherige Tief ist, dann muss das System einen Kommentar mit bullischer Divergenz ausgeben, mit aktuellem und vorhergehend AD, aktuellem und vorherigem Tief und jeder Wert in einer separaten Zeile.

Das Folgende ist die Blaupause, um dieses Handelssystem zu erstellen:

Einfache AD-Abwärtstrend-Blaupause


AD-Strategie-Handelssystem

In diesem interessanten Teil werden wir lernen, wie man ein Handelssystem erstellt, nachdem wir verstanden und entworfen haben, was wir tun müssen, und wir beginnen mit der Erstellung eines einfachen AD-Systems, das nur den aktuellen AD-Wert zurückgibt, um eine Basis für unsere Strategien zu bilden wie wir bereits erwähnt haben, und das Folgende ist, wie man es codiert:

  • Erstellen eines Arrays für das AD des Typs "double", um den Wert als reelle Zahl darzustellen.
double ADArray[];
  • Zugriffsrichtung des Arrays aus aktuellen Daten mithilfe der Funktion "ArraySetAsSeries".
ArraySetAsSeries(ADArray,true);
  • Definieren des AD mit der Funktion "iAD" nach dem Erstellen einer ganzzahligen Variablen von ADDef. Die Funktion "iAD" gibt das Handle des Indikators für Akkumulation/Verteilung zurück und seine Parameter sind (Symbol, Periode und angewandtes Volumen).
int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
  • Füllen des ADArray unter Verwendung der Funktion "CopyBuffer", um die Anzahl der kopierten Daten zurückzugeben, und ihre Parameter sind (Indikator-Handle, Puffernummer, Startzeit, Stoppzeit und Puffer).
CopyBuffer(ADDef,0,0,3,ADArray);
  • Berechnung des aktuellen AD-Werts mithilfe der Funktion „NormalizeDouble“, die einen Wert vom Typ double zurückgibt, nachdem eine ganzzahlige Variable für ADValue erstellt wurde. 
int ADValue=NormalizeDouble(ADArray[0],5);
  • Erstellen eines Kommentars zum Diagramm mit der Funktion "Comment".
Comment("AD Value is: ",ADValue);

Das Folgende ist der vollständige Code für das vorherige, um das einfache AD zu erstellen:

//+------------------------------------------------------------------+
//|                                                    Simple AD.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()
  {
   //create an array for AD
   double ADArray[];
   
   //sorting the array from the current data
   ArraySetAsSeries(ADArray,true);
   
   //defining AD
   int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
   
   //filling the ADArray with ADDef
   CopyBuffer(ADDef,0,0,3,ADArray);
   
   //calculating current AD value
   int ADValue=NormalizeDouble(ADArray[0],5);
   
   //creating a comment with AD value
   Comment("AD Value is: ",ADValue);  
  }
//+------------------------------------------------------------------+

Nachdem wir diesen Code kompiliert haben, finden wir ihn im Navigationsfenster im Ordner „Expert Advisors“ wie folgt:

AD Nav

Wir können es ausführen, indem wir den Expert Advisor per Drag & Drop auf das Diagramm ziehen und dadurch das folgende Fenster erscheint:

Einfaches AD-Fenster

Nachdem Sie auf „OK“ geklickt haben, wird es wie im folgenden Bild an das Diagramm angehängt:

Einfaches AD angehängt

Das Folgende ist ein Beispiel für den generierten Kommentar gemäß diesem Expert Advisor aus dem Testen:

Einfaches AD-Testsignal

Wenn wir sicherstellen müssen, dass der Experte den gleichen Wert generiert wie der ursprüngliche Indikator auf dem MetaTrader 5 generiert, können wir den Indikator gleichzeitig mit dem Anhängen des Expert Advisors einfügen und wir können sehen, dass sie gleich sind:

Einfaches AD – Gleiches Signal

  • Strategie eins: einfache AD-Bewegung:

Das Folgende ist der vollständige Code zum Erstellen eines Expert Advisors, der ausgeführt werden kann und die gewünschten Signale gemäß dieser Strategie generiert:

//+------------------------------------------------------------------+
//|                                           Simple AD movement.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()
  {
   //create array for AD
   double ADArray[];
   
   //sorting array from the current data
   ArraySetAsSeries(ADArray,true);
   
   //defining AD
   int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
   
   //filling the ADArray with ADDef
   CopyBuffer(ADDef,0,0,3,ADArray);
   
   //calculating current AD and previous values
   int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
   int ADPrevValue=NormalizeDouble(ADArray[1],5);
   
   //Comparing two values and giving signal
   //Rising AD
   if(ADCurrrentValue>ADPrevValue)
   {
      Comment("AD line is rising","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue);
   }
   
   //Declining AD
   if(ADCurrrentValue<ADPrevValue)
   {
      Comment("AD line is declining","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue);
   }  
  }
//+------------------------------------------------------------------+

Der vorherige Code unterscheidet sich vom Basiscode und es gibt folgende Unterschiede:

  • Berechnung von zwei Werten des aktuellen und des vorherigen AD:
int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
int ADPrevValue=NormalizeDouble(ADArray[1],5);
  • Festlegen von Bedingungen und generierten Kommentaren gemäß dieser Strategie:
    • Steigende AD-Linie:
if(ADCurrrentValue>ADPrevValue)
{
 Comment("AD line is rising","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue);
}
    • Sinkende AD-Linie:
if(ADCurrrentValue<ADPrevValue)
{
 Comment("AD line is declining","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue);
} 

Nach dem Kompilieren dieses Codes finden wir den Expert Advisor im Navigationsfenster:

AD Nav 2

Durch einen Doppelklick darauf finden wir folgendes Fenster:

Einfaches AD-Bewegungsfenster

Nach dem Drücken von "OK" wird es an das Diagramm angehängt:

Einfache AD-Bewegung angehängt

Das Folgende ist ein Beispiel für generierte Signale mit einem Datenfenster mit aktuellen und vorherigen Daten:

Steigende AD-Linie,

Aktuelle Daten: 

Einfache AD-Bewegung - steigender AD - aktuell 

Bisherige Daten:

Einfaches AD-Bewegung - steigendes AD - vorheriges

Fallender AD,

Aktuelle Daten:

Einfache AD-Bewegung - fallender AD - aktuell

Bisherige Daten:

 Einfache AD-Bewegung - fallender AD - vorheriges

  • Strategie zwei: einfache AD-Stärke:

Das Folgende ist der vollständige Code zum Erstellen eines Expert Advisors zur Ausführung unserer Handelsstrategie:

//+------------------------------------------------------------------+
//|                                           Simple AD strength.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
void OnTick()
  {
   //Create array for AD
   double ADArray[];
   
   //sorting the array from the current data
   ArraySetAsSeries(ADArray,true);
  
   //defining AD
   int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
   
   //filling the ADArray with ADDef
   CopyBuffer(ADDef,0,0,10,ADArray);
 
   //calculating current AD and previous values
   int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
  
   //Defining Max and Min values from the last 10 AD values
   int ADMax =ArrayMaximum(ADArray,1,10);
   int ADMin =ArrayMinimum(ADArray,1,10);
   
   //Calculating Max and Min values
   int ADMaxValue=ADArray[ADMax];
   int ADMinValue=ADArray[ADMin];

   //Comparing two values and giving signal
   //AD current is strong
   if(ADCurrrentValue>ADMaxValue)
   {
      Comment("AD Current value is strong","\n","AD current value is: ,",ADCurrrentValue,
   "\n","AD Max is: ",ADMaxValue,"\n","AD Min is: ",ADMinValue);
   }
   
   //AD current is weak
   if(ADCurrrentValue<ADMinValue)
   {
      Comment("AD Current value is weak","\n","AD current value is: ,",ADCurrrentValue,
   "\n","AD Max is: ",ADMaxValue,"\n","AD Min is: ",ADMinValue);
   }
  }
//+------------------------------------------------------------------+

Der vorherige Code hat viele Unterschiede je nach Strategie und was wir vom Expert Advisor tun müssen, und das Folgende ist eine Erläuterung dieser Unterschiede:

  • Definieren der maximalen und minimalen AD-Werten mithilfe der Funktionen "ArrayMaximum" und "ArrayMinimum" nach dem Erstellen von Integer-Variablen von ADMaxValue und ADMinValue. Das "ArrayMaximum" gibt einen Index eines gefundenen Elements unter Berücksichtigung der Array-Seriennummer zurück, sucht nach dem größten Element und seine Parameter sind numerisches Array, Index zum Starten und die Anzahl der zu durchsuchenden Elemente. Das "ArrayMinimum" ist dasselbe wie das "ArrayMaximum", aber es sucht das niedrigste Element.
int ADMax =ArrayMaximum(ADArray,1,10);
int ADMin =ArrayMinimum(ADArray,1,10);
  • Berechnen von ADMaxValue und ADMinValue nach dem Erstellen von Integer-Variablen für sie:
int ADMaxValue=ADArray[ADMax];
int ADMinValue=ADArray[ADMin];
  • Festlegen von Bedingungen der Strategie und Kommentaren basierend auf jeder Bedingung,
    • Starker AD-Wert:
if(ADCurrrentValue>ADMaxValue)
{
 Comment("AD Current value is strong","\n","AD current value is: ,",ADCurrrentValue,
 "\n","AD Max is: ",ADMaxValue,"\n","AD Min is: ",ADMinValue);
}
    • Schwacher AD-Wert:
if(ADCurrrentValue<ADMinValue)
{
 Comment("AD Current value is weak","\n","AD current value is: ,",ADCurrrentValue,
 "\n","AD Max is: ",ADMaxValue,"\n","AD Min is: ",ADMinValue);
}

Nach dem Kompilieren dieses Codes ist der Experte im Navigator wie folgt verfügbar:

AD Nav 3

 

Nachdem Sie es per Drag & Drop auf das Diagramm gezogen haben, wird sein Fenster angezeigt:

Einfaches AD-Stärke-Fenster

Nach dem Drücken von "OK" wird es an das Diagramm angehängt:

Einfache AD-Stärke angebracht

Das Folgende ist ein Beispiel für das Testen von generierten Signalen:

Starke AD:

Einfaches AD-Stärke-Signal - stark

Schwacher AD:

Einfaches AD-Stärkesignal - schwach

  • Strategie drei: einfacher AD-Aufwärtstrend:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                          Simple AD - uptrend.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()
  {
   //Create two arrays for AD and price
   double ADArray[];
   MqlRates PriceArray[];
   
   //sorting the two arrays
   ArraySetAsSeries(ADArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
   
   //defining AD
   int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
   
   //filling the ADArray with ADDef
   CopyBuffer(ADDef,0,0,3,ADArray);
   
   //calculating current AD and previous values
   int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
   int ADPrevValue=NormalizeDouble(ADArray[1],5);
   
   //calculating current and previous highs
   double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5);         
   double PrevHighValue=NormalizeDouble(PriceArray[1].high,5); 
   
   //Comparing two values and giving signal
   //Strong Up move
   if(ADCurrrentValue > ADPrevValue && CurrentHighValue>PrevHighValue)
   {
      Comment("Strong Up Move During The Uptrend","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue,
      "\n","Current high value is: ",CurrentHighValue,
      "\n","Previous high value is: ",PrevHighValue);    
   }   
   
   //in case of divergence
   if(ADCurrrentValue < ADPrevValue && CurrentHighValue>PrevHighValue)
   {
      Comment("Bearish Divergence","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue,
      "\n","Current low value is: ",CurrentHighValue,
      "\n","Previous low value is: ",PrevHighValue);      
   }   
  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

  • Erstellen von zwei Arrays, eines für AD mithilfe der „double“-Funktion und eines für den Preis mithilfe der Funktion „MqlRates“, die Informationen zu Preisen speichert.
double ADArray[];
MqlRates PriceArray[];
  • Zugriffsrichtung von zwei Arrays, eines für das AD mithilfe der Funktion „ArraySetAsSeries“ und eines für den Preis mithilfe der Funktion „CopyRates“, um historische Daten der Struktur „MqlRates“ zu erhalten, nachdem eine Ganzzahlvariable für Daten erstellt wurde.
ArraySetAsSeries(ADArray,true);
int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
  • AD definieren, AD-Array füllen:
int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);

CopyBuffer(ADDef,0,0,3,ADArray);
  • Berechnung des aktuellen AD, des vorherigen AD, des aktuellen Hochs und des vorherigen Hochs:
int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
int ADPrevValue=NormalizeDouble(ADArray[1],5);

double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5);         
double PrevHighValue=NormalizeDouble(PriceArray[1].high,5); 
  • Einstellungsbedingungen der Strategie und gewünschte Kommentare:
    • Starke Aufwärtsbewegung:
if(ADCurrrentValue > ADPrevValue && CurrentHighValue>PrevHighValue)
{
 Comment("Strong Up Move During The Uptrend","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue,
 "\n","Current high value is: ",CurrentHighValue,
 "\n","Previous high value is: ",PrevHighValue);    
} 
    • Bärische Divergenz:
if(ADCurrrentValue < ADPrevValue && CurrentHighValue>PrevHighValue)
{
 Comment("Bearish Divergence","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue,
 "\n","Current low value is: ",CurrentHighValue,
 "\n","Previous low value is: ",PrevHighValue);      
} 

Nachdem wir diesen Code kompiliert haben, finden wir ihn im Navigationsfenster im Ordner Expert Advisors:

AD Nav 4

Durch Doppelklicken gestartet erscheint das Fenster:

Einfaches AD-Aufwärtstrendfenster

Durch Drücken von "OK" wird es an das Diagramm angehängt:

Einfacher AD-Aufwärtstrend angehängt

Das Folgende ist ein Beispiel für generierte Signale mit einem Datenfenster mit aktuellen und vorherigen Werten:

Starke Aufwärtsbewegung,

Aktuelle Daten:

 Einfacher AD-Aufwärtstrend - starkes Aufwärtsbewegungssignal - aktuell

Bisherige Daten:

Einfacher AD-Aufwärtstrend – starkes Aufwärtsbewegungssignal – vorher

Bärische Divergenz,

Aktuelle Daten:

Einfacher AD-Aufwärtstrend – rückläufiges Signal – aktuell

Bisherige Daten:

Einfacher AD-Aufwärtstrend – rückläufiges Signal – vorheriger

  • Strategie vier: einfache AD – Abwärtstrend:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                        Simple AD - downtrend.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()
  {
   //creating a string variable for signal
   string signal="";
   
   //Create two arrays for AD and price
   double ADArray[];
   MqlRates PriceArray[];
   
   //sorting the two arrays
   ArraySetAsSeries(ADArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
   
   //defining AD
   int ADDef=iAD(_Symbol,_Period,VOLUME_TICK);
   
   //filling the ADArray with ADDef
   CopyBuffer(ADDef,0,0,3,ADArray);
   
   //calculating current AD and previous values
   int ADCurrrentValue=NormalizeDouble(ADArray[0],5);
   int ADPrevValue=NormalizeDouble(ADArray[1],5);
   
   double CurrentLowValue=NormalizeDouble(PriceArray[2].low,5);         
   double PrevLowValue=NormalizeDouble(PriceArray[1].low,5); 
   
   //Comparing two values and giving signal
   //Strong down move
   if(ADCurrrentValue < ADPrevValue && CurrentLowValue<PrevLowValue)
   {
      Comment("Strong Down Move During The Downtrend","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue,
      "\n","Current low value is: ",CurrentLowValue,
      "\n","Previous low value is: ",PrevLowValue);      
   }
   
   //in case of divergence
   if(ADCurrrentValue > ADPrevValue && CurrentLowValue<PrevLowValue)
   {
      Comment("Bullish Divergence","\n","AD current value is: ",ADCurrrentValue,
      "\n","AD previous value is: ",ADPrevValue,
      "\n","Current low value is: ",CurrentLowValue,
      "\n","Previous low value is: ",PrevLowValue);      
   }  
  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code sind die gleichen wie die folgenden:

  • Bedingungen dieser Strategie und erforderliche Kommentare gemäß dieser Strategie:
    • Starke Abwärtsbewegung:
if(ADCurrrentValue < ADPrevValue && CurrentLowValue<PrevLowValue)
{
 Comment("Strong Down Move During The Downtrend","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue,
 "\n","Current low value is: ",CurrentLowValue,
 "\n","Previous low value is: ",PrevLowValue);      
}
    • Bullische Divergenz:
if(ADCurrrentValue > ADPrevValue && CurrentLowValue<PrevLowValue)
{
 Comment("Bullish Divergence","\n","AD current value is: ",ADCurrrentValue,
 "\n","AD previous value is: ",ADPrevValue,
 "\n","Current low value is: ",CurrentLowValue,
 "\n","Previous low value is: ",PrevLowValue);      
} 

Nachdem wir diesen Code kompiliert haben, können wir den Experten im Navigationsfenster finden:

 AD Nav 5

Durch Ziehen und Ablegen auf dem Diagramm wird sein Fenster angezeigt:

Einfaches AD-Abwärtstrendfenster

Durch Drücken von "OK" wird der Expert Advisor an das Diagramm angehängt:

Einfacher AD-Abwärtstrend angehängt

Das Folgende ist ein Beispiel für generierte Signale mit Datenfenster der aktuellen und vorherigen Werte gemäß dieser Strategie,

Starke Abwärtsbewegung,

Aktuelle Daten:

Einfacher AD-Abwärtstrend - starkes Abwärtsbewegungssignal - aktuell

Bisherige Daten:

Einfacher AD-Abwärtstrend - starkes Abwärtsbewegungssignal - vorher

Bullische Divergenz,

Aktuelle Daten:

Einfacher AD-Abwärtstrend - bullisches Divergenzsignal - aktuell

Bisherige Daten:

Einfaches AD-Abwärtstrend - bullisches Divergenzsignal - vorheriges\


Schlussfolgerung

Mit den vorherigen und erwähnten Themen haben wir das Thema des Indikators Accumulation/Distribution (AD) behandelt, der einer der volumenbasierten Indikatoren ist. Wir haben gelernt, was der AD-Indikator kann, was er misst und wie wir ihn manuell berechnen kann, um das Konzept dahinter sehr gut zu lernen, und wir haben ein Beispiel gesehen, um das Thema der manuellen Berechnung anzuwenden. Wir haben gelernt, wie wir den AD-Indikator durch einfache Strategien verwenden können, und zwar einfache AD-Bewegung, einfache AD-Stärke, einfacher AD - Aufwärtstrend und einfacher AD - Abwärtstrend, und dann einen Entwurf für jede Strategie entworfen, um uns darauf vorzubereiten, ein Handelssystem dafür zu erstellen jede Strategie. Danach lernten wir, wie man ein Handelssystem erstellt, indem man einen Expertenberater von MQL5 für jede Strategie erstellt, um sie auf der MetaTrader 5-Handelsplattform auszuführen, und sahen Beispiele für generierte Signale jeder Strategie. Das vorherige erlaubte uns, diese Strategien zu automatisieren, um automatisch Signale zu generieren, und dies ist ein großartiges Merkmal der Programmierung, da es uns helfen wird, unser Leben zu erleichtern, und der Computer für uns handeln wird oder uns zumindest klare, genaue und schnelle Einblicke geben wird um uns zu helfen, unsere Handelsentscheidung zu verbessern, ohne Emotionen einzubeziehen, die schädlich sein können.

Es ist wichtig, noch einmal zu erwähnen, dass Sie jede Strategie testen müssen, bevor Sie sie auf Ihrem echten Konto verwenden, da sie möglicherweise nicht nützlich oder für Sie geeignet ist, da nichts für alle Menschen geeignet ist oder Sie zumindest feststellen, dass sie optimiert werden muss. Sie müssen also tun, was erforderlich ist, um bessere Ergebnisse zu erzielen. Insbesondere das Hauptziel dieses Artikels und anderer Artikel dieser Serie besteht darin, als Anfänger zu lernen, wie man mit MQL5 einfache Strategien für die beliebtesten technischen Indikatoren codiert, und ich hoffe, dass Sie das, was Sie gelesen und versucht haben, selbst zu codieren, in der Praxis angewendet haben denn das Üben ist ein wichtiger Faktor jedes Lernprozesses.

Ich hoffe, Sie fanden diesen Artikel hilfreich und er hat Ihnen die Augen für neue Ideen zum gleichen Thema oder sogar zu verwandten Themen geöffnet. Wenn Sie diesen Artikel für Sie nützlich fanden und weitere ähnliche Artikel lesen möchten, können Sie meine vorherigen Artikel in dieser Serie lesen, um zu erfahren, wie Sie ein einfaches Handelssystem auf der Grundlage der beliebtesten technischen Indikatoren entwerfen.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/10993

DoEasy. Steuerung (Teil 2): Arbeiten an der Klasse CPanel DoEasy. Steuerung (Teil 2): Arbeiten an der Klasse CPanel
Im aktuellen Artikel werde ich einige Fehler im Zusammenhang mit der Handhabung von grafischen Elementen beseitigen und die Entwicklung des CPanel-Steuerelements fortsetzen. Insbesondere werde ich die Methoden zur Einstellung der Parameter der Schriftart implementieren, die standardmäßig für alle Textobjekte des Panels verwendet wird.
Video: Wie man MetaTrader 5 und MQL5 für den einfachen automatisierten Handel einrichtet Video: Wie man MetaTrader 5 und MQL5 für den einfachen automatisierten Handel einrichtet
In diesem kleinen Videokurs lernen Sie, wie Sie den MetaTrader 5 für den automatisierten Handel herunterladen, installieren und einrichten. Sie erfahren auch, wie Sie die Chart-Einstellungen und die Optionen für den automatischen Handel anpassen können. Sie werden Ihren ersten Backtest durchführen und am Ende dieses Kurses werden Sie wissen, wie Sie einen Expert Advisor importieren, der automatisch 24/7 handeln kann, ohne dass Sie vor Ihrem Bildschirm sitzen müssen.
Datenwissenschaft und maschinelles Lernen (Teil 04): Vorhersage des aktuellen Börsenkrachs Datenwissenschaft und maschinelles Lernen (Teil 04): Vorhersage des aktuellen Börsenkrachs
In diesem Artikel werde ich versuchen, unser logistisches Modell zu verwenden, um den Börsencrash auf der Grundlage der Fundamentaldaten der US-Wirtschaft vorherzusagen. NETFLIX und APPLE sind die Aktien, auf die wir uns konzentrieren werden, wobei wir die früheren Börsencrashs von 2019 und 2020 nutzen werden, um zu sehen, wie unser Modell in der aktuellen Krise abschneiden wird.
Lernen Sie, wie man ein Handelssystem mit dem OBV entwickelt Lernen Sie, wie man ein Handelssystem mit dem OBV entwickelt
Dies ist ein neuer Artikel, der unsere Serie für Anfänger fortsetzt, in der es darum geht, wie man ein Handelssystem basierend auf einigen der beliebten Indikatoren entwirft. Wir werden einen neuen Indikator kennenlernen, nämlich das On Balance Volume (OBV), und wir werden lernen, wie wir ihn verwenden und ein darauf basierendes Handelssystem entwerfen können.