L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 265

 
SanSanych Fomenko:
Provato, ma si è rapidamente rotto: non è chiaro cosa fare con i fori di uscita.

I buchi si prendono nelle discoteche nel fine settimana :)

Quando imparerai a citare correttamente? Non c'è bisogno di citare mezza pagina del forum per scrivere tre parole...

Ora sul tema

Ho fatto varie combinazioni di candele e altre cose con l'aiuto di Ho provato a insegnarlo con lecandele, si è rivelato essere 100% formazione ed errore 0 sia sui dati di formazione che su quelli nuovi, è ovvio che ci sono alcuni predittori nei dati che guardano al futuro, quindi non ho dovuto esaminare ogni funzione ho solo rimosso i primi 6 predittori che secondo la versione di forrest erano più importanti e si distinguevano dagli altri, speravo che tra loro ci fossero quelli che guardano al futuro e ho allenato di nuovo il MO, l'errore era circa il 3%, insomma non so cosa diavolo, perché risultati così favolosi, forse l'errore è nel mio codice...

Karoch che vuole capire questo è il codice come ho fatto il campione, il mio obiettivo era "colore della candela".

Nel codice, solo la selezione stessa, l'obiettivo e altre manipolazioni fanno quello che vuoi.

Provatelo, sperimentate perché è come 30 caratteristiche in più per il vostro modello

library(rusquant)
# загружаю последние 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")  # ваш путь

 
mytarmailS:

Sanych, quando imparerai a citare correttamente?

I predittori non guardano al futuro - ripetono l'obiettivo.

Dov'è il test in avanti? Che senso ha parlare di formazione?

PS

Tutti su richiesta

 
SanSanych Fomenko:

I predittori non guardano al futuro - ripetono l'obiettivo.

Dov'è il test in avanti? Cosa c'è da discutere sulla formazione?

Prova solo a insegnarlo sul tuo sito e scrivi quello che hai, e poi avremo qualcosa da discutere, spero...
 
mytarmailS:
Provate da soli e scrivete quello che ottenete, e poi ci sarà qualcosa da discutere, si spera...

Capisco la ragione.

Ora è arrivato un nuovo prezzo, tutti i predittori sono stati calcolati su di esso, e poi lo stesso prezzo è stato calcolato su quei predittori - non prevediamo proprio nulla. L'errore di adattamento è zero. Non vedo nulla di sorprendente.

Se la previsione è interessante, allora D si sposta di un passo a sinistra. Questo modello prevede un passo avanti. è possibile prevedere diversi

 
SanSanych Fomenko:

Capisco la ragione.

Ora è arrivato un nuovo prezzo, tutti i predittori sono stati calcolati su di esso, e poi lo stesso prezzo è stato calcolato su quei predittori - non prevediamo proprio nulla. L'errore di adattamento è zero. Non vedo nulla di sorprendente.

Se la previsione è interessante, allora D si sposta di un passo a sinistra. Questo modello prevede un passo avanti.

Cosa vuol dire che è arrivato il nuovo prezzo?

Il codice che ti ho dato fa solo dei predittori dai prezzi che vengono scaricati da finam.

poi i dati vengono salvati.

# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData")  # ваш путь

Poi apriamo questi datinel nuovo script, impostiamo ilprezzo target e insegniamo il MO.

Non ha un posto da cui venire. Naturalmente, ho spostato il prezzo obiettivo di un passo, secondo le previsioni, non è la prima volta che lo insegno

quindi c'è qualcos'altro

O non ti capisco?
 
mytarmailS:

Cosa vuol dire che è arrivato il nuovo prezzo?

il codice che ho dato fa solo i predittori dai prezzi scaricati da finam

poi i dati vengono salvati

# пишем все в файл с которым удобно работать в будущем
save(dat,file = "D:/R/candles_lib/candle_dat.RData")  # ваш путь

Poi apriamo questi daticandle_dat.RData in un nuovo script, facciamo un obiettivo e insegniamo il MO.

Non ha un posto da cui venire. Naturalmente, ho spostato l'obiettivo in modo graduale, secondo le previsioni.

quindi non è la prima volta che lo faccio.

O ho capito male?
Qual è l'obiettivo?
 
SanSanych Fomenko:
Qual è l'obiettivo?

cloze è superiore al precedente cloze

load(file = "D:/R/candles_lib/candle_dat.RData")

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)
 
mytarmailS:

il cloze di cui sopra è inferiore al cloze precedente

Non riesco a capire dov'è lo spostamento dell'obiettivo? Quando si differenzia? Ma la prima linea di predittori, che si ottiene sottraendo da 2, corrisponde al 1° valore del target, cioè conosciamo i prossimi valori per il target con indice 2.
 
SanSanych Fomenko:
Non riesco a capire dove sia lo spostamento dell'obiettivo? Quando si differenzia? Ma nella prima linea di predittori, che si ottiene sottraendo da 2, mettiamo il 1° valore del target, cioè conosciamo i valori successivi per il target con indice 2.

Quando si differenzia, lo spostamento è automatico, poiché la serie diventa un elemento più corta, quindi tutto ciò che serve è accorciare il campione (tabella con le osservazioni) dell'ultimo elemento

Ecco un esempio

SomeData <- c(10,20,30,20,10,20,30,40,50,40)

Y <- diff(SomeData)

cbind.data.frame(  Y , SomeData[-length(SomeData)])


otteniamo

   Y                   SomeData[-length(SomeData)]
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
 
mytarmailS:

Quando si differenzia, lo spostamento è automatico, poiché la fila diventa un elemento più corta, e allora tutto ciò che serve è accorciare il campione dell'ultimo elemento

Non sono i predittori che devonoessere spostati a sinistra, ma l'obiettivo.

Lasciatemi provare a spiegarlo ancora una volta.


La stringa di predittori con indice 1 si ottiene = dalla SECONDA e dalla prima stringa di predittori. Il risultato viene scritto al posto dell'indice 1.

L'obiettivo ha indice =1 e ce l'ha ancora. Ma il suo valore lo prevediamo in base alle informazioni del FUTURO, seconda linea di predittori

Spostare l'obiettivo di 1, cioè invece di Y[1:n] prendere Y[2:n] e calcolare