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

 
sibirqk:

Wenn es kein Geheimnis ist, nach welchen Grundsätzen wird die künstliche Serie hergestellt? Ist es nur eine grobe Sinuswelle, die sich mit dem Rauschen vermischt, oder ist es komplizierter als das?

Da es mehrere Fragen zu meinem Beitrag gibt, sollte ich sie alle auf einmal beantworten.

Dies ist das Forum für Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien.

Wie man maschinelles Lernen im Handel einsetzt: Theorie und Praxis (Handel und nicht nur)

Yuriy Asaulenko, 2019.02.17 21:01

Ich habe versucht, ein neuronales Netz in Python zu trainieren. Paket ist scikit-learn, NS selbst ist sklearn.neural_network.MLPRegressor. Über 100 Neuronen, versteckte Schichten -7, Eingänge -19, Ausgang 1. Die Aufgabe besteht darin, einen Zufallsprozess vorherzusagen.

Die Aufgabe ist künstlich, auf Rauschgenerator gemacht und so, dass dieser Lärm theoretisch vorhergesagt werden könnte. Ich habe es für ein paar Zählungen im Voraus ausprobiert.

Ergebnis des Vergleichs von Prognose und Realität für 5 Tausend zufällig ausgewählte Punkte:

X ist die Prognose, Y ist der tatsächliche Wert. Sie liegen alle sehr nahe an einer geraden Linie von 45 Grad. D.h. die Vorhersage ist nahezu perfekt (bei künstlichen Stichproben).

Das Lernen ist sehr schnell - 24 Epochen. In der Zeit, etwa 10 Sekunden.

Ich muss sagen, ich war sehr überrascht. Ich habe mich sehr bemüht, die Daten zu verbergen. Ich bin überrascht, dass sie es gefunden hat. Im Allgemeinen nahe der Mystik).

Schlussfolgerungen: Der NS sklearn.neural_network.MLPRegressor ist recht brauchbar. Ich habe den Klassifikator noch nicht ausprobiert.

Ich habe bereits etwas mit Market ausprobiert, bisher ohne Ergebnis. Es sucht nicht, sagt, dass es nichts gibt, obwohl die Aufgabe von der gleichen Klasse ist wie eine, die künstlich erzeugt wurde.

Ich sollte gleich sagen, dass ich das Perpetuum Mobile nicht erfunden und keine Tricks angewandt habe; wenn ich also irgendwelche Tricks angewandt habe, dann nur aufgrund meiner Unwissenheit.

Zunächst einmal ein bisschen Theorie. Zufällige Vorgänge lassen sich vorhersagen, sogar das Werfen einer Münze. Es hängt alles von der Formulierung des Vorhersageproblems ab. Die Vorhersage "Morgen wird es regnen" ist zum Beispiel zu 90 % richtig. Sie können jedoch nicht sagen, ob es morgens, nachmittags oder am späten Abend regnen wird, oder ob es den ganzen Tag über regnen könnte, da Sie keine zuverlässige Vorhersage erhalten werden.

Es ist möglich, Zeitreihen vorherzusagen - unter bestimmten Bedingungen. Eine dieser möglichen Bedingungen ist die Begrenztheit des BP-Spektrums - je breiter das Spektrum, desto kleiner das Vorhersageintervall, je schmaler es ist, desto länger das Vorhersageintervall.

Marktzeitreihen haben ein unendliches Spektrum, daher kann man den Preis nicht wirklich für 5 Minuten oder eine Stunde im Voraus vorhersagen. Ich habe mir eine solche Aufgabe nicht gestellt.

Nun werden die Daten für das Training vorbereitet.

1. Wir erhalten eine Reihe vom Zufallszahlengenerator (RNG) und wandeln sie in eine Form um, die der des Marktes nahe kommt. Solche Reihen haben ein unbegrenztes Spektrum und es ist nicht realistisch, ihre Werte vorherzusagen.

2. Wir lassen die Reihe durch den Tiefpassfilter (LPF) laufen. Wir haben eine Zufallsreihe erhalten, die ein begrenztes Spektrum aufweist und die Möglichkeit bietet, n-Zahlen im Voraus zu prognostizieren, allerdings ist diese Reihe der Marktreihe nicht sehr ähnlich.

3. Wir erzeugen mit dem RNG eine Reihe mit M=0 und fügen sie der Reihe nach dem LPF hinzu, nachdem wir ein Tamburin gehalten haben. Auch hier erhalten wir eine Reihe, die sehr nahe an der Marktreihe liegt. Wir werden diese Serie für die Ausbildung nutzen.

4. Als Zielfunktion wird die in Schritt 2 durch die LPF geleitete und um N Abtastwerte nach hinten verschobene Reihe verwendet, was die Prognose um N Abtastwerte nach vorne ergibt.

Dann werden Eingangs- und Zielreihen in das NS eingespeist, trainiert und die Ergebnisse des Trainings überprüft. Wiederholen Sie dann die Schritte 1-4, speisen Sie die Reihe aus Schritt 3 in den NS ein und vergleichen Sie die Ausgabe des NS mit einer um N Abtastwerte verschobenen Reihe aus Schritt 4.

Das war's. Keine Wunder. All dies kann ohne NS getan werden. Was mich überraschte, war, dass der NS dies in Sekundenschnelle und in nur 24 Taktzyklen des Lernens schaffte. Und das bei einer Menge Rauschen, bei dem man nicht einmal die niederfrequente Komponente erkennen kann. Erstaunlich.

Warum es mit dem Markt VR nicht geklappt hat. Jeder LPF hat eine erhebliche Verzögerung und seine Kurve ist im Vergleich zu VR nach rechts verschoben. Das heißt, dass wir an jedem Punkt der Reihe ein bereits verzögertes NF-Signal haben, so dass sich das Vorhersageintervall als größer als zulässig erweist und die Vorhersage unrealistisch wird. Wir können nicht einmal ein richtiges Ziel für die Ausbildung bauen.

 

Yuriy Asaulenko:

Das Konzept des Spektrums ist nur für einen stationären Prozess definiert. Der Preis ist es nicht, und sei es nur, weil die Streuung mit der Zeit zunimmt.

 
Aleksey Nikolayev:

Das Konzept des Spektrums ist nur für einen stationären Prozess definiert. Der Preis ist es nicht, und sei es nur, weil die Streuung im Laufe der Zeit zunimmt.

Dies ist aus dem Zyklus "Ein kleiner Ältester in einem Häuschen und ein kleiner Ältester in Kiew".
Das kommt nicht in Frage.
 
Yuriy Asaulenko:
Das ist aus dem Zyklus, da ist ein Ältester in einem Garten und ein Onkel in Kiew.
Das kommt nicht in Frage.

OK, ich werde Sie nicht daran hindern, Stradivarius-Trommeln zu verkaufen.

 
Aleksey Nikolayev:

OK, ich werde Sie nicht daran hindern, Stradivarius-Trommeln zu verkaufen.

Na gut, ich werde mich erbarmen. )) Fast jedes Funksignal ist ein nichtstationärer Prozess, hat aber ein Spektrum. Der Begriff des Spektrums hat nichts mit Stationarität zu tun.
Sie sollten zur T&P-Filiale gehen, zu den Phantasten).
 

Preise in Python über Socket fast sofort abrufen (50k Datensätze) in 10 Zeilen Code

und auf der mt5-Seite 20

Ich brauche keine improvisierten Libs für R. Warum ist es so schwer, es selbst zu machen? Vielen Dank für native Sockets in mt5.

Sie können anschließend ganz einfach beliebige Funktionen hinzufügen, z. B. Signale zum Eröffnen von Geschäften oder ähnliches.

 
Maxim Dmitrievsky:

Preise in Python über Socket fast sofort abrufen (50k Datensätze) in 10 Zeilen Code

und auf der mt5-Seite 20

Ich brauche keine improvisierten Libs für R. Warum ist es so schwer, es selbst zu machen? Vielen Dank für die Tatsache, dass native Sockets in mt5 funktionieren.

Na klar.)

Ich sehe, dass sie zu Spyder gewechselt haben. Das sollten sie, denn es ist besser, als an Ihrem Notebook herumzubasteln.

Für den Fall der Fälle. Das Raster in einem Diagramm wird mit plt.grid() erstellt.

 
Yuriy Asaulenko:
Nun, okay, ich habe Mitleid. )) Fast jedes Funksignal ist ein nichtstationärer Prozess, der jedoch ein Spektrum hat.
Du solltest in die Tip-Filiale gehen, zu den Phantasten.))

Funkamateure verwechseln einen Zufallsprozess mit dessen Umsetzung.

 
Aleksey Nikolayev:

Funkamateure verwechseln einen Zufallsprozess mit dessen Umsetzung.

Ich werde mich nicht mit Trollen streiten.

 
Yuriy Asaulenko:

Ja, richtig.)

Ich sehe, dass Sie zu Spyder gewechselt haben. Das stimmt, das ist besser, als im U-Notepad herumzupfuschen.

ZS Das Raster auf dem Diagramm wird mit plt.grid() erstellt.

ich musste mit spyder basteln, um es auf bare python zu bekommen, ohne anaconda.

Ich hatte vorher Vscode, aber das saugt die Batterie leer, also muss ich zur Steckdose greifen.