Diskussion zum Artikel "Neuronale Netzwerke der dritten Generation: Tiefe Netzwerke" - Seite 6

 

Ein weiterer Schnelltest, dieses Mal mit einem Trainingsset von 6000 Takten von September 2014 bis Februar 2015. Der Test außerhalb der Stichprobe beginnt im März:

Wieder haben wir eine profitable Phase von etwa 5 Wochen, bis sich das Modell verschlechtert.

Ich glaube, dass die Aufteilung in Test- und Trainingsdaten unnötig ist: Wir können alle Daten zum Training verwenden. Die Genauigkeit und die Konfusionsmatrix sind irreführend, weil in den meisten Fällen das ZZ-Vorzeichen mit dem Vorzeichen des vorherigen Balkens identisch ist, was fälschlicherweise eine hohe Genauigkeit suggeriert. Für den Gewinn sind nur die Vorzeichenwechsel von Bedeutung.

 
jcl365:

Ich habe jetzt ein neues Modell mit der Vorhersage des nächsten Balkens trainiert, und es scheint, dass es tatsächlich funktioniert. Die Genauigkeit liegt immer noch im Bereich von 74%. Dies ist nun die Equity-Kurve:

:

Es verhält sich genau so, wie ich es erwarten würde: Das System ist sofort nach dem Training profitabel und verschlechtert sich dann langsam, wenn sich der Markt verändert.

Der nächste Schritt ist also ein WFO-Test mit regelmäßigem Neutraining des Modells. Dazu muss das Training in das Strategieskript integriert werden.

Dies ist die korrigierte Funktion zur Berechnung der Sig des nächsten Balkens:

Die "Compute"-Funktion, die alle 30 Minuten vom Strategieskript ausgeführt wird:

Das Strategieskript, der "EA":

jcl365:

Ich habe nun ein neues Modell mit Vorhersage des nächsten Balkens trainiert, und es scheint, dass es tatsächlich funktioniert. Die Genauigkeit liegt immer noch im Bereich von 74%. Das ist jetzt die Equity-Kurve:

:

Es verhält sich genau so, wie ich es erwarten würde: das System ist sofort nach dem Training profitabel und verschlechtert sich dann langsam, wenn sich der Markt verändert.

Der nächste Schritt ist also ein WFO-Test mit regelmäßigem Neutraining des Modells. Dazu muss das Training in das Strategieskript integriert werden.

Dies ist die korrigierte Funktion zur Berechnung der Sig des nächsten Balkens:

Die "Compute"-Funktion, die alle 30 Minuten vom Strategieskript ausgeführt wird:

Das Strategieskript, der "EA":

Hallo

Sie haben die Serie ZZ um einen Takt in die Zukunft verschoben.

for(i in 1:length(ZZ)-1) { ZZ[i] = ZZ[i+1] }

Sie haben die Reihe dz um einen Balken in die Zukunft verschoben .

 dz <- c(diff(ZZ), NA)

Sie haben also die Zielvariable in den beiden Balken in die Zukunft verschoben .

Dies ist gleichbedeutend mit

dz <- Hmisc::Lag(diff(ZZ), shift=-2)

Diese Option kann auch verwendet werden.


 


Wieder haben wir eine profitable Phase von etwa 5 Wochen, bis sich das Modell verschlechtert.

Das ist normal. Das Modell kann und sollte in regelmäßigen Abständen neu gelernt werden.

Ich halte die Aufteilung in Test- und Trainingsdaten für unnötig: Wir können alle Daten zum Training verwenden.

Können. Es ist wichtig, ein paar wichtige Punkte zu beachten:
1. Trainings- und Testdaten sollten sich nicht überschneiden.
2. Der Trainingssatz sollte gemischt werden

3. Wenn das Verhältnis der Klassen des Gleichgewichts - um die Anpassung zu machen .

Ich bin froh, dass es Kollegen waren mit R.

Mit freundlichen Grüßen

Wladimir

 

Sie haben Recht mit der doppelten Verschiebung: Was das System tatsächlich vorhersagt, ist eine ZZ-Differenz, die auf dem Mittelkurs des nächsten Balkens basiert. Die ZZ wird aus den Mittelkursen berechnet, aber zum Zeitpunkt der Berechnung haben wir den Schlusskurs, der normalerweise etwa in der Mitte zwischen dem letzten und dem nächsten Mittelkurs liegt. Die zusätzliche Verschiebung sagt also etwa 1,5 Takte in die Zukunft voraus, und tatsächlich habe ich ohne die zusätzliche Verschiebung viel schlechtere Ergebnisse erzielt.

Ich habe jetzt ein Zorro-Skript, das alle 4 Wochen neu trainiert und die darauf folgenden 4 Wochen auf das Training testet. Das Deepnet ist ziemlich schnell, das Skript braucht nur etwa 10 Minuten für einen Lauf, der etwa 60 Trainings-/Testzyklen umfasst. Dies ist das Ergebnis:

Es sieht nicht so gut aus wie der erste Eindruck. Es gibt eindeutig Verbesserungspotenzial, so dass die nächsten Schritte darin bestehen würden, mit verschiedenen Netzwerkkonfigurationen, Zeiträumen und verschiedenen Indikatoren zu experimentieren.

 
Wir müssen nicht nur die Indikatoren , sondern auch ihre Parameter aufgreifen. Gen-Algorithmus helfen Ihnen.

Was ist Zorro? Geben Sie die Links?


 
Vladimir Perervenko:
Wir müssen nicht nur die Indikatoren , sondern auch ihre Parameter aufgreifen. Gen-Algorithmus helfen Ihnen.

Was ist Zorro? Geben Sie die Links?


Ja, es gibt ein Buch von Yu / Wang / Lai, die einen genetischen Algorithmus für die Vorauswahl von Indikatoren für NN Forex Training beschreibt. - Ich verwende Zorro, weil die Skripte einfacher sind und das Backtesting besser ist, aber ich schätze, MT4 würde mit etwas Aufwand auch funktionieren. Ich kann keinen Link angeben, da dies eine MT4-Website ist, aber Sie können nach Zorro trading automaton googeln. Die R dll von Bernd Kreuss funktioniert auch mit Zorro.
 

Ich habe alles heruntergeladen und installiert und alle Dateien in den Ordnern abgelegt. Alle Pakete sind installiert. Die Ordner sind auf meine Ziele eingestellt.

Wenn ich den Experten auf den EURUSD m30 Chart lege, ist alles in Ordnung, sogar in DebugView, aber sobald ich den Indikator auf den Chart lege, bekomme ich einen Fehler:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Fehler in if (z) { :

Das Ergebnis der Funktion GetRes in "i_SAE_fun.r" ist immer NA und kann somit nicht in bool umgewandelt werden und funktioniert nicht mehr.

Kann mir jemand die richtige Richtung zeigen? was übersehe ich?

Mit freundlichen Grüßen,

APoLLo

 
APoLLo_MQL:

Ich habe alles heruntergeladen und installiert und alle Dateien in den Ordnern abgelegt. Alle Pakete sind installiert. Die Ordner sind auf meine Ziele eingestellt.

Wenn ich den Experten auf den EURUSD m30 Chart lege, ist alles in Ordnung, sogar in DebugView, aber sobald ich den Indikator auf den Chart lege, bekomme ich einen Fehler:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Fehler in if (z) { :

Das Ergebnis der Funktion GetRes in "i_SAE_fun.r" ist immer NA und kann somit nicht in bool umgewandelt werden und funktioniert nicht mehr.

Kann mir jemand die richtige Richtung zeigen? was übersehe ich?

Mit freundlichen Grüßen,

APoLLo

Hallo APoLLo.

Welche Version R hast Du ?
Dies ist ein ziemlich langer Artikel und nach den Update-Paketen in R funktionieren einige Funktionen nicht mehr.
Verwenden Sie besser Revolution R Open (RRO 8.01)
Um das zu überprüfen, führen Sie ein Skript in Rstudio aus.

Wenn Sie Zeit haben, prüfe ich auch , wo der Fehler liegt.

Beste Grüße/

Wladimir

Revolution R Open
  • www.revolutionanalytics.com
Revolution R Open is our enhanced distribution of the world's most widely used data analysis software. Based on open source R, Revolution R Open is built, tested and distributed by Revolution Analytics and delivers: The latest R language engine from the R Foundation for Statistical Computing High-performance R language engine (multi-threaded...
 
Vladimir Perervenko:

Hallo APoLLo.

Welche Version von R haben Sie ?
Dies ist ein ziemlich langer Artikel und nach den Update-Paketen in R funktionieren einige Funktionen nicht mehr.
Verwenden Sie besser Revolution R Open (RRO 8.01)
Um zu überprüfen, führen Sie ein Skript in Rstudio.

Wenn Sie Zeit haben, prüfe ich auch , wo der Fehler liegt.

Beste Grüße/

Vladimir

Ich verwende die neueste Version von R 3.2.0 64bit zusammen mit dem neuesten MT4-Build. Alle Pakete für R sind gestern heruntergeladen worden, also sollten sie auch die neueste Version sein.

Wenn ich den EA auf EURUSD M30 starte, kann ich mich sogar mit dem RGUI verbinden und nach "SAE" und "prepr" suchen und bekomme eine Menge Zahlen zurück.

Für mich sieht es so aus, als ob die GetRes-Funktion in R prüft, ob eine Verbindung geöffnet ist, indem sie den Wert von flag1 abruft, der auf dem Server (EA) nicht verfügbar ist.

Vielleicht ist das die Ursache dafür, dass "Acc" oder "K" oder "Kmax" nie korrekt berechnet wurden.


Ich habe Zeit, wenn Sie also die Möglichkeit haben, einen Blick darauf zu werfen, würde ich mich sehr freuen.

Später werde ich Revolution R 8.01 ausprobieren, um zu sehen, ob das besser funktioniert.

Vielen Dank für Ihre Hilfe :)

 
Vladimir Perervenko:

Ein GROSSES DANKESCHÖN an den Autor für diesen Artikel. Mit Ihrem Artikel habe ich begonnen, mich mit der Anwendung von neuronalen Netzen auf dem Markt vertraut zu machen. Ich war vorher nicht mit neuronalen Netzen vertraut und hatte noch nie die Sprache R verwendet. Aber jetzt habe ich sie installiert und lerne sie. Es scheint kompliziert, aber interessant zu sein!

Und ja, bitte sagen Sie mir, dass ich nicht verstehe, wie die Datei SAE.model als Bibliothek für einen Expert Advisor funktioniert, oder als was? Das heißt, können wir die Struktur des neuronalen Netzes in R speichern und sie dann als reguläre Bibliothek in einem Expert Advisor verwenden, oder was? Es ist alles sehr verwirrend und kompliziert (für mich).