交易中的机器学习:理论、模型、实践和算法交易 - 页 265

 
桑桑尼茨-弗门科
试了一下,但很快就坏了: 不清楚该如何处理输出孔 的问题。

周末在迪斯科舞厅打洞 :)

你什么时候才能学会正确引用? 你不必为了写三个字而引用论坛的半页内容......

现在开始讨论这个问题

我制作了各种烛台组合和其他东西,借助于我试着用蜡烛 图来教它,结果在训练和新数据上都是100%的训练和错误为0,很明显,数据中存在一些预测因子,可以预见未来。因此,我没有必要研究每个函数,我只是删除了前6个预测因子,根据福雷斯特版本,这些预测因子是最重要的,从其他预测因子中脱颖而出,我希望其中有那些展望未来的预测因子,并再次训练MO,误差约为3%,总之,我不知道什么是地狱,为什么有如此美妙的结果,也许错误是在我的代码中。..

Karoch想了解这是我如何做样本的代码,我的目标是 "蜡烛颜色"。

在代码中,仅仅是样本本身,目标和其他操作都是按照你的要求进行的。

试一试吧,因为这就像给你的模型增加了30个功能。

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:

桑尼奇,你什么时候才能学会正确引用?

预测者不展望未来--他们重复目标。

正向测试在哪里?讨论培训有什么意义?

PS

都是应要求而来

 
桑桑尼茨-弗门科

预测者不着眼于未来--他们重复目标。

正向测试在哪里?关于培训,有什么可讨论的?

只要试着在你的网站上教它,并写下你的收获,然后我们就有东西可以讨论了,我希望...
 
mytarmailS:
只要自己尝试一下,并写下你得到的东西,然后就会有一些东西可以讨论,希望...

我理解这个原因。

现在,一个新的价格已经进来了,所有的预测器都被计算在上面,然后同样的价格也被计算在这些预测器上--我们根本就没有预测。拟合误差为零。我没有看到任何令人惊讶的事情。

如果预测是有趣的,那么D就向左移动一步。这个模型提前一步预测。你可以预测几个

 
桑桑尼茨-弗门科

我理解这个原因。

现在,一个新的价格已经进来了,所有的预测器都被计算在上面,然后同样的价格也被计算在这些预测器上--我们根本就没有预测。拟合误差为零。我没有看到任何令人惊讶的事情。

如果预测是有趣的,那么D就向左移动一步。这个模型预测了一个步骤。

你说 新的价格进来 是什么意思?

我给你的代码只是根据从FINAM下载的价格制作预测器。

则数据被保存。

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

然后我们 新的脚本 打开这个数据,设置目标价格 并教授MO。

它无处可来。当然,根据预测,我把目标价格移了一步,这不是我第一次训练。

所以还有别的东西在那里

还是我不理解你?
 
mytarmailS:

你说 新的价格进来 是什么意思?

我给出的代码只是根据从FINAM下载的价格制作预测器。

然后数据被保存

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

然后我们在一个新的脚本中打开这个数据candle_dat.RData,做一个目标并教给MO。

它无处可来。当然,我根据预测,将目标一步步转移。

所以这不是我第一次这样做了。

还是我误解了你的意思?
目标是什么?
 
桑桑尼茨-弗门科
目标是什么?

掐指一算,比之前的掐指一算要高。

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:

上文中提到的 "回文 "比前文中的 "回文 "要低。

我搞不清楚目标的转变在哪里?差异化时?但第一行预测器,即从2中减去得到的预测器,我们与目标的第1个值相匹配,即我们知道目标的下一个值,索引为2。
 
桑桑尼茨-弗门科
我搞不清楚目标的转变在哪里?差异化时?但是,第一行预测器,即从2中减去得到的预测器,我们把目标的第1个值,即我们KNOW了索引为2的目标的下一个值。

当进行微分时,转变是自动的,因为系列变得短了一个元素,那么所需要的就是缩短样本(有观测值的表格)的最后一个元素。

这里有一个例子

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

Y <- diff(SomeData)

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


我们得到

   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:

当进行区分时,转变是自动的,因为该行变得短了一个元素,然后只需要将样本缩短最后一个元素就可以了

需要向左 偏移的不是预测因素,而是目标。

让我再试着解释一次。


索引为1的预测器串=从SECOND和第一串预测器中获得。结果被写在索引为1的地方。

目标的索引=1,并且仍然有。但它的价值我们是根据来自未来的信息来预测的,第二线的预测因素

将目标移1,即不取Y[1:n]而取Y[2:n],并计算出