PCA Synthetics - レガシーをリサイクルするMetaTrader 5用インジケーター

Mike 2017.01.26 18:11 14 0 0
添付ファイル

このインジケーターは、擬似定常ポートフォリオ内のすべての金融商品に対して係数を自動的に選択し、ゼロに収束する傾向を持っています。

インジケーターを使用するには、ターミナルのInclude\MathフォルダにAlgLibライブラリが必要です。


少しの理論

各金融商品はそれぞれ異なる方向に動きます。各方向は多次元配列の別々の次元を形成します。この行列を回転させる、つまり各要素に特定の数を掛けることで、軸を見つけようとします。この軸は、すべての金融商品との最小距離、つまり最小総分散を持つものです。行列の各要素に掛ける数は、動いている金融商品が他の金融商品と同じ方向に動くために回転すべき角度の値となります。この角度の値は、ポートフォリオ内の各通貨の係数を示します。

係数の値が0より大きければ通貨を買い、0より小さければ売ります。こうすることで、合成されたインジケーターの定常性を維持することができ、時折係数を再計算することが可能です。また、PCAはポートフォリオの最小分散を持つ軸を見つけるだけでなく、複数の軸も見つけます。ポートフォリオ内の金融商品の数が成分(ベクトル)の数で、各成分は主成分と呼ばれ、ポートフォリオの動きの変化にどれだけ影響を与えるかを示します。


考えられる問題

  1. チャートが表示されない場合は、Expertsタブに何が表示されているか確認してください。エラーがあるか、他のチャートとの同期が進行中の可能性があります。メッセージがない場合は、他の時間枠を試してみてください。

  2. 取得したベクトル値は、Rパッケージで計算したものと確認済みですので、値自体は正しいです。しかし、特定の係数の符号が間違っている可能性があります。PCAは符号については無視するため、符号は経験的に、つまり試行錯誤で決定する必要があります。

問題#2については、以下の画像で説明されています: http://stats.stackexchange.com/questions/34396/im-getting-jumpy-loadings-in-rollapply-pca-in-r-can-i-fix-it

パラメータ

InpVector = 0; //ポートフォリオ内にN通貨がある場合、移動軸番号0 = 最大分散、N - 1 = 最小
InpFrame = 300; // 各InpDepthバーに対する係数計算のための浮動ウィンドウ
InpDepth = 1000; // チャートが描画される履歴の合計バー数
InpForward = 500; // 係数を再計算を停止し、前のものを使うバー、これはOOS
InpPeriod = 1; // チャートを滑らかにするためのMAの平滑化
InpTimePeriod = PERIOD_CURRENT; // 計算のための時間枠
InpNormalize = true; // 表示前に価格を正規化し、USDJPYとEURGBPのボラティリティギャップを滑らかにする
InpSynthetics = true; // 見つかった係数で合成された要約を描画するか、各ペアを個別に描画する
InpPrices = Logs; // ペアの正規化アルゴリズム
InpSymbols = "AUDUSD,USDCHF,USDCAD"; // ポートフォリオ内のペア
InpMagic = "ID" // 複数のインスタンスをチャート上に配置する際の衝突を避けるためのインジケーターのカスタム名

このアイデアは、こちらから採用されました: https://www.mql5.com/en/code/9908

リスト
コメント 0