NSの入力値を正しく形成する方法。 - ページ 29

 
sergeev писал (а)>>

言い換えれば、「市場に対して線形分離可能な分類を得ることが可能である」という事実の証明がここにある、と言えるでしょう。

私自身は、あるところで、線形ネットワークで排他的論理和を 作ることは不可能である、という巧妙な本を読んだ後、線形ネットワークを市場に使うことは不可能であると考えました(その論理的理由は、市場は単純な排他的論理和よりもはるかに複雑であるからです:)。

そして、もしかしたらそうではないかもしれない?もしかして、ゆりさんの言うとおり?ノンリニアの本を何冊もソシャゲにしなくても、平面で何でも叩けばいいし?

あらゆる問題に対して、線形分離可能な分類を得ることができる。

しかし、非線形ペルセプトロンは自分でパターンを見つけることができますが、あなたは自分でパターンを探し、それに基づいて入力を形成する必要があります。

上に書いたように、リニアペルセプトロンで良い結果が得られるなら、リニアペルセプトロンは必要ない、ルールはすでに見つかっているのです。

 
では、リニア/ノンリニアの問題は解決したことになりますね。
 

ネットワークテンプレートです。別スレッド(CWinThread)で実行されます。

希望するバージョンに仕上がっていない。スレッド割り込み制御を行わない。

ファイル操作のロジックの実装が不十分である。

コードに誤ったコメントが多い。

15.07.08

ファイル:
better1.rar  50 kb
 
ワークフローからの読み込みをタイマーで行うようにした(不要なデータを読み込まないようにするため)
ワークフローから情報を読み取るためのポインターを導入(コピー枚数の削減)
二乗平均平方根誤差のプロット機能(ネットワークがどのようにローカルミニマムに「移動」しているかを見ることができます。)
計算を停止し、現在の重みをファイルに保存するボタンを追加しました。
通常のコメントを追加

16.08.08
ファイル:
better1_1.rar  53 kb
_hilo_1.mq4  4 kb
_target_2.mq4  2 kb
 
sergeev писал (а)>>
ワークフローからの読み込みをタイマーで行うようにした(データの過負荷を回避するため)。
ワークフローから情報を読み取るためのポインタを導入(コピー数を減らすため)。
二乗平均平方根誤差をプロットする関数(ネットワークがローカルミニマムによってどのように「移動」しているかを見ることができる)
計算を停止し、現在の重みをファイルに保存するボタンを追加しました。
通常のコメントを追加

16.08.08

セルゲイエフ・アレクセイの羨ましいほどの多作ぶり !

 
Sart писал (а)>>

アレクセイ・セルゲイエフの羨ましいほどの多作ぶり !

+1 :)

 
1.MetaTraderとVC++の間で、ヘッダを介したやり取りをほぼ正常に行えるようにした。
- CreatePattern - 入力と出力のベクトルのファイルを作成し、パターンの数と出力/出力の次元に関する情報をヘッダに書き込みます。
- そして、VC++が読み込んで同様の配列を自前で作成する。グリッド処理後、同じ名前で .wgh というファイルを作成し、グリッドの重み、しきい値、グリッドモデルヘッダー(レイヤー数、寸法)を記録します。
- NeuroInd.mq4 インディケータ (NeuroIndP) - 重みファイルを読み、自分自身で類似モデルを構築し、今度は CreatePattern と同じアルゴリズムを使ってバーを通過してこのグリッドに入力させることができます。指標は出力ベクトルを構築する。NeuroIndP - 読み方は同じですが、エントリーポイントが表示されます。

CreatePatternスクリプトとNeuroIndは、入力ベクトルに関する同じアルゴリズムによって「関連して」いますが、NeuroIndは(ネットを処理する方法によって)入力ベクトルの次元が異なる可能性があるという違いがあります。このアルゴリズムを何とか普遍化し、別のファイル(例えば<InputPatternAlg.mqh>)に入れるようにすべきです。そうすれば、このコンプレックスの中でしか変えることができない。
-----------
2.VC++のクラス構造で、中間のCLayersを取り除いた(間違いだったと思う :) + メモリを少し節約した + グリッド計算アルゴリズムが、インジケータの計算 アルゴリズムと一致した)。
ファイル:
 

ネットワークに取り組めば取り組むほど、重要なのは入力ではなく、入出力の ペアであることに気づかされます。その点で、スタットバーズの1ページ目の記事は、とても「勉強になる」でしょう。また、出力が2値でなく連続である場合、近似はより速く、おそらくより良くなることに気づきました。(一貫性のない繰り返しのインアウトペアが少ない)。

入力は原理的に問題ない。ダッシュの四角形(例:1周期5値で5周期)は、ユニークな非反復入力を与える。

出力はというと...

比率(Up-Dn)/(Up+Dn)で出力テストしてみました。すぐにフィットする。

唯一の欠点は、比率がUpとDnの絶対値のおおよその見当をつけないことで、これは望ましいことなのですが :)10/20だろうが50/100だろうが、違いはない。

単純にUp-Dnを出力して(価格乖離の大きさを知るため、どの方向に)アークタンジェントで圧縮すると、値の飽和が起こることが判明した。

(私は最大値を探して結合したくないので、線形圧縮ではなく円弧接線を使用していることをすぐに言っておく)。

係数で割って(Up-Dn)飽和値を小さくすれば、大きな値で飽和が発生しますが、それはすでに稀なことで、大きな再現性や矛盾はありません。

また、UpとDnを変更するときだけ別のネットワークを試すという方法もあります。

他にアウトプットを お持ちの方はいらっしゃらないでしょうか?

 
sergeev писал (а)>>

ネットワークに取り組めば取り組むほど、重要なのは入力ではなく、入出力の ペアであることに気づかされます。その点で、スタットバーズの1ページ目の記事は、とても「勉強になる」でしょう。また、出力が2値でなく連続である場合、近似はより速く、おそらくより良くなることに気づきました。(一貫性のない繰り返しのインアウトペアが少ない)。

入力は基本的に問題ありません。ダッシュの四角形(例:1周期5値で5周期)は、ユニークな非反復入力を与える。

出力はというと...

出力で(Up-Dn)/(Up+Dn)の比率をテストしてみました。収束が早い。

唯一の欠点は、この比率ではUpとDnの絶対値のおおよその見当がつかないことで、これは望ましいことなのですが :)10/20だろうが50/100だろうが、違いはない。

単純にUp-Dnを出力して(価格乖離の大きさを知るため、どの方向に)アークタンジェントで圧縮すると、値の飽和が起こることが判明した。

(私は最大値を探して結合したくないので、線形圧縮ではなく円弧接線を使っていることをすぐに言っておきます)。

係数で割って(Up-Dn)飽和値を小さくすれば、大きな値で飽和が発生しますが、それはすでに稀なことで、大きな再現性や矛盾は発生しません。

また、UpとDnの切り替えだけ別のネットワークで試すことも必要でしょう。

他にアウトプットを お持ちの方はいらっしゃらないでしょうか?

各バーで何らかの入力ベクトルを送り、各バーで出力を要求しているのでしょうか?

 
このバージョンのMPSは少し良くなっていますが、まだ必要なものではありません。つまり、Shortの次はLong、そしてその逆もあります。
ファイル:
mps.zip  7 kb