コンテンツにスキップ

サポートとレジスタンス(水平線)

水平の支持抵抗(サポートとレジスタンス)を測る道具には、期間で決まる動的なものと、前日の日付から決まる固定的なものがあります。前者の代表が Donchian Channel、後者の代表が Pivot Points です。この二つを別系統の水平線として重ねて見ると、ブレイクと反発の判定精度を上げやすくなります。Donchian Channel は Turtle Traders 由来の高安チャネル、Pivot Points は Classic、Fibonacci、Camarilla の三系統からなり、当日 Pivot と前日 R1/S1 が意識されます。ブレイクアウト戦略、レンジトレード、指標発表時に刺さる水準の把握に使い、ADX や ATR と併用します。

ローソク足にドンチャンチャネル(20日高値、20日安値、中央)を重ねたイメージ。

架空データによるイメージ図(実際の相場データではありません)。20日の高値と安値、その中央でレンジの上限と下限を可視化した例(ドンチャンチャネル)。

Donchian Channel

定義

Donchian Channel は Richard Donchian が1950年代に開発したチャネルです。Turtle Traders(Richard Dennis、William Eckhardt、1980年代)が採用したことでブレイクアウト指標として知られるようになりました。

Uppert=max(HtN..t1)\text{Upper}_t = \max(H_{t-N..t-1})

Lowert=min(LtN..t1)\text{Lower}_t = \min(L_{t-N..t-1})

Middlet=Uppert+Lowert2\text{Middle}_t = \frac{\text{Upper}_t + \text{Lower}_t}{2}

  • Upper:直近 N 期間の最高値
  • Lower:直近 N 期間の最安値
  • Middle:上下チャネルの中央(時々使う)
  • 標準は N = 20(Turtle System 1 = 20 日ブレイク)

Turtle Traders の System 1 と System 2 は次のとおりです。

SystemEntryExit
System 120日高値/安値ブレイク10日安値/高値ブレイク
System 255日高値/安値ブレイク20日安値/高値ブレイク

System 1 には、直前20日で System 1 のシグナルが利益になっていた場合はスキップするフィルタが原典に含まれます(利益の連続を避けるため)。

パラメータと期間

パラメータ標準意味
N20Donchian 期間(System 1)
N(long)55Turtle System 2
価格H/L高値、安値。終値ではなく高値/安値でのブレイクが原典

USD/JPY の時間足別の使い分けは次のとおりです。

時間足期間主な用途
5分20東京仲値直後、ロンドン初動のブレイク
15分20デイトレのブレイクエントリー
1時間20当日レンジからのブレイク
4時間20週次ブレイクの入口
日足20, 55スイングブレイク、Turtle 原典想定

シグナル

  • Upper 上抜け:買いブレイク。損切は Lower まで、または Middle まで
  • Lower 下抜け:売りブレイク。損切は Upper まで、または Middle まで
  • Middle 反発:トレンド中の押し目、戻り目
  • Channel 収縮:直近レンジの縮小。ブレイク待機
  • 原典の Look-back:当日を含まないため、実装では .rolling(N).max().shift(1) を使う

Pivot Points

定義

Pivot Points は、1930年代の floor trader(取引所立会人)が翌日の取引前に手計算していた水平線群を体系化したものです。前日の H/L/C から算出します。三系統があります。

Classic(Standard)Pivot Points

最も一般的な系統です。前日高値 H、前日安値 L、前日終値 C から求めます。

P=H+L+C3P = \frac{H + L + C}{3}

R1=2PL,  S1=2PHR_1 = 2P - L,\ \ S_1 = 2P - H

R2=P+(HL),  S2=P(HL)R_2 = P + (H - L),\ \ S_2 = P - (H - L)

R3=H+2(PL),  S3=L2(HP)R_3 = H + 2(P - L),\ \ S_3 = L - 2(H - P)

  • P(Pivot):当日の中心線
  • R1, R2, R3:抵抗
  • S1, S2, S3:支持

Fibonacci Pivot Points

前日レンジ(H - L)の Fibonacci ratio を Pivot に加算、減算します。

P=H+L+C3P = \frac{H + L + C}{3}

R1=P+0.382(HL),  S1=P0.382(HL)R_1 = P + 0.382 \cdot (H - L),\ \ S_1 = P - 0.382 \cdot (H - L)

R2=P+0.618(HL),  S2=P0.618(HL)R_2 = P + 0.618 \cdot (H - L),\ \ S_2 = P - 0.618 \cdot (H - L)

R3=P+1.000(HL),  S3=P1.000(HL)R_3 = P + 1.000 \cdot (H - L),\ \ S_3 = P - 1.000 \cdot (H - L)

Classic と比べて、レンジが小さい日は狭く、レンジが大きい日は広くなります。

Camarilla Pivot Points

Nick Scott が1989年に発表した系統です。前日終値 C を基準に前日レンジをスケーリングします。

R1=C+(HL)1.112R_1 = C + (H - L) \cdot \frac{1.1}{12}

R2=C+(HL)1.16R_2 = C + (H - L) \cdot \frac{1.1}{6}

R3=C+(HL)1.14R_3 = C + (H - L) \cdot \frac{1.1}{4}

R4=C+(HL)1.12R_4 = C + (H - L) \cdot \frac{1.1}{2}

S1=C(HL)1.112S_1 = C - (H - L) \cdot \frac{1.1}{12} \ldots

  • R3/S3 は反転狙いの水準(逆張り entry)
  • R4/S4 はブレイクアウトの水準(順張り entry)
  • R1/R2 は動きすぎの当日レンジ内として位置付ける

パラメータと期間

系統基準用途
Classic前日 H/L/C汎用。最も多くのトレーダーが見る
Fibonacci前日 H/L/C + フィボ比率逆張り重視
Camarilla前日 C + レンジ ×係数短期反転(R3/S3)とブレイク(R4/S4)

FX での「前日」の定義は次のとおりです。

定義用途
NY Close(JST 06:00-07:00)最も一般的。CME/CFTC ベース
London Close(JST 01:00-02:00)欧州基準の場合
東京 Close(JST 15:00)日本人トレーダーが日中で使う場合

デイトレでは NY Close 基準が標準です。使うプラットフォームの基準を確認します。

シグナル

  • Pivot P 反発:当日中央値。押し目、戻り目候補
  • R1/S1 タッチ:当日の普通の値幅の上限、下限
  • R1/S1 突破:当日の勢いが強い。R2/S2 まで
  • R2/S2 タッチ:過熱。反落、反発候補
  • R3/S3 タッチ:極端値。逆張りか追随のどちらかを他指標で決める
  • P 割れ、戻し:当日の方向変化

USD/JPY での使いどころ

Donchian と Pivot の使い分け

状況優先
ブレイクアウト戦略Donchian(20/55)
レンジトレードPivot Classic R1/S1
指標発表時の刺さる水準Pivot R2/R3/S2/S3
Turtle 系スイングDonchian 55
短期反転狙いCamarilla R3/S3

Donchian は動的期間、Pivot は固定日付ベースです。両方を重ねて、確定した水平抵抗として意識します。

東京仲値(JST 09:55)前後

  • 東京仲値の急伸で 5分足 Donchian 20 の Upper を抜けるが、Pivot R1 手前で失速する典型
  • 仲値後の反落で 15分 Donchian の Lower を抜けるとレンジ下方向確定
  • Pivot P(中心線)は東京昼の反発ラインとして意識される

ロンドンオープン(JST 16:00)

  • ロンドン前の 1時間足 Donchian 20 が東京レンジの上下限に一致することが多い
  • ロンドン初動で Donchian Upper/Lower ブレイクと ADX 上昇がそろえば順張りエントリー
  • Pivot R2/S2 がロンドン序盤の伸び切り水準になる

NYオープン(JST 22:30)

  • 指標発表で Pivot R3/S3 まで一気に到達することがある
  • 指標直後の R3/S3 反発は逆張り候補だが、初動で戻る動きは騙し
  • Donchian 55(日足)抜けは週次ブレイクとして意識される

日足 Donchian 55 と週足 Pivot

  • 日足 Donchian 55 は月次スイングの入口
  • 週足 Pivot は月次の中心水準
  • 2022年の USD/JPY 152円ブレイクは日足 Donchian 55 上抜け相当

落とし穴

  • look-ahead bias:Donchian の Upper に当日高値を含めると look-ahead になる。実装は .rolling(N).max().shift(1) で必ず前日以前を参照する
  • Pivot の「前日」定義:業者、プラットフォームで前日の切り替わり時刻が違う。表示水準が違うトレーダー同士では意識水準が微妙にズレる
  • 系統の混在:Classic の R1 と Fibonacci の R1 は別物。同じ R1 でも計算式が違うことを忘れない
  • Donchian のブレイクが騙し:ADX 低位でのブレイクは高確率で騙し。ADX > 20 とセットで判断する
  • Pivot 水準の絶対視:Pivot はあくまで前日データから計算した目安。当日の環境(指標、ヘッドライン)次第で機能しない
  • 時間足の物理単位混同:5分 Donchian 20 = 100 分、日足 Donchian 20 = 20 日。物理的な意味を忘れて同じ N として扱わない
  • 短期化しすぎる:Donchian N=5 のような短期はレンジ内の一時的な高安をブレイクとして扱ってしまう
  • 利確水準としての R3/S3 依存:到達しない日も多い。時間切れの利確ルールも組み合わせる
  • ブレイクの終値確定か高安タッチか:原典(Turtle)はセッション中の高安タッチでブレイク成立。日足終値確定を待つと機会損失になり、逆にヒゲでの一時タッチは騙しになりやすい
  • 教科書シグナルの実データ有意性:一般には Turtle 由来のブレイクアウトは1980年代から1990年代にかけて徐々に統計的な edge が減衰しているとされる(Chan 2013 など)。ブレイクの後の継続性は市場環境に依存する

Python 実装スケッチ

Donchian Channel

import pandas as pd
def donchian_channel(
high: pd.Series,
low: pd.Series,
n: int = 20,
) -> pd.DataFrame:
upper = high.rolling(window=n, min_periods=n).max().shift(1)
lower = low.rolling(window=n, min_periods=n).min().shift(1)
middle = (upper + lower) / 2.0
return pd.DataFrame({"upper": upper, "lower": lower, "middle": middle})

.shift(1) を忘れると look-ahead bias になります。標準は前日までの N 期間高安を参照します。

Pivot Points(Classic)

import pandas as pd
def classic_pivots(prev_high: float, prev_low: float, prev_close: float) -> dict:
p = (prev_high + prev_low + prev_close) / 3.0
r1 = 2 * p - prev_low
s1 = 2 * p - prev_high
r2 = p + (prev_high - prev_low)
s2 = p - (prev_high - prev_low)
r3 = prev_high + 2 * (p - prev_low)
s3 = prev_low - 2 * (prev_high - p)
return {"P": p, "R1": r1, "R2": r2, "R3": r3, "S1": s1, "S2": s2, "S3": s3}
def daily_pivots(df_daily: pd.DataFrame) -> pd.DataFrame:
"""日足 OHLC から毎日の Pivot を生成し、翌営業日に紐付ける。"""
prev = df_daily.shift(1)
p = (prev["high"] + prev["low"] + prev["close"]) / 3.0
r1 = 2 * p - prev["low"]
s1 = 2 * p - prev["high"]
r2 = p + (prev["high"] - prev["low"])
s2 = p - (prev["high"] - prev["low"])
r3 = prev["high"] + 2 * (p - prev["low"])
s3 = prev["low"] - 2 * (prev["high"] - p)
return pd.DataFrame(
{"P": p, "R1": r1, "R2": r2, "R3": r3, "S1": s1, "S2": s2, "S3": s3}
)

Pivot Points(Fibonacci / Camarilla)

def fibonacci_pivots(prev_high: float, prev_low: float, prev_close: float) -> dict:
p = (prev_high + prev_low + prev_close) / 3.0
rng = prev_high - prev_low
return {
"P": p,
"R1": p + 0.382 * rng, "S1": p - 0.382 * rng,
"R2": p + 0.618 * rng, "S2": p - 0.618 * rng,
"R3": p + 1.000 * rng, "S3": p - 1.000 * rng,
}
def camarilla_pivots(prev_high: float, prev_low: float, prev_close: float) -> dict:
rng = prev_high - prev_low
return {
"R1": prev_close + rng * 1.1 / 12, "S1": prev_close - rng * 1.1 / 12,
"R2": prev_close + rng * 1.1 / 6, "S2": prev_close - rng * 1.1 / 6,
"R3": prev_close + rng * 1.1 / 4, "S3": prev_close - rng * 1.1 / 4,
"R4": prev_close + rng * 1.1 / 2, "S4": prev_close - rng * 1.1 / 2,
}

下位足(15分足など)に日足 Pivot を紐付ける場合は merge_asofreindex + ffill を使います。

参考

  • Richard Donchian, “Trend-Following Methods in Commodity Price Analysis”, Commodity Yearbook, 1957
  • Curtis M. Faith, Way of the Turtle, McGraw-Hill, 2007
  • Michael Covel, The Complete TurtleTrader, HarperCollins, 2007
  • Nick Scott, “Camarilla Equation”, 1989, unpublished paper
  • Investopedia — “Donchian Channel”
  • Investopedia — “Pivot Points”
  • StockCharts — “Pivot Points”
  • Ernie Chan, Quantitative Trading, Wiley, 2013 revised