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

 
elibrarius:

我认为这里不需要计算交易的数量。只需从每笔交易中减去点差和佣金。事情就是这样的。

不是这样的,反正你得算数

 
Vladimir Perervenko:

是的,你的更正确。

不)你的更正确!

因为 "更早 "开出的交易(开出的交易不属于我们的矢量)

这意味着该委员会被 "提前 "撤销了但不在当前矢量中

但这些都是小细节...

 

为有2小时时间的人


 
mytarmailS:

为那些有两个小时时间的人。


它是关于什么的?

 
mytarmailS:

为那些有2小时时间的人


用他的精神分裂的幻想和错误的结论填满年轻人的大脑。

 
mytarmailS:

不)你的更正确!

因为 "更早 "开出的交易(开出的交易不属于我们的矢量)。

这意味着该委员会被 "提前 "撤销了但不在当前矢量中

但这些都是小细节。

除了两件事,这些真的是小事一桩。首先是执行的速度。

cnt<-function(x){
    n <- 1:(length(x)-1)
    cnt <- 0
    for(i in n) {if(x[i]!=x[i+1]) {cnt<-cnt+1}}
    return(cnt)
}
cnt1 <- function(x){
    length(rle(c(x))$values)
}

sig <- rep(c(1,1,1,-1,-1,-1), 3000)

bench::workout({
    c <- cnt(sig)
    c1 <- cnt1(sig)
})
# A tibble: 2 x 3
  exprs            process     real
  <bch:expr>      <bch:tm> <bch:tm>
1 c <- cnt(sig)     15.6 ms   9.21 ms
2 c1 <- cnt1(sig)        0   1.15 ms

第二个人的速度是15倍。而如果它涉及到一个被调用数万次的健身函数,我们将损失很多时间。

第二点。如果我们有两个条件Buy/Sell/,一切都很好,但作为一个规则,TS产生三个信号--Buy/Sell/hold(1,-1,0)。然后第二种变体就不起作用了。而第一种变体稍作修改后

sig <- rep(c(1,1,1,-1,-1,-1,0,0,0), 3000)
> length(sig)
[1] 27000
cnt<-function(x){
    n <- 1:(length(x)-1)
    cnt <- 0
    for(i in n) {if(x[i] != x[i+1] & x[i+1] != 0) {cnt<-cnt+1}}
    return(cnt)
}
bench::workout({
    op <- cnt(sig)
    op1 <- cnt1(sig)
})
# A tibble: 2 x 3
  exprs             process     real
  <bch:expr>       <bch:tm> <bch:tm>
1 op <- cnt(sig)     31.2 ms  17.43 ms
2 op1 <- cnt1(sig)        0   3.23 ms
> op
[1] 5999
> op1
[1] 9000

第一种变体将显示正确的结果(虽然速度很慢),而第二种变体将认为退出位置是一种交易,这是错误的。

 
Vladimir Perervenko:

如果你不考虑两件事,这些确实是小事。首先是执行的速度。

我完全同意...

有什么方法可以用健身函数训练网络或森林吗?
 
mytarmailS:

完全同意...

是否有办法用健身函数训练网络或支架?

健身函数在优化过程中计算出优化标准 的值。这与模型培训没有关系。

 

我们需要在metaq的catbust多类中加入 "无交易"。

战略的范围将增加

 

我在健身功能中加入了一个新的平衡计算和佣金功能...

我认为现在的算法是想尽量减少交易的数量,以节省佣金...因此,较少的交易导致了较少的经验...

这里是图表,你可以清楚地看到,当训练中的交易很少时,学习是没有用的。

灰色是TRAIN 1500点

黑色的是TEST 500点

这个人的交易量很少,阿尔戈没有学到任何东西,它的频率很低...


提前2天知道入境点很有意思 ))

但可能最好一直重新培训,还不知道如何测试这一切