Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 265
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Tentei, mas avariou-se rapidamente: não é claro o que fazer com os orifícios de saída.
Os furos são tirados em discotecas no fim de semana :)
Quando vais aprender a citar correctamente? Não é preciso citar meia página do fórum para escrever três palavras...
Passando agora ao assunto
Eu fiz várias combinações de castiçais e outras coisas com a ajuda de Eu tentei ensiná-lo comcastiçais, acabou sendo 100% treinamento e erro 0 tanto em treinamento como em novos dados, é óbvio que existem alguns preditores nos dados que olham para o futuro, por isso não tive de olhar para cada função apenas removi os primeiros 6 preditores que, de acordo com a versão forrest, eram mais importantes e se destacavam dos outros, esperava que entre eles estivessem aqueles que olhavam para o futuro e treinavam o MO novamente, o erro era cerca de 3%, em suma, não sei o que raio, porquê resultados tão fabulosos, talvez o erro esteja no meu código...
Karoch que quer entender este é o código como eu fiz a amostra, o meu alvo era "cor de vela".
No código, só a própria amostra, o alvo e outras manipulações fazem o que você quer.
Experimente, experimente porque é como um extra 30 características para o seu modelo.
# загружаю последние 500 дней котировок индекса ртс
getSymbols("SPFB.RTS",src = "Finam",period="5min",from = Sys.Date()-500)
chart_Series( tail(SPFB.RTS,100) )
D <- SPFB.RTS
# cчитаем функции по свечным формациям и прочим добром
library(candlesticks)
X29<- TrendDetectionSMA(D)
X28<- TrendDetectionChannel(D)
X27<- nextCandlePosition(D)
X26<- CSPThreeOutside(D)
X25<- CSPThreeMethods(D)
X24<- CSPThreeInside(D)
X23<- CSPTasukiGap(D)
X22<- CSPStomach(D)
X21<- CSPStar(D)
X20<- CSPShortCandleBody(D)
X19<- CSPShortCandle(D)
X18<- CSPPiercingPattern(D)
X17<- CSPOutsideDay(D)
X16<- CSPNLowerClose(D,N = 3)
X15<- CSPNHigherClose(D,N = 3)
X14<- CSPMarubozu(D)
X13<- CSPLongCandleBody(D)
X12<- CSPLongCandle(D)
X11<- CSPKicking(D)
X10<- CSPInvertedHammer(D)
X9 <- CSPInsideDay(D)
X8 <- CSPHarami(D)
X7 <- CSPHammer(D)
X6 <- CSPGap(D)
X5 <- CSPEngulfing(D)
X4 <- CSPDoji(D)
X3 <- CSPDarkCloudCover(D)
X2 <- CandleLength(D)
X1 <- CandleBodyLength(D)
dat <- cbind.data.frame(D, X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,
X11,X12,X13,X14,X15,X16,X17,X18,X19,
X20,X21,X22,X13,X24,X25,X26,X27,X28,X29)
# true,false заменяю на 1 и -1 а NA-шки на 0
dat[dat==TRUE] <- 1
dat[dat==0] <- -1
dat[is.na(dat)] <- 0
# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData") # ваш путь
Sanych, quando é que vais aprender a citar correctamente?
Os prognosticadores não olham para o futuro - repetem o alvo.
Onde está o teste de avanço? Qual é o objectivo de discutir o treino?
PS
Tudo a pedido
Os prognosticadores não olham para o futuro - repetem o alvo.
Onde está o teste de avanço? O que há para discutir sobre treinamento?
Experimente por conta própria e escreva o que conseguir, e depois haverá algo para discutir, esperançosamente...
Eu entendo a razão.
Agora chegou um novo preço, todos os preditores foram calculados sobre ele, e depois o mesmo preço foi calculado sobre esses preditores - nós não prevemos nada. O erro de encaixe é zero. Não vejo nada de surpreendente.
Se a previsão for interessante, então o D muda um passo para a esquerda. Este modelo prediz um passo à frente. você pode prever vários
Eu entendo a razão.
Agora chegou um novo preço, todos os preditores foram calculados sobre ele, e depois o mesmo preço foi calculado sobre esses preditores - nós não prevemos nada. O erro de encaixe é zero. Não vejo nada de surpreendente.
Se a previsão for interessante, então o D muda um passo para a esquerda. Este modelo prevê um passo em frente.
Como assim, o novo preço chegou?
O código que te dei só faz previsões a partir de preços que são baixados do Finam.
então os dados são gravados.
save(dat,file = "D:/R/candles_lib/candle_dat.RData") # ваш путь
Então abrimos estes dadosno novo script, definimos opreço alvo e ensinamos o MO.
Não tem de onde vir. Claro que mudei o preço alvo por um passo, de acordo com a previsão, não é a primeira vez que estou a treinar.
então algo mais está lá
Ou eu não te entendo?Como assim, o novo preço chegou?
o código que eu dei só faz previsões a partir dos preços baixados do finam
então os dados são gravados
save(dat,file = "D:/R/candles_lib/candle_dat.RData") # ваш путь
Depois abrimos este datacandle_dat.RData em um novo script, fazemos um alvo e ensinamos o MO.
Não tem de onde vir. É claro que mudei o alvo um passo, de acordo com a previsão.
por isso esta não é a primeira vez que faço isto.
Ou será que te entendi mal?Qual é o alvo?
cloze é mais alto que o anterior cloze
Y <- diff(dat$SPFB.RTS.Close)
Y[Y>=0] <- 1
Y[Y<0] <- 0
dat <- dat[-nrow(dat),]
Y <- as.factor(Y)
tr <- 1:10000
ts <- 10001:15000
library(randomForest)
cm <- colnames(dat)
colnames(dat) <- paste0("var_" , 1:ncol(dat))
model <- randomForest(Y[tr]~., dat[tr,] , ntree=100, mtry=10)
layout(1:2)
plot(model)
varImpPlot(model,type = 2)
pr <- predict(model,dat[ts,])
library(caret)
confusionMatrix(Y[ts] , pr)
a cloze acima é mais baixa que a cloze anterior
Não consigo descobrir onde está o turno no alvo? Ao diferenciar? Mas a primeira linha de preditores, que é obtida subtraindo de 2, colocamos o 1º valor do alvo, ou seja, SABemos os próximos valores para o alvo com índice 2.
Ao diferenciar, o deslocamento é automático, pois a série torna-se um elemento mais curto, então tudo o que é necessário é encurtar a amostra (tabela com observações) pelo último elemento
eis um exemplo
Y <- diff(SomeData)
cbind.data.frame( Y , SomeData[-length(SomeData)])
nós temos
1 10 10
2 10 20
3 -10 30
4 -10 20
5 10 10
6 10 20
7 10 30
8 10 40
9 -10 50
Ao diferenciar, o turno é automático, pois a linha torna-se um elemento mais curto, e então tudo o que é necessário é encurtar a amostra pelo último elemento
Não são os preditores que precisam deser deslocados para a esquerda, mas sim o alvo.
Deixa-me tentar explicar mais uma vez.
A seqüência de preditores com índice 1 é obtida = do SEGUNDO e da primeira seqüência de preditores. O resultado é escrito no lugar com o índice 1.
O alvo tem índice =1 e ainda o tem. Mas o seu valor prevemos com base na informação do FUTURO, segunda linha de preditores
Desloque o alvo em 1, ou seja, em vez de Y[1:n] pegue Y[2:n] e calcule