Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 13

 
mytarmailS:
Danke für die Klarstellung, ich verstehe Sie jetzt perfekt, können genetische Algorithmen hier helfen? anstelle von RF habe ich einige interessante Ideen für die Implementierung eines Ziels, würde sie gerne ausprobieren...
OK, wir können darüber nachdenken. Stellen Sie sich zum Beispiel vor, dass das neuronale Netz bei jeder Iteration keine Standardfehler-Rückwärtsfortpflanzung auf der Grundlage der Zielabweichung von der Vorhersage durchführt, sondern Daten erhält, die bei der vorherigen Version der Skalen für den realen Handel um so viele Punkte vom Ideal abweichen. Und aktualisiert die Gewichte auf der Grundlage dieser Informationen. Das heißt, die Informationen sollten parallel zur Maschine fließen. Vielleicht ist es machbar.
 

Ist es möglich, dies in R zu tun?

Ein wenig über mich: Ich bin kein Programmierer, R ist meine erste Sprache, die ich seit eineinhalb Monaten lerne.

 
mytarmailS:

Ist es möglich, dies in R zu tun?

Ein wenig zu meiner Person: Ich bin kein Programmierer, R ist meine erste Sprache, die ich seit eineinhalb Monaten lerne.

Hier ist ein ungefähres Verfahren, um den NS mit Informationen über Handelsergebnisse zu füttern. Nun, Sie könnten versuchen, Ihre eigene Funktion zu schreiben und sie als benutzerdefinierte Fitnessfunktion in ein R-Paket einzubinden. Aber zuerst müssen wir herausfinden, welches R-Paket dies erlaubt. Wahrscheinlich müsste man den NS selbst schreiben und in einem separaten Paket an die Profis weitergeben. ( R selbst ist langsam.

Es handelt sich um einen sehr ungewöhnlichen Fall. Normalerweise sind Fitnessfunktionen nicht anpassbar, mit einer Ausnahme, die mir bekannt ist. Ich habe höchstens eine eigene Funktion im Caret-Paket geschrieben, deren Maximalwert zur Auswahl einer Reihe von Trainingsparametern während der Kreuzvalidierung verwendet wird. Gleichzeitig wird aber auch die Maschine selbst auf standardisierte Weise trainiert. Das heißt, meine Lösung ist nicht ganz das, was ich brauche. Siehst du?

 
Gegoogelt... Ja, man muss es selbst schreiben, aber Mann, diese Standardausrichtung ist ein so begrenzter Ansatz, dass es schon nervt...
 
mytarmailS:
Gegoogelt... ja, man muss es selbst schreiben, aber Mann, dieses Standardziel ist ein so begrenzter Ansatz, dass es schon nervt...

Wir werden weiter suchen müssen:

http://stackoverflow.com/questions/25510960/how-to-implement-own-error-function-while-using-neuralnet-package-in-r

/go?link=https://stackoverflow.com/questions/36425505/own-error-function-including-weights-for-neuralnet-in-r

Es sieht so aus, als ob das Neuralnet-Paket Ihnen erlaubt, Ihre eigene Fitnessfunktion zu erstellen, die differenzierbar sein sollte. Ich werde darüber nachdenken müssen... Was meinen Sie dazu?

how to implement own error function while using neuralnet package in R?
how to implement own error function while using neuralnet package in R?
  • stackoverflow.com
I am trying to implement a customized error function in package neuralnet in R. Normally ’sse’ and ’ce’ which stand for the sum of squared errors and the cross-entropy are used to calculate...
 

Der zweite Link besagt, dass Sie den Code im Paket neu schreiben müssen.

Sie können den ersten Link verwenden, um Ihren eigenen Fehler zu schreiben, aber wir müssen die vorherigen Gewichte kennen, um sie in dem von Ihnen vorgeschlagenen Konzept zu implementieren, oder übersehe ich etwas? Um ehrlich zu sein, habe ich eine sehr vage Vorstellung davon, wie ein neuronales Netz funktioniert

 

Das Training eines neuronalen Netzes (Backward Propagation) läuft in der Regel folgendermaßen ab: Ein Trainingsbeispiel wird eingespeist, ein Ergebnis wird dafür ermittelt, mit dem gewünschten Ergebnis verglichen und ein Fehler berechnet. Dann geht es darum, diesen Fehler zu verringern. Da alle Berechnungen im neuronalen Netz nur Additionen und Multiplikationen von Eingabedaten mit Koeffizienten sind, können Sie genau berechnen, inwieweit Sie die Koeffizienten ändern müssen, um den Fehler zu verringern. Im Allgemeinen kann man Koeffizienten finden, die den Fehler im ersten Schritt auf Null reduzieren, aber niemand macht das, weil es den Fehler für ein konkretes Beispiel reduziert, ihn aber für alle anderen Beispiele wissentlich erhöht.

Diese schrittweise Fehlerreduzierung erfolgt nach und nach, indem alle Trainingsbeispiele immer wieder durchlaufen werden. Das heißt, Sie können nicht eine bestimmte Sharpe Ratio als erforderliches Handelsergebnis verwenden. Der Fehler kann für jedes Trainingsbeispiel separat berechnet werden. Sie können Ihre eigene Funktion verwenden, um den Fehler zu berechnen, aber er wird auch für jedes Trainingsbeispiel einzeln berechnet und nicht für alle Beispiele auf einmal. Ich kann nicht herausfinden, wie ich den gesamten Kostenvoranschlag für den Handel in alle Einzelbeispiele aufteilen kann.

Ich stimme zu, dass der Handel nach Zigzag- oder Bar-Close-Kursen nicht der optimalste Handel ist. Es wäre viel besser, bei der Eröffnung und Schließung von Geschäften auch den Spread, den Drawdown und den Zeitraum zu berücksichtigen, in dem der Handel offen ist. Wir könnten einen Expert Advisor erstellen, der gleitende Durchschnitte oder andere Indikatoren verwendet, ihn für eine maximale Sharpe Ratio optimieren und diese Trades in den Trainingsdaten als erforderliches Ergebnis verwenden. Aber ich werde etwas Ähnliches tun, wenn ich zumindest im Zickzackkurs stabile Ergebnisse erzielt habe.

 
Dr. Trader:

Das Training eines neuronalen Netzes (Backward Propagation) läuft in der Regel folgendermaßen ab: Ein Trainingsbeispiel wird eingespeist, ein Ergebnis wird dafür ermittelt, mit dem gewünschten Ergebnis verglichen und ein Fehler berechnet. Dann geht es darum, diesen Fehler zu verringern. Da alle Berechnungen im neuronalen Netz nur Additionen und Multiplikationen von Eingabedaten mit Koeffizienten sind, können Sie genau berechnen, inwieweit Sie die Koeffizienten ändern müssen, um den Fehler zu verringern. Im Allgemeinen kann man Koeffizienten finden, die den Fehler im ersten Schritt auf Null reduzieren, aber niemand macht das, weil es den Fehler für ein konkretes Beispiel reduziert, ihn aber für alle anderen Beispiele wissentlich erhöht.

Diese schrittweise Fehlerreduzierung erfolgt Schritt für Schritt, indem alle Trainingsbeispiele immer wieder durchlaufen werden. Das heißt, Sie können nicht eine bestimmte Sharpe-Ratio als erforderliches Handelsergebnis verwenden. Der Fehler kann für jedes Trainingsbeispiel separat berechnet werden. Sie können Ihre eigene Funktion verwenden, um den Fehler zu berechnen, aber er wird auch für jedes Trainingsbeispiel einzeln berechnet und nicht für alle Beispiele auf einmal. Ich kann nicht herausfinden, wie ich den gesamten Kostenvoranschlag für den Handel in alle Einzelbeispiele aufteilen kann.

Ich stimme zu, dass der Handel nach Zigzag- oder Bar-Close-Kursen nicht der optimalste Handel ist. Es wäre viel besser, bei der Eröffnung und Schließung von Geschäften auch den Spread, den Drawdown und den Zeitraum zu berücksichtigen, in dem der Handel offen ist. Wir könnten einen Expert Advisor erstellen, der gleitende Durchschnitte oder andere Indikatoren verwendet, ihn für eine maximale Sharpe Ratio optimieren und diese Trades in den Trainingsdaten als erforderliches Ergebnis verwenden. Aber ich werde so etwas tun, wenn ich zumindest bei Zickzacklinien stabile Ergebnisse erzielt habe.

Ja, der NS funktioniert so, wie Sie es beschrieben haben. Für jede Probe wird der Fehler berechnet, und nach Durchlaufen des gesamten Satzes erhalten wir den Wert der Fitnessfunktion: den mittleren quadratischen Fehler, den Medianfehler oder den mittleren absoluten Fehler. Auf der Grundlage dieses Wertes werden die Gewichte entsprechend dem im Backpropagation-Algorithmus berechneten Gradienten aktualisiert.

Hier diskutieren wir, dass wir unsere eigene Fitnessfunktion anstelle der erwähnten, auf dem simulierten maschinellen Signalhandel basierenden Funktion einsetzen sollten. So können Sie für jedes von NS verarbeitete Beispiel einen virtuellen Handel erstellen (wenn das Ausgangssignal eine vordefinierte Schwelle überschreitet). Und am Ende aller Beispiele können wir einige integrierte Statistiken berechnen, zum Beispiel die Sharpe-Statistik. Und schon werden die Gewichte per Umkehrverteilung verarbeitet.

 

Danke für die ausführliche Erläuterung, Dr. Trader!

Wissen Sie, wahrscheinlich wäre es das Beste und Richtigste, die Umkehrungen selbst zu lehren, sogar den gleichen Zickzack, das heißt, drei Zustände zu geben 1) U-Turn nach oben

2) Umkehrung nach unten

3) keine Kehrtwendung

Aber ob es zu lehren, ist es ziemlich schwierig, Umkehrungen zu fangen, plus die Schieflage in der Anzahl der Beobachtungen, Klassen "nicht Umkehrung" wird Dutzende oder vielleicht Hunderte von Malen mehr sein

Welche Prädiktoren verwenden Sie, und wie lauten die Ergebnisse?

Ich habe gerade begonnen, die Spektralanalyse zu verwenden, die ersten Tests erwies sich als viel besser als mit den Indikatoren, lief ich es durch Rattle, der Fehler der Ausbildung und Prüfung war etwa 6%, aber wenn ich begann, R zu verwenden, stieg der Fehler auf 30%, wenn ich mich nicht irre, San San Sanich sagt, dass es retraining, so dass ich immer noch nicht viel verstehen

Es gibt auch eine Möglichkeit, durch eine Spektralanalyse herauszufinden, welche Perioden auf dem Markt dominieren, und dann können Sie diese Perioden in den Indikatoren verwenden, da es sich um adaptive Indikatoren handelt, die jedoch nicht an die Geschichte angepasst sind.

 
mytarmailS:

Der zweite Link besagt, dass Sie den Code im Paket neu schreiben müssen.

Auf dem ersten Link können Sie Ihren eigenen Fehler schreiben, aber wir müssen immer noch die vorherigen Gewichte kennen, um das Konzept zu implementieren, das Sie vorschlagen, oder habe ich etwas verpasst? Ich habe ehrlich gesagt sehr schlechtes Verständnis davon, wie ein neuronales Netz funktioniert

Nun, zunächst einmal schlage ich das nicht vor. Ich übersetze Ihre Intuition in eine Form, die kodiert werden kann. Sie haben vorgeschlagen, dass die Maschine die Aufgabe haben sollte, die Handelskurve in vernünftigen Grenzen zu halten. ) Das ist die Möglichkeit, dies zu tun.

Zweitens zeigt der erste Link genau, wie man es macht. Die einzige Einschränkung, die auch in der Dokumentation erwähnt wird. Außerdem brauchen wir keine Gewichte, sondern wir brauchen sie speziell für die Person, die die Frage gestellt hat. Sie können nicht einfach Gewichte in einer Funktion erhalten. Wozu brauchen Sie Gewichte? Warum bringen Sie sie überhaupt zur Sprache?

Sie können im Grunde jede Fehlerfunktion verwenden, die sich differenzieren lässt.

Grund der Beschwerde: