パラボリックSARと移動平均を組み合わせて、トレンドフォローを多層化する考え方

パラボリックSAR(Parabolic Stop and Reverse)と移動平均(Moving Average)は、どちらもトレンドフォロー系の代表的な指標として知られていますが、答えている質問が異なります。移動平均は値動きを平滑化することで トレンドの方向 を可視化し、パラボリックSARは時間と価格の関係から その方向に合わせた出口の目安 を継続的に提示します。同じトレンドフォローのカテゴリにあっても、入口の判定と出口の管理を別々に担当できるため、組み合わせると役割分担を明確にしやすくなります。

本記事では、パラボリックSARと移動平均を併用する考え方と、cBotとして実装する際に意識したい設計上の注意点を整理します。あくまで「設計の参考」としての位置づけで、特定の数値が成果を保証する話ではありません。

パラボリックSARと移動平均が分担する2つの観点

移動平均の役割

移動平均は、一定期間の終値の平均を線として結ぶシンプルな指標です。単純平均のSMAと指数平均のEMAが代表的で、cTraderにも標準搭載されています。基礎仕様は別記事の移動平均線の基礎を参照してください。

単独利用での代表的な観察は、価格と移動平均の位置関係、移動平均自体の傾き、2本以上の移動平均のクロスです。価格が移動平均の上で推移していて、移動平均自体が上向きに傾いている状態は、上方向のトレンドが続いていると読まれる場面の一例です。

ただし、移動平均は「トレンドの方向」を示す材料にはなりますが、「いつエントリーするか」「いつ降りるか」までは直接には答えません。エントリー条件やエグジット条件は別途追加する必要があります。値動きの小さなレンジ相場では価格が移動平均の上下を行き来し、傾きもほぼ水平になりやすいため、ノイズ的なクロスが発生する点も単独使用時の限界として残ります。

パラボリックSARの役割

パラボリックSARは、価格チャートに点(ドット)として描かれる指標で、ドットが価格の下にあれば上昇継続、上にあれば下降継続という非常にシンプルな見方で読まれます。基礎仕様はパラボリックSARの基礎を参照してください。

特徴的なのは、時間の経過と新値更新に応じて、ドットが価格に少しずつ近づいていく構造です。これにより、トレンドが継続している限り トレイリングストップに近い役割 を自動的に果たします。値動きがドットの線を逆方向に抜けた瞬間に、Stop and Reverse という名前のとおり方向転換のサインになります。

ただし、パラボリックSARには「いまトレンドが発生しているか」を判別する仕組みはありません。レンジ相場では価格とドットの位置関係が頻繁に切り替わり、ダマシの転換シグナルが連発しやすい性質があります。トレンドフォローには向いているものの、レンジ相場ではむしろノイズ源になりやすい、という両面が単独使用時の限界として残ります。

なぜこの組み合わせか

移動平均が答えるのは「いまどちら向きにトレンドしているか」、パラボリックSARが答えるのは「現在のトレンドに沿った出口候補はどこか」です。両者は同じトレンドフォロー系に分類されながら、入口側と出口側で役割を分担しやすい構造になっています。

組み合わせ方の例として、次のような整理が考えられます。

このように役割を分けることで、移動平均が「トレンドかレンジか」「方向はどちらか」というフィルターを担当し、パラボリックSARが「いつ入って、いつ降りるか」というトリガーと出口を担当する構造になります。シグナルの信頼性を多角的に判定する材料として機能することが期待できます。

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

移動平均は短期20、中期50、長期200といった期間がよく使われます。エントリー判定向けには中期、より緩やかな環境フィルターには長期、というように使い分けるパターンも一般的です。

パラボリックSARは加速因子(Acceleration Factor)の初期値0.02、最大値0.2が標準的なデフォルトです。加速因子を上げるとドットが新値に対して素早く追随し、トレイリングが早めに刈り取られやすくなります。逆に下げると、ドットが価格から離れやすくなり、保有期間が長くなる傾向があります。

短い時間足(M5〜M15)では、加速因子を控えめにしてノイズの影響を減らすという方向が一般的です。長い時間足(H4〜D1)では、移動平均の期間を伸ばして大局のトレンドだけを判定するという発想もあります。いずれにしても「これが正解」という設定値はなく、複数の時間足・複数の相場期間でバックテストを取り、特定の期間にだけ過剰に最適化されていないかを確認する姿勢が大切です。

cBot化する際の考慮点

cTraderで実装する際は、計算順序と更新タイミングを意識した設計が、安定動作の鍵になります。

// 計算順序の例
var ma   = Indicators.MovingAverage(Bars.ClosePrices, 50, MovingAverageType.Exponential);
var psar = Indicators.ParabolicSAR(0.02, 0.2);

double maValue  = ma.Result.LastValue;
double maPrev   = ma.Result.Last(1);
double price    = Bars.ClosePrices.LastValue;
double sarValue = psar.Result.LastValue;
double sarPrev  = psar.Result.Last(1);

bool maUpTrend     = price > maValue && maValue > maPrev;
bool sarFlipToLong = sarPrev > Bars.ClosePrices.Last(1) && sarValue < price;

if (maUpTrend && sarFlipToLong)
{
    // 判断材料として扱う
}

実装時に気をつけたい点は次のとおりです。

実装の流れ

戦略全体は「環境認識・エントリー判定・出口管理」の3層に分けて整理すると、cBotとしてコードを構造化しやすくなります。

環境認識・エントリー判定・出口管理の戦略フロー図

  1. 環境認識: 移動平均の方向と傾きでトレンド環境かどうかを判定。傾きがほぼゼロに近い場合はレンジ相場とみなして見送り候補とする。
  2. エントリー判定: 移動平均で許可された方向に対してのみ、パラボリックSARのフリップをトリガーとして扱う。逆方向のフリップは無視する。
  3. 出口管理: 保有中はパラボリックSARのドット位置をトレイリング基準として参照。逆方向の転換、もしくはあらかじめ設定した利確水準で決済する。

このように層を分けて設計しておくと、後から「フィルターを別の指標に差し替える」「トリガーを別の判定に置き換える」といったカスタマイズもしやすくなります。

どう活用するか

組み合わせの理屈は、自作する人にとっても委託する人にとっても共通の出発点になります。

自作派の方は、本記事で整理したフィルターとトリガーの分担構造を出発点に、Claude Codeなどを使って自分の環境に合わせたcBotを組み立ててみる、という使い方が考えられます。

委託派の方は、本記事の構造をそのまま「やりたいこと」として開発者に共有すると、ヒアリングの工数を圧縮できます。仕様の前提資料として渡しておくと、ai-programming.xyz での初期見積もりも具体化しやすくなります。

教育派の方は、なぜ移動平均とパラボリックSARが補完的なのかという「理屈」を押さえることで、他の組み合わせ(ADXと移動平均の組み合わせなど)にも応用できる考え方が身につきます。

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