パラボリックSARとATRを組み合わせる考え方 — 追随型の決済と損切り幅を設計する

パラボリックSAR(Stop and Reverse)は、価格に追随するドットでトレンドの方向と転換の目安を示すインジケーターです。ただし、レンジ相場では転換シグナルを連発しやすい弱点があります。一方、ATR(Average True Range)は値動きの大きさ、つまりボラティリティを数値化する指標ですが、方向については何も語りません。両者は「方向・転換」と「変動幅」という別々の質問に答えるため、組み合わせると エントリー後の決済・損切りまで含めた追随型の設計 が組みやすくなります。

本記事では、パラボリックSARとATRを組み合わせる考え方と、cBotとして実装する際の注意点を整理します。あくまで実装の参考としての位置づけであり、特定の設定が成果を保証するという話ではありません。

パラボリックSARが方向と転換を、ATRが変動幅を分担する構成の模式図

パラボリックSARの役割

パラボリックSARは、価格の下(上昇局面)または上(下降局面)にドットを描画し、価格がドットに触れると位置が反転する追随型のインジケーターです。基礎的な仕様は別記事のパラボリックSARとはにまとめています。

単独利用での代表的な見方は次の通りです。

弱点は、方向感のないレンジ相場で反転を繰り返し、シグナルを連発してしまうことです。また、ドットと価格の距離は加速係数という内部パラメータで決まるため、そのときどきの実際の値動きの大きさとは必ずしも連動しません。ボラティリティが急拡大した局面では、ドットの追随が値動きに対して近すぎたり遠すぎたりする場面が出てきます。

ATRの役割

ATRは、一定期間のトゥルーレンジ(前日終値を考慮した実質的な値幅)を平均し、ボラティリティを1本のラインで表す指標です。詳細はATRの基礎を参照してください。

単独利用では「いまの相場がどれくらい動いているか」を測り、損切り幅や利食い幅をボラティリティに比例させる設計に使われるのが一般的です。ボラティリティが小さい時期に固定幅の損切りを置くと広すぎ、大きい時期には狭すぎる、というミスマッチを緩和する材料になります。

ただし、ATRは 方向を一切示しません。値が上昇していても、それは「上にも下にも大きく動いている」ことしか意味しないため、ATR単独では売買方向の判断材料が不足します。方向判定は別の仕組みに委ねる必要があります。

なぜこの組み合わせか

パラボリックSARが答えるのは「いまはどちら向きで、どこで転換したか」、ATRが答えるのは「いまはどれくらい動く相場か」です。質問が重複していないため、役割分担が素直に成立します。

考え方の例を挙げます。

この構成のポイントは、SARの「距離が実際の変動幅と連動しない」という弱点をATRが補い、ATRの「方向が分からない」という弱点をSARが補う、明確な補完関係にあることです。特に損切り設計では、初期幅はATR基準・追随はSAR基準 と工程ごとに担当を分けられるため、エントリーから決済までの一貫した設計ドキュメントとして整理しやすくなります。一般論として、低ボラ帯のダマシ転換に対するノイズフィルターとして機能することが期待できます。

ただし、組み合わせてもレンジ相場でのSAR反転連発が消えるわけではありません。必要に応じてADXなどトレンド強度を測る指標での補強も検討対象になります。

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

唯一の正解はなく、検証を前提に方向性だけ整理します。

パラボリックSAR は加速係数0.02・上限0.2が標準設定として広く参照されます。加速係数を大きくすると追随が速くなる反面、反転が増えてダマシも増える傾向があります。短期の時間足ほどこの影響が出やすい点に注意が必要です。

ATR は期間14が標準です。損切り幅に使う倍率は、短期売買なら小さめ、スイングなら大きめに置く方向性が一般的ですが、銘柄のボラティリティ特性と自分の時間軸によって適切な値は変わります。

いずれも、過去データでのバックテストで挙動を確認するプロセスを省略しないことが重要です。倍率や係数は「決め打ち」ではなく検証対象として扱ってください。

cBot化する際の考慮点

cTraderのcBotとして実装する場合の設計ポイントを整理します。

データ取得タイミング: SARのドットは足の途中でも動くため、OnTickで参照するとシグナルがばたつきます。確定足ベース(OnBarで Last(1) を参照)で判定するのが安定的です。

NaNチェック: 起動直後はバー数不足でSAR・ATRとも NaN を返す場合があります。判定前のガードを忘れないようにします。

損切りの更新方向: SARを損切りラインの追随に使う場合、有利な方向にのみ更新する制御が必要です。SARの値をそのまま毎バー上書きすると、計算上ラインが後退する場面で損切りが緩んでしまいます。また、ブローカーごとの最小ストップ距離の制約で更新が拒否されるケースも考慮します。

// 例: 確定足ベースの参照とガード
var sar = Indicators.ParabolicSAR(0.02, 0.2);
var atr = Indicators.AverageTrueRange(14, MovingAverageType.Exponential);

double sarValue = sar.Result.Last(1);
double atrValue = atr.Result.Last(1);
double close = Bars.ClosePrices.Last(1);

if (double.IsNaN(sarValue) || double.IsNaN(atrValue)) return;

bool upSide = close > sarValue;          // SARが価格の下 → 上方向と判定
double stopDistance = atrValue * 2.0;    // 初期損切り幅はATR基準(倍率は検証対象)

// upSide と stopDistance を発注・SL更新の判断材料として組み合わせる

計算負荷はどちらも軽く、パフォーマンス面の懸念は小さい組み合わせです。実装初期は、反転検知とSL更新のたびにログ出力しておくと、チャートとの突き合わせ検証がしやすくなります。

実装の流れ

全体像を入力→計算→判定→出力の流れで整理します。

  1. 入力: 監視する銘柄・時間足を決め、価格系列を取得する
  2. 計算: パラボリックSARとATRをそれぞれ計算し、確定足の値を取得する
  3. 判定:
    • 方向判定: SARと価格の位置関係をチェック
    • フィルター: ATRが基準水準以上かを確認
  4. 出力: エントリー候補の記録、発注時はATR基準の損切り幅を設定、保有中はSARを目安にラインを追随更新する

判定を発注に直結させず、シグナルとライン候補の可視化までで止める構成も、検証段階では扱いやすい設計です。

環境認識からエントリー判定、発注・管理までの戦略フロー図

どう活用するか

この設計図は目的別に活用できます。

自作派の方は、Claude Code を使った cBot 開発の設計ドキュメントとして、本記事の節構造をそのまま流用してみてください。委託派の方は、ai-programming.xyz への開発相談時に「SARで追随・ATRで幅を決める構成」という前提を共有すると要件詰めがスムーズです。教育派の方は、スクールの実装演習テーマとして、損切り更新ロジックを自分の手で書いてみる教材に使えます。

エントリーだけでなく決済・損切りまで含めて設計する視点は、他の組み合わせ(移動平均 + RSI など)に取り組むときの土台にもなります。

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