スーパートレンドとRSIを組み合わせる考え方 — 方向ラインの内側で押し目を測る設計

スーパートレンド(Supertrend)は、ATR(平均真の値幅)をもとに価格の上下へ1本のラインを引き、「いまの方向」と「方向が崩れたとみなす水準」を同時に示すインジケーターです。RSI(相対力指数)は、一定期間の上げ幅と下げ幅の比率から、値動きの勢いを0〜100で表すオシレーターです。

この2つを組み合わせると、「方向はスーパートレンドに任せ、その方向の内側で勢いが一時的に弱まった場面をRSIで拾う」という役割分担が組めます。いわゆる押し目・戻りの候補を、方向判定とタイミング判定に分けて扱う設計です。本記事は、トレンドフォローに逆張り的なタイミングを足したいcBot開発者や、スーパートレンドを使っていてエントリー位置が遅れがちだと感じている方を想定しています。特定の数値が成果を保証するものではなく、あくまで設計の考え方の整理として読んでください。

スーパートレンドの方向ラインとRSIの押し目検出の関係を示す模式図

スーパートレンドの役割

スーパートレンドがどんな情報を返すのかを、まず確認しておきます。

計算の骨格は、足の中値(高値と安値の平均)からATRの一定倍だけ離した上下2本の帯です。上方向の局面では下側の帯だけが表示され、その帯は価格が進むほど切り上がり、下がることはありません(ラチェット構造)。終値がこのラインを下抜けると方向が反転し、今度は価格の上側に下向きのラインが現れます。ATRそのものの考え方はATRとはで解説しています。

単独で使う場合の観察軸は次のとおりです。

一方で限界もはっきりしています。第一に、フリップは終値がラインを越えてから確定するため、方向転換の認識はどうしても遅れます。第二に、レンジ相場ではフリップが短い間隔で繰り返され、そのたびに逆方向へ振られやすくなります。第三に、ラインの内側で価格がどの位置にいるか、つまり「いま入ると損切までが遠いのか近いのか」については、ライン自体は何も教えてくれません。トレンドの最中にフリップを待ってから入る使い方では、ラインから大きく離れた位置で入ることになりがちです。

RSIの役割

次に、タイミング側を担うRSIの性格を整理します。

RSIは、直近の上げ幅の平均と下げ幅の平均の比から算出され、一般に70以上を買われ過ぎ、30以下を売られ過ぎの目安として扱われます。詳しくはRSIとはにまとめています。

ただ、このしきい値の解釈はレンジ相場を前提としたものです。強いトレンドの中ではRSIが70付近に張り付き続けることがあり、「買われ過ぎだから反転候補」と読むと、トレンドに逆らう判断を繰り返す原因になります。

そこで本記事の組み合わせでは、RSIを過熱感の判定ではなく、トレンド中の勢いの一時的な減速を測る道具として使います。上方向の局面であれば、RSIが50を割り込んで中立〜やや弱い水準まで下がり、そこから再び50を上回る動きを「押しが一巡した候補」として観察します。

RSI単独の弱点は、方向の前提を持たないことです。50を割ったのが押し目なのか、トレンドの終わりなのかをRSIだけでは区別できません。この区別をスーパートレンドに預けるのが、組み合わせの出発点になります。

なぜこの組み合わせか

2つの弱点がどう噛み合うのかを、理屈の面から整理します。

スーパートレンドは「方向」と「崩れの水準」を持っていますが、「いつ入るか」を持っていません。RSIは「勢いの波」を持っていますが、「どちらが本流か」を持っていません。互いに欠けている情報を持ち寄る関係なので、一方の弱点を他方が補完する組み合わせと考えられます。

具体的な判定の組み立て例は次のとおりです。

この設計の利点は、エントリー位置がスーパートレンドのラインに近づきやすいことです。押しの局面では価格がラインに寄ってくるため、ラインを損切候補とした場合の距離が、フリップ直後に入るより短くなる傾向があります。損切距離が短くなれば、同じ許容リスクでもリスクリワードの設計に余裕が出ます。考え方はリスクリワード比とはも参考にしてください。

ただし、限界もはっきり書いておきます。この組み合わせはレンジ相場でのフリップの連続を防ぐ仕組みを持っていません。RSIはタイミングを絞るだけで、スーパートレンドの方向判定そのものを検証するわけではないためです。レンジ対策が必要な場合は、ADXなどトレンド強度を測る第三の指標を足すか、フリップ後の経過本数で条件を付けるといった追加設計が必要になります。上位足の方向に合わせて逆張りする発想はトレンドフィルター+逆張りの設計でも扱っています。

パラメータをどう考えるか

パラメータには唯一の正解がないため、ここでは方向性のみを整理します。

スーパートレンドの主なパラメータは、ATR期間と倍率の2つです。ATR期間を10前後、倍率を3前後とする設定が広く知られています。倍率を小さくするとラインが価格に近づき、フリップが増えて反応は速くなる一方、レンジで振られやすくなります。倍率を大きくするとフリップは減りますが、ラインまでの距離が広がり、損切候補が遠くなります。この組み合わせでは、ラインを損切候補として使う以上、倍率は「方向判定の感度」と「損切距離」の両方に効く点を意識してください。

RSIは期間14が標準ですが、押し目の検出に使う場合は、期間を短めにして小さな押しにも反応させるか、標準のまま深めの押しだけを拾うかという選択になります。押しの判定ラインも、50を基準にするか、45や40まで下がることを条件にするかで、シグナルの頻度と押しの深さが変わります。

時間足については、上位足のスーパートレンドで方向を決め、下位足のRSIで押しを測るマルチタイムフレーム構成も検討に値します。どの設定であっても、自分の運用銘柄と時間足でバックテストを行い、シグナル頻度・損切距離の分布・連敗の深さを確認してから採用する手順は省かないことが重要です。

cBot化する際の考慮点

ここからは、cTraderのcBotに組み込む際の設計上のポイントを整理します。

確定足で判定する: スーパートレンドのラインは、未確定の足では値が動き、フリップも足の途中で出たり消えたりします。判定はOnBarで行い、インデックスは確定済みの1本前(Last(1))を使う設計が安定します。

方向の取り方: cTraderの組み込みIndicators.Supertrend(periods, multiplier)は、UpTrendとDownTrendの2系列を返し、該当しない側はNaNになります。どちらがNaNでないかで方向を判定します。起動直後は両方NaNの区間があるため、その間は判定しない分岐を入れます。

押しの状態管理: 「RSIが50を割った」と「50を回復した」は別の足で起きるため、状態を保持する必要があります。押し開始フラグを立て、回復で発火、その後は次の押しまで再発火させない、という状態遷移で管理します。フリップが起きたら状態はリセットします。

損切距離のガード: エントリー時点の価格とラインの距離をATRで割った値を記録し、一定以上離れていれば見送る条件を入れておくと、ラインから遠い位置での参加を避けやすくなります。損切幅はロット計算に直結するため、距離から逆算してロットを決める設計が自然です。

損切の追随: スーパートレンドのラインは上方向局面では切り上がる一方なので、保有中にラインに合わせてストップを移動するトレーリングとしても使えます。ただしスプレッドやスリッページの分だけ余白を取ることを検討してください。

// 例: 確定足ベースの方向判定と押し目回復の検出
var st  = Indicators.Supertrend(10, 3.0);
var rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14);

double up   = st.UpTrend.Last(1);
double down = st.DownTrend.Last(1);
bool isUp   = !double.IsNaN(up);
bool isDown = !double.IsNaN(down);
if (!isUp && !isDown) return; // 計算に必要な本数が不足

double rsiNow  = rsi.Result.Last(1);
double rsiPrev = rsi.Result.Last(2);
if (isUp && rsiNow < 50) pullbackArmed = true;          // 押しの開始を記録
bool recovered = pullbackArmed && rsiPrev < 50 && rsiNow >= 50;
if (recovered) pullbackArmed = false;                   // 次の押しまで再発火させない
double stopDistance = Bars.ClosePrices.Last(1) - up;    // ラインまでの距離
// recovered と stopDistance を合わせて判断材料とする

実装の流れ

全体の処理を、入力から出力までの流れで整理します。

  1. 入力: 対象銘柄と時間足の確定足をOnBarで受け取る
  2. 計算: スーパートレンド(方向・ライン値)、RSI、ATR(距離の正規化用)をそれぞれ取得する
  3. 状態更新: フリップの有無を確認し、フリップがあれば押しの状態とフリップ後経過本数をリセット。なければRSIの水準から押しの状態を進める
  4. 判定: 押し回復の発火、フリップ後経過本数、ラインまでの距離(ATR比)の3条件を照合する
  5. 出力: 採用候補の場合は、ラインを損切候補としてロットを逆算し、発注またはログ出力へ渡す

この構成は、方向判定・タイミング判定・リスク判定を別々の層に分けている点がポイントです。層が分かれていれば、たとえばRSIを別のオシレーターに差し替える、距離ガードの閾値だけを検証し直す、といった変更を局所的に行えます。

スーパートレンドとRSIによる押し目判定の実装フロー

どう活用するか

最後に、立場別の使い方をまとめます。

自作派の方は、本記事の「方向・タイミング・距離」の三層を設計書として、Claude Code を使ったcBot開発の下敷きにしてみてください。状態遷移の部分は特にバグが出やすいため、各足の状態をログに出して検証する進め方がおすすめです。委託派の方は、ai-programming.xyzへの相談時に「スーパートレンドの方向内でRSIの押し回復を拾い、ラインを損切候補にしたい」と伝えていただくと、要件のすり合わせが進めやすくなります。教育派の方は、スクールでの状態管理の練習題材として活用できます。

本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。