Neuronale Netze und Handel. Teil 2: DIY-Kit

Im letzten Artikel habe ich beschrieben, wie ich es geschafft habe, Trendvorhersagen vom neuronalen Netz auf dem realen Markt zu erhalten. Der Artikel erregte Interesse, aber es stellte sich heraus, dass die Frage "Wo sind die Beweise?" Keine Antwort. In der Tat wird das Thema neuronale Netze im Handel viel diskutiert, es gibt Veröffentlichungen, Zweige in Fachforen widmen sich diesem Thema. Aber egal wie sehr Sie sich in das Thema vertiefen, egal wie viel Sie mit Experten kommunizieren, der Eindruck bleibt, dass dies alles eine Art schwer fassbare Illusion ist. Es gibt nichts, was wirklich funktioniert, nichts, was auch nur aus der Ferne das neuronale Netz und die Preisbewegungsprognose wirklich verbinden könnte. Daher die fundierte Meinung der Gemeinschaft, dass die Preisbewegung im Prinzip nicht vorhergesagt werden kann, und bei all diesen Gesprächen geht es um nichts.



Ich schlage vor, diese Zweifel ein für alle Mal zu zerstreuen und den Diskurs vom Bereich „kann vorhersagen oder nicht“ auf den Bereich „sagt gut oder schlecht voraus“ zu übertragen. Und wir werden es auf einfache, schnelle und visuelle Weise tun. Ich werde ein fertiges Tool geben und jeder kann das Ergebnis auf seinem Computer erhalten. Das kostenlose Projekt GoogleColaboratory hilft uns dabei. Dies ist eine offene Plattform für die gemeinsame Entwicklung. Alle Berechnungen finden auf Google-Servern statt. Alle Interaktionen erfolgen über den Browser. Eine Registrierung ist nicht erforderlich.



Der Code für unsere Arbeit ist offen und bereits in GoogleColab geladen. Die Ergebnisse des Trainings eines neuronalen Netzwerks für jedes sind individuell. Dies liegt daran, dass die Startgewichte zufällig verteilt sind und die Ergebnisse geringfügig voneinander abweichen. Denken Sie auch daran, dass der Verlauf von Anführungszeichen sehr verrauschte Daten sind, sodass die Qualität des Trainings gering ist, aber ausreicht, um zu sehen, wie das neuronale Netzwerk dies vorhersagt. Die Prognose sollte ungefähr auf dem Niveau eines guten Indikators liegen.



Der einzige Ort, an dem wir unseren Weg verkürzen werden, ist das Sammeln von Daten zur Geschichte eines Handelspaares. Die Erfassung wird von einer Anwendung für MetaTrader5 durchgeführt. Der Vorgang ist nicht kompliziert, erfordert jedoch Kenntnisse in der Arbeit mit einem Tester in MetaTrader5. Detaillierte Anweisungen führen zu einem separaten Artikel. Daher verwenden wir vorbereitete Daten für das Euro / Dollar-Paar (für diejenigen, die MT5 verwenden, befindet sich der Link zu Expert am Ende des Artikels). Es wird möglich sein, sicherzustellen, dass die im Voraus aufbereiteten Daten nicht "vorausschauen" und in der letzten Phase keine neuronalen Netze vorschlagen, wenn wir mit dem Testen auf dem realen Markt fortfahren.



Lasst uns beginnen ...



GoogleColaboratory



Unser "Laptop" in GoogleColab finden Sie unter diesem Link . Vergessen Sie nicht, sich zuerst in Ihrem Google- (oder Google Mail-) Konto anzumelden.



Kopieren Sie den "Laptop" zu sich selbst.



Bild



Jetzt müssen Sie alle Blöcke nacheinander von oben nach unten ausführen.



1. Bibliotheken installieren



Dieser Schritt installiert TensorFlow und andere Bibliotheken. Der Prozess endet von selbst, es muss nichts getan werden.



Bild



2. Laden und Vorbereiten von Daten für das Training



In dieser Phase wird der Datensatz geladen und es werden separate Datensätze für Training und Test erstellt. Der Datensatz wurde für das EURUSD-Paar für den Zeitraum von Anfang 2015 bis heute gesammelt. Der Datenerfassungsschritt ist der M6-Kerzenhalter. Letzte 2 Wochen - Teststelle. Die Daten im Datensatz bestehen aus Hunderttausenden von Zeilen, von denen jede ungefähr so ​​ist



0.32,0.26,0.00,0.43 ... 0.66,0.25,0.24,0.05,0,1,1600144440,1.189240


Prädiktoren werden durch Kommas, Felder 3 und 4 vom Ende getrennt - dies ist die richtige Antwort, wo der Trend hingegangen ist (0,1 - nach unten; 1,0 - nach oben). Das zweite Feld vom Ende ist die Candlestick-ID. Der letzte ist der Preis beim Öffnen der Kerze. Die letzten beiden Felder werden nicht für das Training verwendet.



3. Training und Testen des Modells



Behalten Sie die Standardeinstellungen für das neuronale Netzwerk beim ersten Start bei. Das Training findet in fünf Durchgängen statt, bis ein akzeptables Ergebnis erzielt wird. Bei erfolgreichem Training wird so etwas wie diese Tabelle angezeigt:



+------------+---------+----------+-------------+------------+
|   |  |  |  (%) |  (%) 
+------------+---------+----------+-------------+------------+
|     0      |   7174  |   7173   |      50     |   100.0    |
|     2      |   6956  |   6731   |      50     |    95.4    |
|     4      |   6430  |   6224   |      50     |    88.2    |
|     6      |   5867  |   5630   |      51     |    80.1    |
|     8      |   5250  |   5065   |      50     |    71.9    |
|     10     |   4636  |   4450   |      51     |    63.3    |
|     12     |   3964  |   3772   |      51     |    53.9    |
|     14     |   3330  |   3152   |      51     |    45.2    |
|     16     |   2758  |   2539   |      52     |    36.9    |
|     18     |   2198  |   2012   |      52     |    29.3    |
|     20     |   1700  |   1544   |      52     |    22.6    |
|     22     |   1298  |   1167   |      52     |    17.2    |
|     24     |   958   |   825    |      53     |    12.4    |
|     26     |   699   |   517    |      57     |    8.5     |
|     28     |   446   |   278    |      61     |    5.0     |
|     30     |   246   |   127    |      65     |    2.6     |
+------------+---------+----------+-------------+------------+


Die Antwort des neuronalen Netzwerks ist eine binäre Klassifikation, bei der [0 1] "down" und [1 0] "up" ist. Das neuronale Netzwerk antwortet jedoch niemals mit einem ganzzahligen Wert, seine Antwort kann abhängig vom Grad des "Vertrauens" vom Typ [0,4 0,6] sein. In dieser Antwort glaubt das neuronale Netzwerk, dass der Preis sinken wird, ist aber nicht sehr zuversichtlich, und in der Antwort [0,1 0,9] ist es auch gesunken, aber es gibt viel mehr Vertrauen. So sieht die Reihe der realen Antworten aus:



[[0.5084921  0.49150783]
 [0.3930727  0.6069273 ]
 [0.4930727  0.50692725]
 ...
 [0.5189831  0.48101687]
 [0.27955987 0.7204401 ]
 [0.476914   0.5230861 ]]


Das Tabellenfeld "Netzwerkantwort" ist die Differenz innerhalb dieser binären Antwort multipliziert mit 100. Offensichtlich kennzeichnet diese Differenz das "Vertrauen" des Netzwerks in seine Prognose. Als Ergebnis haben wir nach dem Multiplizieren mit 100 Werte im Bereich von 0 bis 100. Jetzt können Sie nicht alle Antworten nehmen, sondern nur diejenigen auswählen, bei denen das neuronale Netzwerk ein signifikantes "Vertrauen" hat. Um zu verstehen, wie stark die Antwort das Prognoseergebnis beeinflusst, wird der Testabschnitt auf verschiedenen Ebenen dieses "Vertrauens" auf die Richtigkeit der Prognose überprüft. Jede Zeile der Tabelle ist eine Prüfung auf einen neuen höheren Wert der Netzwerkantwort. Je höher der Filter "Netzwerkantwort", desto weniger Antworten, aber desto besser sind sie. Dies ist in den Feldern "Gewonnen" und "Verlieren" zu sehen. Der Prozess wird beendet, wenn die Antworten (Signale) weniger als 1% aller Testdaten ausmachen.



Wenn das Netzwerk nicht in einem Durchgang trainiert wurde, starten Sie diesen Block einfach neu (Sie müssen die Daten nicht neu laden).



4. Ergebnisse auf dem Handelschart



Führen Sie diesen Block aus. Hier ist alles offensichtlich, auf dem Chart des Handelspaares aus dem Testsatz werden neuronale Netzwerksignale gezeichnet, grün nach oben, rot nach unten.



Bild



5. Testen auf dem realen Markt



Während dieser Überprüfung werden Daten für das neuronale Netzwerk geladen, die erstellt werden, wenn neue Kerzen in Echtzeit hinzugefügt werden. Jene. Der letzte Teil der empfangenen Daten wurde beim Öffnen des Kerzenhalters erstellt, in unserem Fall des Nullkerzenhalters M6. Diese Daten enthalten natürlich nicht die richtige Antwort, das Netzwerk wird aufgefordert, eine echte Prognose abzugeben. Sie können sicherstellen, dass die Daten beim Übergang in den Verlauf nicht geändert werden, indem Sie die Druckzeile (Datenzeile) auskommentieren und die Werte einer bestimmten Zeile bei der Eingabe und nach einer Weile vergleichen.



def get_from_ennro(symbol, tfm, dim, lim):
    ...
    # print(data)
    ...


Auf dem realen Markt gibt es möglicherweise keine Signale. Dies geschieht, wenn die Volatilität geringer ist als im Testbereich. In diesem Fall sieht das neuronale Netzwerk keine Einstiegspunkte.



Schlussfolgerungen



Ja! Die Qualität der Prognose ist nicht für die Eröffnung von Positionen geeignet. Aber wir haben eine solche Aufgabe nicht gestellt, die Hauptsache ist, dass das neuronale Netzwerk etwas auf dem Diagramm lernt und erkennt, den Trend errät und seine Prognose offensichtlich nicht chaotisch ist. Bitte beachten Sie, dass wir die einfachste neuronale Netzwerkkonfiguration verwendet haben - Sequential Dense mit 2 Schichten und nur 10 Epochen für das Training. Es gibt Raum für weitere Entwicklungen.



Es gibt bereits Lösungen, die die Prognose qualitativ verbessern, aber darüber im nächsten Artikel.



PS Für diejenigen, die Daten für ein Paar in MetaTrader5 selbst sammeln und vorbereiten möchten , lesen Sie hier und verwenden Sie GoogleColab, das unter diesem Link angegeben wird .



All Articles