L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 265
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai essayé, mais j'ai vite déchanté : on ne sait pas trop quoi faire avec les trous de sortie.
Les trous sont pris dans les discothèques le week-end :)
Quand vas-tu apprendre à citer correctement ? Tu n'as pas besoin de citer la moitié d'une page du forum pour écrire trois mots...
Passons maintenant au sujet
J'ai fait diverses combinaisons de chandeliers et autres choses avec l'aide de J'ai essayé de l'enseigner avec deschandeliers, il s'est avéré être 100% de formation et d'erreur 0 à la fois sur la formation et de nouvelles données, il est évident qu'il ya des prédicteurs dans les données qui regardent dans l'avenir, Ainsi, je n'ai pas eu à examiner chaque fonction, j'ai juste retiré les 6 premiers prédicteurs qui, selon la version de Forrest, étaient les plus importants et se démarquaient des autres, j'espérais que parmi eux se trouvaient ceux qui regardaient vers l'avenir et j'ai entraîné le MO à nouveau, l'erreur était d'environ 3%, en bref, je ne sais pas ce qui se passe, pourquoi des résultats aussi fabuleux, peut-être que l'erreur se trouve dans mon code ...
Karoch qui veut comprendre c'est le code comment j'ai fait l'échantillon, ma cible était "couleur de bougie".
Dans le code, seule la sélection elle-même, la cible et les autres manipulations font ce que vous voulez.
Essayez-le, expérimentez-le parce que c'est comme 30 fonctions supplémentaires pour votre modèle.
# загружаю последние 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, quand allez-vous apprendre à citer correctement ?
Les prédicteurs ne se projettent pas dans l'avenir - ils répètent l'objectif.
Où se trouve l'essai avant ? Quel est l'intérêt de discuter de la formation ?
PS
Tous par demande
Les prédicteurs ne se tournent pas vers l'avenir - ils répètent l'objectif.
Où se trouve l'essai avant ? Qu'y a-t-il à discuter de la formation ?
Essayez-le par vous-même et notez ce que vous obtenez, et il y aura alors matière à discussion, espérons-le...
Je comprends la raison.
Maintenant, un nouveau prix est entré, tous les prédicteurs ont été calculés dessus, puis le même prix a été calculé sur ces prédicteurs - nous ne prédisons rien du tout. L'erreur d'ajustement est nulle. Je ne vois rien de surprenant.
Si la prédiction est intéressante, alors D se déplace d'un cran vers la gauche. Ce modèle prédit un pas en avant. Vous pouvez prédire plusieurs pas en avant.
Je comprends la raison.
Maintenant, un nouveau prix est entré, tous les prédicteurs ont été calculés dessus, puis le même prix a été calculé sur ces prédicteurs - nous ne prédisons rien du tout. L'erreur d'ajustement est nulle. Je ne vois rien de surprenant.
Si la prédiction est intéressante, alors D se déplace d'un cran vers la gauche. Ce modèle prévoit un pas en avant.
Comment ça, le nouveau prix est arrivé?
Le code que je vous ai donné fait juste des prédicteurs à partir des prix qui sont téléchargés de finam.
puis les données sont sauvegardées.
save(dat,file = "D:/R/candles_lib/candle_dat.RData") # ваш путь
Ensuite, nous ouvrons ces donnéesdans le nouveau script, définissons leprix cible et enseignons le MO.
Il n'a nulle part où aller. Bien sûr, j'ai décalé le prix cible d'un cran, en fonction des prévisions, ce n'est pas la première fois que je l'enseigne...
donc quelque chose d'autre est là
Ou je ne vous comprends pas ?Comment ça, le nouveau prix est arrivé?
le code que j'ai donné fait juste des prédicteurs à partir des prix téléchargés de finam
puis les données sont sauvegardées
save(dat,file = "D:/R/candles_lib/candle_dat.RData") # ваш путь
Ensuite nous ouvrons ces donnéescandle_dat.RData dans un nouveau script, faisons une cible et enseignons le MO.
Il n'a nulle part où aller. Bien sûr, j'ai déplacé la cible d'une étape à l'autre, en fonction des prévisions.
donc ce n'est pas la première fois que je fais ça.
Ou est-ce que je vous ai mal compris ?Quel est l'objectif ?
la cloche est plus élevée que la cloche précédente
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)
la cloche ci-dessus est plus basse que la cloche précédente
Je n'arrive pas à comprendre où se trouve le décalage de la cible ? Lors de la différenciation ? Mais sur la première ligne de prédicteurs, qui est obtenue par soustraction de 2, on met la 1ère valeur de la cible, c'est-à-dire qu'on SAIT les valeurs suivantes pour la cible d'indice 2.
Lors de la différenciation, le changement est automatique, puisque la série devient plus courte d'un élément, il suffit alors de raccourcir l'échantillon (tableau d'observations) du dernier élément.
voici un exemple
Y <- diff(SomeData)
cbind.data.frame( Y , SomeData[-length(SomeData)])
on obtient
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
Lors de la différenciation, le décalage est automatique, puisque la ligne devient plus courte d'un élément, et il suffit alors de raccourcir l'échantillon du dernier élément.
Ce ne sont pas les prédicteurs qui doivent êtredéplacés vers la gauche, mais la cible.
Laissez-moi essayer de l'expliquer une fois de plus.
La chaîne de prédicteurs d'indice 1 est obtenue = à partir de la SECONDE et de la première chaîne de prédicteurs. Le résultat est écrit en place avec l'index 1.
La cible a l'indice =1 et l'a toujours. Mais sa valeur, nous la prédisons sur la base d'informations provenant du FUTUR, deuxième ligne de prédicteurs.
Décalez la cible de 1, c'est-à-dire qu'au lieu de Y[1:n] prenez Y[2:n] et calculez