記事「知っておくべきMQL5ウィザードのテクニック(第06回):フーリエ変換」についてのディスカッション

 

新しい記事「知っておくべきMQL5ウィザードのテクニック(第06回):フーリエ変換」はパブリッシュされました:

ジョセフ・フーリエによって導入されたフーリエ変換は、複雑なデータの波動点を単純な構成波に分解する手段です。この記事では、トレーダーにとって有益なこの機能を見ていきます。

内蔵のRSIシグナルクラスと内蔵の固定証拠金マネーマネジメントを組み合わせると、EURJPY:2022.01.01から2023.01.01まで:4時間で次のような結果が得られます。このテストでは、利益目標を設定せず、デフォルトの損切り設定も使用しないので、これらの入力は両方ともゼロです。シグナルが反転するか、トレイリングストップによって設定されたストップロスがトリガーされるかによって、エグジットが完全に決定されるようにします。

r_1


作者: Stephen Njuki

 

こんにちは、ステファン、

60年間フーリエ変換を使ったことがないので、もっと詳しく勉強する必要がありますが、素晴らしい記事です。 他のコメントがないのが不思議です。 3つのオプションをエキスパートにコンパイルしてテストできるように、エキスパートのmq5ソースを投稿してもらえますか?


ありがとう、

ケープコッダ

 

こんにちは、

良い記事ですね。興味深いアイデアだ。これらのオプションをテスト/試すためのサンプルmq5コードは素晴らしいでしょう。ありがとう。

 

こんにちは

記事で使用されているエキスパートはMQL5ウィザードで コンパイルされていますので、メタトレーダーをお持ちであれば、残りのソースコードはすでにあなたのPCにあります。

 

こんにちは、ステファン

私は一番好きだった数学のパート(フーリエ)を30年間離れていました。だからコメントすることはできないけど、君の素晴らしい「練習問題」を読んだよ。

お役に立てず申し訳ありませんが、教えてくださってありがとうございます。

 

ステファン

参考にさせていただき、結果をお知らせします、

ケープコッダ

 

こんにちは、スティーブン、

とても興味深い記事だ!

一つヒントがあります:パラメータ "Points "と "Epicycles "は "Description of the class "で削除する必要があります。

私の質問EAはスムーズに動作していますが、あなたの結果を再現することができません。.setファイル、もしくは生成したEAソースを投稿していただけますか?

フォワードテストは行いましたか?

いずれにせよ、FFTを使用する良い勉強になりました。ありがとうございました!

 

私は、著者が高速フーリエ変換を勉強していないことを理解しました。)その通り、FTやFFTは空っぽで、トレードでは何の役にも立たない。私は15年前にこれらの変換をMatlabで行っていました。その後、逆変換を時間形式に行いましたが、完全に失敗でした。FFTは他の分野、例えばレーダーでは有効だ。

しかしウェーブレットはもっと面白い。高周波数帯域をすべてカットし、時間領域への逆変換を行えば、遅延のない優れたローパスフィルターが得られる。しかし、それはもっと簡単にできる-2パスフィルターを通して......。

 

こんにちは、

12個のエラーが出ました。

 
double CTrailingFT::ProcessFT(int Index) {
    double _ft = 0.0;
    static double _a[6]; // 固定サイズの配列
    al_complex _f[5];    // 5つのエピシクル

    // _aに価格差を入力する
    for(int p=0; p<6; p++) {
        _a[p] = m_close.GetData(Index+p) - m_close.GetData(Index+p+1);
    }

    // Alglib FFTをカスタム6点FFTに置き換える。
    CustomFFT6(_a, _f); // 最適化された仮想関数

    // ドミナント周波数(例えば、最大のマグニチュード)を使用して_ftを計算する。
    double maxMagnitude = 0.0;
    for(int s=0; s<5; s++) {
        double mag = MathSqrt(_f[s].re*_f[s].re + _f[s].im*_f[s].im);
        if(mag > maxMagnitude) {
            maxMagnitude = mag;
            _ft = _f[s].re; // または、重み付けされた組み合わせを使用する。
        }
    }

    return _ft * 100.0; // 必要に応じてスケーリングを調整する
}

AlglibをCustom FFTに置き換える:

  • AlglibのFFTは小さなデータセットでは遅いかもしれません。ウィンドウサイズ(6ポイント)に合わせた軽量なFFTを実装します。




ProcessFT()内のArrayResize(_a,6)とmatrix.Init(6,5)はHFTでは非効率。固定サイズのバッファを使用。

ProcessFT() 内での行列演算を回避。ドミナント周波数を使用して_ftの必要値を直接計算。


エラー処理:

f[s].im/_f[s].reのゼロ除算を 防ぐためのチェックを追加.ドミナント周波数を使用して_ftの必要値を直接計算する。

エラー処理:

  • f[s].im/_f[s].reにゼロ除算を防ぐチェックを追加。


CustomFFT6を実装するコードが必要な方は、お問い合わせください。
 

初歩的な構造(M字型)を使った、はるかに効率的な方法がすでにある。そのパラメータを変化させれば、価格ダイナミクスの変化を完全に把握できる(これがインパルス均衡理論である)。

金融商品の値動きは非定常過程であり、そのような過程をフーリエ変換の助けを借りて分析することは非効率的だからです。

ウェーブレット分析については、さまざまな波動構造が用いられるため、確かに興味深い。しかし、これはインパルス均衡の理論で明らかにされている、単一の基本構造を使うのではなく、一種の主観的な基準の選択に過ぎない。