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

 
マキシム・ドミトリエフスキー

はい、カーネルではなく、cosとランダム次数の変換関数です。

RDFはファイル構造を保存するので、サンプルや機能が多すぎると、ファイルが大きくなりすぎます。)しかし、異なる特徴を持つエージェントの数を増やすことで、分類誤差を減らし、モデルの安定性を向上させることができます。

次の瞬間 - 私の経験では、データが大きい!=新しいデータでの精度が高い。予測変数が悪ければ、結果も同じように悪いものになる

また、gdmhは非常に小さなデータセットでも動作するため、将来のデータにも適していると言える。

でも...ロジスティック回帰+gdmhのような単純なモデル(RDFの代わり)を適用できるので、学習処理は非常に高速になるが、精度についてはわからない。

GMDHについては、最初にお話があったときに、まさにそのようにお伝えしました。GMDH自体がNeural Networkとして動作するため、ここではRDFを使用しない。

 
マキシム・ドミトリエフスキー

そうですね、違いはありますね。RDFで判断を下すには、すべてのノードとリーフを経由する必要がある。そのため、RDF構造が大きい場合、1回の判定にかかる時間が長くなります。

そのためには、高速に応答する極めて高速なモデル(高速学習型NN)を使用することが望ましい。またはGPUを含むより優れたハードウェア

もう一つ問題なのは、RDFはデータのノイズに敏感なため、ほとんどの場合オーバーフィットしてしまうことです。このノイズの影響を軽減するために、LDAやPCA層をアルゴリズムに埋め込むと良い

というわけで、これは一見すると些細なことではあるのですが

現在のRDFの実装と以前のRDFの実装は全く別物ということですか?このRDFバージョンは、ポリシーか何かを使っているのでしょうか?.rl」ファイルについては、よくわかりません。前バージョンの「Mtrees」ファイルに似ていると思ったのですが。

トレーニングやテストの様子を拝見させてください。モデルやエージェントが非常に大きな値まで正しく実行されないようなことに気づきました。例えば、エージェントを100に、モデルを100に設定しただけです。エージェントは動作しましたが、モデルは各エージェント50で動作しなくなりました。どんな理由かわからないけど。

ちなみに、RDFを使ったアルゴのテストは、基本的なコードはすでに実装されているので、私はあなたの前のバージョンで何千何万という最適化とテストの組み合わせを行ってきたので、あなたの前のバージョンのRDFを一通り理解しているに過ぎないのです。そうでなければ、「ALPHA ZERO」で使われているモンテカルロ法を私のアルゴに統合するために、完全なコードを書かなければなりませんが、私は専門家ではないので、かなり時間がかかるかもしれません。

 
マキシム・ドミトリエフスキー

こんにちは、手始めにこのコードを解明してみてください。

ここでは、1特徴(1入力)ごとにRDFを学習し、最適な特徴の番号をソートした配列(モデル)に保存しています。次に、いくつかのベストを選ぶことができます。

次のステップは、すべての最適な予測因子と他の予測因子を組み合わせて、再度、エラーをチェックし、結果を保存することだと思います。このステップでは、いくつかの多項式を適用することができます。

では、このコードでGMDHを実装する方法を説明します。

コードを説明してもらえると、橋渡しを早く見つけることができます。実は、クラス、オブジェクト、配列など、C++の基本的な概念の構文が少し苦手で、そのため、これらの概念の実装を理解するのに時間がかかっています。

とにかく、見せてください。

この3行をきちんと説明してください。ここで、GMDHを応用する必要があると思います。

        m[i].Set(0,RDFpolicyMatrix[i][bf]); 
        m[i].Set(1,RDFpolicyMatrix[i][bf+1]);
        m[i].Set(2,RDFpolicyMatrix[i][bf+2]);

つまり、この3行にコメントを お願いします。

以前のコードでは、ループの中で何か小さなミスがあったようです。だから、私はここであなたがRDFについて書かれていることを正確に知っていれば提供される橋だと思います:))...私はマトリックスの実装についてあまり知らないので...

 ///---Remaining values of Y starting from Y_1
  for(int i=1;i<3;i++)
  m[i]=CalculateNeuron(a);///---Calculate individual value of Y_1,Y_2,Y_3,...to feed to RDF inputs
 
 
マキシム・ドミトリエフスキー

これは2次元の配列(行列)で、"alglib "ライブラリ形式です。この配列に予測因子(bf)の数(行列のインデックス0)を入れ、次の(1,2)を出力値とします。エラーはこちら)features "と "features-1 "というインデックスを持つ値を設定する必要があります。

m - 現在の行列は,1つの素性と2つの出力を持ちますが,RDFpolicyMatrix は,すべての素性と 出力を持ちます.

一定

こちらの記事で紹介しています http://www.alglib.net/dataanalysis/generalprinciples.php#header0

なるほど、何か誤解があるようですね...GMDHとどのようにリンクさせるか、もう一度コードを確認してみます...

もし思いついたら、私が考える時間を無駄にしないためにも、更新してください:))

RDFとGMDHは似ていて、それ故に融合が難しくなっているのでは...と思います。

もう一度考えさせてください...。

 
マキシム・ドミトリエフスキー:

いいえ、簡単に統合できます ...gdmhでは入力ベクトルだけを変更し、いくつかの変換をするだけです。

次のステップでは,予測変数のグループをチェックし,他のものと結合します(前の選択からわずかしかありません).

そして、このループは、あなたが参照している特徴変換のためにすべてを行うことができます。

次に、Neuronを計算する機能 です。

次に、Y_Final=Y_All+Y_0とする。

今回、入力を3つに分割しましたが、必要であればいくつでも拡張できます......。

ここで、入力は特徴量または予測値、重みはランダムな重みです...最初はランダム関数からそれらを取ることができ、後でそれらは学習後にRDF内に保存されます。

 
マキシム・ドミトリエフスキー

今すぐマトリックス用にリメイクしてみてください ))

でも...各ステップで別々の予測変数が必要で、行列を拡張して特徴を追加し、再度エラーをチェックする。

OK、少し時間をください、すぐに準備します。

OK、それなら問題ありません。別々の予測変数の「+」記号を削除すれば、個々の予測変数が得られます。

/// --- Remaining values ​​of Y starting from Y_1 
  for ( int a = 1 ; a < 3 ; a ++) 
  Y_All [a]=CalculateNeuron (a); /// --- Calculate the individual value of Y_1, Y_2, Y_3, ... to feed to RDF inputs...Here feature transformation done

しかし、もしもっと良い方法があれば、それは素晴らしいことです:)).なぜなら、これは複数のforループのために非常に遅くなるからです...だから非常に粗い実装です:)).

私はこのコードを1時間で書いたので、このコードは好きではないくらいです:))

マトリックスが脳に入ってこない:)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 
マキシム・ドミトリエフスキー

へへ2次元マトリックスのソートはどうでしょうか?:)

また、EAの最終バージョンでは、少なくともあと数種類の予測変数の実装をお願いすることになります。

1.いくつかの発振器インジケーター

2.いくつかのトレンド指標

3.一部のボリューム表示

4.高い時間枠の指標(ノイズの多いシグナルに対する良いフィルター)

5.一部のダイレクトクローズ価格

そうでないと、何か追加しなければならないときに、何度もお願いしなければならないからです :)))...。

市場の変化に応じて、ローソク足ごとに1つのシステムから別のシステムに瞬時に切り替えることができれば、本当に素晴らしいことです!...実際、スプライン、特徴変換、カーネル トリックなどについて言及されたとき、それが私がこのバージョンに期待した当初の目的でした...カーネルトリックは、大規模データに対しても通常のサーバーではるかに高速化できるよう助けてくれました...では、今は完全に学習したモデルと高速変換のみに頼らなければならないのですね...。

ところで、過去2日間のフォワードテストから、このバージョンのRDFは、以前のバージョンのRDFと比較して、少し安定性と信頼性が高いようだと言わざるを得ません...つまり、フォワードテストはバックテストと多少一致しますが...以前のバージョンでは、最適化データでほとんどオーバーフィットしていたのです。

 
マキシム・ドミトリエフスキー

前バージョンは、あくまでコンセプトであり、基本的な考え方でした。

終値の代わりに、インジケータを追加することができます。

いや、1つのインジケータではなく、"ag1.agent "の配列ループの中で複数のインジケータを同時に適用すると混乱するんです。

ArraySize(ag1.agent)の代わりに何を使用すればよいのでしょうか?

for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }

では、上記のコードは、以下のようなエージェントの宣言で正しいのでしょうか?

CRLAgents *ag1=new CRLAgents("RlExp1iter",5,100,50,regularize,learn);///----Here

その日から、少なくとも2万回以上のテストと最適化を、すべてのサーバーとあらゆる設定の組み合わせで行い、それゆえ、全体のコンセプトはよりよく理解できるようになりました。

そして、このアルゴが時間とともにある程度収束し始めたとしても、私はあなたが公表するものより少なくとも2〜3倍良いパフォーマンスをするようにコードを最適化できることを約束できます :))...すべて私の経験と観察からです :))...

それとも、この下のコードが正しいのでしょうか?

Or

for(int i=0;i<50;i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=50;i<100;i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
 
マキシム・ドミトリエフスキー

ありがとうございました。これで、もっと多くの指標をこなせそうです。)

 
マキシム・ドミトリエフスキー:

あるいは、このように、もっとシンプルに

はい、好きです。これは私のタイプです :))

前の例は非常に条件的なもので、これ以上予測子を増やすことはできない・・・。

ちなみに、この方法でランダムキャンドルシミュレーションを行ったのですが、トレーニングのためにトレードのエントリー価格とエグジット価格も変更しなければならず、混乱してしまいました......。

とりあえず、これらのインジケータの方法を試して、テストして、後でキャンドルシミュレーションの方法を試してみようと思います。)

理由: