トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 680

 

Rからmqlにニューロンを転送する方法というテーマで。

パッケージnnetでやってみた。https://cran.r-project.org/web/packages/nnet/index.html(パッケージ情報: nnet_7.3-12.tar.gz) を参照してください。アーカイブの中に src / nnet.c フォルダがあります。

関数fpassが必要で,thisError = 0.0より前の最初の数行(これはバックプロップ用のエラー計算の開始で,単純な予測には必要ない).


これは、私たちのEAで使用できるコードです。

   double sigmoid(double sum)
     {
      if(sum<-15.0)
         return (0.0);
      else if(sum>15.0)
         return (1.0);
      else
         return (1.0 / (1.0 + exp(-sum)));
     }

//nnet_hidden - число нейронов в скрытом слое
//выход один
//nnet_weights - массив с весами нейронки взятыми из R после обучения nnet модели

int weights_it=0;
double hiddenLayer[];
ArrayResize(hiddenLayer,nnet_hidden);
for(int i=0; i<nnet_hidden; i++)
 {
  hiddenLayer[i]=nnet_weights[weights_it++];
  for(int j=1; j<=nnet_bars; j++)
    {
     hiddenLayer[i]+=openPrices[j]*nnet_weights[weights_it++];
    }
  hiddenLayer[i]=sigmoid(hiddenLayer[i]);
 }
double prediction=nnet_weights[weights_it++];
for(int i=0; i<nnet_hidden; i++)
 {
  prediction+=hiddenLayer[i]*nnet_weights[weights_it++];
 }
if(!linout)
 {
  prediction = sigmoid(prediction);
 }

このコードは、モデルパラメータskip = FALSEのときのみ動作します。
そうでない場合、あるいはソフトマックスが使われている場合、fpass()関数の違いを見てください。


重み (配列 nnet_weights) は,学習後に R 自身からコピーする必要があります.

library(nnet)
trainedModel <- nnet(y = 1:10, x = matrix(runif(20),ncol=2), size=10)
nnet_weights <- trainedModel$wts
cat("double nnet_weights[] = {", paste(format(weights,digits=16,scientific=T), collapse=","), "};", file="D:/weights.txt") #сохранить  веса в файлик чтоб оттуда скопипастить в советник
 
О!それはそれでアリですね。もう少し手を加えれば、使えるようになります。ありがとうございます!(笑)。
 

もう一つ、強化に関する小さな入門記事ですが、ポイントは

mqlに関する小さなチームワークとブレインストーミングのセッションを開催し、経験を共有することができれば面白いと思います。

https://proglib.io/p/trade-learning/

Трейдинг и машинное обучение с подкреплением
Трейдинг и машинное обучение с подкреплением
  • 2018.02.15
  • matyushkin
  • proglib.io
В статье рассмотрено, как машинное обучение с подкреплением может применяться для трейдинга финансовых рынков и криптовалютных бирж. Академическое сообщество Deep Learning в основном находится в стороне от финансовых рынков. В силу ли того, что у финансовой индустрии не лучшая репутация, что решаемые проблемы не кажутся слишком интересными для...
 

私の考えでは、強化学習は通常、非常に大きなオーバーフィットを持つモデルを与えるので、この場合、クロスバリデーションは保存されません。オーバーフィッティングに対して、モデル自体に何か特別な仕組みがあるのでしょう。

このテーマに詳しくない方のために簡単に説明すると、通常のモデル評価(accuracy, r2, loglossなど)の代わりに、独自のモデル評価ロジックを持つ特別なフィットネス関数を作成する。このようなフィットネス関数は、例えば、トレーディング時のモデルの利益やシャープネスを計算することができる。そして、モデルパラメータは遺伝的アルゴリズムによって 選択される。

MT4とMT5のオプティマイザは、強化学習の原理で動作します。各バー(またはティック)でExpert Advisorは価格と指標の現在値を受け取り、いくつかの決定を行い、Expert Advisorの最終推定値が取引結果とみなされます。Expert Advisorのパラメータは、推定値を上げるために遺伝的に選択されます。
MT5で自由に使えるExpert Advisorから判断すると、この学習方法は多くの敗者を出していることがよくわかります。でも、たまにはいいEAもありますよ。

 
Dr.トレーダー

私の考えでは、強化学習は通常、非常に大きなオーバーハングを持つモデルを与えるので、この場合、クロスバリデーションは保存されません。オーバーフィッティングに対して、モデル自体に何か特別な仕組みがあるのでしょう。

このテーマに詳しくない方のために簡単に説明すると、通常のモデル評価(accuracy, r2, loglossなど)の代わりに、独自のモデル評価ロジックを持つ特別なフィットネス関数を作成する。このようなフィットネス関数は、例えば、トレーディング時のモデルの利益やシャープネスを計算することができる。そして、モデルパラメータは遺伝的アルゴリズムによって 選択される。

興味深いのは、MT4とMT5のオプティマイザも強化学習の原理で動作することです。各バー(またはティック)でExpert Advisorは価格と指標の現在値を受け取り、いくつかの決定を行い、Expert Advisorの最終推定値が取引の結果となります。Expert Advisorのパラメータは、推定値を上げるために遺伝的に選択されます。
MT5で自由に使えるExpert Advisorから判断すると、この学習方法は多くの敗者を出していることがよくわかります。しかし、時には良いEAもあります。

オプティマイザーに例えると、私の前のbotはそれについてでしたが、シンプルすぎました。

しかし、一般的にはそうではありません。RLは遺伝学と対立するものでなければ、その利点、たとえば非定常過程に取り組む可能性などを強調します。特に、非貪欲なフィットネス関数を使用することが可能であり、そのおかげで、モデルは実行中に常に学習し、ランダムなステップを行うことができるのである。そして、オプティマイザとしてNS(not genetics)スタッフィングを使用しています。

そこはもう少し複雑なのですが、まだ読み終えていません。

ですから、ジェネティックス、オプティマイザー、RLに関するあなたの発言は正しくありません。

 

* a moment of emotion and philosophy and all that stuff*

快晴の日を想像してください。池のほとりの芝生に座っていると、暖かい春風が吹き、水面に波紋を残し、鴨の鳴き声が近くから聞こえてきます。浅いところでは水中を泳ぎ、時にはヒレで水面に触れ、水中で円を描いていた。近所の人が水をすくい、孫が石を投げ入れ、カエルを左右に追っていた。池の向こう側では、ある男が車を洗っている。

価格は、すべての騒動から水面の波のようなものですが、嵐の時も同様です。波を追いかけて、ある地点で水が上がるか下がるかを推測することはできますが、環境を追いかけなければ、ほとんどの場合間違ってしまうでしょう。

将来の価格価値は、過去の価格変動に依存するのではなく、過去の価格変動を引き起こし、新たな価格変動を引き起こすであろうグローバルなプロセスに依存するのである。
水面の波だけでなく、風や魚の軌跡、隣のバケツなどを監視していれば、水面の波の性質が明確になり、予測できるようになるのです。

したがって、価格に影響を与えるすべてのグローバルなプロセスの情報があれば、予測を学ぶことができ、前世紀のどんなシンプルなモデルでもよいのです。
問題は、通常、価格チャートしかなく、それだけでは十分でないことです。

 

RLとNNの接続方法について説明 します。

 

とVIDEOがあり、さらにパート2があります。

以上、もうスパムはしません、興味のある人は読んでみてください。


 
MTのニューラルネットワークはシンプルだ。マイクロソフトのCNTKというライブラリがあります。Python、C#、C++用に実装されています。ネットワークの解析と学習はすべてPythonで行い、C++は学習済みのネットワークをロードしてそれを使って計算を行うDLLを記述するために使用します。私としては、これがベストな選択だと思います。第二の選択肢、PythonとMTの接続。そのための簡単なライブラリを書きました。図書館 それを接続し、Pythonで利用できるものはすべて利用することができるのです。しかも、いろいろなものが用意されている。ブログで機械学習について書き始めるかどうか悩んでいます。
 
グリゴーリイ チャーニン
MTのニューラルネットワークは、すべてがシンプルです。マイクロソフト社のCNTKというライブラリがあります。Python、C#、C++用に実装されています。ネットワークの解析と学習はすべてPythonで行い、C++は学習したネットワークをロードし、それを使って計算を行うDLLの記述に使用します。私としては、これがベストな選択だと思います。第二の選択肢、PythonとMTの接続。そのための簡単なライブラリを書きました。図書館 それを接続し、Pythonで利用できるものはすべて利用することができるのです。しかも、いろいろなものが用意されている。ブログで機械学習について書き始めるかどうか悩んでいます。

戦略や個人の感想・経験談を読むと面白いかもしれませんね。

というのも、ここに書かれていることは、ほとんどが、たくさんのライブラリを調べて、何が良いかを書いているだけの駄文だからです...流行り廃りがあり、すべてが無駄になってしまいます。

基本的な考え方は、ずっと前にfxsaberさんが言っていたことですが、同じようなアプローチでは、元々間違っているので、このテーマはクローズした方がいいかもしれません。