Williams %RとATRを組み合わせる考え方 — 反転シグナルをボラティリティで選別し損切り幅を設計する

逆張り・反転狙いのロジックを組むと、多くの場合2つの壁に当たります。ひとつは「シグナルが多すぎて選べない」こと、もうひとつは「損切りをどこに置くか根拠を持てない」ことです。本記事では、この2つの壁に対して、短期反転の検知役に Williams %R(ウィリアムズ・パーセント・アール)を、選別役と幅決め役に ATR(アベレージ・トゥルー・レンジ)を割り当てる構成を整理します。cTrader の cBot 開発を想定した設計メモという位置づけであり、特定の構成や数値が成果につながることを示すものではありません。

Williams %Rの反転候補をATRの水準で選別し、損切り幅をATR倍率で設計する二層構成の模式図

Williams %R の役割

Williams %R は「期間内の最高値から現在の終値までの距離」を、期間内の高値〜安値の幅で割って符号反転したオシレーターです。値は 0〜-100 で表され、終値が期間内の高値付近にあれば 0 側、安値付近にあれば -100 側に振れます。読み方の目安としては、-20 を上回る領域が買われすぎ圏、-80 を下回る領域が売られすぎ圏とされるのが一般的です。平滑化処理を持たないため、近い構造を持つストキャスティクスと比べても値の動きは機敏です。

この機敏さが、単独運用ではそのまま弱点になります。値動きが痩せた時間帯でも %R は 0 と -100 の間をせわしなく往復するため、閾値タッチを機械的に拾うとエントリー候補が大量に発生します。また、%R が測っているのは「期間内レンジに対する相対位置」だけです。そのレンジ自体が広いのか狭いのか——いまの相場がどの程度動いているのか——という情報は、%R の値からは読み取れません。

なお、トレンド方向で %R を選別するアプローチは別記事のWilliams %Rと移動平均線の組み合わせで扱いました。今回はもう一つの軸、「変動幅」での選別です。

ATR の役割

ATR は、1本ごとの実質的な値動き幅(トゥルーレンジ)を一定期間で平均した指標で、「この銘柄・この時間足は、いま1本あたりどの程度動くのか」を価格単位で教えてくれます。基礎は別記事のATRとはで解説しています。

特徴的なのは、ATR に方向の概念がないことです。急騰でも急落でも ATR は同じように上昇し、こう着すれば低下します。したがって ATR だけを眺めていても「どちらに入るか」「いつ入るか」は決まりません。これが単独運用の限界です。

代わりに ATR には、オシレーターにはない実務的な強みがあります。出力が価格と同じ単位で得られることです。「ATR の2倍」といった表現がそのまま値幅として扱えるため、損切り・利確の距離設計に直接流用できます。

なぜこの組み合わせか

役割分担を一言でまとめると、%R が「いつ」を、ATR が「やるかどうか」と「どの幅で」を受け持つ構成です。

第一の接点は シグナルの選別 です。ATR が低迷している時間帯は値動き自体が痩せているため、%R の閾値タッチが出ても見込める値幅が小さく、スプレッドの比重が相対的に重くなります。「ATR が基準水準を超えているときに限り %R のシグナルを評価する」という前段フィルターを置けば、閑散時間帯のノイズを入口で落とす設計になります。反対に、指標発表直後のような ATR の急拡大局面は約定が荒れやすいと考えられるため、上限側の条件を設けて対象外とする設計も検討できます。

第二の接点は 損切り幅の設計 です。反転狙いは定義上「行きすぎ」に向かって入るため、想定が外れたときの逆行に備える損切りが生命線になります。固定幅の損切りは、静かな相場では無駄に広く、荒い相場ではノイズで刈られやすいという構造的な弱さを抱えます。「ATR × 係数」で幅を決めれば、相場の状態に合わせて損切り距離が伸縮し、環境への適応を仕組み側に持たせられます。

ただし、この2指標だけでは 方向の文脈が欠けている 点は明記しておきます。強いトレンドの逆側を拾うシグナルもフィルターを通過してしまうため、上位足の傾きや移動平均による方向判定を三層目として重ねる拡張が、実運用では検討対象になります。

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

先に断っておくと、ここに正解の数値はありません。検証の出発点として方向性を整理します。

%R の期間はデフォルトの14本が出発点です。期間を短くすると閾値タッチの頻度が増え、長くすると減ります。閾値も -20/-80 が標準ですが、候補を絞り込みたければ -10/-90 まで深くする選択肢があります。

ATR の期間も14本が広く使われます。平滑化方式によって立ち上がりの鋭さが変わるため、フィルター用途では滑らかな方式のほうが判定のちらつきを抑えやすい傾向があります。

損切りに使う係数は、ATRの1.5〜3倍あたりが検討の出発点としてよく挙げられますが、適正は銘柄・時間足・想定保有時間で大きく変わります。フィルターの基準水準についても、生の値で固定すると銘柄間で使い回せないため、「直近N本の ATR の中で相対的に高い位置にあるか」というパーセンタイル型の判定に置き換える方法があります。どの数値を選ぶにしても、過去データでの検証を挟んでから先へ進めてください。

cBot化する際の考慮点

設計上の急所を4点挙げます。

判定は確定足で行う: %R は1本の足の中でも大きく動くため、ティックごとに評価すると同じ足でシグナルが点いたり消えたりします。OnBar で確定値だけを見る構成が出発点です。

指標値の妥当性確認: ロード直後は履歴不足で NaN が返ることがあります。妥当性を確認してから判定ロジックへ進めます。

価格単位と注文単位の変換: ATR の出力は価格そのものの単位です。損切り距離として注文に渡す前に、プラットフォーム側が要求する単位への変換や最小刻みへの丸めを挟む必要があります。

進入と復帰の区別: 「売られすぎ圏に入った瞬間」を拾うのか「圏から戻り始めた足」を拾うのかで、挙動は別物になります。張り付きへの耐性を持たせるなら、進入をフラグで記憶し、復帰した足で評価する二段構えが扱いやすい形です。

// 抜粋: フィルター判定と損切り距離の算出
private WilliamsPctR _williamsR;
private AverageTrueRange _atr;
private bool _wasOversold;

protected override void OnStart()
{
    _williamsR = Indicators.WilliamsPctR(14);
    _atr = Indicators.AverageTrueRange(14, MovingAverageType.Exponential);
}

protected override void OnBar()
{
    double r = _williamsR.Result.Last(1);
    double range = _atr.Result.Last(1);
    if (double.IsNaN(r) || double.IsNaN(range)) return;

    bool volatilityOk = range >= MinAtrThreshold;   // 基準は銘柄ごとに検証
    bool oversoldExit = _wasOversold && r > -80.0;  // 圏からの復帰
    double stopDistance = range * StopMultiplier;   // 価格単位の損切り距離

    _wasOversold = r < -80.0;
    // volatilityOk && oversoldExit のときだけ候補として扱う
}

動作確認の段階では、フィルターで落としたシグナルも含めてログへ書き出しておくと、どの条件が効いているのかを後から検証しやすくなります。

実装の流れ

処理は大きく三層に分かれます。

  1. 前段(環境): ATR を評価し、基準に満たなければその足の処理を終了する
  2. 中段(検知): %R の閾値圏への進入・復帰を、状態管理付きで評価する
  3. 後段(幅と出力): 候補が立ったら ATR × 係数で損切り距離を計算し、通知または発注へ渡す

三層を関数として分離しておくと、後から「前段に移動平均の方向判定を足す」「後段の係数を外部パラメータ化する」といった拡張が局所的な修正で済みます。また、最初から発注まで自動化せず、通知どまりの構成で一定期間走らせて挙動を確かめる段階を挟むと、ロジックの癖を安全に把握できます。

ボラティリティ環境判定からタイミング判定、リスク幅設計、出力までの戦略フロー図

どう活用するか

自作するなら、本記事の三層構成(環境・検知・幅)をそのまま Claude Code への指示書の骨格にできます。開発を委託するなら、ai-programming.xyz への相談時に「前段フィルターの基準の決め方」「損切り係数を外部パラメータにするか」の2点を先に固めておくと、要件のすり合わせが早く進みます。体系的に学びたい方には、進入フラグによる状態管理の実装が、スクールの演習題材としてちょうどよい難易度です。

ATR を幅の設計に使う考え方そのものは、ATRベースの利確幅設計でも掘り下げています。検知役の指標を差し替えても骨格ごと再利用できる型なので、あわせて参照してみてください。

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