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

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

你能给我举个行政干事的例子吗?在我的印象中,找老师是个零活,适合自动化。

你可以

你需要让它尽可能简单和可复制,如果有兴趣的话...

这需要一点时间

 
mytarmailS #:

你可以...

如果大家有兴趣,我们需要让示例尽可能简单、可复制...

您需要一点时间

我很感兴趣我寻找老师的过程漫长而痛苦。

 
mytarmailS #:

你的问题是一个优化问题,需要搜索未知参数。

以下是您学习https://www.mql5.com/ru/articles/2225 所需的唯一文章


如果你想教 AMO 如何实现利润最大化和缩水最小化:


您需要

1) 创建一个合适度函数,一个计算交易信号盈利和亏损的函数。

2) 任何可以生成交易信号的 MO 算法,用于拟合函数 (p.1)

3) 任何优化算法(遗传算法、粒子群算法、搅动算法)--将产生信号作为 AMO 的目标(第 2 页)。


这样的算法

1) AO 为 AMO 创建目标

2) 在此目标上训练 AMO

3) AMO 创建交易信号预测

4) 通过 FF 评估交易信号并得出结果

5) FF 结果由 AO 评估,并进一步最大化/最小化,如此循环,直到获得可接受的结果。


==========

AO - 优化算法

AMO - 机器学习算法

FF - 适应度函数

=========


如果您想使用 neuronka 而不使用任何 AMO,您可以通过 AO 更改权重,而无需学习目标。

谢谢!

答案的这一表述立即引出了手动交易的具体化问题,即信号的清晰性和具体性、多样性和过度灵活性的缺失。也就是说,这是一个值得思考的问题。

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

这对我来说非常有趣。我寻找老师的过程漫长而痛苦。

下面是用 AO 教 rendom forest 的代码、

拟合函数(我们的目标)是找到美丽/稳定的利润增长,即资产负债表动态与直线增长之间的最大相关性。

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


下面是计算利润和 FF 的函数代码。

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



结果如下,AO 为 AMO 找到了这样一个目标,如果我们交易它的信号,就会获得漂亮的利润增长。


 
Elvin Nasirov #:

谢谢!

这个答案立即引出了手动交易的具体化问题,在这个问题上,信号的清晰度和具体化、信号的多样性和过度灵活性都是缺失的。也就是说,这个问题值得深思。

我仍然无法将手动交易具体化....

 
mytarmailS #:

以下是使用 AO 工具教授 Rendom Forrest 的代码、

拟合函数(我们的目标)--找到美丽/稳定的利润增长,即资产负债表动态与直线上升之间的最大相关性


以下是利润和 FF 计算函数的代码



结果如下,AO 为 AMO 找到了这样一个目标,如果我们交易它的信号,我们将获得漂亮的利润增长


所以呢?它是如何影响新数据的结果的? 通过简单的标记就可以实现,无需 ff。
 
Elvin Nasirov #:

我不会说我懒得做任何其他标记,我会尝试不同的变体,由于我不是机器学习方面的专家,当我想到一些想法时,我会尝试至少找到一些变体示例,并尝试实现结果。

当我尝试用自己的指标值制作参数化版本的解决方案时,却发现指标值集有如此多的变体,以目前的计算能力,选择参数几乎要花费 10 年时间)。

当我读到 "从市场中获取任何有利可图的 TS "这句话时,我感到非常惊讶。我甚至没有考虑过这个选项,因为我认为它们根本不存在。

这是一种复杂的认识。您需要找到低效。如果自己找不到,就从别人身上找。市场上有历史信号。
 
Maxim Dmitrievsky #:
那又怎样?这是一个没有 FF 的简单标记。

如果真那么简单,就不会有 AO 和 FF 了......


当我们清楚地知道我们需要什么,并了解如何对其进行算法化时,我们就可以用标记来实现它。

在有些情况下,我们只想说: "我不知道它应该是什么样子,但要让它 看起来 不错"。

我们所能描述的就是好/坏,这就是 FF 的内容。


下面是一个任务示例:

任务是 训练一个 AMO,使其在预测某一类的新数据时不会出错,同时禁止某一类出错......

如何制作这样的标记?


 
mytarmailS #:

如果真那么简单,就不会有 AO 和 FF 了。


当你清楚地知道自己需要什么,并了解如何将其算法化,你就可以使用标记。

在有些情况下,我们只想说-- 我不知道它应该是什么样子 但要让它 看起来 不错

我们所能描述的就是好/坏,这就是 FF 的内置功能。


下面是一个任务示例:

任务是 训练 AMO,使其在预测某一类的新数据时不会出错,其中一类禁止出错....。

如何使用标记来实现这一点?


标记后,将亏损的交易扔到第三类中,同样可以得到平坦的曲线。
那么优化标准的选择又如何能对新数据起到作用呢?这是改进现成 TS 的一种手段。搜索自定义亏损,看看新数据中有什么?这也不是个好主意。
 
Maxim Dmitrievsky #:
做完标记后,把亏损的交易扔到第三个类中,就能得到同样平滑的曲线。

这就是你要为这些类写多少代码,扔掉它们,重新训练......

在 FF 中,我只需写两行代码,对错误的类进行惩罚,对正确的答案进行奖励,仅此而已,然后它就会自己幻想如何做到这一点,而不需要堆积如山的代码....。


好了,这很简单,再举一个任务的例子

AMO 的输入是欧元,我 希望 输出的 序列

1) 与英镑协整

2)如果我们交易套利 AMO 行/英镑,这样就有利润。

如何通过标记实现这一点?

马克西姆-德米特里耶夫斯基#:
优化可以为新数据做些什么?

与常规 MO 相同,我们在训练时一只眼睛盯着赛道,另一只眼睛盯着测试。