Diskussion zum Artikel "Klassische Strategien neu interpretieren (Teil II): Bollinger-Bänder Ausbrüche"

 

Neuer Artikel Klassische Strategien neu interpretieren (Teil II): Bollinger-Bänder Ausbrüche :

Dieser Artikel untersucht eine Handelsstrategie, die die lineare Diskriminanzanalyse (LDA) mit Bollinger-Bändern integriert und kategorische Zonenvorhersagen für strategische Markteinstiegssignale nutzt.

Der Begriff „Künstliche Intelligenz“ (KI) ist wohl eine der irreführendsten Namensgebungen der Geschichte. Nachdem Sie diesen Artikel gelesen haben, werden Sie vielleicht zustimmen, dass KI eine falsche Bezeichnung ist. Für mich als Autor liegt das Problem in dem Wort „Intelligenz“. KI-Modelle sind nicht intelligent im menschlichen Sinne. Vielmehr handelt es sich um intelligente Anwendungen von Optimierungsalgorithmen.

KI-Modelle zielen in erster Linie auf die Minimierung von Fehlern oder die Maximierung von Gewinnen innerhalb eines Systems ab. Die aus diesen Modellen abgeleiteten Lösungen sind jedoch nicht immer praktikabel. Ein KI-System, das darauf ausgelegt ist, die Verluste auf einem Handelskonto zu minimieren, könnte beispielsweise zu dem Schluss kommen, dass es am besten ist, keine Geschäfte zu tätigen, da dies keine Verluste garantiert. Auch wenn diese Lösung mathematisch gesehen dem Problem gerecht wird, ist sie für den Handel unpraktisch.

Als intelligente KI-Praktiker müssen wir unsere Modelle mit sorgfältig geplanten Beschränkungen steuern. In diesem Artikel werden wir unsere KI-Modelle mithilfe von Bollinger-Bändern steuern. Wir werden vier mögliche Zonen identifizieren, in denen sich der Preis jederzeit befinden könnte. Beachten Sie, dass sich der Preis zu einem bestimmten Zeitpunkt nur in einer dieser vier Zonen befinden kann:

  • Zone 1: Der Preis liegt vollständig oberhalb der Bollinger-Bänder.
  • Zone 2: Der Preis liegt oberhalb des mittleren Bandes, aber unterhalb des oberen Bandes.
  • Zone 3: Der Preis liegt oberhalb des unteren Bandes, aber unterhalb des mittleren Bandes.
  • Zone 4: Preis liegt unter dem unteren Band.

Wir werden ein Modell trainieren, um zu verstehen, wie der Preis zwischen diesen vier Zonen übergeht, und die nächste Zone vorhersagen, in die sich der Preis bewegen wird. Handelssignale werden immer dann erzeugt, wenn sich der Preis von einer Zone in eine andere bewegt. Wenn unser Modell beispielsweise vorhersagt, dass sich der Kurs von Zone 2 nach Zone 1 bewegen wird, interpretieren wir dies als eine Aufwärtsbewegung und lösen einen Kaufauftrag aus. Unser Modell und unser Expert Advisor werden vollständig in nativem MQL5 implementiert sein.

Die Bollinger-Bänder können in einer Reihe von Handelsstrategien eingesetzt werden, von der Trendverfolgung bis hin zur Identifizierung von Wendepunkten oder Umkehrpunkten. Technisch gesehen besteht dieser Indikator aus einem exponentiellen gleitenden Durchschnitt (EMA), der normalerweise den Schlusskurs eines Wertpapiers glättet. Er wird von zwei zusätzlichen Bändern flankiert: eines oberhalb und eines unterhalb des EMA, deren Abstand in der Regel jeweils auf 2 Standardabweichungen festgelegt ist.

Autor: Gamuchirai Zororo Ndawana

 

Hallo Ndawana

zunächst einmal vielen Dank für den Artikel und die Vereinfachung des KI-Mythos :) Ich versuche, das hieraus generierte Signal mit einigen Änderungen in meinem Code zu verwenden.

Kannst du bitte erklären, warum du in deinem Code Vektoren anstelle von einfachen Arrays verwendet hast?

 
Anil Varma #:

Hallo Ndawana

zunächst einmal vielen Dank für den Artikel und die Vereinfachung des KI-Mythos :) Ich versuche, das daraus generierte Signal in meinem Code mit einigen Änderungen zu verwenden.

Kannst du mir bitte erklären, warum du in deinem Code Vektoren anstelle von einfachen Arrays verwendet hast?

Hallo Anil, lassen Sie mich zunächst sagen, dass nichts kaputt geht, wenn wir Arrays anstelle von Vektoren verwenden, also ja, wir hätten stattdessen einfache Arrays verwenden können.

Meine Vorliebe für Vektoren rührt von den speziellen Funktionen her, die nur für Vektoren zur Verfügung stehen, und zusätzlich zu diesen speziellen Funktionen erlauben Vektoren uns auch, Berechnungen auf allen Elementen gleichzeitig durchzuführen. Hier ist ein einfaches Beispiel.
//+------------------------------------------------------------------+
//|Anil.mq5 |
//|Gamuchirai Zororo Ndawana |
//| https://www.mql5.com/de/gamuchiraindawa |
//+------------------------------------------------------------------+
#property copyright "Gamuchirai Zororo Ndawana"
#property link      "https://www.mql5.com/en/gamuchiraindawa"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Hier ist mein Problem mit Arrays
double anil_array[3];
ArrayFill(anil_array,0,3,0);
ArrayPrint(anil_array);
//--- Wir müssen über alle Elemente iterieren, um Berechnungen durchzuführen
for(int i = 0; i < 3; i++)
   {
      anil_array[i] += 1;
   }
ArrayPrint(anil_array);
//--- Und die gleiche Operation mit dem Vektor
vector anil_vector = vector::Zeros(3); //Simillar zu einem Array voller Nullen 
Print(anil_vector);   
//--- Vektoren ermöglichen es uns, Berechnungen mit allen Elementen gleichzeitig durchzuführen
anil_vector = anil_vector + 1;
Print(anil_vector);
  }
//+------------------------------------------------------------------+

Vektoren und Arrays.

Stellen Sie sich also vor, wenn uns in Zukunft eine Berechnung einfällt, die hilfreich sein könnte, wird es viel einfacher sein, die Codebasis zu ändern, da wir Vektoren verwenden.