search this site:

Chaotic Neutral

左にも右にもよらず、自由な生き方探し。

投機方法論 ― サイクル高速測定


基本はJohn F. Ehlersの『Rocket Science for Traders』と『Cybernetic Analysis for Stocks and Futures』ですが、遅延を減らすために改良しています。

X[n]はn日前のXを表わします。

無遅延平滑移動平均を使います。

Price = (O + H + L + C * 2) / 5; {足1つから1つの値を取る。Cでも(H + L) / 2でもいい}

Smooth = 0.3056 * Price + 0.0556 * Price[1] - 0.25 * Price[2] + 1.3333 * Smooth[1] - 0.4444 * Smooth[2]; {無遅延平滑平均で高周波ノイズを除去します。このようなノイズ除去は必要不可欠です}

If CurrentBar < 5 Then Smooth = (Price + 2 * Price[1] + Price[2]) / 4; {Priceの最初の4つでは無遅延平滑平均の計算ができませんから}

Cycle = 0.9322 * (Smooth - 2 * Smooth[1] + Smooth[2]) + 1.8621 * Cycle[1] - 0.8668 * Cycle[2]; {サイクル成分だけを取り出します}

If CurrentBar < 7 Then Cycle = Smooth - 2 * Smooth[1] + Smooth[2]; {Cycleの最初の2つはこれで計算します}

Quad = (0.0962 * Cycle + 0.5769 * Cycle[2] - 0.5769 * Cycle[4] - 0.0962 * Cycle[6]) * (0.08 * Period[1] + 0.5); {最近は結構知られているかもしれないヒルベルト変換 ― の近似式 ― です}

If Quad * Quad[1] <> 0 Then Delta = (Cycle[3]/Quad - Cycle[4]/Quad[1]) / (1 + Cycle[3] * Cycle[4] / Quad / Quad[1]); {これは逆正接の公式ですね。実は小さな誤差がありますが、実用上、問題はないでしょう}

If Delta < 0.1 Then Delta = 0.1; {無理やり感のあるDelta丸めこみ}

If Delta > 1.1 Then Delta = 1.1; {同上}

MedianDelta = Median(Delta, 5); {メジアンよりももっといい方法があるかもしれません}

If MedianDelta > 0 Then Period = 6.28318 / MedianDelta * 0.33 + Period[1] * 0.67;

SmoothPeriod = Period * 0.15 + Period[1] * 0.85; //最終的にこのSmoothPeriodをサイクル期間として使います。

全体での測定遅延は約9.5ヵ日くらいです。これはほとんどのサイクルの期間より短く、サイクル期間そのものはゆっくりとしか変動しませんから、十分に間に合うはずです。

コメントの投稿

URL
コメント
パスワード
秘密
管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://reviva.blog1.fc2.com/tb.php/1318-22ad07bd