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

 
Maxim Dmitrievsky:
Nun, Sie können 5-15 Schritte nehmen und es wird so gut sein wie

Matte Erwartung über 30 Punkte nur auf Inkrementen, wo können wir das beobachten? Ausbildung auf der Grundlage der Stichprobe 2014-2018 und Arbeit im Jahr 2020 - wo ist das bei den Steigerungsstufen?

Maxim Dmitrievsky:
Oder sortieren Sie zuerst alle Prädiktoren durch Korrelation aus (Sekunden der Zeit) und nehmen Sie dann die verbleibenden 5-15 (wenn Sie so viele aus der Stärke erhalten)

So sparen Sie mit Ökonometrie Zeit.

Wollen Sie versuchen, es besser zu machen als Sie es können? Ich gebe Ihnen ein Beispiel - es ist kein großes.

 
Maxim Dmitrievsky:

Ich habe über Strategien zum Sterben nachgedacht...

Wie wäre es, wenn ich die Marktcharakteristiken für eine lange Zeit im Voraus prognostiziere? Dann rekonstruiere ich eine Serie mit den prognostizierten Charakteristiken und lerne daraus, um dann den Markt mit diesem Modell zu handeln... haben Sie versucht, in diese Richtung zu denken?


Zum Beispiel, um das Spektrum des Marktes vorherzusagen...

Wie "wir können die Zukunft nicht kennen, aber wir können sie uns vorstellen".
 
Aleksey Vyazmikin:

Ich habe also die erste Phase meiner Recherche durchgeführt

Wie viel Strom ging in....

 
mytarmailS:

Wie viel Energie ist in.... geflossen?

Das ist ein Geschenk an alle Skeptiker.

 
Maxim Dmitrievsky:

Oder sortieren Sie zuerst alle Prädiktoren nach Korrelation aus (Sekunden Zeit) und nehmen Sie dann die verbleibenden 5-15 (wenn Sie so viele bekommen können)

Aber ich werde Ihre Idee prüfen - das ist nicht schwer für mich. Welchen Korrelationskoeffizienten sollte ich also nehmen? Und wie wählt man aus den verbleibenden Prädiktoren 5-15 aus - schreiben Sie konkret - wie kann man sie vielleicht dort messen und anordnen?

 
mytarmailS:

Wie viel Strom ist weg....

Anstatt das Geld anderer Leute zu zählen, könnten Sie mir einen Tipp zu R geben?

Hier ist ein Skript, das die Korrelation berechnen und die korrelierten Spalten entfernen sollte.

library('caret')

df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

df1 <- df1[, ! colnames(df1)  %in% 
           c("Target_100_Buy",
             "Target_100_Sell",
             "Target_P",
             "Time",
             "Target_100")  ] # удаляем не нужные колонки
print (df1)
df2 = cor(df1)
hc = findCorrelation(df2, cutoff=0.3) # putt any value as a "cutoff" 
hc = sort(hc)
reduced_Data = df1[,-c(hc)]
print (reduced_Data)
write.table(reduced_Data, file = "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\outfile_03.csv",
            append = FALSE, quote = FALSE, sep=";",
            eol = "\n", na = "NA", dec = ".", row.names = FALSE,
            col.names = TRUE, qmethod = c("escape", "double"),
            fileEncoding = "")

Und es gibt zwei Fragen:

1. Wie die Ausführung dieses Codes in einer for-Schleife zu machen, nämlich ich brauche, um den Koeffizienten zu erhöhen und ändern Sie den Dateinamen mit dem Koeffizienten-Index zu speichern, oder in ein anderes Verzeichnis in der Schleife erzeugt.

2. Ich entferne die Hilfsspalten für die Berechnung. Wie kopiere ich sie in die Tabelle, die nach dem Entfernen der korrelierten Spalten erscheint (df2)?

Vielen Dank für Ihre Antwort.

 
Aleksey Vyazmikin:

Anstatt das Geld anderer Leute zu zählen, könnten Sie mir einen Rat zu R geben?

Ich habe ein Skript erstellt, das die Korrelation berechnen und die korrelierten Spalten entfernen soll.

Und es gibt zwei Fragen:

1. Wie führe ich diesen Code in einer for-Schleife aus, d. h. ich muss den Koeffizienten erhöhen und den Dateinamen so ändern, dass er mit dem Koeffizientenindex oder in einem anderen, in der Schleife erzeugten Verzeichnis gespeichert wird.

2. Ich entferne die Hilfsspalten für die Berechnung. Wie kopiere ich sie in die Tabelle, die nach dem Entfernen der korrelierten Spalten erscheint (df2)?

Vielen Dank für Ihre Antwort.

Antwort auf Frage (2)

library('caret')
#df1 загруженная дата
df1 <- as.data.frame(matrix(nrow = 100,ncol = 10,data = sample(1:10,1000,replace = T)))
# head(df1)

not <- c("V1","V2","V3") #  имена переменных которые нам НЕ нужны для корреляции

df2 <-  cor(     df1[, ! colnames(df1)  %in%  not]      )  
# head(df2)

not.need <- findCorrelation(df2, cutoff=0.1) # putt any value as a "cutoff" 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
# head(not.need.nms)

# получаем изначальную  df1 только без признаков что не прошли отбор
reduced_Data <- df1[, ! colnames(df1)  %in%  not.need.nms]
# head(reduced_Data)


Können Sie nun eine Funktion schreiben, die dasselbe tut, aber besser aussieht?

get.findCorrelation <- function(data , not.used.colums , cor.coef){
library('caret')
df2 <-  cor(     data[, ! colnames(data)  %in%  not.used.colums])  
not.need <- findCorrelation(df2, cutoff=cor.coef) 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
reduced_Data <- data[, ! colnames(data)  %in%  not.need.nms]
return(reduced_Data)}

gf <- get.findCorrelation(data = df1 , 
                          not.used.colums = c("V1","V2","V3"),
                          cor.coef = 0.1)

wird eine Datei in die Eingabe eingespeist

data = df1
Spalten angeben, die nicht für die Corel-Analyse verwendet werden sollen

not.used.colums = c("V1","V2","V3")

und die Abstimmung von Korel mit der Funktion findCorrelation

cor.coef = 0.1
die Ausgabe ist df1, aber ohne Junk-Merkmale
 

Nun die Antwort auf die erste Frage

way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"

cor.test.range <- seq(from = 0.1,to = 0.7,by = 0.1)  #  диапазон перебора в коеф корр

for(i in 1:length(cor.test.range)){
  
  reduced_Data <- get.findCorrelation(data = df1 , 
                      not.used.colums = c("V1","V2","V3"),
                      cor.coef = cor.test.range[i] )
  
  file.name <- paste0("test.with.cor_" , cor.test.range[i] , ".csv")
  final.way <- paste0(way , file.name)
  
  
  write.csv2(x = reduced_Data,file = final.way,row.names = F)  #  возможно это лучше
  
  #  write.table(reduced_Data, file = final.way,
  #              append = FALSE, quote = FALSE, sep=";",
  #              eol = "\n", na = "NA", dec = ".", row.names = FALSE,
  #              col.names = TRUE, qmethod = c("escape", "double"),
  #              fileEncoding = "")
}
 
Aleksey Vyazmikin:

Ich habe dann ein Training mit einer fest abgestimmten Quantentabelle an einer Probe von Zug - 60% Test - 20% Prüfung - 20% mit

Haben Sie nicht den Eindruck, dass Sie Ihr Modell auf das erfolgreichste Testmuster abstimmen?
Ich selbst habe ein paar Mal erfolgreiche Tests gemacht und dachte, hier ist der Gral))). Und nachdem ich die Standorte ein paar Monate lang nach vorne oder hinten verschoben hatte, wurde mir klar, dass das Modell falsch war und die Prädiktoren falsch waren, und ich verlor Geld mit diesen Standorten.

Ich habe mich vollständig auf die Analyse von Modellen zur Kreuzbewertung oder zur Vorwärtsbewertung verlegt. Ich habe bestenfalls 50% gesehen.
Doc hat in einem seiner letzten Beiträge auch die Kreuzvalidierung erwähnt.

 
YURY_PROFIT:

Maxim, der Programmierer, mit dem ich hier gekämpft habe, hat ein maschinelles Lernen EA, die Flamme auf Backtests gearbeitet, auf Forward-Tests dauerte es für einen Monat und eine Hälfte mit anständigen profitablen Statistiken zu, jetzt ist es Dumping ohne sogar pausieren))

YURY_PROFIT:

Bitte geben Sie mir ein Beispiel für maschinelles Lernen EA, die in der Gewinn auf realen Markt für mindestens 3 Monate ohne Umschulung gearbeitet wurde

Was ist also das Problem mit der ständigen Umschulung? Was ist dieser Vakuumzustand"ohne Umschulung"? Wenn ich einen Tag am Forex arbeite, ist das schon ein Gral, und ich kann mit jedem Tick neu trainieren, das ist eine Frage der Technik.