市場のエチケット、あるいは地雷原でのマナー - ページ 84

 

Neutron 論文を お送りいただきありがとうございました。


また、トピックの提起と建設的な意見に感謝します。

私は今のところ、SSASを使って似たようなことを実装することができました(残念ながら、今日このスレッドと論文の両方を読んだだけです)。

K.N.はそこから何か有益なことを学ぶかもしれませんね。

1.H1ローソク足の平均値によって日中のレンジをいくつかのクラスターに分類し、1日を時間間隔(TI)に分割する。

(2クラスタ、2VVだが、1円玉は4クラスタ、7VVになった)。

2.楽器とVIごとにモデルを作成します。

- 価格と時間の2つの入力パラメータによって、過去の上昇と下降を別々にクラスタリングします。

- 価格と時間という2つの入力パラメータによって、将来の上昇と下降を別々にクラスタリング
(もちろん、このモデルは学習段階のデータを準備するためにのみ使用されます。)

- 予測モデル:
-- ナイーブベイズ

-- 経験則

-- 人間関係のルール

-- NS

-- 決定木

3. 極限からの最小の偏差に基づいて、ジグザグが構成される -区分的な単調f構造が得られ、それに応じて N個の セグメントのパターンが 得られる。

適切なクラスタリングモデルを学習し、セグメントをクラスタリングします。

5.パターンの予測地平を、パターン長またはフィックス長の分数として、あるいはパターン長のより大きな分数の最も近い倍数として計算します

6."予測 "の算出と分類

7.予後予測モデルを教える

運用中、Expert AdvisorはMS SQLにデータをロードし、定期的にジグザグポイントや予測を生成します。それを受けて、支持の価値やルールの妥当性を分析するのです。比較した上で判断するのです。


メリット

- 複数のDMモデルの結果を利用し、比較することが可能です

- モデル自身が様々な方式を選択できる。

デメリット

- モデル設定のためのパラメータが少ない

- MSSQLのリソース集約的な運用

- 科学的根拠の欠如(前述の論文の結論も含めて訂正させてください。)


科学と証明の偉大な陰を決して侵すことなく、言及された作品に。

このスレッドを読んでいる皆さんに是非ともお願いしたいことがあります。

出来高、マーケットデルタなどの区分的単調追加入力をクラスタリングに使用することの利便性について。

おそらく フィルタリングなどの追加的な役割を果たすことができるだろう。


S.プリヴァロフ:実はこの仕事(学位論文)では、予測のためのパターンを作成する方法を定義しています。

イモト そういうことです。例えば、ass.ルールで予測を得る場合、パターンピースの数Nを指定して、異なる数だけ先の予測ステップを求め、異なるサポートと確実性でそれを得ることができる--つまり、予測の基礎として使えるモデルを得ることができるのです。

可能だと思いますか/カルマンのf.を使うというアイデアをどのように応用しますか?

モデルを持っていること/そして、その下でトレーニングするのも面白いかもしれません。


SSASではこのようなモデルになっており、このツールでは3つのviが確認されています。

ここhttp://www.fxexpert.ru/forum/index.php?showtopic=656 mqlをはじめとするメッシュのライブラリがあり、便利です。

 

私は、隠れニューロンの最適な数を決定するために、ネットワークを深く掘り下げるようになりました。私は、かなり興味深い結論に達しましたが、他の人たちもとっくにそうなっていると思います。直感的に説明できるようにします。20個の入力を持つ隠れ層ニューロンを想像してください。この入力で、触手のように入力にうごきかけ、うごきかける過程で、入力の重みが最適化され、ネットワークの期待される出力が得られるのです。ここで、もう一つの隠れニューロンを追加する。20個の入力は、最初のニューロンの20個の入力に接続されているが、重みは異なっている。2番目のニューロンは同じ入力を探っているため、基本的に新しい情報は得られません。もしこれが本当なら、ネットワークを訓練すると、両方のニューロンに対して同じ入力重みが導かれることになる。両ニューロンの出力に対応する出力ニューロンの重みを掛けて合計するため、両隠れニューロンの入力重みは、出力ニューロンの重みの比に等しい係数だけ振幅が互いに異なる場合がある。

とにかく、このような20-2-1ネットワークを学習させると、2つの隠れニューロンの入力重みが以下のようになります。

定数倍を除けば、どちらの重みセットも入力数に応じて同じ挙動をすることに注目してほしい。つまり、どちらのニューロンも出力ニューロンに同じ情報を与える。そのためか、私のネットワークの学習誤差は、2つ目の隠れニューロンを追加してもほとんど改善されませんでした。もう一つ、隠れニューロンの重みの図を示します。ここでは符号が異なるが、出力ニューロンの重みの符号も異なる


一般に、このような2層ネットワークは、単純な1層ネットワーク(ARモデル)と同様の振る舞いをする。この結論で、私は行き詰まりました。ニューラルネットワークが適して いるのは、分類、つまり出力が「はい」か「いいえ」の2値しかない場合だけであることがわかった。入力データを-1...+1に正規化しても、ニューロン出力は飽和せず、非線形活性化関数も微々たるものなので、価格予測に使おうとすると、ARモデルと同じ結果になる。ビールを飲もうかな。新しいアイディアが生まれるかもしれない(例えば、ネットワークの入力に+1や-1を与えるとか?)

 
M1kha1l писал(а)>>

私は今のところ、SSASを使って似たようなことを何とか実装しています(残念ながら、このスレッドと論文を読んだのは今日です)。

ここhttp://www.fxexpert.ru/forum/index.php?showtopic=656 mqlをはじめとするメッシュのライブラリがあり、便利です。

M1kha1l さん、ご丁寧に教えていただき、ありがとうございます。

あなたの投稿を理解するには、少し時間が必要です。今、読んでいるところです。

gpwr さんが書き込みました >>1

私は、隠れニューロンの最適な数を決定するために、ネットワークを深く掘り下げるようになりました。他の人がずっと前に到達したであろう、ちょっと面白い結論に達しました。直感的に説明できるようにします。20個の入力を持つ隠れ層ニューロンを想像してください。この入力で、触手のように入力にうごきかけ、うごきかける過程で、入力の重みが最適化され、ネットワークの期待される出力が得られるのです。ここで、もう一つの隠れニューロンを追加する。20個の入力は、最初のニューロンの20個の入力に接続されているが、重みは異なっている。2番目のニューロンは同じ入力を探っているため、基本的に新しい情報は得られません。もしこれが本当なら、ネットワークを訓練すると、両方のニューロンに対して同じ入力重みが導かれることになる。両ニューロンの出力に対応する重みを掛けて合計するため、両隠れニューロンの入力重みは、出力ニューロンの重みの比に等しい係数だけ振幅が互いに異なることがある。

gpwr さん、素晴らしい!パラレルニューロンの重みを見ようとは思いもしませんでした。

多層膜NSの学習過程における学習誤差の低減(赤)と汎化誤差の低減(青)の過程を見てみよう。

一般化誤差の最小値(意思決定において統計的な優位性をもたらすもの)が、同じではないことがわかる。歴史は必ずしも正確に繰り返されるわけではなく、おおよそ繰り返されるのだから、これは理解できる。また、学習にはグローバルミニマムが1つしかないが、汎化には多くのローカルミニマムがあり、最適なものを選択する方法がない。推測するしかない。そして、ここで注目されるのが、隠れ層にある複数のニューロンという形の統計です。どれも訓練不足で、ローカルミニマムで「もがき」、あるものは(汎化誤差の点で)最高の状態で、あるものは最悪の状態で、です。わかったか?一般に、これらの解は出力線形ニューロンによって平均化され、このような推定が最良である。さらに、推定誤差は隠れ層のニューロン数の平方根に比例して低下する。このため、NSの予測力は隠れ層のニューロン数の増加とともに増大する。

あなたが引用されたこれらのデータは、メッシュの再トレーニングと、その結果として、隠れ層のすべてのニューロンの同期動作について述べているのです。多層膜NSは線形ペプトロンに退化した!

 
Neutron >> :

M1kha1l さん、ご丁寧に教えていただき、ありがとうございます。

あなたの投稿を理解するのに少し時間がかかります。読みました。

gpwr さん、素晴らしい!パラレルニューロンの重みを見ようとは思いませんでしたよ。

さあ、学習過程での多層膜NSの学習誤差低減過程(赤)と汎化誤差(青)を見てみよう。

一般化誤差の最小値(意思決定において統計的な優位性をもたらすもの)が、同じではないことがわかる。歴史は必ずしも正確に繰り返されるわけではなく、おおよそ繰り返されるのだから、これは理解できる。また、学習にはグローバルミニマムが1つしかないが、汎化には多くのローカルミニマムがあり、最適なものを選択する方法がない。推測するしかない。そして、ここで注目されるのが、隠れ層にある複数のニューロンという形の統計です。どれも訓練不足で、ローカルミニマムで「もがき」、あるものは(汎化誤差の点で)最高の状態で、あるものは最悪の状態で、です。わかったか?一般に、これらの解は出力線形ニューロンによって平均化され、このような推定が最良である。さらに、推定誤差は隠れ層のニューロン数の平方根に比例して低下する。このため、NSの予測力は隠れ層のニューロン数の増加とともに増大する。

あなたが引用されたこれらのデータは、メッシュの再トレーニングと、その結果として、隠れ層のすべてのニューロンの同期動作について述べているのです。多層膜NSは線形ペルセプトロンに退化した!

私のネットワークには300の学習例が与えられ、重みの数は45であった。文献によると、重みの5倍以上の学習例があれば、95%の確率でネットワークが汎化されるという意見がある。つまり、私のネットワークは理論的には良い汎化性を持っているはずなのですが、実際はそうではないのです。そのため、例を挙げて確認したのです。ここで重要なのは、トレーニング例を多くとることではないと思うのです。ネットワークに無理やり解決させる問題の本質についてです。もし、ネットワークに次の段階の価格の大きさを予測させようとすると、予測された段階と入力された過去の段階の間の比例関係を維持するために、活性化関数の線形領域でニューロンが動作するような重みに訓練ではなりがちです。つまり、課題そのものがリニアなのです。この状態を考えると、隠れニューロンを追加しても何も改善されない。そして、隠れ層そのものが不要になる。自分のネットワークで実験してみたところ、1層でも2層と同じように使えるという結論に達しました。このスレッドの過去の投稿を読むと、EURUSDについても同じ結論に達しているようですね。

私見ですが、このネットワークは、ニューロンの活性化関数を千鳥に選択できるような、非線形性の強い問題(XOR問題や分類問題など)に使うべきでしょう。


 

ここで指摘したいのは、検出された効果の本質は、学習エポック数の過多によるNSのオーバートレーニングで説明できる可能性があり、学習エポック数Nopt (上図参照)には 学習率の係数に依存する最適値が存在するはずだということである。私は「...」とは言っていない。を使えば、さらに多くの学習例を取ることができます。"、これが最適な学習サンプル長Rorth=w*w/d の問題の本質である。理論的にはそうなっているのであって、「...学習例の数は重みの数の5倍...」ということではないのです......。

ネットワークのオーバートレーニング効果については、原因が異なるという話です。

次のバーの符号と振幅を予測する作業は線形が主体で、それ以外はありえないというのは同感です。相場はバールのように単純で、天気予報のように予測不可能です。とはいえ、もう少ししたら、単層、隠れ層に2つのニューロンを持つ2層、隠れ層に4つのニューロンを持つ2層の1時間ごとのバーでの予測の質を比較した結果を掲載する予定です。これらはすべて、NSの入力数dの 関数として示される。データは、50回の独立した数値実験の平均値とする。

 

どうにかならないのか...馬と鹿を同じ荷車に乗せるのか?MT4とMathCadのことです。MathCadで直接現在の相場を受信し、そこで全ての分析を行い、生成されたシグナルをMT4に転送すること。まず思いつくのはファイルの使用ですが、どちらのプログラムも2種類のファイルの中身を常にチェックしなければなりません。利便性に欠ける。もしかしたら、他に何かあるのでは?MQLに割り込み処理がないのは残念です。なんて不便なんだМТ4、このクソ...座ってC++の勉強ができるんです。


P.S. グリッドのデータをいじっています。

 

いや、解析アルゴリズムを全部MQLで実装するのはつまらないか。それとも、何か法外な苦労があるのでしょうか?

P.S. そして、統計を取っている...。

 

そう、MQLにはあらゆる場面で困難がつきまとうのです。例えば、商をいくつかの取引に分割するための最も単純なコード(インジケータ)を以下に示す。

#property indicator_chart_window
#property indicator_buffers 2

#property indicator_color1 Red
#property indicator_color2 MediumBlue

extern int step = 5;
extern int sp = 3;

double Trans[], Kagi[];
int mn, mx, H, Cotir, Up, Dn;
bool set_new=false, SetMax=false, SetMin=false;

//******************************************************************************
int init() 
{ 
SetIndexBuffer(0, Trans);
SetIndexBuffer(1, Kagi);

SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);

SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,119);
SetIndexArrow(1,162);

IndicatorShortName ("Kagi++");
return(0); 
} 
//*******************************************************************************

int start() 
{ 
int reset, MaxBar, MaxBarJ, counted_bars=IndicatorCounted(), mx_j, mn_j;

if ( counted_bars<0)return(-1);
if ( counted_bars>0) counted_bars--;
int limit=Bars- counted_bars-1; MaxBar=Bars-2; MaxBarJ= MaxBar-30; 
if ( limit==Bars-1) limit=Bars-2;

//----+ ОСНОВНОЙ ЦИКЛ ВЫЧИСЛЕНИЯ ИНДИКАТОРА 
for(int i= limit; i>=0; i--)
   {
     Cotir = Open[ i]*MathPow(10.0,Digits);
          
     if(! set_new)
      {
        mx = Cotir;
        mn = Cotir;
        H = step* sp;
        set_new = true;
      }               
     if( Cotir - mx > 0)
      {
        mx = Cotir;
        mx_j = i;
      }  

     if( Cotir - mn < 0)
      {
        mn = Cotir;
        mn_j = i;
      }  

     if(! SetMax && Cotir <= mx - H) 
      {
         Trans[ i] = Cotir/MathPow(10.0,Digits); 
         mn = Cotir;           
         mn_j = i;
         SetMax = true;
         SetMin = false;
         Kagi[ mx_j] = mx/MathPow(10.0,Digits);
      } 
     if(! SetMin && mn + H <= Cotir) 
      {
         Trans[ i] = Cotir/MathPow(10.0,Digits); 
         mx = Cotir;       
         mx_j = i;
         SetMax = false;
         SetMin = true;
         Kagi[ mn_j] = mn/MathPow(10.0,Digits);
      } 

   }
return(0);  
}


動作はするのですが、その結果をチャートウィンドウに線で描画することができません。その上、(これは私の理解を超えていますが)スプレッドが6スプレッド未満で割られた場合、配列が正しく形成されているにもかかわらず、全く何も出力されません。MQLでは、他の自作技術と同様に、まったく予期しない困難(二重比較から始まるなど)や「特異性」がたくさんあり、もちろん文書化されていません。叱っているんですよ、一般的には...。

また、MathCadでグリッドを確認する方法はわかるのですが、MQLで確認する方法は......考えられませんね。どこかにバグがあったらどうしよう。

 
paralocus писал(а)>>

そう、MQLにはあらゆる場面で困難がつきまとうのです。ここでは、例えば商をいくつもの取引に分割する最も簡単なコードを紹介します。

See attachment - draw - enjoy

paralocus さんが書き込みました

MathCadでグリッドを確認する方法も知っていますが、MQLでどうやるのか、まったくわかりません。>> どこかにバグがあったらどうしよう。

NeuroShellやStatisticsの利用を検討してみてはいかがでしょうか。そこでは、メッシュを作成してライブラリに入れ、MTから学習させ、パラメータをモニターすることができます
ファイル:
 

MSの統計を取るのが待ち遠しくなりそうだ...。

予測精度のデータをNSの入力数で1刻みで表示するのは、あきらめるしかなさそうです。例えば、入力数を2の倍数とすることで、作業を簡略化できる...。