English Русский 中文 Español 日本語 Português
preview
Experimente mit neuronalen Netzen (Teil 6): Das Perzeptron als autarkes Instrument zur Preisprognose

Experimente mit neuronalen Netzen (Teil 6): Das Perzeptron als autarkes Instrument zur Preisprognose

MetaTrader 5Handelssysteme | 13 Juni 2023, 11:25
205 0
Roman Poshtar
Roman Poshtar

Einführung

Das Perzeptron ist eine maschinelle Lerntechnik, die zur Vorhersage von Marktpreisen verwendet werden kann. Es ist ein nützliches Instrument für Händler und Investoren, die eine Preisprognose anstreben. 


Allgemeine Konzepte

Ein Perzeptron ist ein einfaches neuronales Netz, das aus einem oder mehreren Neuronen besteht, die Eingabedaten annehmen, verarbeiten und eine Ausgabe liefern. Es wurde 1957 von Frank Rosenblatt entwickelt und findet seither breite Anwendung in verschiedenen Bereichen, darunter Finanzanalysen und Börsenprognosen.

Das Perzeptron kann zur Lösung von Klassifizierungs- und Regressionsproblemen, einschließlich der Preisvorhersage, verwendet werden. Im einfachsten Fall besteht ein Perzeptron aus einem einzigen Neuron, das mehrere Eingangsvariablen aufnimmt und ein einziges Ausgangssignal erzeugt. Um zum Beispiel den Preis auf dem Devisenmarkt vorherzusagen, können Sie die folgenden Eingangsdaten verwenden: Wechselkurs, Handelsvolumen, Verbraucherpreisindex und andere Faktoren. Nach der Verarbeitung dieser Daten erzeugt das Neuron ein Ausgangssignal, das eine Prognose für das Währungspaar darstellt.

Funktionsprinzip des Perzeptrons

Perzeptron arbeitet nach dem Prinzip des überwachten Lernens. Das bedeutet, dass das Perzeptron auf historischen Daten trainiert wird, um die Beziehungen zwischen verschiedenen Marktfaktoren und Preisen zu bestimmen. Diese Daten werden verwendet, um die Gewichte des Neurons abzustimmen, die die Bedeutung der einzelnen Inputfaktoren für die Vorhersage der Aktienkurse bestimmen.

Das Perzeptron kann im Lern- und Vorhersagemodus arbeiten. Im Trainingsmodus nimmt das Perzeptron historische Daten und reale Preise auf dem Foreх-Markt als Input und passt dann seine Gewichte so an, dass der Vorhersagefehler minimiert wird.

Vorteile der Verwendung eines Perzeptrons zur Vorhersage von Devisenkursen

  1. Die Verwendung des Perzeptrons zur Vorhersage von Devisenkursen hat mehrere Vorteile. Erstens ist das Perzeptron in der Lage, sich an Veränderungen auf dem Markt anzupassen und seine Prognosen entsprechend den neuen Daten zu korrigieren. Das macht sie effizienter als traditionelle Datenanalysemethoden wie statistische Analysen und Zeitreihen, die sich nicht immer an Marktveränderungen anpassen können.
  2. Zweitens kann das Perzeptron mit einer großen Anzahl von Eingabedaten arbeiten, was es ermöglicht, viele verschiedene Faktoren zu berücksichtigen, die die Preise beeinflussen. Dies kann zu genaueren Preisvorhersagen führen als herkömmliche Datenanalysemethoden.
  3. Drittens kann das Perzeptron mit großen Datenmengen trainiert werden, sodass es viele historische Daten für das Training und die Preisvorhersage verwenden kann.

Die Verwendung des Perzeptrons zur Preisvorhersage hat jedoch auch einige Nachteile. Erstens kann das Perzeptron anfällig für Ausschläge oder Fehler in den Daten sein, was zu ungenauen Preisvorhersagen führen kann. Zweitens erfordert das Training eines Perzeptrons eine große Menge an historischen Daten. Wenn die historischen Daten nicht ausreichend repräsentativ für die aktuelle Marktsituation sind, können die Perzeptron-Vorhersagen ungenau sein.

Außerdem kann es zu einer Überanpassung kommen, wenn das Perzeptron zu sehr auf historische Daten reagiert und sich nicht an neue Marktveränderungen anpassen kann. Um dieses Problem zu bekämpfen, können verschiedene Regularisierungstechniken eingesetzt werden, wie z. B. L1- und L2-Regularisierung, die zur Kontrolle der Neuronengewichte beitragen und eine Überanpassung verhindern.

Das Perzeptron kann in Kombination mit anderen Prognosemethoden wie dem autoregressiven Modell (ARIMA) oder der exponentiellen Glättung verwendet werden, um genauere und zuverlässigere Vorhersagen zu erhalten. Sie können beispielsweise ein Perzeptron zur Vorhersage eines langfristigen Preistrends und ARIMA oder Exponential Smoothing für kurzfristige Prognosen verwenden. Beachten Sie, dass die historischen Daten, die zum Trainieren des Perzeptrons verwendet werden, möglicherweise nicht den aktuellen Marktbedingungen entsprechen. In solchen Fällen können die Vorhersageergebnisse ungenau sein. Daher sollte das Modell regelmäßig aktualisiert werden, damit es Marktveränderungen angemessen widerspiegeln kann.


Perzeptron-Parameter für die Optimierung

Ein Perzeptron ist eine der einfachsten Arten von neuronalen Netzen, die aus einer Eingabeschicht, versteckten Schichten und einer Ausgabeschicht bestehen. Sie kann für verschiedene Aufgaben wie Klassifizierung, Regression oder Bildverarbeitung eingesetzt werden. Damit das Perzeptron jedoch effektiv arbeiten kann, müssen seine Parameter richtig gewählt werden.

Perzeptron-Parameter sind Werte, die seine Struktur und sein Verhalten definieren. Dazu gehören die Anzahl der versteckten Schichten, die Anzahl der Neuronen in jeder Schicht, die Aktivierungsfunktion, die Lernrate und vieles mehr. Richtig eingestellte Parameter ermöglichen es dem Perzeptron, die besten Ergebnisse zu erzielen.

Hier sind einige Perzeptron-Parameter, die optimiert werden können:

Anzahl der verborgenen Schichten

Die Anzahl der versteckten Schichten bestimmt die Komplexität des Modells. Ist das Modell zu einfach, kann es der Aufgabe nicht gewachsen sein, und ist es zu komplex, kann es zu einer Überanpassung kommen. Daher sollte die Anzahl der versteckten Schichten optimal auf der Grundlage des zu lösenden Problems gewählt werden.

Anzahl der Neuronen in jeder Schicht

Die Anzahl der Neuronen in jeder Schicht wirkt sich ebenfalls auf die Komplexität des Modells aus. Eine große Anzahl von Neuronen kann die Genauigkeit der Vorhersagen erhöhen, gleichzeitig aber auch die Trainingszeit verlängern. Die Anzahl der Neuronen sollte für eine bestimmte Aufgabe optimal sein.

Nachfolgend ein Beispiel für die Regulierung der Anzahl der Neuronen in der Eingabe-, der versteckten und der Ausgabeschicht. Hier wird die Bibliothek NeuralNets verwendet:

int OnInit()
  {

// set the number of neurons in the input, hidden and output layers
int n_inputs = 2;
int n_hidden = 3;
int n_outputs = 1;

// create a perceptron object
CNeuralNet ann;

// add layers
ann.AddLayer(n_inputs);
ann.AddLayer(n_hidden, CNeuralNet::TANH);
ann.AddLayer(n_outputs, CNeuralNet::TANH);

// set learning parameters
ann.SetLearningRate(0.1);
ann.SetMomentum(0.9);
ann.SetMaxEpochs(1000);
ann.SetDesiredAccuracy(90);

// create arrays to store input and target values
double inputs[][2] = {{0,0}, {0,1}, {1,0}, {1,1}};
double targets[] = {0, 1, 1, 0};

// train the perceptron
ann.Train((double*)inputs, targets, 4);

// test the perceptron
double output;
ann.Compute((double*)inputs[0], output);
Print("0 XOR 0 = ", output);
ann.Compute((double*)inputs[1], output);
Print("0 XOR 1 = ", output);
ann.Compute((double*)inputs[2], output);
Print("1 XOR 0 = ", output);
ann.Compute((double*)inputs[3], output);
Print("1 XOR 1 = ", output);

}

In diesem Beispiel erstellen wir ein Perzeptron mit zwei Eingangsneuronen, drei versteckten Neuronen und einem Ausgangsneuron. Wir legen auch Trainingsparameter wie Trainingsrate, Zeitpunkt und maximale Epochenzahl fest. Als Nächstes erstellen wir die Arrays zum Speichern von Eingabe- und Zielwerten und trainieren das Perzeptron mit diesen Daten. Nachdem wir das Perzeptron mit vier verschiedenen Eingaben getestet haben, zeigen wir die Ergebnisse auf dem Bildschirm an.

Aktivierungsfunktion

Die Aktivierungsfunktion bestimmt, wie das Neuron auf die Eingabe reagieren soll. Es gibt viele Aktivierungsfunktionen wie z.B. Sigmoid, ReLU und hyperbolischer Tangens. Die Wahl der Aktivierungsfunktion hängt auch von dem zu lösenden Problem ab.

Im Folgenden finden Sie ein Beispiel für die Verwendung verschiedener Aktivierungsfunktionen:

int OnInit()
  {

// set the number of neurons in the input and output layers
int n_inputs = 2;
int n_outputs = 1;

// create a perceptron object
CNeuralNet ann;

// add layers
ann.AddLayer(n_inputs);
ann.AddLayer(3, CNeuralNet::TANH);
ann.AddLayer(n_outputs, CNeuralNet::SIGMOID);

// set learning parameters
ann.SetLearningRate(0.1);
ann.SetMomentum(0.9);
ann.SetMaxEpochs(1000);
ann.SetDesiredAccuracy(90);

// create arrays to store input and target values
double inputs[][2] = {{0,0}, {0,1}, {1,0}, {1,1}};
double targets[] = {0, 1, 1, 0};

// train the perceptron
ann.Train((double*)inputs, targets, 4);

// test the perceptron
double output;
ann.Compute((double*)inputs[0], output);
Print("0 XOR 0 = ", output);
ann.Compute((double*)inputs[1], output);
Print("0 XOR 1 = ", output);
ann.Compute((double*)inputs[2], output);
Print("1 XOR 0 = ", output);
ann.Compute((double*)inputs[3], output);
Print("1 XOR 1 = ", output);

}

In diesem Beispiel fügen wir eine versteckte Schicht mit drei Neuronen hinzu und wählen die Aktivierungsfunktion „tanh“ für eine versteckte Schicht und „sigmoid“ für eine Ausgabeschicht.

Ausbildungsquote

Die Trainingsrate bestimmt, wie schnell das neuronale Netz seine Gewichte ändert. Eine zu hohe Trainingsrate kann zu einem Überlauf führen, während ein zu niedriger Wert zu einem langwierigen Training führen kann. Sie müssen die für eine bestimmte Aufgabe optimale Trainingsrate wählen.

Regularisierung

Die Regularisierung ist eine Methode, die eine Überanpassung verhindert. Sie besteht darin, der Fehlerfunktion zusätzliche Terme hinzuzufügen, die das Modell für zu große Gewichte bestrafen. Die Regularisierung verringert die Streuung der Vorhersagen und verbessert die Generalisierungsfähigkeit des Modells.

Initialisierung der Gewichte

Die Initialisierung der Gewichte ist die anfängliche Einstellung der Gewichte für jedes Neuron im Perzeptron. Falsch initialisierte Gewichte können dazu führen, dass das Modell zum lokalen Minimum der Fehlerfunktion konvergiert und nicht zum globalen Minimum. Daher ist es notwendig, die richtige Methode für die Initialisierung der Gewichte zu wählen.

Größe der Charge

Die Stapelgröße bestimmt, wie viele Datenproben in einer Trainingsiteration verwendet werden. Eine zu kleine Stapelgröße kann den Lernprozess verlangsamen, während eine zu große Stapelgröße zu einem Speicherüberlauf führen kann. Wählen Sie die optimale Losgröße für eine bestimmte Aufgabe.

Optimierer

Ein Optimierer ist ein Algorithmus, der zur Aktualisierung der Gewichte eines Modells während des Trainings verwendet wird. Es gibt viele Optimierer wie stochastischer Gradientenabstieg, Adam und RMSprop. Jeder Optimierer hat seine Vor- und Nachteile, und die Wahl des optimalen Optimierers hängt von der jeweiligen Aufgabe ab.

Im Allgemeinen hängen die optimalen Parameter des Perzeptrons von dem zu lösenden Problem ab. Es ist notwendig, mit verschiedenen Parameterwerten zu experimentieren, um den optimalen Satz für eine bestimmte Aufgabe zu finden. Maschinelles Lernen ist der Prozess der iterativen Verbesserung eines Modells, und richtig eingestellte Parameter sind der Schlüssel zum Erreichen besserer Ergebnisse.



Übergabe von Indikatoren und Preisen an ein Perzeptron zur Marktanalyse

Indikatoren sind mathematische Gleichungen, die zur Marktanalyse verwendet werden und dabei helfen, Trends, Einstiegs- und Ausstiegspunkte sowie Unterstützungs- und Widerstandsniveaus zu erkennen. Einige der gebräuchlichsten Indikatoren, die im Perzeptron zur Analyse des Devisenmarktes verwendet werden können, sind:

  • Gleitender Durchschnitt;
  • Relative Stärke Index (RSI);
  • Stochastischer Oszillator;
  • MACD (Moving Average Convergence Divergence).

Die Übergabe des Schlusskurses und der Indikatoren an das Perzeptron ermöglicht es dem Modell, verschiedene Aspekte der Marktanalyse zu berücksichtigen und genauere Kursprognosen zu erstellen. So könnte ein Modell beispielsweise einen gleitenden Durchschnitt verwenden, um den allgemeinen Markttrend zu ermitteln, und dann einen stochastischen Oszillator einsetzen, um einen Einstiegspunkt zu bestimmen.

Die Übergabe einer großen Anzahl von Indikatoren an ein Perzeptron kann jedoch zu einem Datenredundanzproblem führen. Datenredundanz kann zu einer Überanpassung des Modells und einer geringen Generalisierungsfähigkeit führen. Daher ist es notwendig, die wichtigsten Indikatoren für eine bestimmte Aufgabe der Marktanalyse auszuwählen.

Darüber hinaus erfordert die Datenübertragung an das Perzeptron eine angemessene Vorverarbeitung der Daten. Wenn die Daten beispielsweise fehlende Werte enthalten, müssen Sie dieses Problem lösen, z. B. die fehlenden Werte mit Durchschnittswerten auffüllen oder Zeilen mit fehlenden Werten entfernen.

Es ist notwendig, die optimalen Parameter für das Perzeptron zu wählen, damit das Modell die Preise am besten trainieren und vorhersagen kann. Einige der wichtigsten Parameter, die optimiert werden müssen, sind:

  1. Die Anzahl der Neuronen in der versteckten Schicht;
  2. Neuronale Aktivierungsfunktion;
  3. Anzahl der Lernepochen;
  4. Die Größe der Daten-Mini-Batches für das Training.

Die Auswahl der optimalen Parameter kann durch Versuch und Irrtum oder mit Hilfe von Optimierungsalgorithmen wie einem genetischen Algorithmus oder einer gradientenbasierten Optimierungsmethode erfolgen.


Beispiele und praktische Anwendung

Im Folgenden werden wir das Beispiel eines EAs betrachten, der auf einem einfachen Perzeptron basiert, das den Abstand zwischen zwei gleitenden Durchschnittsindikatoren als Inputs verwendet. Wir übergeben den Abstand zwischen dem Indikator Gleitender Durchschnitt mit dem Wert 1 und dem Indikator Gleitender Durchschnitt mit dem Wert 24. Wir verwenden exponentielle gleitende Durchschnitte der Schlusskurse, aber normalisieren diese Werte zunächst, indem wir sie in Punkte umwandeln. 

Wir verwenden den Abstand der Kerzen 1, 4, 7, 10 (4 Parameter) als Eingabe. Am Ausgang des Perzeptrons erhalten wir zwei Werte - eine Kaufposition eröffnen und eine Verkaufsposition eröffnen. Diese Bedingungen sind keine Standardbedingungen. Sie werden als Beispiel für die Verwendung des Perzeptrons angegeben. Unser aktuelles Beispiel wird so einfach wie möglich sein.  

Ich werde hier alle Parameter für die Optimierung und die Vorwärtsprüfung angeben, um mich im Text nicht zu wiederholen:
  • Devisenmarkt;
  • Währungspaar EURUSD;
  • Zeitrahmen H1;
  • StopLoss 300 und TakeProfit 600. TakeProfit des EAs ist als StopLoss multipliziert mit 2 festgelegt;
  • „Nur Öffnungspreise“, „Schneller genetischer Algorithmus“ und „Komplexes Kriterium, Maximum“ für den Optimierungs- und Testmodus. Es ist sehr wichtig, den Modus „Komplexes Kriterium, Maximum“ zu verwenden, da er im Vergleich zu „Maximale Rentabilität“ stabilere und rentablere Ergebnisse zeigt;
  • Optimierungsbereich 3 Jahre. Von 2019.04.19 bis 2022.04.19 . 3 Jahre sind kein zuverlässiges Kriterium. Sie können mit diesem Parameter selbst experimentieren;
  • Die Dauer des Vorwärtstest beträgt 1 Jahr. Von 2022.04.19 bis 2023.04.19.
  • Anfangssaldo 10.000 Einheiten;
  • Hebel 1:500.

Optimierung:

EA-Optimierungsparameter:

Optimierung

EA-Optimierungsergebnisse:

Optimierung


Optimierung

Nachfolgend finden Sie die 5 besten Ergebnisse im Vorwärtstest:

Test 1


Test 2


Test 3


Test 4


Test 5


Schlussfolgerung

Zusammenfassend lässt sich sagen, dass das Perzeptron ein leistungsfähiges Instrument für die Preisvorhersage auf dem Devisenmarkt ist. Sie kann allein oder in Kombination mit anderen Datenanalysemethoden verwendet werden. Um jedoch die besten Ergebnisse bei der Verwendung eines Perzeptrons zur Vorhersage von Devisenkursen zu erzielen, muss man sich seiner Grenzen bewusst sein und den Kontext der historischen Daten berücksichtigen. Es ist auch notwendig, gewisse Kenntnisse und Erfahrungen im Devisenhandel zu haben und das hohe Risiko zu verstehen, das mit dem Devisenhandel verbunden ist.

Vielen Dank für Ihre Aufmerksamkeit!


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/12515

Beigefügte Dateien |
Perceptron_MA_4.mq5 (39.78 KB)
NeuralNets.mqh (7.83 KB)
Geldmanagement im Handel Geldmanagement im Handel
Wir werden uns verschiedene neue Arten von Geldmanagementsystemen ansehen und ihre wichtigsten Merkmale definieren. Heute gibt es eine ganze Reihe von Geldmanagementstrategien für jeden Geschmack. Wir werden versuchen, verschiedene Möglichkeiten der Geldverwaltung auf der Grundlage unterschiedlicher mathematischer Wachstumsmodelle zu prüfen.
Experimente mit neuronalen Netzen (Teil 5): Normalisierung der Eingaben zur Weitergabe an ein neuronales Netz Experimente mit neuronalen Netzen (Teil 5): Normalisierung der Eingaben zur Weitergabe an ein neuronales Netz
Neuronale Netze sind ein ultimatives Instrument im Werkzeugkasten der Händler. Prüfen wir, ob diese Annahme zutrifft. MetaTrader 5 ist als autarkes Medium für den Einsatz neuronaler Netze im Handel konzipiert. Dazu gibt es eine einfache Erklärung.
Einige Lektionen der Prop-Firmen (Teil 1) — Eine Einführung Einige Lektionen der Prop-Firmen (Teil 1) — Eine Einführung
In diesem einführenden Artikel spreche ich einige der Lehren an, die man aus den Risikoregeln ziehen kann, die Unternehmen für den Eigenhandel, engl. proprietary trading firms oder Prop-Firms, anwenden. Dies ist besonders wichtig für Anfänger und diejenigen, die Schwierigkeiten haben, in dieser Welt des Handels Fuß zu fassen. Der folgende Artikel wird sich mit der Implementierung des Codes befassen.
Wie man MetaTrader 5 mit PostgreSQL verbindet Wie man MetaTrader 5 mit PostgreSQL verbindet
Dieser Artikel beschreibt vier Methoden zur Verbindung von MQL5-Code mit einer Postgres-Datenbank und bietet eine Schritt-für-Schritt-Anleitung zum Einrichten einer Entwicklungsumgebung für eine dieser Methoden, eine REST-API, unter Verwendung des Windows Subsystem For Linux (WSL). Eine Demo-Anwendung für die API wird zusammen mit dem entsprechenden MQL5-Code zum Einfügen von Daten und Abfragen der entsprechenden Tabellen sowie einem Demo-Expert Advisor zum Abrufen dieser Daten bereitgestellt.