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

 
Yousufkhodja Sultonov:

MAs sind von Natur aus so konzipiert, dass sie Sie täuschen - diejenigen, die die Gesetze des Marktes nicht verstehen. Und alle sind darauf hereingefallen. Erstaunlicherweise ist das eine Tatsache. Schauen Sie sich um, und Sie werden feststellen, dass MA eine Eigenschaft aller numerischen Reihen ist, unabhängig davon, ob es sich um Markt- oder Zufallszahlen handelt. Wacht auf, Händler, lasst euch nicht täuschen.

Ich würde es Paranoia nennen.))

MAs sind der häufigste Filter, der sich nichts zuschulden kommen lässt. Jede Mate-Methode ist dort gut, wo und für wo sie anwendbar ist.

 
Maxim Dmitrievsky:

Wie lautet also die eigentliche Frage nach der Suche nach Merkmalen?

In unserem Fall gibt es nur den Preis. Jede Preistransformation ist eine a priori Regelmäßigkeit, in Form einer Art "Gedächtnis" des Prozesses (Indikatoren, die über n-Perioden konstruiert wurden). D.h. wenn wir die Regelmäßigkeiten nicht kennen, können wir nur Preis, Inkremente mit unterschiedlichen Perioden eingeben, um Gedächtnisprozesse zu berücksichtigen.

was kann es anderes geben als Preiserhöhungen? oder nicht, was picken Sie da so akribisch heraus, gibt es das? :)

Es gibt einen atvoregression Prozess mit Ordnung, können Sie das gleiche tun durch NS. Das scheint mir das Einzige zu sein, was man lehren kann. Ich meine, dass man ökonometrische Modelle nimmt und sie erweitert.

IMHO... deshalb versuche ich gar nicht erst, Chips aufzuheben :) und die Nerven sind in Ordnung (aber nicht wirklich)

mit anderen Worten, was kann man im Preis finden: Trend, Saisonalität, Zyklizität, Rauschen

Sie selbst haben vor ein paar Seiten ein Beispiel für ein Neuron gepostet, das lernt, eine Spirale zu erkennen. Für die beiden Standardmerkmale sind 3 verborgene Schichten von Neuronen erforderlich. Und wenn Sie weitere Funktionen hinzufügen, reicht eine Ebene aus.
Auch hier kann man also ein Neuron mit hundert Inkrementen aus der Vergangenheit füttern und das Ganze in einem Dutzend versteckter Schichten verarbeiten, oder man erhält ein paar gute hausgemachte Merkmale, die ein einschichtiges Gitter aus den 90er Jahren verarbeiten kann.

 

Ich habe ein weiteres interessantes Paket zum Herausfiltern von Prädiktoren gefunden. Er wird FSelector genannt. Es bietet etwa ein Dutzend Methoden zum Herausfiltern von Prädiktoren, einschließlich Entropie.

Ich habe die Datei mit den Prädiktoren und dem Ziel vonhttps://www.mql5.com/ru/forum/86386/page6#comment_2534058.


library(FSelector)
library(corrplot)

load("ALL_cod.RData")
trainTable <- Rat_DF1

PREDICTOR_COLUMNS_SEQ <- 1:27
TARGET_COLUMN_ID     <- 28

targetFormula <- as.simple.formula(colnames(trainTable)[PREDICTOR_COLUMNS_SEQ], colnames(trainTable)[TARGET_COLUMN_ID])

impMatrix <- matrix(NA, nrow = 0, ncol = length(PREDICTOR_COLUMNS_SEQ))

impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] %in% cfs(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "cfs"
impMatrix <- rbind(impMatrix, chi.squared(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "chi.squared"
impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] %in% consistency(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "consistency"
if(class(trainTable[,TARGET_COLUMN_ID]) != "factor"){
  impMatrix <- rbind(impMatrix, linear.correlation(targetFormula, trainTable)[[1]])
  rownames(impMatrix)[nrow(impMatrix)] <- "linear.correlation"
  impMatrix <- rbind(impMatrix, rank.correlation(targetFormula, trainTable)[[1]])
  rownames(impMatrix)[nrow(impMatrix)] <- "rank.correlation"
}
impMatrix <- rbind(impMatrix, information.gain(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "information.gain"
impMatrix <- rbind(impMatrix, gain.ratio(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "gain.ratio"
impMatrix <- rbind(impMatrix, symmetrical.uncertainty(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "symmetrical.uncertainty"
impMatrix <- rbind(impMatrix, oneR(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "oneR"
impMatrix <- rbind(impMatrix, random.forest.importance(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "random.forest.importance"
impMatrix <- rbind(impMatrix, relief(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "relief"

impMatrix

for(i in 1:nrow(impMatrix)){
  if(length(unique(impMatrix[i,]))==1){
    impMatrix[i,] <- 0
  }else{
    impMatrix[i,] <- -1 + (impMatrix[i,]-min(impMatrix[i,]))/(max(impMatrix[i,])-min(impMatrix[i,]))*2
  }
}

while(nrow(impMatrix) < ncol(impMatrix)){
  impMatrix <- rbind(impMatrix, 0)
}
while(ncol(impMatrix) < nrow(impMatrix)){
  impMatrix <- cbind(impMatrix, 0)
}

impMatrix <- as.matrix(impMatrix)
colnames(impMatrix) <- colnames(trainTable)[PREDICTOR_COLUMNS_SEQ]

corrplot(impMatrix)

Die Bewertung des Prädiktors nach jeder Methode habe ich in der Grafik am Ende dargestellt.

Blau ist gut, rot ist schlecht (für den Corrplot wurden die Ergebnisse auf [-1:1] skaliert, für die genaue Auswertung siehe Ergebnisse von cfs(targetFormula, trainTable), chi.squared(targetFormula, trainTable) usw.)
Sie können sehen, dass X3, X4, X5, X19, X20 von fast allen Methoden gut bewertet werden, Sie können mit ihnen beginnen und dann versuchen, weitere hinzuzufügen/zu entfernen.

Die Modelle in Rattle haben jedoch den Test mit diesen 5 Prädiktoren auf Rat_DF2 nicht bestanden, auch hier ist kein Wunder geschehen. D.h. selbst mit den verbleibenden Prädiktoren müssen Sie die Modellparameter anpassen, eine Kreuzvalidierung durchführen und selbst Prädiktoren hinzufügen/entfernen.

 
SanSanych Fomenko:

Könnten Sie ein Fenster mit den Fusionsergebnissen öffnen und Diagramme erstellen?

  • Entropiewerte
  • adfTest-Ergebnisse
  • ArchTest-Ergebnisse

Nahm nur eurusd m1 für etwa Januar dieses Jahres, und ein Schiebefenster von 1 Tag.

Wenn die Entropie zunimmt, sollten Sie logischerweise den Handel aussetzen und bei niedriger Entropie weiter handeln. Aber hier haben wir aus irgendeinem Grund einen Trend bei niedriger Entropie, obwohl es einfacher ist, bei Flat zu handeln.

(korrigierter Tippfehler im angehängten Code, laden Sie ihn erneut herunter, wenn Sie bereits Zeit hatten, den alten herunterzuladen)

Dateien:
 
Dr. Trader:

Vor ein paar Seiten haben Sie ein Beispiel für ein neuronales Netz gepostet, das lernt, eine Spirale zu erkennen. Für die beiden Standardmerkmale sind 3 verborgene Schichten von Neuronen erforderlich. Und wenn Sie weitere Funktionen hinzufügen, reicht eine Ebene aus.
Auch hier kann man also einen Neuronkey mit hundert Inkrementen aus der Vergangenheit füttern und das Ganze in einem Dutzend versteckter Schichten verarbeiten, oder man bekommt ein paar gute selbstgemachte Features, die ein Ein-Schicht-Gitter aus den 90ern verarbeiten kann.

Das verstehe ich, aber die Spirale ändert sich nicht in der Zeit... denken Sie nur, was für ein falsches Problem Sie lösen, wenn die Spirale in der Zeit jetzt ein Quadrat und jetzt eine Ellipse ist

und die Kreuzvalidierung ist nicht hilfreich, weil die Zustandsübergänge zufällig sind.

 
Dr. Trader:

Wenn die Entropie ansteigt, sollte man logischerweise aufhören zu handeln, und weiter handeln, wenn die Entropie niedrig ist. Aber hier, wenn die Entropie niedrig ist, ist sie aus irgendeinem Grund im Trend, obwohl es einfacher ist, in einer Wohnung zu handeln, was ungewöhnlich ist.


Deshalb sage ich: Nehmen Sie sich Zeit.

Bei hoher Entropie erhalten wir die Normalverteilung mit gegenläufigem Handel.

Bei niedriger Entropie - Pareto-Verteilung, Trend, "Gedächtnis" - wie auch immer Sie es nennen wollen.

Es stellt sich heraus, dass Sie einige vorgefertigte Dinge in R haben, es ist einfacher für Sie. Ich hingegen habe jetzt viel zu tun, um der Nicht-Entropie Rechnung zu tragen, deshalb habe ich mich aus den Diskussionen im Forum zurückgezogen.

Ich bleibe bei meiner Meinung: Die Entropie-Rechnung ist der Schlüssel zu allem.

 
Maxim Dmitrievsky:

und Kreuzvalidierung sind nicht hilfreich, da die Zustandsübergänge zufällig sind

Wenn die Zustandsübergänge zufällig sind, dann ist der Prozess markovianisch und dieser ganze Forumsfaden kann wegen Nutzlosigkeit gelöscht werden :)

Aber ich zum Beispiel glaube, dass der Prozess nicht markovianisch ist. Alexander scheint dem zuzustimmen, er kennt sich mit Statistiken viel besser aus als ich, ich würde ihm vertrauen.

 
Dr. Trader:

Wenn die Zustandsübergänge zufällig sind, dann ist der Prozess markovianisch und dieser ganze Forumsfaden kann wegen Nutzlosigkeit gelöscht werden :)

Aber ich zum Beispiel glaube, dass der Prozess nicht markovianisch ist. Alexander scheint einverstanden zu sein, er kennt sich mit Statistiken viel besser aus als ich, ich würde ihm vertrauen.

Ich habe bereits geschrieben, dass man auf lokaler Ebene nicht alle Faktoren berücksichtigen kann, ohne auf eine große Verzögerung oder einen anderen Maßstab überzugehen, und dort wird der Prozess wieder berechenbar. Ein ABER, die Grundgesamtheit ist unbekannt und die Zahl der Übertragungen auf eine andere Skala ist begrenzt. Deshalb verwendet Alexander Zecken. So ist es, aber auch das wird nicht immer funktionieren, wenn wir auf die Unzulänglichkeit der Geschichte stoßen, weil sie fehlt, und als Folge davon, dass wir keine klare Vorstellung von den Mustern des untersuchten BP haben.

Mit einem Wort, einige Übergänge auf lokaler Ebene können überhaupt nicht vorhergesagt werden, man muss auf eine andere Ebene der Darstellung gehen

 
Dr. Trader:

Wenn die Zustandsübergänge zufällig sind, dann ist der Prozess markovianisch, und dieser ganze Forumsfaden kann wegen Nutzlosigkeit gelöscht werden :)

Aber ich zum Beispiel glaube, dass der Prozess nicht markovianisch ist. Alexander scheint einverstanden zu sein, er kennt sich mit Statistiken viel besser aus als ich, ich würde ihm vertrauen.

Ich benutze zwar keine neuronalen Netze, aber ich habe den Thread gelesen, weil Feynman davon überzeugt war, dass es möglich ist, die weitere Bewegung des Teilchens von Zustand A zu Zustand B vorherzusagen (genau von Zustand zu Zustand, und nicht einfach ins Unendliche zu extrapolieren).

Zu diesem Zweck verwendete er als Input die üblichen Inkremente zwischen dem aktuellen und dem vorherigen Zustand und berücksichtigte eine Reihe weiterer Parameter. Shelepin L.A. war der erste, der die Nonentropie einsetzte und aus irgendeinem Grund starb... hat die Arbeit nicht beendet. Es liegt also an uns, dieses Thema abzuschließen.

 

Ja! Ich vergaß zu sagen.

Zustände werden als eine Reihe von Daten betrachtet, die ein Teilchen nahezu vollständig charakterisieren. D.h. es handelt sich um einen Datensatz, einfach ausgedrückt - ein Stichprobenvolumen, mit seinen Merkmalen - Kurtosis, Asymmetrie, Nicht-Entropie, usw.

D.h. mit der Zuversicht von R.Feynman kann man behaupten, dass, den Umfang der Probe fÃ?r das konkrete Paar richtig bestimmt habend, die charakteristischen mittleren Werte dieser Koeffizienten fÃ?r diese Probe auf die Geschichte berechnet, kann man voraussagen, dass, den bestimmten Satz der Parameter zur Zeit habend, in einem bestimmten Zeitintervall, das System zum Zustand mit seinen stationÃ?ren Parametern Ã?bergehen wird.

Das ist es, was ich von diesem Thema erwarte. Wenn Sie Hilfe bei der Bestimmung der richtigen Probengröße benötigen, kontaktieren Sie mich bitte und ich werde versuchen, Ihnen zu helfen.

Grund der Beschwerde: