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

 
Aleksey Vyazmikin #:

你曾经制作过一个脚本,我决定再次使用。

我在一个样本 上运行了这个脚本,结果出现了一个错误--我不知道在哪里可以找到这个错误,也不知道如何解决这个问题--也许你知道,因为你使用了这些库/包?

在二进制样本上一切正常。

错误说相关矩阵中出现了未定义值(NA),findCorrelation 函数无法使用它。打开软件包,阅读函数说明。

脚本杂乱无章,存在大量不必要的中间结果。

#=====================================================================
 require(tidyft)
#--get  df1------------------------------------------------------------
way <-         "D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup"
df1 = read.csv(paste0(way, "train.csv"), header = TRUE, sep = ";",dec = ".")
#df1 = fread(paste0(way, "train1.csv"))
#fst::write_fst(df1, "train1.fst")
#-----archiv--------------------------------
 ft <- as_fst(df1) #
 rm(df1)


#---constanti--------------------------------------------
 cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  #  диапазон перебора в коеф корр
not.used.colums = c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100")

ft %>% select_fst(cols = not.used.colums, negate = TRUE)-> dt
#--function--------------------------------------------
 get.findCor<- function(data , cor.coef = cor.test.range){
    import::here(.from = caret, findCor = findCorrelation)
    data %>%
        cor(method = "kendall", use = "pairwise" ) %>%
        findCor(cutoff = cor.coef, exact = FALSE, names = TRUE)->nms
        if(nms!= 0)
        select_dt(data, cols = nms, negate = TRUE)
}
#----Calculate--------------------------------------------------------------
for(i in seq_len(length(cor.test.range))){
    get.findCor(dt, cor.coef = cor.test.range[i])-> dt.n
    paste0("train2_" , cor.test.range[i]*10 , ".csv") %>%
        paste0(way , .) %>% fwrite(dt.n, .)
    rm(dt.n)
}

按顺序解释:

1.您不需要将 "caret "软件包加载到全局作用域。它非常重,需要大量依赖和数据。你只需要它的一个函数。您可以直接将其导入 get.findCor 函数。

tidyft 软件包是一个非常快速的数据帧操作软件包。请使用它。

 

为了进行控制,我使用此脚本在我的工具包上进行了测试。结果:

# patch <- "C:/RData/Project/FEDOT/"
# df1 <- fread(paste0(patch, "DF_train_M5.csv"))
# object.size(df1) #780184 bytes
# dim(df1) #[1] 4030   25
# ft <- as_fst(df1)#
# rm(df1)
#ft %>% select_fst(cols = c(1:3,25), negate = TRUE)-> dt
#dim(dt) [1] 4030   21
bench::workout({
    for(i in seq_len(length(cor.test.range))){
        get.findCor(dt, cor.coef = cor.test.range[i])-> dt.n
        paste0("train2_" , cor.test.range[i]*10 , ".csv") %>%
            paste0(patch , .) %>% fwrite(dt.n, .)
        rm(dt.n)
    }
})->t1 #(12.9  m)
setwd(patch)
dim(fread("train2_1.csv"))
#[1] 4030    3
dim(fread("train2_2.csv"))
#[1] 4030    6
dim(fread("train2_3.csv"))
#[1] 4030   10
dim(fread("train2_4.csv"))
#[1] 4030   13
dim(fread("train2_5.csv"))
#[1] 4030   16
dim(fread("train2_6.csv"))
#[1] 4030   17
dim(fread("train2_7.csv"))
#[1] 4030   18
dim(fread("train2_8.csv"))
#[1] 4030   18
dim(fread("train2_9.csv"))
#[1] 4030   18

计数时间相当长(12.9 分钟)。但帧数也不小。当然,我们需要将其并行化,寻找更快的 cor 函数。

从最初的 21 个不同阈值的预测器中,我们选择了不同数量的预测器。

但这并不是办法。

祝您好运

 
СанСаныч Фоменко #:

你没有注意到 sd 的可变性

下次我会注意的,我会从 sd 计算 sd 从 sd 计算 sd %)

 

将特征窗口的偏移量与某个指标(如 std)绑定没有任何结果

值越大,该值的偏移倍数就越大。

反之亦然。两种方法都试过。

还有一种扩展-缩小的变体(+ 偏移量?

我只能在分形的框架内列举这些变体。

 
Vladimir Perervenko #:

1.您不需要将 "caret "软件包加载到全局范围。它非常重,需要大量的依赖关系和数据。您只需要其中的一个函数。您可以直接将其导入 get.findCor 函数。

哇,好空洞

Vladimir Perervenko#

弗拉基米尔,你知道是否有一个用于回溯测试的软件包,它能记录交易日志和一切(嗯,不原始),除了慢速的 "quantstrat "和 "SIT"。

 
Maxim Dmitrievsky #:

将特征窗口的偏移绑定到某个指标(如 std)后,没有任何结果

值越大,该值的偏移倍数就越大。

反之亦然。我两种方法都试过。

还有一个选项是扩展-缩小(+ 偏移量?

在分形框架内,我只能看到这种变体的过冲现象

当然可以。

每一步 必须重新计算。

 
СанСаныч Фоменко #:

当然可以。

每一步 要重新计算。

我觉得在一个大型数据集上重新计算标签和特征比重新训练每一个条形图要容易得多,因为这样会卡住很长时间。

而且,如果从全局来看,通过频繁的重新训练,你可以确定一些一般模式。当然,除非这种设计是倾泻式的。
 
Maxim Dmitrievsky #:

对我来说,在大型数据集上重新计算标签与芯片的方法比重新训练每一个条形图要容易得,因为我会 困在 那里很长时间。

完全同意,这就是我不能改用 EA 的原因。

但这是个原则问题。我之所以改用 "每一步都教 "方案,是因为在准备整个数据集时,会出现隐藏的前瞻性问题。我也有这样的问题,而且我还没有找到能产生 "前瞻 "效应的预测因子。

 
СанСаныч Фоменко #:

完全同意,这就是它未能进入 EA 的原因。

但这是一个原则问题。我之所以改用 "步步为营 "方案,是因为在准备整个数据集时,会出现隐藏的 "窥视前方 "现象。我也遇到了这样的问题,而且我一直找不到能产生 "瞻前顾后 "效应的预测因子。

在训练部分和测试之间留出间隙。至少几天。最后一个条形图的未来与第一个未知数的未来相同。
,这就是所谓的 "禁运图"。
一旦训练缩减为 1 天,测试为 1 天。并观察几天前的标价预测。也就是说,它看到的是新的条形图。
随着训练间隔增加到一周,结果也高于 50/50。嗯,越多 - 越糟,有偷看的线被添加到没有偷看的线中,它们破坏了一切))))


一般来说,这种禁演情节对教师来说应该不亚于偷看。

 
mytarmailS #:

哇,好空洞的东西

弗拉基米尔,你知道除了慢速的 "quantstrat "和 "SIT "之外,是否有一种用于回溯测试的软件包可以记录交易日志和所有信息(嗯,不原始)。

我不知道。我没有遇到过