フーリエ変換で未来を予測する - ページ 2

 
ANG3110:

付属のインジケーターだけ何も描画されません。

そうなんです。グラフを左にスクロールさせると、ご覧のようになります。

 

並行スレッド「マシュカには関係ない!」では、「完全MA」での予測について議論されています。完璧な平滑化は、今回のようにフーリエと閾値を使って初めて得られると思います。最も正確な見積もりは、ちょうどサンプルウィンドウの真ん中あたりです。同様の調査をする必要がありますが、MAではなくこのアルゴリズムをベースにしてください。

第二に、閾値(porog)の値を数学的に正確に正当化できるため、この値を試す(最適値を見つける)ことから解放されます。

第三に、予測時間を長くするためには、現在価値の測定の精度を上げる必要がありますが、それには、複数の通貨を同時に分析する方法と、見積もりのサプライヤーを増やす方法の2つがあります最適化VB(VBA)でDDE」。

 

未来を見るために。

グラフウィンドウの設定で、「オフセットグラフ」チェックボックスが選択されている必要があります。

extern int InPast=0,

extern inttern Futur=100で何本目の予測か。

 

ポログについては、周波数がスレッショルドを超えるとグラフが急激に変化するので、この部分は原則的にやり直します

 

面白いidyukさん、ありがとうございます

テスターで、いわば実戦で試した。と思われることもありますが、その逆もあり、特に強い動きの前や強い動きの終わりには、そのようなことがあります。

例えば、8、9、10といった2のべき乗の異なる3つのインディケータがチャートに適用された場合、非常に興味深い状況が形成され、それらはしばしば異なる方向を向いていることがあります。この3つの指標の平均値を使おうとするとどうなるか。

試してみましたか?

 
m_keeper:

ポログについては、どの周波数もスレッショルドを超えるとグラフが急激に変化するので、原則的にはこの部分をやり直しますが、もしかしたらklotのときのままか、あるいは滑らかに減少さ せることになるかもしれません。

もうひとつ、FFTを廃止して(次数2は最適なウィンドウを見つけるのに最適な選択ではない)やりたいことがあります。離散変換の方がいい。

閾値については、ノイマンピアソン基準、理想的な観測者というのがあるので、それを調べてみてください。この理論を応用することで、最適化(履歴から最適値を求める)から脱却し、適応的な閾値を作ることができるようになり、その実現にはかなり多くのバリエーションがあります。

 

デジタイザーのコーナーがこのスレッドになったようですね :) では、ここで思いつき質問です。価格チャートの平均スペクトル密度をとると、このような図になります。


低周波では悪くない1/fですが、高周波ではこの法則から顕著に逸脱していることが分かります。これは少し前に議論されたことですが、主なバージョンでは、ある種のデジタル化ノイズを持つことが提案されました。この成分をフィルタリングすることが有効ではないかということです。つまり、全周波数帯域できれいな1/fを残すことです。そして問題は、これをどうするかということです。スペクトル密度の配列を入力とし、デジタルフィルタの 係数を出力する手順を用意することである。原理的には、フーリエ振幅に対する簡単な重み付け関数が考えられますが、デジタルフィルタを使った方が経済的でしょう。
 

ライブラリには __lib_FFT.mq4 ファイルが、インジケータテキストには #_lib_FFT.mq4 が含まれており、そのため描画されないようになっています。

 
Prival:
m_keeper:

ポログについては、どの周波数もスレッショルドを超えるとグラフが急激に変化するので、原則的にはこの部分をやり直しますが、もしかしたらklotの時のままか、あるいは滑らかに減少さ せることになるかもしれません。

もうひとつ、FFTを廃止して(次数2は最適なウィンドウを見つけるのに最適な選択ではない)やりたいことがあります。離散変換の方がいい。

閾値については、ノイマンピアソン基準、理想的な観測者というのがあるので、それを調べてみてください。この理論を応用することで、最適化(履歴から最適値を求める)から脱却し、適応的な閾値を作ることができ、実装の選択肢は非常に多くなります。

原理的には、次数2を取り除くことは非常に簡単です。

w=2*pi/T;

for (int k=0; k<=N; k++)
   {                                                              
      sum_cos=0.0; 
      sum_sin=0.0;                                           
      for (int n=0; n<T; n++) 
      {
         sum_cos+=Close[n]*MathCos(k*n*w); 
         sum_sin+=Close[n]*MathSin(k*n*w);
      }
      ak[k]=sum_cos*2/T; 
      bk[k]=sum_sin*2/T;
   }
   ak[0]=ak[0]/2;
   //------------------------------------
   for (n=T-1; n>=0; n--)
   {                                                        
      sum=0.0;                                       
      for (k=0; k<=N; k++)
      {                                                             
         sum+=ak[k]*MathCos(k*n*w)+bk[k]*MathSin(k*n*w);
      }                                                             
      fx[n]=sum;
   }

N - 高調波の数。

T -期間。


最適なウィンドウ、より正確には最適な周期Tは、最小RMSと高調波振幅の合計の最大値という2つの基準で選ぶのが最も簡単である。しかし、市場には複数の波があるため、最適なウィンドウがいくつか存在することになる。

また、外挿しようとすると、周期的なサインやコサインにより、以前の周期成分が最後に加わるだけで、繰り返しの確率がかなり高くても、位相や特に振幅が違ってくるので、実際には、位相検出器のように常に位相を調整しなければならないことも念頭に置いておく必要があります。


MathArctan()としての 位相定義は、arctanの特性上、少なくとも+/- pi/2を考慮しなければならないので、ダメです。

少し違う形で位相を定義した方がいい。

 

FFTから離れる必要はなく、実際、系列を正確に半分に分ける必要はなく、カウント速度を上げるために分けているのであって、厳密に2で分ける必要があるわけではありません。以前、任意の長さの系列で動作するFFTを作ったことがあるので、いつかmql用に書き直してみよう。


どのような特徴が偽陽性を示すのかを調べているところです

n=9とn=10の2枚です。

いずれの場合も、ウィンドウテールが今後現れるかもしれない急激なスパイクにぶつかっている。

今、シリーズの前処理を実験しているのですが、もしかしたらそれが役に立つかもしれません。


スムージングの条件を変更し、チャートのジャンプが無くなり、全てがスムーズに動くようになりました。


チャートが再描画されることについては、特に問題ないと思います。

終値は 過去ではないが、それを発生させた出来事、つまり波(フーリエの場合)は過去である

と、新しいバーを出すたびに、どんどん勉強していきます。

ファイル: