und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 1534
- Rating:
- Veröffentlicht:
- 2016.04.28 09:44
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
CNetMLP bietet Multilayer-Perceptron (MLP).
Das Merkmale der Klasse ist, dass der Input-Vektor von der Netzstruktur getrennt ist, d.h. die Beschreibungen des Input-Vektor und der Netzwerk-Struktur sind nicht miteinander verbunden.
Die Größe der Eingabe-Vektors kann jeden Wert innerhalb vernünftiger Grenzen annehmen. Input-Daten sollte normalisiert werden, d.h. die Daten sollten innerhalb des Bereichs -1 .. 1 or 0 .. 1. Je nach den Daten werden verschiedene Aktivierungsfunktionen angewendet: für den Datenbereich -1..1 der Tangens Hyperbolicus, für Daten zwischen 0..1 sigmoid.
Das Netzwerk besitzt eine geschichtete Struktur mit direkter Übertragung des Signals. Die Netzwerk-Struktur wird durch einen eindimensionalen Array realisiert, wobei der Wert eines Array-Elements die Anzahl der Neuronen in der entsprechenden Schicht bestimmt. Die Anzahl der Layers und der Neuronen ist nicht beschränkt. Das Netzwerk kann auch aus einem einzigen Neuron bestehen.
Jedes Neuron hat mehrere Eingänge, bestimmt durch seinen Platz im Netzwerk und einen Ausgang. Wenn das Netzwerk N Antworten ausgeben soll, sollte der letzte Layer N Neuronen enthalten. Der Trainings-Algorithmus ist iRprop. Die Trainingsdaten für Input und Output befinden sich in eindimensionalen Arrays, Vektor für Vektor. Der Trainingsprozess ist begrenzt entweder durch die Anzahl der Trainings Zyklen oder durch einem zulässigen minimalen Fehler.
Aufbau eines Netzwerks ist parametrisch durch den Klassenkonstruktor erklärt.
CNetMLP *net=new CNetMLP(
Anzahl der Layers, Arraystruktur, input Vektorgröße, Typ der Aktivierungsfunktion: 0 - sigmoid, 1 - Tangens Hyperbolicus).
Das Netzwerk Training wird durch den Aufruf von learn(die Anzahl der Trainingsmuster, Eingabe-Daten-Array, Ausgabe-Daten-Array, die Anzahl der Trainingszyklen, zulässiger Trainingsfehler). Das Trainingsergebnis kann überprüft werden durch die Klassen-Variablen: mse – Trainingsfehler und epoch – Anzahl der Trainingszyklen.
Calculate(Array des Eingabevektors, Array des Ausgabevektors) liefert die Antwort des Netzwerks.
Mit Save(Handle des mit FILE_WRITE and FILE_BIN geöffneten Datei) und Load(Handle des mit FILE_READ and FILE_BIN geöffneten Datei) wird ein Netzwerk entweder gespeichert oder geladen . Nur der Trainingsfehler und das Array mit den Wichtungen werden in der Datei gespeichert. Die Übereinstimmung des erstellten und zu ladenden Netzwerkes muss vor der Ausführung von load(handle) überprüft werden.
Die Verwendung der Klasse ist im beigefügten Beispiel gezeigt. Die Klasse und das die Beispieldatei müssen in selben Ordner liegen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/596

Ein typischer, normalisierter Oszillator im Bereich -100 bis +100 und mit einem Signallinie.

Gleitender Durchschnitt auf Basis der linearen Regression.

Modified Optimum Elliptic Filter aus John Ehlers' Buch "Cybernetic Analysis for Stocks and Futures: Cutting-Edge DSP Technology to Improve Your Trading".

Der Indikator besteht aus zwei gleitenden Durchschnitten aus John Ehlers' Buch "Cybernetic Analysis for Stocks and Futures: Cutting-Edge DSP Technology to Improve Your Trading".