読者です 読者をやめる 読者になる 読者になる

FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

EAパーツ用にDigital RSIを作成しました。

今度は逆張り用のEAを作ろうと考えています。前回のEAでは移動平均を軸にトレードするロジックを採用しましたが、今回は長期のRSIを軸にしたいと思います。

トレードの軸となるRSIは一貫したサインを出し続けて欲しいのですが、これがなかなかうまくいきません。そこで今回はデジタル化(簡単な)を試してみました。

f:id:fxborg:20160110102441p:plain

  • 中段・・・14日RSIの7日平均したもの。
  • 下段・・・上記の値を閾値=3でデジタル化したもの。

このRSIの平滑化は以前からあるアイデア(QQEなんかもそうですね)で、スイングトレード入門(アランファーレイ氏著)でも扱っています。

単純RSIはストキャスティックスに比べると、途切れ途切れな動きになり、これを防ぐためには長めのスムーズなデータが必要になる。

・・・
平滑化されたRSIは1本の線がゆっくりと買われ過ぎゾーンから、売られ過ぎゾーンへ流れていく。

・・・

日足に組み入れるオシレーターは、長期的なサイクルを適切に反映していなければならない。そのためにはストキャスティックスをつかうのではなく、長期用のRSIを用いたい。

・・・

RSIのパラメータを14に設定し、さらにその数値を7で平滑化することでダマシを防ぐことが出来る。

(スイングトレード入門より一部を引用)

ただし単純に平滑化しただけではまだまだ安定しないので、さらにもっとスムーズ化が必要です。その上タイミングのズレも最小限でなくてはいけません・・・。

 

いろいろ考えた結果、RSIの範囲が決まっているという特徴を利用して固定のしきい値を採用したところ、かなりいい感じになってきました。これであればEAに組み込むことが出来そうです。


平滑化ロジックをいろいろと試して煮詰まっていた時に、逆に「カクカク」させてみようかと試したところ、これが「つかえる!」ということに気づきました。

 

範囲が決まっているインジケーター(0~100等)には、使えるテクニックなので今後も使えそうです。

if((DigitBuffer[i-1]+InpThreshold) < SmoothBuffer[i] )

    DigitBuffer[i]=SmoothBuffer[i];
else if((DigitBuffer[i-1]-InpThreshold) > SmoothBuffer[i] )

    DigitBuffer[i]=SmoothBuffer[i];
else

    DigitBuffer[i]=DigitBuffer[i-1];

( ちなみにコードはこれだけ)

 

こちらからどうぞ

/Indicators/Digital_RSI_v1.0.mq5