パラボリックSARとRSIを組み合わせる考え方 — 反転シグナルを過熱感で絞り込む
パラボリックSAR(Stop and Reverse)は価格に追随するドットで方向と転換の目安を示す指標、RSI(Relative Strength Index)は値動きの過熱感を0〜100の数値に変換する指標です。前者はトレンドに追随する道具、後者は行き過ぎを測る道具として語られることが多く、性格は一見すると正反対に見えます。本記事では、あえてこの2つを噛み合わせ、SARが出す数多くの反転シグナルのうち、どれを判断材料として採用するかをRSIで絞り込む という設計の考え方を整理します。自作派の設計メモ、あるいは開発を委託する際の要件整理の下敷きとして読んでいただければと思います。なお、特定の設定が成果を保証するという趣旨の記事ではありません。
パラボリックSARの役割
パラボリックSARは、上昇局面では価格の下に、下降局面では価格の上にドットを描き、価格がドットに触れた時点でドットが反対側へ移る仕組みを持ちます。指標そのものの成り立ちはパラボリックSARの基礎にまとめています。
この組み合わせでSARに担わせるのは、次の2つの仕事です。
- 現在の向きの表明: ドットが価格のどちら側にあるかで、いまがどちら向きの局面かを機械的に分類する
- 転換タイミングの提示: ドットが反対側へ移った足を、判断を見直すきっかけとして扱う
SARの利点は、判定にあいまいさが残らないことです。ドットは価格の上か下のどちらかにしか存在しないため、条件分岐がそのまま書けます。一方で弱点もはっきりしています。方向感の乏しいレンジでは反転が短い間隔で繰り返され、そのほとんどが継続しない動きになります。加速係数という内部パラメータが直前の値動きの勢いだけで決まる構造上、SARは「その反転が意味のある転換なのか、単なる往復なのか」を区別する材料を持っていません。この選別を外部に委ねる必要がある、というのが出発点です。
RSIの役割
RSIは、一定期間の値上がり幅と値下がり幅の比率から、相場がどちらに偏って動いてきたかを0〜100で表す指標です。基本的な読み方はRSIとモメンタムの基礎で解説しています。
一般に70以上で買われ過ぎ、30以下で売られ過ぎとされますが、この組み合わせではRSIを逆張りの入り口としては使いません。担わせるのは、いま値動きに一方向への偏りがあるのか、それとも中立に近い状態なのか という文脈の提供です。RSIが50付近で細かく上下している局面は、買いと売りの圧力が拮抗している状態と読めます。一方、RSIが50から明確に離れて推移している局面は、方向の偏りが継続していると解釈できます。
RSI単独の限界もよく知られています。強い一方向の流れが続く場面ではRSIが高い(あるいは低い)水準に貼り付いたまま推移し、「行き過ぎ」の水準を根拠に逆方向を狙うと、流れに逆らい続けることになります。またRSIは水準を示すだけで、いつ判断を実行するかというタイミングについては何も語りません。
なぜこの組み合わせか
SARが答えられないのは「この反転を採用すべきか」であり、RSIが答えられないのは「いつ実行するか」です。問いが重ならないため、役割分担が素直に成立します。
具体的な噛み合わせ方の例を挙げます。
- SARのドットが上向き側へ反転した足で、RSIが50を上回っているかを確認する
- RSIが50付近の狭い帯に留まり続けている間は、SARが反転しても見送りとして扱う
- RSIが極端な水準に貼り付いている局面では、SARの反転を「流れの中の一時的な押し戻し」と解釈し、採用条件を厳しくする
ここで重要なのは、RSIを 逆方向のシグナル源ではなく、SARのシグナルに対する通過条件として 配置している点です。トレンド追随型と逆張り型の指標を並べると、しばしば互いに逆の答えを出して判断が固まらなくなります。両方を対等なシグナル源として扱わず、主判定はSAR、通過条件はRSI と階層を決めておくことで、この衝突を設計段階で回避できます。
補完関係を言い換えると、SARの「反転を出しすぎる」性質にRSIが文脈という制約を与え、RSIの「実行タイミングを持たない」性質にSARが具体的な足を与える構図です。一般論として、拮抗局面で発生する反転を前段で削るノイズフィルターとして機能することが期待できます。
ただし、絞り込みを強めるほどシグナルの本数は減り、流れの初動は取り逃がしやすくなります。この構成は機会の多さではなく判断の一貫性を優先する設計だと理解しておくと、期待とのずれを防げます。
パラメータをどう考えるか
正解の組はなく、検証を前提に方向性だけ整理します。
パラボリックSAR は加速係数0.02・上限0.2が標準として広く参照されます。係数を大きくすると追随が速くなる反面、反転回数が増えてフィルターへの負荷も増えます。逆に小さくすると反転は減りますが、判断の更新は遅くなります。
RSI は期間14が標準です。期間を短くすると値の振れが大きくなり通過条件としては不安定になりやすく、長くすると滑らかになる反面、状態の切り替わりが遅れます。通過条件のしきい値についても、50という中央値を境にするのか、そこから一定の幅を持たせた不感帯を設けるのかで挙動が変わります。
時間足による違いも無視できません。短い時間足ほどSARの反転もRSIの振れも増えるため、フィルターの効き方が変わります。いずれのパラメータも決め打ちにせず、バックテストで挙動を確かめてから採用する流れが安全です。
cBot化する際の考慮点
cTraderのcBotとして実装する場合の論点を整理します。
判定は確定足で行う: SARのドットは足の途中で位置が変わることがあり、RSIも同様に値が動きます。OnTickで判定するとシグナルがばたつくため、OnBarで確定済みの Last(1) を参照する構成が安定的です。
「反転した足」の検出: SARを主判定に据える以上、必要なのは「いまどちら向きか」ではなく「今回の足で向きが変わったか」です。前足と当足の位置関係を比較し、状態が切り替わったかどうかを明示的に判定します。前足の状態を保持しておく実装が素直です。
ウォームアップ不足への防御: 起動直後はバー数が足りず、SAR・RSIとも NaN を返す場合があります。判定前にガードを入れておかないと、意図しない分岐に落ちます。
計算順序: SARの反転判定を先に行い、成立した場合にのみRSIを評価する順序にすると、処理が読みやすくなります。どちらも計算負荷は軽く、パフォーマンス面の懸念は小さい組み合わせです。
// 例: 確定足ベースで「反転した足」を検出し、RSIを通過条件として評価する
var sar = Indicators.ParabolicSAR(0.02, 0.2);
var rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14);
double sarPrev = sar.Result.Last(2);
double sarLast = sar.Result.Last(1);
double rsiLast = rsi.Result.Last(1);
double closePrev = Bars.ClosePrices.Last(2);
double closeLast = Bars.ClosePrices.Last(1);
if (double.IsNaN(sarPrev) || double.IsNaN(sarLast) || double.IsNaN(rsiLast)) return;
bool upPrev = closePrev > sarPrev;
bool upLast = closeLast > sarLast;
bool flipped = upPrev != upLast; // 今回の足で向きが変わったか
// 反転が成立した足でのみ、RSIの水準を通過条件として確認する
if (flipped)
{
bool passed = upLast ? rsiLast > 50 : rsiLast < 50;
// flipped と passed の組み合わせを判断材料として扱う(しきい値は検証対象)
}
ポジション管理との連携: 保有中にSARが逆向きへ反転した場合の扱いは、エントリー条件とは別に決めておく必要があります。反転をそのまま手仕舞いの目安にするのか、RSIの通過条件は決済側には適用しないのか、といった非対称の設計は事前に文書化しておくと検証時に迷いません。
実装の流れ
処理は、主判定から通過条件へ一方向に降りる構造に整理できます。
- 入力: 対象銘柄と時間足を決め、確定足の価格系列を取得する
- 計算: SARとRSIをそれぞれ算出し、直近の確定値を取り出す
- 主判定: SARの向きが今回の足で切り替わったかを検出する
- 通過条件: 反転が成立した場合のみ、RSIの水準が条件を満たすかを確認する
- 共通フィルター: 経済指標の前後、スプレッドの異常、保有ポジション数を確認する
- 出力: 条件がそろった場合のみ記録・通知を行い、発注する場合は損切りと利益確定の幅を自分の時間軸に合わせて設定する
どこかの段で条件が崩れた時点で見送りへ分岐させる早期リターン型に組むと、検証時に「どの段で弾かれたのか」のログが取りやすくなります。
どう活用するか
自作派の方は、Claude Code を使った開発の設計メモとして本記事の節構造をそのまま流用してみてください。「主判定+通過条件」という階層の分け方は、SARとRSIに限らず他の組み合わせにも展開できる設計パターンです。
実装に時間が取れない方や既存ロジックにフィルターを追加したい方は、ai-programming.xyz で個別の実装相談を承っています。体系的に学びたい方は、スクールでフィルター設計から検証の進め方までを実際の開発フローに沿って学ぶことができます。
本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。