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

 
mytarmailS:

eine Warnung erhalten

Logischerweise hat das Skript versucht, die zuvor erstellte Tabelle aus der rdata-Datei zu lesen, was aber fehlgeschlagen ist, daher die Warnung. Wenn Sie das Skript das nächste Mal ausführen, wird die rdata-Datei mit der Tabelle gelesen, und es kommt zu keiner Verzerrung.


NA - auch logisch, die Daten für die Erstellung eines Modells sollten aufbereitet werden und nicht aus dem Rohoutput dieser Indikatoren stammen. Dort kann noch viel mehr getan werden.

<NA> am Anfang der Tabelle ist in Ordnung, schließlich benötigen Candlesticks mindestens 23 Balken. Für die ersten 23 Takte können Sie immer NA erwarten.
Ich habe die Tabelle nicht bis zur Breite des Fensters gefüllt, da es nicht nur NA geben wird, sondern man wegen der geringeren Tiefe der Indikatorberechnungen mit "nicht so guten" Ergebnissen rechnen kann.
Schneiden Sie die ersten Zeilen besser auf Fensterbreite zu.
trainData <- trainData[-(1:indicatorDepth), ]

Korrektur von <NA> in Spaltennamen außer Ziel: colnames(trainData)[-ncol(trainData)] <- paste0("pred",1:(ncol(trainData)-1))

Ersetzen Sie Ziel durch 1 für alle positiven und -1 für alle negativen Werte. Oder {0;1}, wenn Sie Neuronen haben.

Diejenigen Indikatoren, die einige Werte in der Nähe der Preise enthalten, werden auf 0-1 skaliert, oder es werden Deltas gezählt. (z.B. MA-Werte liegen immer irgendwo in der Nähe des Preises, sie müssen skaliert oder delta werden. Und der RSI liegt immer in seinem eigenen Bereich von 0-100, was an sich schon eine gute Sache ist. Wenn die Indikatorwerte über die während des Trainings bekannten Werte hinausgehen können - delta it, es wird nicht schlechter werden)

Für die Neuronik im Allgemeinen ist es besser, alle Indikatoren in 0-1 zu skalieren.

Also weiter.

Aber NA in den Spalten 46-51 - da ist wirklich etwas faul. Entweder geben sie alles in einem anderen Format zurück, und wir brauchen einen anderen Code, um sie in die Tabelle einzufügen.
Oder - diese Indikatoren geben einfach nur NA zurück; vielleicht brauchen sie eine größere Fensterbreite; oder sie geben immer NA für den letzten Balken zurück und ersetzen dann NA auf der Grundlage der neuen Balkendaten, was ein Redrawing ist und schlecht.

 
SanSanych Fomenko:

Hier kommt ein neuer Balken, der eine Marktumkehr ankündigt. Aber wir, die wir weiterhin die heilige Kuh füttern, ändern unsere Sicht der Geschichte nicht um irgendeiner Idee willen, die aus dem Abschnitt "Analyse" stammt.

Für den einfachen Handel ist das ganz hervorragend, da stimme ich zu. Der Indikator hat eine Art Muster gefunden, das sich gerade herausbildet, und hat es uns gezeigt, alles ist gut.

Aber wir müssen die Daten vorbereiten und das Modell trainieren. Wenn ein Indikator überzeichnet ist, bedeutet dies in der Regel, dass sich die Werte vergangener Balken aufgrund neuerer Daten ständig ändern, d. h. es gibt einen Blick in die Zukunft. Und das Modell lernt schließlich aus diesen zukunftsweisenden Werten, dass nichts Gutes dabei herauskommen kann.
Obwohl solche Indikatoren als Lernziel verwendet werden können, blickt derselbe Zickzackkurs beispielsweise 100 Balken voraus, weshalb er attraktive Trends zeichnet.

 
Dr. Trader:

Aber NA in den Spalten 46-51 - da ist wirklich etwas faul. Entweder geben die Indikatoren alles in einem anderen Format zurück und benötigen einen anderen Code, um sie in die Tabelle einzufügen.

Oder - diese Indikatoren geben einfach nur NA zurück; vielleicht ist eine größere Fensterbreite erforderlich; oder sie geben immer NA für den letzten Balken zurück und ersetzen dann NA auf der Grundlage neuer Balkendaten, was ein Redrawing ist und schlecht ist.

Ich habe es überprüft, es sieht nach Überziehung aus. Für den letzten Balken gibt der Indikator nextCandlePosition immer NA zurück. Und im nächsten Takt wird NA durch etwas ersetzt, das richtig aussieht. @mytarmailS Versuchen Sie Ihren ersten Code noch einmal, aber ohne diesen Indikator und trainieren Sie das Modell, ich denke, das Ergebnis wird schlechter sein.

Ich habe mein Skript dahingehend korrigiert, dass ich den vorletzten Wert von nextCandlePosition anstelle des letzten Wertes genommen habe, jetzt gibt es keine NA in den letzten Tabellenzeilen.

 
Dr. Trader:

Für den einfachen Handel ist das ganz hervorragend, da stimme ich zu. Der Indikator hat eine Art Muster gefunden, das gerade erst aufgetaucht ist, und hat es uns gezeigt, alles ist gut.

Aber wir müssen die Daten vorbereiten und das Modell einlernen. Wenn der Indikator neu gezeichnet wird, bedeutet dies in der Regel, dass sich die Werte früherer Balken auf der Grundlage neuerer Daten ständig ändern, d.h. es gibt einen Blick in die Zukunft. Und das Modell lernt schließlich aus diesen zukunftsweisenden Werten, dass nichts Gutes dabei herauskommen kann.
Auch wenn solche Indikatoren als Lernziel verwendet werden können, blickt derselbe Zickzackkurs beispielsweise 100 Balken voraus und ist daher ein attraktiver Trendgeber.

Nehmen wir ein einfaches Beispiel.

1. Wir zeichnen eine Hodrick-Prescott-Glättung. Sie wird neu gezeichnet.

Auf dem aktuellen Balken schaut die Tangente nach oben. Beim nächsten Balken zeigt die Tangente nach unten - der Indikator wird neu gezeichnet, da er die aktuellen Veränderungen berücksichtigt. Prognose einen Schritt vorwärts - abwärts.

2. Zeichnen der Tangente.

Auf dem aktuellen Balken ist die Tangente aufwärts gerichtet. Beim nächsten Balken zeigt die Tangente nach oben - der Indikator hat die Veränderungen noch nicht erreicht.

Bitte beachten Sie, dass der HP-Indikator bei 10-15 Balken aufhört, sich neu zu zeichnen.

Ihre Wahl und warum?

 
SanSanych Fomenko:

Ihre Wahl und warum?

Beim Handel mit der Hand kann ich davon ausgehen, dass es gute Strategien gibt, die diese beiden Indikatoren verwenden. Ich kenne solche Strategien nicht, also würde ich auch nicht mit ihnen handeln.

Beim maschinellen Lernen wähle ich den Assistenten. Ein dummer nachlaufender Indikator ist besser als jeder umzeichnende Indikator.

 
Dr. Trader:

Ich habe es überprüft, es sieht nach Überziehung aus. Für den letzten Balken gibt der Indikator nextCandlePosition immer NA zurück. Und im nächsten Takt wird NA durch etwas Notwendiges ersetzt. @mytarmailS Versuchen Sie Ihren ersten Code noch einmal, aber ohne diesen Indikator und trainieren Sie das Modell, ich denke, das Ergebnis wird schlechter sein.

Ich habe mein Skript dahingehend korrigiert, dass ich den vorletzten Wert von nextCandlePosition anstelle des letzten Wertes genommen habe. Jetzt gibt es keine NA mehr in den letzten Zeilen der Tabelle.

Ich habe geschrieben, dass ich etwa sechs der besten Prädiktoren gelöscht habe, um nur diejenigen zu entfernen, die übermalt sein könnten, aber die Genauigkeit ist um etwa 3% gesunken, sie sind wahrscheinlich alle übermalt ...

Haben Sie das Modell bereits trainiert? Vielleicht sollten Sie mit einigen Tausend beginnen, um es auszuprobieren, anstatt 50k auf einmal zu zählen?

 
obwohl ich nicht weiß, was dort gezeichnet werden kann, haben die meisten Candlestick-Formationen nur drei Ausgabeoptionen TRUE,FALSE,NA
 
mytarmailS:

Ja, ich schrieb, dass ich etwa sechs der besten Prädiktoren entfernt, um nur diejenigen zu entfernen, die neu zeichnen kann, aber die Genauigkeit hat buchstäblich 3% gesunken, da wahrscheinlich alle neu zeichnen ...

Nahm Ihren Code, entfernt 6 Indikatoren von nextCandlePosition (X27) erhalten, bekam Genauigkeit von 52% statt 100%. Bei leicht abweichenden Indizes für die Ausbildung liegt die Genauigkeit manchmal unter 50 %. Alles in allem - Zufall.

mytarmailS:
Obwohl ich nicht weiß, was neu gezeichnet werden könnte, gibt es in der überwiegenden Mehrheit der Candlestick-Formationen nur drei TRUE,FALSE,NA-Ausgänge

Mit nextCandlePosition - erhalten Sie Werte, die wirklich für den nächsten Takt relevant sind, hier mit Blick in die Zukunft um 1 Schritt.

Es hat also nicht geklappt.

 
Dr.Trader:

Nahm Ihren Code, entfernt 6 Indikatoren von nextCandlePosition (X27) erhalten, bekam Genauigkeit von 52% statt 100%. Bei leicht abweichenden Indizes für die Ausbildung liegt die Genauigkeit manchmal unter 50 %. Im Allgemeinen - zufällig.

Mit nextCandlePosition - erhalten Sie die Werte, die für den nächsten Takt wirklich relevant sind, hier mit einem Blick in die Zukunft um 1 Schritt.

Im Allgemeinen funktioniert das nicht.

Nun, es ist gut, dass sich alles geklärt hat, ich habe nicht wirklich an den Gral geglaubt.

 

Es gibt ein neues und sehr vielversprechendes Paket RKEEL, das als Gateway zu KEEL dient.

Viel Glück!

KEEL: Software tool. Evolutionary algorithms for Data Mining
  • www.keel.es
KEEL contains classical knowledge extraction algorithms, preprocessing techniques, Computational Intelligence based learning algorithms, evolutionary rule learning algorithms, genetic fuzzy systems, evolutionary neural networks, etc.