Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2425

 
Maxim Dmitrievsky:
Bem, você pode tomar 5-15 incrementos e será tão bom quanto

Expectativa de mais de 30 pontos apenas em incrementos, onde podemos observar isso? Formação sobre a amostra 2014-2018 e trabalhar em 2020 - onde é que isso está nos incrementos?

Maxim Dmitrievsky:
Ou elimine todos os preditores por correlação primeiro (segundos de tempo) e depois tome os 5-15 restantes (se conseguir tantos de força)

É assim que a econometria lhe poupa tempo.

Queres tentar fazer melhor do que tens? Vou atirar-te uma amostra - não é das grandes.

 
Maxim Dmitrievsky:

Tenho estado a pensar em estratégias de morte...

E se eu prever as características do mercado por um longo tempo? Então reconstrua uma série com características previstas e aprenda com ela, e depois troque o mercado com este modelo... você já tentou pensar nesta direção?


Por exemplo, para prever o espectro do mercado...

Como "não podemos conhecer o futuro, mas podemos imaginá-lo".
 
Aleksey Vyazmikin:

Então, eu fiz a primeira fase da minha pesquisa...

Quanta energia entrou em....

 
mytarmailS:

quanta energia entrou em....

É um presente para todos os cépticos.

 
Maxim Dmitrievsky:

Ou peneirar primeiro todos os preditores por correlação (segundos de tempo) e depois tirar os 5-15 restantes (se conseguir tantos)

Mas vou verificar a tua ideia - não é difícil para mim. Então, que coeficiente de correlação devo tomar? E como seleccionar 5-15 dos restantes preditores - escrever especificamente - talvez como os medir lá e pô-los em ordem?

 
mytarmailS:

Quanta energia já foi....

Em vez de contares o dinheiro dos outros, podes dar-me uma dica sobre o R?

Aqui está um script que deve calcular a correlação e remover as colunas correlatas.

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

E há duas perguntas:

1. Como fazer a execução deste código em um loop for, ou seja, preciso aumentar o coeficiente e mudar o nome do arquivo para salvar com o índice do coeficiente, ou para outro diretório gerado no loop.

2. Estou removendo as colunas auxiliares para o cálculo, como copiá-las para a tabela que aparece (df2) após remover as colunas correlatas.

Obrigado pela sua resposta.

 
Aleksey Vyazmikin:

Em vez de contares o dinheiro dos outros, podes dar-me alguns conselhos sobre o R?

Eu fiz um script que deve calcular a correlação e remover as colunas correlatas.

E há duas perguntas:

1. Como faço para executar este código em um loop for, ou seja, preciso aumentar o coeficiente e mudar o nome do arquivo para salvar com o índice do coeficiente, ou para outro diretório gerado no loop.

2. Estou removendo as colunas auxiliares para o cálculo, como copiá-las para a tabela que aparece (df2) após remover as colunas correlatas.

Obrigado pela sua resposta.

resposta à pergunta (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)


agora você pode escrever uma função que faça a mesma coisa, mas que pareça mais limpa

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)

um arquivo é alimentado para a entrada

data = df1
especificar colunas que não serão utilizadas para análise da Corel

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

bem, e afinar o korel da função findCorrelation

cor.coef = 0.1
a saída é df1 mas sem recursos de lixo
 

Agora a resposta à primeira pergunta

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:

Fiz então um treino de mesa quantum fixa numa amostra de comboio - 60% teste - 20% exame - 20% com

Não lhe parece que está a afinar o seu modelo para a amostra de teste mais bem sucedida?
Eu mesmo já fiz algumas vezes testes com sucesso e pensei - aqui está o Graal)))). E depois de ter deslocado os sites para a frente ou para trás durante alguns meses - tudo ficou claro e o modelo estava errado e os preditores estavam errados, e eu perdi dinheiro nesses sites.

Mudei completamente para a análise de modelos de avaliação cruzada ou de avaliação a prazo. Na melhor das hipóteses, já vi 50%.
O Doc também mencionou a validação cruzada num dos seus últimos posts.

 
YURY_PROFIT:

Maxim, o programador com quem lutei aqui, tem um Expert Advisor de aprendizagem de máquinas em testes de retaguarda - apenas fogo, em testes de avanço durou um mês e meio também com estatísticas decentes e lucrativas, agora ele está descartando sem sequer fazer uma pausa))

YURY_PROFIT:

Por favor, dê-me um exemplo de aprendizagem de máquinas EA que funcionaram com lucro no mercado real por pelo menos 3 meses sem reconversão.

Então qual é o problema com a reciclagem contínua? Qual é esta condição de vácuo"sem reciclagem"? Se a frente está correndo por um dia, é um graal, e você pode se reciclar a cada tique, é uma questão de técnica.