# 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) 適性関数(p.1)のために、取引用のシグナルを生成する任意のMOアルゴリズム。
3) AMOのターゲットとなるシグナルを生成する最適化アルゴリズム(遺伝的、粒子群、チャーン) (p.2)
このようなアルゴリズム
1) AOがAMOのターゲットを作る
2) AMOはこのターゲットでトレーニングされる
3) AMOが売買シグナルの予測を作成する
4) FFによって売買シグナルが評価され、結果が出される
5) FFの結果がAOによって評価され、さらに最大化/最小化される。
==========
AO - 最適化アルゴリズム
AMO - 機械学習アルゴリズム
FF - 適性関数
=========
ps.AMOを使用せずにneuronkaを使用したい場合は、ターゲティングを学習することなく、AOを使用して重みを変更することができます。
ありがとうございました!
この答えの定式化は、シグナルの明確さと具体性、その多様性と過度の柔軟性が欠けているマニュアル取引の具体化という問題にすぐにつながった。つまり、考える材料があるということだ。
私にとってはとても興味深い。私の先生探しは長く苦しいものです。
以下は、AOを使ったrendom forestのティーチングのコードである、
フィットネス関数(我々の目的)は、美しい/安定した利益成長、すなわちバランスシートのダイナミクスと直線成長線との間の最大の相関を見つけることである。
以下は、利益とFFを計算する関数のコードである。
その結果、AOはAMOのターゲットを見つけ、そのシグナルを取引すれば、美しい利益成長を得ることができる。
ありがとう!
この答えはすぐに、シグナルの明確さ、具体性、多様性、過度の柔軟性が欠けているマニュアル取引の具体化という疑問につながった。つまり、考える材料があるということだ。
私はまだマニュアル・トレードを具体化できない......。
これが、AOツールでレンドーム・フォレストを教えるためのコードだ、
フィットネス関数(我々の目的) - 美しく安定した利益成長、すなわちバランスシートのダイナミクスと直線的な上昇ラインとの最大相関を見つけること。
以下は、利益とFF計算関数のコードである。
その結果、AOはAMOのシグナルをトレードすることで、美しい利益の伸びを得ることができます。
私は機械学習の専門家ではないので、何かアイデアが浮かんだら、その結果を達成するために、少なくともいくつかのバリエーションの例を見つけるようにしている。
私は指標の独自の値を持つソリューションのパラメトリック・バージョンを作ろうとしましたが、指標の値のセットには非常に多くのバリエーションがあることが判明し、現在の計算能力ではパラメータの選択は10年近く行われるでしょう)。
私は "市場から任意の有益なTSを取る "というフレーズを読んだとき、私は驚きました。この選択肢はないと思っていたからだ。
だから何?FFのないシンプルなマークアップだ。
そんな単純なものだったら、AOもFFも存在しない...。
必要なものがはっきりわかっていて、それをアルゴリズム化する方法を理解しているときこそ、マークアップでできるんだ。
そして、「 どう見えるべきか わからない けど、よく 見える ようにしてくれ」と言いたいだけの場合もある。
私たちが記述できるのは良い/悪いだけであり、それがFFに反映されるのだ。
ここにタスクの例がある:
タスクは、クラスの1つに関する新しいデータで予測を間違えないようなAMOを訓練することです。
このようなマークアップを作るには?
そんな簡単なことなら、AOもFFも存在しない。
必要なものがはっきりわかっていて、それをアルゴリズム化する方法を理解していれば、マークアップを使うことができる。
どう あるべきかわからない が、 見栄えは よくして くれ」と言いたいだけの場合もある。
私たちが記述できるのは良い/悪いだけで、それがFFに組み込まれている。
タスクの例を挙げよう:
タスクは、AMOがクラスの1つに関する新しいデータで予測を間違えないように訓練することである。
マークアップでこれを行うには?
マークアップした後、負けたトレードを3番目のクラスに捨てると、同じ滑らかなカーブが得られる。
このように、クラスを捨てたり、再教育したり...と、多くのコードを書かなければなりません。
FFでは2行書くだけで、クラスのエラーにペナルティを与え、正解に報酬を与える。
よし、簡単だった。別のタスクの例を挙げよう。
AMOの入力はユーロドルである 。
1) ポンドと共積分する。
2) 裁定取引でAMO行/ポンドを取引し、利益が出るようにする。
これはマークアップによってどのように実現できますか?
通常のMOと同じように、我々は訓練し、トラックに片方の目で見て、テストにもう片方の目。