📝 概要
RSI Double-Dip + SuperTrendを紹介します。
この戦略は、RSIとその移動平均線のクロスを利用して、RSI上で「ダブルディップっぽい動き」が出たところを狙ってロングするストラテジーです。
そして、エントリー後の決済にはSuperTrendを使います。
ざっくり言うと、
・RSIが一定水準より低い場所でRSIシグナルを上抜く
・その上抜けを1回目としてカウント
・再び同じ条件で2回目の上抜けが発生したらロング
・その後、SuperTrendが下方向へ転換したら決済
という流れ。
💻️ バックテスト
すべて4時間足です。
日経平均CFD

S&P500(CFD)


USDJPY

🎯 作成の意図
RSIを使った逆張り戦略というと、よくあるのは、「RSIが30を下回ったら買う」というものです。
ただ、これだと強い下落相場ではかなり危険です。
RSIが30を割ったあと、そのまま20、15、10……と下がっていくこともあります。
RSIが売られすぎだからといって、価格がすぐ反転するとは限りません。
そこで、この戦略では単純な売られすぎ判定ではなく、RSIそのものの反転を確認します。
RSIがRSIシグナルを下から上へ抜いたとき、「少なくとも短期的にはRSIが上向きに変わった」と考えます。
ただし、1回目ではまだ買いません。RSIが設定したトリガー水準より下にいる間に、もう一度上抜けが起こるのを待ちます。
デフォルト設定なら、
・RSIが50以下
・RSIがRSIシグナルを1回上抜ける
・その後もRSI50以下の領域にいる
・もう一度RSIシグナルを上抜ける
・2回目でロング
という流れです。
RSIチャート上では、W型の底を作るような動きになる可能性があります。これが Double-Dip という名前の由来です。
もちろん、実際にきれいなW型になっている必要はありません。コードが見ているのは、あくまで「RSIがトリガー水準以下にある間に何回上抜けたか」です。
つまり、チャートパターンを画像認識しているわけではなく、RSIの反発回数を数値化しています。
裁量トレードなら、「なんとなく二番底っぽい」と判断するところを、
「RSIシグナルの上抜け回数」という明確なルールに置き換えています。
そして、出口にはSuperTrendを使います。
つまり、「入口はオシレーター、出口はトレンド系」という役割分担です。RSIだけで入口も出口も決めるより、戦略としては少し面白い組み合わせになっています。
📘 コード(戦略部分)の解説
この戦略で最も重要なのが、RSIの上抜け回数を数える部分です。
bullishRsiCross = ta.crossover(rsiValue, rsiSignal)
var int dipCrossCount = 0
if rsiValue > triggerLevel
dipCrossCount := 0
if bullishRsiCross and rsiValue < triggerLevel
dipCrossCount += 1
まず、
bullishRsiCross = ta.crossover(rsiValue, rsiSignal)
で、RSIがRSIシグナルを下から上へ抜いた瞬間を検出します。
そして、そのクロスがトリガー水準より下で発生するたびに、
dipCrossCount += 1
としてカウントを1つ増やします。
デフォルトのトリガー水準は50です。
つまり、RSIが50より下にいる弱い地合いの中で、何回上向きの反転が発生したかを数えています。
一方、RSIがトリガー水準より上まで回復した場合は、
if rsiValue > triggerLevel
dipCrossCount := 0
としてカウンターをリセットします。
つまり、一度しっかり50より上まで戻ったら、それまでの「底探し」は終了です。
またゼロから数え直します。
🔏 コアメンバー向けソース
こちらからどうぞ。


コメント