ニューラルネットワークの入力に投入する指標群を見つけること。ディスカッションを行います。結果を評価するためのツールです。

 

フォーラム参加者、訪問者の皆様へご挨拶申し上げます。


私は、ニューラルネットワークの入力に最適な指標を議論し、探すことに興味があるすべての人に提供したいと思います。

私のプログラムでは、ニューロネットの収益性は、評価ツールとして使用されるかもしれませんが、私はまた、訓練されたニューロネットとMQL4 Expert Advisorをレイアウトすることができます。もちろん、合理的な範囲内で。


私は、任意の数の層と各層のニューロンを持つ自作(Java)のペルセプトロンを持っており、JGAPライブラリ(http://jgap.sourceforge.net/)の遺伝的アルゴリズムでそれを訓練しています。

第1層のニューロン数は入力数と等しく、第2層は-任意に、第3層は1ニューロンである。ニューロネットは取引シグナル(ニューロネットの出力>0.5 - 買い、ニューロネットの出力<-0.5 - 売り)を生成し、そのシグナルは自作の取引テスターによって処理され、ニューロネットのシグナルに基づいてポジションを反転(または、ポジションを持っていない場合は市場に参入)させることができます。遺伝的 アルゴリズムの目標関数は、結果として得られる利益である。このようなアプローチにより、起こりうるあらゆるエラーを最小限に抑え、実際の取引に近い形でトレーニングを行うことができると私は考えています。学習したネットワークをMQL4 Expert Advisorにエクスポートして、MT4のStrategy Testerでテストしています。MT4のインジケーターでニューラルネットワークの入力を形成し、ファイルにダウンロードする。 インジケーターとExpert Advisorはプログラムで形成し、ファイルに書き込む(混乱やエラーが少ない)。

私の場合、4層ネットワークは3層ネットワークより利益が出ない(通常は少ない)のですが、トレーニングに時間がかかります。
Core2 Quadro 2.3で8-10-1ネットワークを4日間学習させました。10本のスレッドが並列に並び、異なる初期集団で「誰が一番儲かるか」を競い合う。4日間で約4000世代、200本の染色体を持つ集団。最初の2000世代で最大の利益が得られ、それ以上では利益は増えなかった。一番利益が増えたのは、最初の100世代です。

MT4のストラテジーテスターでこのネットワークの結果を確認しました。ネットワークが+-0.5の閾値に達することはほとんどなく、トレードシグナルが発動しないことがわかりました。つまり、MQL4へのエクスポートが正しいことを確認しました(JavaとMQL4で同じ値の入力に対して、ネットは同じ値を返します。)しきい値を0.4に下げたらうまくいったような...。すると、Expert Advisorはポジションを一気に反転させることができないことがわかりました...。私のExpert Advisorはバーを閉じ、価格は次のバーの前に移動する時間があります。学習期間(私は1-08-09から1-10-09まで学習中)では、MT4での利益は私のテスターより少なく、MT4でのテスト期間(1-10-09から1-11-09)では、ネットでは利益が出ています。どのようなポイントで採算の合わないエントリーが発生するのかを調べてみると、ニューラルネットワークに入るデータの情報量が不足している印象で...。

I 入力ニューラルネットワーク: (k=100)

a[0]=(iMA(NULL,0, 13,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k;
a[1]=(iMA(NULL,0, 21,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k
a[2]=(iMA(NULL,0, 34,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k
a[3]=(iMA(NULL,0, 55,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k
a[4]=(iMA(NULL,0, 89,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k
a[5]=(iMA(NULL,0, 144,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k*0.9;
a[6]=(iMA(NULL,0, 233,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k*0.8;
a[7]=(iMA(NULL,0, 377,0,MODE_EMA,PRICE_CLOSE, i)-Close[ i])* k*0.6;
指標の仕組みは理解しているが、最低限の指標を自分で選べるほど、指標や相場を理解していない...。

フォーラムを検索して、(このアイデアを得た投稿の著者は、残念ながら覚えていません)見つけました。

a[0]=(iMA(NULL,0, 3,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 5,0,MODE_EMA,PRICE_CLOSE, i))*200;
a[1]=(iMA(NULL,0, 5,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 8,0,MODE_EMA,PRICE_CLOSE, i))*200;
a[2]=(iMA(NULL,0, 8,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 13,0,MODE_EMA,PRICE_CLOSE, i))*200;
a[3]=(iMA(NULL,0, 13,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE, i))*150;
a[4]=(iMA(NULL,0, 21,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 34,0,MODE_EMA,PRICE_CLOSE, i))*150;
a[5]=(iMA(NULL,0, 34,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 55,0,MODE_EMA,PRICE_CLOSE, i))*150;
a[6]=(iMA(NULL,0, 55,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 89,0,MODE_EMA,PRICE_CLOSE, i))*140;
a[7]=(iMA(NULL,0, 89,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 144,0,MODE_EMA,PRICE_CLOSE, i))*130;
a[8]=(iMA(NULL,0, 144,0,MODE_EMA,PRICE_CLOSE, i)-iMA(NULL,0, 233,0,MODE_EMA,PRICE_CLOSE, i))*120;
は、10スレッド、200世代、母集団サイズ200で、1-08-09から1-10-09の期間で調査しました(私のjavaテスターが結果を出しています)。
ネットワーク 9-10-1 : プロフィット 10521
9-20-1 純:利益 10,434
9-30-1 ネットワーク : プロフィット 10361
9-50-1 ネットワーク:利益 10059
結果は良いのですが、前のバージョンの方が良かったような...前のインプットと一緒にしてみないと(前回のトレーニングの結果を保存していないのです)

1から+1までの範囲の値を調整するために、追加の乗算器が必要です。


この文章を読んで、学習したニューラルネットワークをExpert Advisorにエクスポートする際にエラーが発生した可能性を考え、再度テストする必要があります。

追伸:現在、任意の構造のリカレントニューラルネットワークを書いています(私の理解では、リカレントニューラルネットワークは値だけでなく、傾斜角も考慮するようです)。

 

この問題は、あなたと同じようなものです。アプローチの仕方が違うのです。

私はエンジニアよりもさらに遺伝子に疎いのですが、おおよそ理解することができました。

少しお聞きしたいのですが、スコアの最大化という目標機能は、ベストな選択とは言えません。私は上記の例から正しく理解した場合 - あなたはあなたのケースでは、システムのセットを検索しようとしている - 9、まあ、一目で最適化停止利益+もっとファンタジー合計少なくとも一つのシステム(ここでは指標を使用)は、少なくとも2-3百可能なバリアントを持っています。CCIやRSIのようなフレーム内のバリアントは、視野から外れてしまうのです。そして、今この瞬間の魔法のインジケーターを手に入れる。mov(20) -mov(10) > < 0とする。この状況がいつまで続くのか、せめて見積もるには.

 
iliarr >> :

私は、任意の数の層と各層のニューロンを持つ自作(Java)のペルセプトロンを持っています。私は、JGAPライブラリ(http://jgap.sourceforge.net/)の遺伝的アルゴリズムでそれを訓練します。

トレーニングはどのように行うのですか?学習アルゴリズムについて教えてください。

私の記憶が正しければ、JGapは遺伝的アルゴリズムのためのライブラリであり、それ以上でもNSとは関係ありません。おそらく問題は、ゲノムがどのように形成されるのか、そしてフィットネス関数の選択の正しさなのでしょう.

 

Gaでネットワークを鍛えるには、解決できそうにない落とし穴がたくさんある...。少なくとも、Gaでトレーニングする場合、「いつまでトレーニング時と同じようにネットワークが使えるか」というのは、私には無理なように思います。

ns-iで標準予測問題集に行くことをお勧めします。

 
rip >> :

トレーニングはどのように行うのですか?学習アルゴリズムについて教えてください。

私の記憶が正しければ、JGapは単なる遺伝子アルゴリズムのライブラリであり、それ以上のものではなく、NSとは何の関係もない。おそらく問題は、ゲノムの形成方法と、フィットネス関数の正しさなのでしょう。

JGapは遺伝的アルゴリズムを実装したライブラリです。私にとっては、ある長さのベクトルに依存するターゲット関数を与える必要があるブラックボックスです。このライブラリの遺伝的アルゴリズムは、ターゲット関数が最大になるようにこのベクトルの値を選択します。

ivandurak>>:

この問題は、あなたと同じようなものです。アプローチの仕方が違うのです。

私はエンジニアというより、遺伝学者ですが、大筋は理解しています。

少しお聞きしたいのですが、スコアを最大化する目標機能は最良の選択肢ではありません。私は上記の例から正しく理解した場合 - あなたはあなたのケースでは、システムのセットを検索しようとしている - 9、よく、一目で最適化停止利益+もっとファンタジー合計少なくとも一つのシステム(ここでは指標を使用)は、少なくとも2-3百可能なバリエーションを持っています。CCIやRSIのようなフレーム内のバリアントは、視野から外れてしまうのです。そして、今この瞬間の魔法のインジケーターを手に入れる。mov(20) -mov(10) > < 0とする。良性の状況がいつまで続くのか、せめて見積もるには.

残念ながら、最適な指標を探索するだけの計算資源がない(10スレッドでネットワーク9-10-1、200世代、1-08-09から1-10-09までの母数200を1時間かけて学習、ニューロン重み数(遺伝アルゴリズムが拾うベクトルの長さ)=181だが)。

私は市場の状況を反映した指標のセットが必要です。指標はシンプルでなければならず、できれば標準のMT4(実装と可能なエラーの質問)があり、そのうちのわずか30。


ここが好きなんだ...。何をどう書けばいいのか、形にすればいいのか、より理解が深まるのでは...。フォーラムとあなたivandurakに 感謝します。:)

 
iliarr >> :

JGapは遺伝的アルゴリズムを実装したライブラリである。私のターゲット関数は、ある長さのベクトルに依存するターゲット関数を与える必要があるブラックボックスであり、このライブラリの遺伝的アルゴリズムは、ターゲット関数が最大になるようにこのベクトルの値を適合させる。

まさにその通りなのですが...。


JGapに渡すベクトルは、単なるW値のベクトルなのか、それともエンコードされたW値なのか、どのように形成するのでしょうか。

ターゲットとなるf関数とは。例えば、E[i](t) = D[i](t) - Y[i](t) というf関数を対象とした場合、Eは誤差、Dは出力で期待される値、Yは学習サンプルXを与えたときの値、iはニューロン規範、tはエポック数、です。E[i](t) = Sign(D[i](t) - Y[i](t))*(D[i](t) - Y[i](t))^2 を多くのタスクでとると、結果はもっとよくなります。例えば、古典力学系(Lorenz, Henon, Rössler...)のアトラクターを反映した系列を形成すれば、深くはないが、そのようなデータを近似するようにネットワークを訓練することも可能である。


うまくいかないと思うので、試していません :)

 
このようなデザインであれば、垂直に近いイビツでも滑ることなく実現できます。神経細胞でのオーバートレーニングの問題は解決するのでしょうか?
 
IlyaA >> :
このようなデザインであれば、ほぼ垂直に近い状態で、滑りのないエビティを実現することができます。ニューロンでの再トレーニングの問題に取り組むのですか?

そして、再教育はないかもしれない・・・。作者がテストサンプルの誤差をグラフ化すれば、再トレーニングでどうなるかはすぐにわかる。

 
rip >> :

そして、オーバートレーニングは起こらないかもしれない・・・。著者がテストサンプルの誤差のグラフとして引用している場合、オーバートレーニングがどうなるかは一目瞭然です。


ブラックボックスで機能する。オーバートレーニングの可能性が高い。iliarr様 トレーニングのタイムテーブルを公開していただけませんか。
 
iliarr >>:.............

振っている腕は使わないほうがいい。というか、移動平均線だけを使っていてはダメなのです。できれば、各インジケータのアルゴリズムは、他のものと根本的に異なるものであるべきです。そうすると、そのネットワークに関するより多くの情報が得られます。

もう1点。

NNのシグナルをもとにした逆張りの売買システムを使っているんですね。これは、標準のムービングアベレージエキスパートと全く同じです。良くも悪くもない。

NNの力を借りてSLやTPのサイズを決める方法、オープンポジションに同行する方法を探す。ランダムで開くことも可能です。


StatBars さんが書き込みました:>>。

ネットワークトレーニングでは、落とし穴がたくさんあり、それを解決することは難しいのですが...。少なくとも、Gaでトレーニングする場合、「いつまでトレーニング時と同じようにネットワークが機能するのか」という問いを解くことは、私には全く不可能に思えます。

標準的なns-ey予測問題解法に行くことをお勧めします。

GAとは、あくまでも最適化ツール(機械のドライバー)である。最小限の違いで、これと他の最適化アルゴリズム(スクリュードライバー)を使うことができるのです。

 

こんにちは

以前からNSについて知りたいと思っていたのですが、いざ文献を読み始めると頭が沸騰してしまい、結局NSとは何なのかさえ分からなくなってしまいました...。

簡単な例を挙げて説明してください(いわば指の上)。

ありがとうございました。

理由: