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

Lernen Sie, wie man ein Handelssystem mit dem Awesome Oscillator entwickelt

MetaTrader 5Handel | 26 September 2022, 10:42
341 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

Hier ist ein neuer Artikel in unserer Serie über das Lernen von Handelssystemen auf der Grundlage der beliebtesten technischen Indikatoren für Anfänger durch das Verstehen der Grundlagen. In diesem Artikel werden wir ein neues technisches Instrument kennenlernen, nämlich den Indikator Awesome Oscillator. Wir werden ihn genauer kennenlernen, um zu erfahren, was er ist, was er misst und wie man ihn auf der Grundlage des Hauptkonzepts, das ihm zugrunde liegt, durch einfache Strategien nutzen kann, und wie man ein Handelssystem auf der Grundlage dieser erwähnten Strategien erstellt.

Wir werden diesen Indikator im Detail behandeln, wie wir es auch in den folgenden Themen getan haben:

  1. Awesome Oszillator - Definition
  2. Awesome Oszillator - Strategie
  3. Awesome Oszillator - Blaupause der Strategie
  4. Awesome Oszillator - Handelssystem
  5. Schlussfolgerung

Wir werden MQL 5 (MetaQuotes Language 5) verwenden, um unsere Codes zu schreiben, und das MetaTrader 5-Handelsterminal, um unser entwickeltes Handelssystem auszuführen. Der MQL5 ist in den MetaTrader 5 integriert. Wenn Sie lernen möchten, wie man sie herunterlädt und verwendet, können Sie das Thema Schreiben von MQL5-Code in MetaEditor in einem früheren Artikel lesen. Ich empfehle Ihnen, das Programm herunterzuladen und zu versuchen, das Gelernte selbst anzuwenden, um Ihre Programmierkenntnisse zu üben und zu verbessern.

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.


Awesome Oszillator - Definition

In diesem Thema werden wir den Indikator Awesome Oscillator (AO) genauer kennenlernen. Der AO wurde von Bill Williams entwickelt, um die Dynamik zu messen, er kann verwendet werden, um die Macht oder die Kontrolle der Parteien Käufer oder Verkäufer zu erkennen. Er misst dieses Momentum, indem er das Momentum der letzten fünf Balken oder Kerzen mit dem Momentum der letzten 34 Balken oder Kerzen in einem größeren Zeitrahmen vergleicht, mit anderen Worten, er vergleicht das aktuelle Momentum mit dem Momentum eines größeren Zeitrahmens. Wenn wir eine Bestätigung des AO-Signals durch einen anderen technischen Indikator oder ein anderes Instrument erhalten, wird dies bedeutsam und wichtiger sein. Es ist daher besser, sie zusammen mit einem anderen technischen Hilfsmittel zu verwenden. Wie wir diesen Indikator manuell berechnen können, um zu verstehen und unser Verständnis dieses Indikators zu vertiefen, können wir anhand der folgenden Schritte lernen:

Der AO ist die Differenz zwischen dem einfachen gleitenden 5-Perioden-Durchschnitt und dem einfachen gleitenden 34-Perioden-Durchschnitt. Für die Berechnung der AO wird der Medianpreis verwendet.

MEDIAN PRICE = (HIGH + LOW) / 2 

AO = SMA(MEDIAN PRICE, 5)-SMA(MEDIAN PRICE, 34)

Wobei:

MEDIAN PRICE = der Medianpreis des Instruments

HIGH = der Höchstpreis

LOW = der Tiefstpreis

AO = der Wert des Awesome Oscillators

SMA - einfacher gleitender Durchschnitt;

Heutzutage brauchen wir ihn nicht mehr manuell zu berechnen, da er im MetaTrader 5 als integrierter Indikator unter den verschiedenen technischen Indikatoren verfügbar ist und wir ihn nur im Handelsterminal auswählen müssen, damit er auf dem Chart erscheint.

Im Folgenden wird beschrieben, wie man ihn auf dem Chart startet. Wenn Sie das MetaTrader 5-Handelsterminal öffnen, klicken Sie auf Einfügen --> Indikatoren --> Bill Williams --> Awesome Oscillator

AO-Starten

Danach können wir die Parameter des AO-Indikators wie folgt finden:

AO-param

Wobei:

1- Bestimmen der Farbe der Aufwärtswerte

2- Bestimmen der Linienstärke des Indikators.

3- Bestimmen der Farbe der Abwärtswerte

Nachdem Sie diese Parameter festgelegt haben, wird der Indikator wie folgt auf dem Chart gestartet:

 AO-Indikator gestartet

Wie wir im obigen Chart sehen können, ist der Indikator im unteren Teil des Charts mit Histogrammbalken eingefügt, die um den Nullpunkt oszillieren, um das Momentum zu messen.


Awesome Oszillator - Strategie

In diesem Thema werden wir lernen, wie man den AO-Indikator durch einige einfache Strategien für den Zweck der Bildung nur auf der Grundlage des Hauptkonzepts hinter dem Indikator verwenden kann. Sie müssen jede Strategie von ihnen testen, bevor Sie sie auf Ihrem echten Konto verwenden, um sicherzustellen, dass sie nützlich, profitabel und für Ihren Handel geeignet ist. Abhängig davon kann es sein, dass Sie feststellen, dass die erwähnten Strategien optimiert werden müssen, da diese Strategien, wie bereits erwähnt, in erster Linie der Bildung dienen, und das ist normal. Es wird besser sein, diesen Indikator mit einem anderen technischen Indikator zu verwenden, um effektivere Ergebnisse zu erzielen, vor allem, wenn wir einen anderen technischen Indikator oder ein anderes Werkzeug verwenden, das uns weitere Einblicke aus vielen verschiedenen Perspektiven geben kann. Dies ist übrigens eine der wichtigsten und effektivsten Eigenschaften der technischen Analyse, da wir viele Werkzeuge nutzen können, um das zugrunde liegende Instrument aus verschiedenen Perspektiven zu betrachten und zu bewerten, was uns helfen wird, geeignete Investitions- oder Handelsentscheidungen zu treffen, um gute Ergebnisse zu erzielen. In diesem Artikel werden wir einen weiteren technischen Indikator, den gleitenden Durchschnitt, kombinieren, um effektivere Kauf- oder Verkaufssignale zu erhalten.

  • Strategie eins: AO Zero Crossover:

Auf der Grundlage dieser Strategie müssen wir ein Aufwärts- oder Abwärtssignal erhalten, das auf dem Crossover (Kreuzen zweier Linien) zwischen dem aktuellen AO-Wert und der Nulllinie basiert. Wenn der aktuelle AO-Wert über der Nulllinie liegt, ist dies ein Aufwärtssignal. Liegt der aktuelle AO-Wert unter der Nulllinie, handelt es sich um ein Abwärtssignal.

Einfach:

Der aktuelle AO > 0 --> Aufwärts

Die aktuelle AO < 0 --> Abwärts

  • Strategie zwei: AO Stärke:

Nach dieser Strategie müssen wir ein Signal für die Stärke der AO-Bewegung erhalten, das auf der Position des aktuellen AO und dem Durchschnitt der 5 Perioden der letzten AO-Werte basiert. Wenn der aktuelle AO-Wert größer ist als der AVG (Mittelwert), ist dies ein Signal für die Stärke der AO-Bewegung. Wenn der aktuelle AO-Wert niedriger ist als der AVG-Wert, ist dies ein Zeichen für die Schwäche der AO-Bewegung.

Einfach:

Die aktuelle AO > AVG 5- Periode von AO --> AO ist stark

Die aktuelle AO < AVG 5- Periode der AO --> AO ist schwach

  • Strategie drei: AO & MA Strategie:

Bei dieser Strategie müssen wir Kauf- und Verkaufssignale erhalten, die auf der Position des aktuellen AO-Werts und des Nullniveaus sowie auf der Position des Schlusskurses und des exponentiellen gleitenden Durchschnitts der Periode 50 basieren. Wenn der aktuelle AO-Wert über der Nulllinie liegt und gleichzeitig der Schlusskurs über dem 50-Perioden-EMA liegt, handelt es sich um ein Kaufsignal. Liegt der aktuelle AO-Wert unter der Nulllinie und ist gleichzeitig der Schlusskurs niedriger als der EMA, handelt es sich um ein Verkaufssignal.

Einfach:

Der aktuelle AO > die Nulllinie und der Schlusskurs > 50-periodischer EMA --> Kaufsignal

Der aktuelle AO < die Nulllinie und der Schlusskurs < 50-er EMA --> Verkaufssignal

Awesome Oszillator - Blaupause der Strategie

Wir werden für jede der genannten Strategien eine Schritt-für-Schritt-Blaupause entwerfen, die uns dabei hilft, unser Handelssystem einfach zu erstellen, indem wir unsere Ideen ordnen.

  • Strategie eins: AO Zero Crossover:

Gemäß dieser Strategie müssen wir ein Handelssystem entwickeln, das in der Lage ist, Auf- oder Abwärtssignale zu generieren, indem es kontinuierlich zwei Werte vergleicht, und zwar den aktuellen AO-Wert mit der Nulllinie des AO-Indikators, um die Position jedes Wertes zu bestimmen und über den Stand des Marktes zu entscheiden. Wenn der AO-Wert größer ist als die Nulllinie, muss das Handelssystem einen Kommentar auf dem Chart mit den folgenden Werten erzeugen:

  • Aufwärts (bullish)
  • AO Wert ist n

Im anderen Szenario, wenn der aktuelle AO-Wert unter der Nulllinie liegt, soll das Handelssystem einen Kommentar auf dem Chart mit den folgenden Werten ausgeben:

  • Abwärts (bearish)
  • AO Wert ist n

Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung für dieses Handelssystem:

Algorithmisches-Handelssystem-Blaupause1

  • Strategie zwei: AO Stärke:

Nach dieser Strategie müssen wir ein Handelssystem entwickeln, das Signale für die Stärke der AO-Bewegung generiert, indem es kontinuierlich zwei Werte vergleicht, nämlich den aktuellen AO-Wert und den Durchschnitt der letzten fünf AO-Werte vor dem aktuellen Wert, um festzustellen, welcher Wert größer ist. Wenn der aktuelle AO-Wert größer ist als der AVG, muss das Handelssystem einen Kommentar mit den folgenden Werten zurückgeben (Signal und Werte, die der Grund für dieses Signal waren):

  • AO Movement is strong (AO-Bewegung ist stark)
  • AO CurrVal : n
  • AO FirstVal : n
  • AO SecondVal : n
  • AO ThirdVal : n
  • AO FourthVal : n
  • AO FifthVal : n
  • AO AvgVal : n

Im anderen Fall, wenn die aktuelle AO niedriger ist als der AVG, muss das Handelssystem auch die folgenden Werte als Kommentar ausgeben:

  • AO Movement is Weak (AO-Bewegung ist schwach)
  • AO CurrVal : n
  • AO FirstVal : n
  • AO SecondVal : n
  • AO ThirdVal : n
  • AO FourthVal : n
  • AO FifthVal : n
  • AO AvgVal : n

Nachfolgend finden Sie eine schrittweise Blaupause für dieses Handelssystem:

 Algorithmisches-Handels-System-Blaupause11

  • Strategie drei: AO & MA Strategie:

Auf der Grundlage der Strategie, die wir im der vorherigen Thema kennengelernt haben, soll ein Handelssystem, das einen Kommentar mit geeigneten Signale von Kauf und Verkauf auf dem Chart auf der Grundlage des kontinuierlichen Vergleichs von vier Werten ausgibt:

  • Die aktuelle AO
  • Die Nulllinie des AO-Indikators
  • Der Schlusskurs
  • die 50-Periode des MA

Wenn der aktuelle AO über der Nullniveau und der Schlusskurs über dem 50-Perioden-MA liegt, muss das Handelssystem das Folgende als Kommentar auf dem Chart zurückgeben:

  • Kaufen
  • Schlusskurs
  • AO Wert ist n
  • MA Wert ist n

Im anderen Szenario, wenn der aktuelle AO-Wert unter der Nulllinie und der Schlusskurs unter dem 50-Perioden-MA liegt, muss das Handelssystem einen Kommentar auf dem Chart mit den folgenden Werten ausgeben:

  • Verkaufen
  • Schlusskurs
  • AO Wert ist n
  • MA Wert ist n

Nachfolgend finden Sie eine schrittweise Blaupause für dieses Handelssystem:

Algorithmisches-Handelssystem-Blaupause111

Awesome Oszillator - Handelssystem

In diesem Thema werden wir das Interessanteste in diesem Artikel lernen, denn wir werden Handelssysteme für unsere erwähnten Handelsstrategien erstellen. Zunächst werden wir ein einfaches Handelssystem erstellen, das ein Signal als Kommentar auf dem Chart mit dem aktuellen AO-Wert generiert, und wir werden es als Basis für andere Handelssysteme verwenden.

Im Folgenden wird Schritt für Schritt beschrieben, wie man ein Handelssystem für dieses gewünschte Signal erstellt:

Erstellen eines Arrays für aoArray des Typs „double“.

double aoArray[];

Setzen des AS_SERIES-Flags im aoArray, um mit der Funktion „ArraySetAsSeries“ ein true oder false als booleschen Wert zurückzugeben. Die Parameter sind:

  • array[]: wir werden aoArray verwenden.
  • Flags: Wir werden „true“ für die Indexierungsrichtung des Arrays verwenden.
ArraySetAsSeries(aoArray,true);

Definition des AO-Indikators durch Verwendung der Funktion „iAO“, um das Handle des Awesome Oscillator-Indikators zu erhalten. Die Parameter sind:

  • symbol: Wir verwenden _Symbol, das aktuelle Symbol.
  • period: Wir verwenden _Period, den aktuellen Zeitrahmen.
int aoDef = iAO(_Symbol,_Period);

Wir holen uns die Daten aus dem Puffer des AO-Indikators mit der Funktion „CopyBuffer“. Die Parameter sind: 

  • indicator_handle: Wir verwenden die Variable aoDef mit dem vorher definierten Indikator-Handle.
  • buffer_num: Dient zur Bestimmung der Nummer des Indikatorpuffers, wir verwenden 0.
  • start_pos: Um die Startposition zu bestimmen, wird 0 verwendet.
  • count: Bestimmt die kopierende Anzahl, wir benötigen 3.
  • buffer[]: Um das zu kopierende Ziel-Array zu bestimmen, wir verwenden aoArray.
CopyBuffer(aoDef,0,0,3,aoArray);

Definition des AO-Wertes nach Erstellung einer Double-Variablen für den aoVal und Normalisierung mit Hilfe von „NormalizeDouble“. Die Parameter des „Normalizedouble“ sind:

  • value: die zu normalisierende Zahl. Wir werden (aoArray[0]) verwenden.
  • digits: Anzahl der Nachkommastellen. Wir werden 7 verwenden.
double aoVal = NormalizeDouble(aoArray[0],7);

Ausgabe eines Kommentars auf dem Chart mit dem aktuellen AO-Wert mit Hilfe der Funktion „Comment“.

Comment("AO Value is ",aoVal);

Im Folgenden finden Sie den vollständigen Code zur Erstellung dieses Handelssystems:

//+------------------------------------------------------------------+
//|                                                    Simple AO.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"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
  void OnTick()
  {
   double aoArray[];
   ArraySetAsSeries(aoArray,true);
   int aoDef = iAO(_Symbol,_Period);
   CopyBuffer(aoDef,0,0,3,aoArray);
   double aoVal = NormalizeDouble(aoArray[0],7);
   Comment("AO Value is ",aoVal);
  }
//+------------------------------------------------------------------+

Nachdem wir diesen Code kompiliert haben und uns vergewissert haben, dass es keine Fehler gibt, finden wir den Experten im Navigatorfenster wie folgt:

Einfache AO-Nav

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

Simple AO-Fenster

Nachdem Sie das Häkchen bei „Algo-Handel zulassen“ gesetzt und auf „OK“ gedrückt haben, wird der Experte dieses Handelssystems wie folgt an den Chart gestartet:

Simple AO gestartet

Wie wir auf dem Chart in der oberen rechten Ecke sehen können, läuft der Experte. Jetzt sind wir bereit, unser gewünschtes Signal zu empfangen, und es wird wie folgt aussehen:

Simple AO-Signal

Wie wir auf dem obigen Chart sehen können, haben wir das gewünschte Signal der aktuellen AO als Kommentar in der oberen linken Ecke.

  • Strategie eins: AO Zero Crossover:

Wir werden ein Handelssystem erstellen, das auf dieser Strategie basiert, um die gewünschten Signale zu erhalten, und es wird das Gleiche sein wie das Folgende des vollständigen Codes:

//+------------------------------------------------------------------+
//|                                            AO Zero Crossover.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 aoArray[];
   ArraySetAsSeries(aoArray,true);
   int aoDef = iAO(_Symbol,_Period);
   CopyBuffer(aoDef,0,0,3,aoArray);
   double aoVal = NormalizeDouble(aoArray[0],7);
   if(aoVal > 0)
     {
      Comment("Bullish","\n"
              "AO Value is ",aoVal);
     }

   if(aoVal < 0)
     {
      Comment("Bearish","\n"
              "AO Value is ",aoVal);
     }
  }
//+------------------------------------------------------------------+

Der Unterschied in diesem Code.

Bedingungen für diese Strategie:

Im Falle eines Aufwärtstrends:

   if(aoVal > 0)
     {
      Comment("Bullish","\n"
              "AO Value is ",aoVal);
     }

Im Falle eines Abwärtstrends:

   if(aoVal < 0)
     {
      Comment("Bearish","\n"
              "AO Value is ",aoVal);
     }

Nachdem wir diesen Code kompiliert haben und sicher sind, dass keine Fehler vorliegen, können wir ihn verwenden und auf dem Chart starten, wie wir es bereits erwähnt haben. Er wird also wie folgt gestartet:

AO Zero Crossover gestartet

Wie wir auf dem Chart sehen können, ist der Experte mit dem Chart verbunden, so wie er in der oberen rechten Ecke erscheint. Jetzt sind wir bereit, die gewünschten Signale zu empfangen.

Im Falle eines Aufwärtssignals:

AO Zero Crossover - Aufwärtssignal

Wie in der vorangegangenen Tabelle zu sehen ist, gibt es in der linken oberen Ecke einen Kommentar mit den folgenden Werten:

  • Aufwärts (bullish)
  • aktueller AO-Wert

Im Falle eines Abwärtssignals:

AO Zero Crossover - Abwärtssignal

Wie in der vorherigen Grafik zu sehen ist, haben wir einen Kommentar als Signal mit den folgenden Werten:

  • Abwärts (bearish)
  • aktueller AO-Wert

Wir haben also auf der Grundlage dieser Strategie die gewünschten Signale erhalten, und zwar sowohl im Falle einer Hausse als auch im Falle eines Abwärtstrends.

  • Strategie zwei: AO Stärke:

Im Folgenden finden Sie den vollständigen Code dieses Handelssystems:

//+------------------------------------------------------------------+
//|                                                  AO 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 aoArray[];
   ArraySetAsSeries(aoArray,true);
   int aoDef = iAO(_Symbol,_Period);
   CopyBuffer(aoDef,0,0,6,aoArray);


   double aoCurrVal = NormalizeDouble(aoArray[0],6);
   double aoFifthVal = NormalizeDouble(aoArray[1],6);
   double aoFourthVal = NormalizeDouble(aoArray[2],6);
   double aoThirdVal = NormalizeDouble(aoArray[3],6);
   double aoSecondVal = NormalizeDouble(aoArray[4],6);
   double aoFirstVal = NormalizeDouble(aoArray[5],6);

   double aoAvgVal = NormalizeDouble((aoFifthVal+aoFourthVal+aoThirdVal+aoSecondVal+aoFirstVal)/5,6);

   if(aoCurrVal > aoAvgVal)
     {
      Comment("AO Movement is strong","\n",
              "AO CurrVal : ",aoCurrVal,"\n",
              "AO FirstVal : ",aoFifthVal,"\n",
              "AO SecondVal : ",aoFourthVal,"\n",
              "AO ThirdVal : ",aoThirdVal,"\n",
              "AO FourthVal : ",aoSecondVal,"\n",
              "AO FifthVal : ",aoFirstVal,"\n",
              "AO AvgVal : ",aoAvgVal
             );
     }

   if(aoCurrVal < aoAvgVal)
     {
      Comment("AO Movement is Weak","\n",
              "AO CurrVal : ",aoCurrVal,"\n",
              "AO FirstVal : ",aoFifthVal,"\n",
              "AO SecondVal : ",aoFourthVal,"\n",
              "AO ThirdVal : ",aoThirdVal,"\n",
              "AO FourthVal : ",aoSecondVal,"\n",
              "AO FifthVal : ",aoFirstVal,"\n",
              "AO AvgVal : ",aoAvgVal
             );
     }

  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

Mit Hilfe der Funktion „NormalizeDouble“ werden wir die folgenden Werte vom aktuellen Wert von AO zurück auf fünf Werte definieren:

   double aoCurrVal = NormalizeDouble(aoArray[0],6);
   double aoFifthVal = NormalizeDouble(aoArray[1],6);
   double aoFourthVal = NormalizeDouble(aoArray[2],6);
   double aoThirdVal = NormalizeDouble(aoArray[3],6);
   double aoSecondVal = NormalizeDouble(aoArray[4],6);
   double aoFirstVal = NormalizeDouble(aoArray[5],6);

Bestimmung des AVG von 5 Perioden des AO:

double aoAvgVal = NormalizeDouble((aoFifthVal+aoFourthVal+aoThirdVal+aoSecondVal+aoFirstVal)/5,6);

Bedingungen für diese Strategie.

Im Falle einer starken AO-Bewegung:

   if(aoCurrVal > aoAvgVal)
     {
      Comment("AO Movement is strong","\n",
              "AO CurrVal : ",aoCurrVal,"\n",
              "AO FirstVal : ",aoFifthVal,"\n",
              "AO SecondVal : ",aoFourthVal,"\n",
              "AO ThirdVal : ",aoThirdVal,"\n",
              "AO FourthVal : ",aoSecondVal,"\n",
              "AO FifthVal : ",aoFirstVal,"\n",
              "AO AvgVal : ",aoAvgVal
             );
     }

Im Falle einer schwachen AO-Bewegung:

   if(aoCurrVal < aoAvgVal)
     {
      Comment("AO Movement is Weak","\n",
              "AO CurrVal : ",aoCurrVal,"\n",
              "AO FirstVal : ",aoFifthVal,"\n",
              "AO SecondVal : ",aoFourthVal,"\n",
              "AO ThirdVal : ",aoThirdVal,"\n",
              "AO FourthVal : ",aoSecondVal,"\n",
              "AO FifthVal : ",aoFirstVal,"\n",
              "AO AvgVal : ",aoAvgVal
             );
     }

Nach dem Kompilieren und der Überprüfung, dass keine Fehler vorhanden sind, wird der Experte gestartet. Wir werden das Gleiche wie folgt finden:

AO-Stärke gestartet

Wie wir auf dem Chart in der oberen rechten Ecke sehen können, läuft der Experte.

Im Falle einer Stärke:

Vol – Strength – starkes Signal

Wie wir auf dem Chart in der oberen linken Ecke sehen können, haben wir einen Kommentar mit den folgenden Werten:

  • AO Movement is strong (AO-Bewegung ist stark)
  • AO CurrVal : n
  • AO FirstVal : n
  • AO SecondVal : n
  • AO ThirdVal : n
  • AO FourthVal : n
  • AO FifthVal : n
  • AO AvgVal : n

Im Falle einer Schwäche:

AO-Stärke - schwaches Signal

Wie wir auf dem Chart in der oberen linken Ecke sehen können, haben wir einen Kommentar mit den folgenden Werten:

  • AO Movement is Weak (AO-Bewegung ist schwach)
  • AO CurrVal : n
  • AO FirstVal : n
  • AO SecondVal : n
  • AO ThirdVal : n
  • AO FourthVal : n
  • AO FifthVal : n
  • AO AvgVal : n

Jetzt haben wir die gewünschten Signale auf der Grundlage dieses Handelssystems dieser Strategie erhalten.

  • Strategie drei: AO & MA Strategie:

Im Folgenden finden Sie den vollständigen Code dieses Handelssystems.

//+------------------------------------------------------------------+
//|                                             AO & MA Strategy.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()
  {
   MqlRates pArray[];
   double aoArray[];
   double maArray[];

   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(aoArray,true);
   ArraySetAsSeries(maArray,true);
   
   int aoDef = iAO(_Symbol,_Period);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

   CopyBuffer(aoDef,0,0,3,aoArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double closingPrice = pArray[0].close;
   double aoVal = NormalizeDouble(aoArray[0],7);
   double maVal = NormalizeDouble(maArray[0],7);

   if(aoVal > 0 && closingPrice > maVal)
     {
      Comment("Buy","\n"
              "Closing Price is ",closingPrice,"\n",
              "AO Value is ",aoVal,"\n",
              "MA Value is ",maVal);
     }

   if(aoVal < 0 && closingPrice < maVal)
     {
      Comment("Sell","\n"
              "Closing Price is ",closingPrice,"\n",
              "AO Value is ",aoVal,"\n",
              "MA Value is ",maVal);
     }

  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

Erstellen von drei Arrays: pArray, aoArray und maArray. Wir verwenden, wie oben beschrieben, den Typ double, mit Ausnahme von pArray. Er ist vom Typ MqlRates, um Informationen über den Preis, das Volumen und den Spread aufzunehmen.

   MqlRates pArray[];
   double aoArray[];
   double maArray[];

Das Setzen von AS_SERIES-Flags für die Arrays aoArray und maArray entspricht dem, was wir bereits besprochen haben. Abrufen der Daten mit Hilfe der Funktion „CopyRates“, um die historische Daten der Struktur MqlRates zu erhalten. Ihre Parameter sind:

  • symbol_name: Wir verwenden _Symbol, das aktuelle Symbol.
  • timeframe. Wir verwenden _Period, den aktuellen Zeitrahmen.
  • start_pos: Bestimmen der Startposition, wir verwenden 0. 
  • count: Bestimmen der zu kopierenden Anzahl, wir benötigen 1.
  • rates_array[]: Um das zu Ziel-Array zu bestimmen, wir verwenden pArray.
   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(aoArray,true);
   ArraySetAsSeries(maArray,true);

Die Definition der AO, MA:

AO mit Hilfe der Funktion „iOA“, wie bereits erwähnt.

MA mit Hilfe der Funktion „iMA“ und ihrer Parameter:

  • symbol: wir werden (_Symbol) verwenden 
  • period: wir verwenden (_Period)
  • ma_period: um die Periode des gleitenden Durchschnitts zu bestimmen, werden wir 50 verwenden 
  • ma_shift: um die horizontale Verschiebung zu bestimmen, wird (0) verwendet 
  • ma_method: um den Typ des gleitenden Durchschnitts zu bestimmen, werden wir den exponentiellen MA verwenden 
  • applied_price: Als Preistyp verwenden wir die Schlusskurse.
   int aoDef = iAO(_Symbol,_Period);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

Abrufen von Daten aus dem Puffer der AO- und MA-Indikatoren mit Hilfe der Funktion „CopyBuffer“.

   CopyBuffer(aoDef,0,0,3,aoArray);
   CopyBuffer(maDef,0,0,3,maArray);

Definition des Schlusskurses, aoArray und maArray.

   double closingPrice = pArray[0].close;
   double aoVal = NormalizeDouble(aoArray[0],7);
   double maVal = NormalizeDouble(maArray[0],7);

Bedingungen der Strategie.

Im Falle eines Kaufsignals:

   if(aoVal > 0 && closingPrice > maVal)
     {
      Comment("Buy","\n"
              "Closing Price is ",closingPrice,"\n",
              "AO Value is ",aoVal,"\n",
              "MA Value is ",maVal);
     }

Im Falle eines Verkaufssignals:

   if(aoVal < 0 && closingPrice < maVal)
     {
      Comment("Sell","\n"
              "Closing Price is ",closingPrice,"\n",
              "AO Value is ",aoVal,"\n",
              "MA Value is ",maVal);
     }

Nachdem wir diesen Code kompiliert und angehängt haben, können wir sehen, dass er wie folgt gestartet wurde:

 AO & MA gestartet

Wie Sie sehen können, erscheint der Name des EAs in der oberen rechten Ecke des obigen Charts. Wir sind bereit, unsere Signale zu empfangen.

Im Falle eines Kaufsignals:

 AO & MA - Kaufsignal

Wie wir sehen können, haben wir unser Signal als Kommentar in der oberen linken Ecke mit den folgenden Werten:

  • Kaufen
  • Schlusskurs
  • AO Wert ist n
  • MA Wert ist n

Im Falle eines Verkaufs:

 AO & MA - Verkaufssignal

Wir können den Kommentar in diesem Fall mit den folgenden Werten unseres Signals sehen:

  • Verkaufen
  • Schlusskurs
  • AO Wert ist n
  • MA Wert ist n


Schlussfolgerung

Es wird angenommen, dass Sie den Awesome Oscillator Indikator im Detail verstanden haben, da Sie gelernt haben, was der AO ist, was er misst, wie Sie ihn manuell berechnen können und wie Sie ihn auf dem Chart der eingebauten Indikatoren des MetaTrader 5 starten können. Wir lernten auch, wie wir es durch einfache Strategien nutzen können, die auf dem Hauptkonzept basieren, nachdem wir es verstanden hatten, diese Strategien waren:

  • Strategie eins: AO Nulldurchgang: um auf der Grundlage der Nulldurchgänge Signale für Auf- oder Abwärtstrends zu erhalten.
  • Strategie zwei: AO-Stärke: um ein Signal für die Stärke der AO-Bewegung zu erhalten, basierend auf der Position des aktuellen AO-Werts und dem AVG der letzten 5 AO-Werte. 
  • Strategie drei: AO & MA Strategie: um Kauf- oder Verkaufssignale zu erhalten, die auf der Position des aktuellen AO und der Nulllinie und der Position des Schlusskurses und der 50-Perioden-EMA basieren.

Danach haben wir für jede der erwähnten Strategien einen Schritt-für-Schritt-Entwurf erstellt, um ein Handelssystem einfach, reibungslos und effektiv zu erstellen, nachdem wir unsere Ideen organisiert hatten. Dann haben wir ein Handelssystem für jede erwähnte Strategie erstellt, um Automatisierungssignale zu erhalten, nachdem wir sie im MetaTrader 5-Handelsterminal ausgeführt haben.

Ich hoffe, dass Sie versucht haben, das Gelernte selbst anzuwenden, da dies ein sehr wichtiger Schritt in jedem Lernprozess ist, wenn wir unsere Fähigkeiten entwickeln und verbessern wollen, und dass Sie dadurch mehr Erkenntnisse über das Gelernte oder über verwandte Themen gewinnen. Ich muss hier noch einmal bestätigen, dass Sie jede erwähnte Strategie testen müssen, bevor Sie sie verwenden, um sicherzustellen, dass sie für Ihren Handel geeignet ist, da es nichts gibt, was für jeden geeignet ist.

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/11468

Beigefügte Dateien |
Simple_AO.mq5 (1.01 KB)
AO_Strength.mq5 (2.07 KB)
Das Preisbewegungsmodell und seine wichtigsten Bestimmungen (Teil 2): Probabilistische Preisfeldentwicklungsgleichung und das Auftreten des beobachteten Random Walk Das Preisbewegungsmodell und seine wichtigsten Bestimmungen (Teil 2): Probabilistische Preisfeldentwicklungsgleichung und das Auftreten des beobachteten Random Walk
Der Artikel befasst sich mit der probabilistischen Preisfeldentwicklungsgleichung und dem Kriterium der bevorstehenden Preisspitzen. Sie zeigt auch das Wesen der Preiswerte auf den Charts und den Mechanismus für das Auftreten eines Random Walk dieser Werte.
Der Indikator CCI: Upgrade und neue Funktionen Der Indikator CCI: Upgrade und neue Funktionen
In diesem Artikel werde ich mich mit der Möglichkeit befassen, den CCI-Indikator zu verbessern. Außerdem werde ich eine Änderung des Indikators vorstellen.
DoEasy. Steuerung (Teil 10): WinForms-Objekte - Animieren der Nutzeroberfläche DoEasy. Steuerung (Teil 10): WinForms-Objekte - Animieren der Nutzeroberfläche
Nun ist es an der Zeit, die grafische Oberfläche zu animieren, indem die Funktionsweise für die Interaktion von Objekten mit Nutzern und Objekten implementiert wird. Die neue Funktionsweise wird auch notwendig sein, damit komplexere Objekte korrekt funktionieren.
Erfahren Sie, wie Sie ein Handelssystem anhand des Relative Vigor Index entwickeln können Erfahren Sie, wie Sie ein Handelssystem anhand des Relative Vigor Index entwickeln können
Ein neuer Artikel in unserer Serie darüber, wie man ein Handelssystem anhand eines beliebten technischen Indikators entwickelt. In diesem Artikel werden wir lernen, wie man das mit Hilfe des Relativen Vigot-Index-Indikators tun kann.