# 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)
}
你能给我举个行政干事的例子吗?在我的印象中,找老师是个零活,适合自动化。
你可以
你需要让它尽可能简单和可复制,如果有兴趣的话...
这需要一点时间
你可以...
如果大家有兴趣,我们需要让示例尽可能简单、可复制...
您需要一点时间
我很感兴趣我寻找老师的过程漫长而痛苦。
你的问题是一个优化问题,需要搜索未知参数。
以下是您学习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 的代码、
拟合函数(我们的目标)是找到美丽/稳定的利润增长,即资产负债表动态与直线增长之间的最大相关性。
下面是计算利润和 FF 的函数代码。
结果如下,AO 为 AMO 找到了这样一个目标,如果我们交易它的信号,就会获得漂亮的利润增长。
谢谢!
这个答案立即引出了手动交易的具体化问题,在这个问题上,信号的清晰度和具体化、信号的多样性和过度灵活性都是缺失的。也就是说,这个问题值得深思。
我仍然无法将手动交易具体化....
以下是使用 AO 工具教授 Rendom Forrest 的代码、
拟合函数(我们的目标)--找到美丽/稳定的利润增长,即资产负债表动态与直线上升之间的最大相关性
以下是利润和 FF 计算函数的代码
结果如下,AO 为 AMO 找到了这样一个目标,如果我们交易它的信号,我们将获得漂亮的利润增长
我不会说我懒得做任何其他标记,我会尝试不同的变体,由于我不是机器学习方面的专家,当我想到一些想法时,我会尝试至少找到一些变体示例,并尝试实现结果。
当我尝试用自己的指标值制作参数化版本的解决方案时,却发现指标值集有如此多的变体,以目前的计算能力,选择参数几乎要花费 10 年时间)。
当我读到 "从市场中获取任何有利可图的 TS "这句话时,我感到非常惊讶。我甚至没有考虑过这个选项,因为我认为它们根本不存在。
那又怎样?这是一个没有 FF 的简单标记。
如果真那么简单,就不会有 AO 和 FF 了......
当我们清楚地知道我们需要什么,并了解如何对其进行算法化时,我们就可以用标记来实现它。
在有些情况下,我们只想说: "我不知道它应该是什么样子,但要让它 看起来 不错"。
我们所能描述的就是好/坏,这就是 FF 的内容。
下面是一个任务示例:
任务是 训练一个 AMO,使其在预测某一类的新数据时不会出错,同时禁止某一类出错......
如何制作这样的标记?
如果真那么简单,就不会有 AO 和 FF 了。
当你清楚地知道自己需要什么,并了解如何将其算法化,你就可以使用标记。
在有些情况下,我们只想说-- 我不知道它应该是什么样子, 但要让它 看起来 不错。
我们所能描述的就是好/坏,这就是 FF 的内置功能。
下面是一个任务示例:
任务是 训练 AMO,使其在预测某一类的新数据时不会出错,其中一类禁止出错....。
如何使用标记来实现这一点?
做完标记后,把亏损的交易扔到第三个类中,就能得到同样平滑的曲线。
这就是你要为这些类写多少代码,扔掉它们,重新训练......
在 FF 中,我只需写两行代码,对错误的类进行惩罚,对正确的答案进行奖励,仅此而已,然后它就会自己幻想如何做到这一点,而不需要堆积如山的代码....。
好了,这很简单,再举一个任务的例子
AMO 的输入是欧元,我 希望 输出的 序列 是
1) 与英镑协整
2)如果我们交易套利 AMO 行/英镑,这样就有利润。
如何通过标记实现这一点?
与常规 MO 相同,我们在训练时一只眼睛盯着赛道,另一只眼睛盯着测试。