
Erfahren Sie, wie Sie ein Handelssystem durch Accumulation/Distribution (AD) entwerfen
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:
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:
- Berechnen Sie den Geldflussmultiplikator = ((Close-Low)-(High-Close))/(High-Low)
- Berechnen Sie das Geldflussvolumen = Geldflussmultiplikator * Periodenvolumen
- 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:
Zweitens berechnen wir das Geldflussvolumen = Geldflussmultiplikator * Periodenvolumen, dann können wir es wie in der folgenden Abbildung finden:
Drittens berechnen wir die AD-Linie = vorheriger AD-Linienwert + aktuelles Geldflussvolumen, dann finden wir es gleich wie in der folgenden Abbildung:
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
Nach der Auswahl des Indikators wird das folgende Fenster für die Parameter des AD-Indikators geöffnet:
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:
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:
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:
- 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:
- 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:
- 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:
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:
Wir können es ausführen, indem wir den Expert Advisor per Drag & Drop auf das Diagramm ziehen und dadurch das folgende Fenster erscheint:
Nachdem Sie auf „OK“ geklickt haben, wird es wie im folgenden Bild an das Diagramm angehängt:
Das Folgende ist ein Beispiel für den generierten Kommentar gemäß diesem Expert Advisor aus dem Testen:
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:
- 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:
Durch einen Doppelklick darauf finden wir folgendes Fenster:
Nach dem Drücken von "OK" wird es an das Diagramm angehängt:
Das Folgende ist ein Beispiel für generierte Signale mit einem Datenfenster mit aktuellen und vorherigen Daten:
Steigende AD-Linie,
Aktuelle Daten:

Bisherige Daten:
Fallender AD,
Aktuelle Daten:
Bisherige Daten:
- 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:

Nachdem Sie es per Drag & Drop auf das Diagramm gezogen haben, wird sein Fenster angezeigt:
Nach dem Drücken von "OK" wird es an das Diagramm angehängt:
Das Folgende ist ein Beispiel für das Testen von generierten Signalen:
Starke AD:
Schwacher AD:
- 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:
Durch Doppelklicken gestartet erscheint das Fenster:
Durch Drücken von "OK" wird es an das Diagramm angehängt:
Das Folgende ist ein Beispiel für generierte Signale mit einem Datenfenster mit aktuellen und vorherigen Werten:
Starke Aufwärtsbewegung,
Aktuelle Daten:
Bisherige Daten:
Bärische Divergenz,
Aktuelle Daten:
Bisherige Daten:
- 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:
Durch Ziehen und Ablegen auf dem Diagramm wird sein Fenster angezeigt:
Durch Drücken von "OK" wird der Expert Advisor an das Diagramm 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:
Bisherige Daten:
Bullische Divergenz,
Aktuelle Daten:
Bisherige Daten:
\
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





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