L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2425

 
Maxim Dmitrievsky:
Vous pouvez prendre 5 à 15 incréments et ce sera aussi bien que
.

L'attente de Mat est supérieure à 30 points uniquement sur les incréments, où peut-on observer cela ? Se former sur l'échantillon 2014-2018 et travailler en 2020 - où cela se situe-t-il sur les paliers ?

Maxim Dmitrievsky:
Ou éliminez d'abord tous les prédicteurs par corrélation (en quelques secondes), puis prenez les 5 à 15 prédicteurs restants (si vous en obtenez autant de la force).

C'est ainsi que l'économétrie vous fait gagner du temps.

Vous voulez essayer de faire mieux que ce que vous avez obtenu ? Je vais vous donner un échantillon - il n'est pas très grand.

 
Maxim Dmitrievsky:

J'ai réfléchi à des stratégies de mort...

Et si je prévoyais les caractéristiques du marché à long terme, que je reconstruisais une série avec les caractéristiques prévues et que j'en tirais des enseignements, puis que je négociais le marché avec ce modèle... Avez-vous essayé de réfléchir dans cette direction ?


Par exemple pour prédire le spectre du marché...

Comme "on ne peut pas connaître le futur, mais on peut l'imaginer".
 
Aleksey Vyazmikin:

Donc, j'ai fait la première phase de ma recherche

Combien d'énergie a été transférée sur ....

 
mytarmailS:

Combien d'énergie a été dépensée sur ....

C'est un cadeau pour tous les sceptiques.

 
Maxim Dmitrievsky:

Ou bien vous pouvez d'abord trier tous les prédicteurs par corrélation (en quelques secondes), puis prendre les 5 à 15 prédicteurs restants (si vous pouvez en obtenir autant).

Mais je vais vérifier votre idée - ce n'est pas difficile pour moi. Alors quel coefficient de corrélation dois-je prendre ? Et comment sélectionner 5 à 15 des prédicteurs restants - écrire spécifiquement - peut-être comment les mesurer là et les organiser ?

 
mytarmailS:

Combien d'énergie a disparu....

Au lieu de compter l'argent des autres, tu pourrais me donner un conseil sur R ?

Voici un script qui devrait calculer la corrélation et supprimer les colonnes corrélées.

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 = "")

Et il y a deux questions :

1. Comment faire l'exécution de ce code dans une boucle for, à savoir que j'ai besoin d'augmenter le coefficient et de changer le nom du fichier pour le sauvegarder avec l'indice du coefficient, ou dans un autre répertoire généré dans la boucle.

2. Je supprime les colonnes auxiliaires pour le calcul, comment les copier dans le tableau qui apparaît (df2) après avoir supprimé les colonnes corrélées.

Merci pour votre réponse.

 
Aleksey Vyazmikin:

Au lieu de compter l'argent des autres, pourriez-vous me donner des conseils sur R ?

J'ai créé un script qui devrait calculer la corrélation et supprimer les colonnes corrélées.

Et il y a deux questions :

1. Comment faire pour que ce code s'exécute dans une boucle for, à savoir que je dois augmenter le coefficient et changer le nom du fichier pour le sauvegarder avec l'indice du coefficient, ou dans un autre répertoire généré dans la boucle.

2. Je supprime les colonnes auxiliaires pour le calcul, comment les copier dans le tableau qui apparaît (df2) après avoir supprimé les colonnes corrélées.

Merci pour votre réponse.

réponse à la question (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)


Maintenant, pouvez-vous écrire une fonction qui fait la même chose mais qui a l'air plus soignée.

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)

un fichier est introduit dans l'entrée

data = df1
spécifier les colonnes qui ne seront pas utilisées pour l'analyse Corel

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

bien, et en réglant Korel à partir de la fonction findCorrelation

cor.coef = 0.1
la sortie est df1 mais sans les caractéristiques inutiles.
 

Maintenant, la réponse à la première question

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:

J'ai ensuite effectué un entraînement sur table quantique à accord fixe sur un échantillon de train - 60% test - 20% examen - 20% avec

Ne vous semble-t-il pas que vous adaptez votre modèle à l'échantillon le plus performant ?
J'ai moi-même touché des parcelles d'essai réussies à quelques reprises et j'ai pensé - voici le Graal))). Et après avoir déplacé les sites vers l'avant ou l'arrière pendant quelques mois - tout est devenu clair et le modèle était erroné et les prédicteurs étaient faux, et j'ai perdu de l'argent sur ces sites.

J'ai complètement basculé vers l'analyse de modèles sur la valorisation croisée ou la valorisation à terme. Au mieux, j'ai vu 50%.
Doc a également mentionné la validation croisée dans l'un de ses derniers messages.

 
YURY_PROFIT:

Maxim, le programmeur avec lequel je me suis battu ici, a un conseiller expert en apprentissage automatique sur les backtests - juste le feu, sur les tests avant il a duré pendant un mois et demi aussi avec des statistiques rentables décentes, maintenant il se jette sans même faire de pause)).

YURY_PROFIT:

Veuillez me fournir un exemple d'EA d'apprentissage automatique qui a fonctionné avec profit sur le marché réel pendant au moins 3 mois sans recyclage.

Quel est donc le problème du recyclage continu ? Qu'est-ce que cette condition de vide"sans recyclage" ? Si je travaille une journée sur le forex, c'est déjà un graal, et je peux me recycler à chaque tick, c'est une question de technique.

Raison: