コンテンツにスキップ

ハーモニックパターン(Harmonic Patterns)

ハーモニックパターンは、フィボナッチ比率で厳密に定義される5点(XABCD)パターン群です。Gartley、Bat、Butterfly、Crab、Deep Crab、Shark、Cypher、および ABCD、Three Drives の規則、PRZ(Potential Reversal Zone)の計算、エントリー・損切りの型を体系化します。

起源は H. M. Gartley Profits in the Stock Market(1935)の「Gartley 222」パターンです。Larry Pesavento が1970年代にフィボナッチ比率を厳密化し、Scott Carney が1998年の The Harmonic Trader で Bat / Butterfly / Crab を追加、2001年の Harmonic Trading で体系化しました。パターンの本質は「XA の後、B / C / D の3点がフィボナッチ比率で配置される5点構造」であり、D 点付近の PRZ で反転を狙います。

使いどころは、反転候補水準の絞り込み、フィボナッチ節目の組み合わせ判定、リスクリワードの厳密な設計(D 点が損切り、B or C が目標)です。単独では使わず、上位足構造やローソク足パターンと組み合わせます。

前提

XABCD 構造

すべてのハーモニックパターンは5点(X, A, B, C, D)で定義されます。

  • X:起点
  • A:X からの最初の推進波の終点
  • B:A からの戻し
  • C:B からの再推進
  • D:C からの戻し(Potential Reversal Zone、狙う反転点)

パターンの方向は次のとおりです。

  • Bullish:X が高値、A が安値。D で買いエントリー
  • Bearish:X が安値、A が高値。D で売りエントリー

ハーモニックパターンの模式図。XABCDの5点構造とPRZ(強気Gartley)。

模式図(理想化した形状)。各点はフィボナッチ比率で配置され、D点付近のPRZで反転を狙う。

フィボナッチ比率の分類

分類比率由来
Primary retracement0.382, 0.500, 0.618, 0.786通常のフィボナッチ戻し
Deep retracement0.8860.786 の平方根の逆
Extension1.128, 1.272, 1.414, 1.618拡張
Deep extension2.000, 2.240, 2.618, 3.140, 3.618深い拡張

0.500 と 2.000 は本来のフィボナッチ数列由来ではありませんが、実務で使われる派生比率です。

PRZ(Potential Reversal Zone)

  • D 点は単一のフィボナッチ比率ではなく、「複数の比率が重なる帯」として計算します
  • 例として、XA の 0.786 と BC の 1.618 が近接する帯が PRZ になります
  • PRZ の幅が狭いほど信頼度が高いとされます

主要パターン

各パターンは XABCD の点の並びは同じで、D 点が XA のどの比率に来るかで区別します。0.786(Gartley)→ 0.886(Bat)と深くなり、1.272(Butterfly)・1.618(Crab)で X の外側へ抜けます。Cypher だけは C 点が X を超え、D は XC 基準で計算します。

ハーモニック主要6パターンの模式図。Gartley、Bat、Butterfly、Crab、Deep Crab、Cypher をD点のXA比率で並べた比較。

強気(Bullish)で作図。D 点の位置=XA 比率がパターンの識別子。Butterfly / Crab は D が A を下抜けて X の外側に到達する Extension 型。

Gartley(222 パターン)

由来:H. M. Gartley(1935)、ページ222の記述から「Gartley 222」。

判定比率(Bullish)

起点終点比率
XAX(高値)A(安値)
ABAB(中間高値)AB = XA の 0.618
BCBC(中間安値)BC = AB の 0.382 or 0.886
CDCD(最終安値)CD = BC の 1.272 or 1.618
XD(全体)XDXD = XA の 0.786

特徴

  • D 点は XA の 0.786 戻しに位置する(最重要)
  • B 点は XA の 0.618 戻し
  • ハーモニックの基本形

Bat

由来:Scott Carney The Harmonic Trader(1998)。

判定比率(Bullish)

比率
AB = XA の0.382 または 0.500
BC = AB の0.382 or 0.886
CD = BC の1.618 or 2.618
XD = XA の0.886

特徴

  • D 点は XA の 0.886 戻し(Gartley の 0.786 より深い)
  • B 点は XA の 0.382 / 0.500(Gartley の 0.618 より浅い)
  • Alternate Bat(別変形)は AB = XA の 0.382、XD = XA の 1.130

Butterfly

由来:Bryce Gilmore が初出、Scott Carney が発展。

判定比率(Bullish)

比率
AB = XA の0.786
BC = AB の0.382 or 0.886
CD = BC の1.618 or 2.618
XD = XA の1.272(D 点は X を超える)

特徴

  • D 点は XA の 1.272 拡張、すなわち X の外側(Extension pattern)
  • 反転の「行き過ぎ」を狙う攻撃的パターン
  • 損切り位置は D 点の少し外側(X をわずかに超える程度が典型)

Crab

由来:Scott Carney が2000年に発表。

判定比率(Bullish)

比率
AB = XA の0.382 or 0.618
BC = AB の0.382 or 0.886
CD = BC の2.618 or 3.618
XD = XA の1.618

特徴

  • D 点は XA の 1.618 拡張、すなわち X をさらに超える
  • ハーモニックの中で最も攻撃的な extension pattern
  • CD 波が非常に長い(BC の 2.618〜3.618 倍)

Deep Crab

判定比率

比率
AB = XA の0.886(通常 Crab より深い)
BC = AB の0.382 or 0.886
CD = BC の2.000 or 3.618
XD = XA の1.618

特徴

  • B 点が XA の 0.886(Bat と同水準の深い戻し)
  • D 点は通常 Crab と同じ XA の 1.618

以下の3つは XABCD の基本形から外れる特殊構造です。Shark は 0 を加えた6点、ABCD は X を持たない4点、Three Drives は3つの推進波で構成されます。

特殊構造3種の模式図。Shark(0XABCDの6点)、ABCD(4点・AB=CD等長)、Three Drives(3推進波)。

Shark は B が X を超える6点構造。ABCD は AB と CD が等長。Three Drives は0.618 戻しを挟む3つの等距離推進波。

Shark

由来:Scott Carney The Harmonic Trader(2011 版で追加)。

判定(5-0 Pattern)比率

比率
0X(前置波)
XA = 0X の1.130 or 1.618
AB = XA の1.130 or 1.618
BC = XA の0.886 or 1.130
D は C から追加の 50% 戻し

特徴

  • 従来の XABCD ではなく 0XABCD の6点構造
  • B 点が X を超える(extension)
  • D エントリーではなく「5-0 pattern」として、C 到達後の 50% 戻しで入る変形もある

Cypher

由来:Darren Oglesbee(Carney とは別系統)。

判定比率(Bullish)

比率
AB = XA の0.382 or 0.618
BC = XA の1.130 or 1.414(X を超える)
CD = XC の0.786

特徴

  • C 点が X を超える extension(他パターンと大きく異なる)
  • D 点の計算基準は XC(X から C の全長)の 0.786 戻し
  • Carney の分類には含まれない別系統だが、実務で使う流派もある

ABCD

位置づけ

  • 最も単純な4点パターン(X なし)
  • 他のハーモニックの部分構造としても現れる
  • 独立でも「AB=CD」のシンプルなセットアップとして使われる

判定比率(Bullish、Classical AB=CD)

比率
AB(下落波)起点波
BC = AB の0.618 or 0.786(戻し)
CD = AB の1.000(等長)
CD の期間 = AB の期間時間対称性

変形

  • Alternate 1.272 AB=CD:CD = AB の 1.272
  • Alternate 1.618 AB=CD:CD = AB の 1.618

Three Drives

由来:Robert Prechter が Elliott Wave 派生として整理、Carney がハーモニックに組み込み。

構造

  • 3つの連続する等距離推進波 + 各推進の間の2つの戻し
  • Bullish:3つの安値がフィボナッチ関係で下がり、反転する
  • Bearish:3つの高値がフィボナッチ関係で上がり、反転する

判定比率

比率
Drive 1 → Drive 2(retrace)0.618
Drive 2 → Drive 3(retrace)0.618
Drive 2 の高さ = Drive 1 の1.272 or 1.618
Drive 3 の高さ = Drive 2 の1.272 or 1.618

PRZ(Potential Reversal Zone)の計算

D 点は単一比率ではなく、複数比率の「帯」として計算します。

計算例(Bullish Gartley)

X = 100, A = 80(XA = 20 の下落)とします。 B = 92.36(XA の 0.618 戻し)。 C = 88.64(AB の 0.382 戻し、A = 80 から)。

D 点候補は次のとおりです。

  • XA の 0.786:10020×0.786=84.28100 - 20 \times 0.786 = 84.28
  • BC の 1.272:88.64(92.3688.64)×1.272=83.9088.64 - (92.36 - 88.64) \times 1.272 = 83.90
  • BC の 1.618:88.64(92.3688.64)×1.618=82.6288.64 - (92.36 - 88.64) \times 1.618 = 82.62

PRZ 幅は 82.62〜84.28 です。この帯内での買いエントリーを狙います。

PRZ の絞り込み

  • 複数の比率が近接する(幅 < XA の 5%)と高信頼度
  • 比率がバラける(幅 > XA の 10%)と低信頼度、パターンとして採用しない
  • 上位足の水平線・移動平均線と重なると信頼度が上昇する

エントリー・損切り・目標値

エントリー

単純進入

  • D 点に指値を置く
  • PRZ 内で反転の兆候(ローソク足パターン)が出たら成行

確認後進入

  • D 点タッチ後、下位足で反転パターン(包み足、ハンマー、CHoCH)出現後にエントリー
  • 反転確認を待つ分エントリー価格は劣化するが、ダマシを避けられる

損切り

Gartley / Bat

  • D 点の少し外側(X をわずかに超える程度)
  • 具体的には X の 5〜10 pips 外側

Butterfly / Crab

  • D は X を超えるパターン
  • 損切りは「D 点からさらに XA の 0.236 倍分」外側、または直近スイング外側

目標値

Carney の推奨は次のとおりです。

目標水準
目標 1AD の 0.382 戻し
目標 2AD の 0.618 戻し
目標 3C 点付近
目標 4(延伸)A 点付近(元の反転点)

一般的には D エントリー後、C 点付近で部分利確、A 点付近で残りを決済します。

USD/JPY での使いどころ

  • 4H・日足の反転候補:週足の主要トレンド中の反転で、日足レベルの Gartley / Bat が反転水準の絞り込みに機能する
  • 主要指標発表前の Butterfly / Crab:高ボラ環境で D 点が X を超える extension pattern が出やすい。D 到達後の反転を狙う攻撃型エントリー
  • フィボナッチクラスターとしての利用:Elliott Wave の波カウント、通常のフィボナッチ戻し、Pivot Point と併用し、複数手法で「同じ水準」が指摘されるかで判断する
  • 東京仲値・ロンドン・NY オープンの水準と重ねる:PRZ が主要セッション高安と重なると、「複数の理由で反転しやすい水準」として扱える
  • 中央銀行イベントの直前:主要イベント前は市場が Range 化しやすく、Bat や Gartley のような「深い戻し」パターンが完成しやすい

落とし穴

  • 比率の厳密性を緩めない:Gartley の D 点は XA の「0.786」である必要がある。0.75 や 0.80 で妥協するとパターンではなくただの Fibonacci 戻しになる。厳密比率を守れないなら別パターン(Bat の 0.886 など)を検討する
  • 後付けで比率を合わせない:過去チャートで「この点を D とすると Gartley になる」と後付けで合わせるのは容易。リアルタイムで X → A → B → C の順に確定させ、D 点の PRZ を事前に計算する
  • PRZ の帯が広すぎるパターンを採用しない:3つの比率が広範囲にバラつくと「どこで反転するか不明」になる。PRZ 幅が XA の 5% 以内など、厳しい基準を設ける
  • 単独で売買しない:ハーモニックは「反転候補水準の絞り込み」ツール。上位足構造、ローソク足パターン、他の指標と併用する
  • Bat と Gartley を混同しない:比率が近い(0.786 と 0.886)ため誤認識しやすい。判定を機械化してヒューマンエラーを排除する
  • Cypher は Carney の分類外:派生系のため、他パターンと計算基準(XC 基準の retracement)が違う。混ぜて使うと計算ミスの原因になる
  • 時間対称性(AB=CD の期間)を厳密に扱うか否かは流派で違う:Classical では期間も等しいことを要求し、現代的なハーモニックは時間非対称を許容する
  • 統計的 edge を仮定しない:Carney や Pesavento のバックテスト主張は独立検証が限定的。検証は別フレームで扱う対象とする
  • PRZ 到達後の反転確認を怠らない:D 点タッチだけで入ると、パターン破損の場合に損切りが遅れる。ローソク足反転や下位足 CHoCH の確認をルーティン化する
  • 深すぎる Crab / Butterfly は「trend continuation」の可能性:Extension pattern は「反転」のつもりが強トレンドの継続で D を大きく突き抜けることがある。損切り幅を広く取るか、そもそもパターンを採用しないかを事前に決定する

Python 実装スケッチ

XABCD の5点候補を受け取り、各パターンとの適合を判定する骨格です。

import pandas as pd
import numpy as np
from dataclasses import dataclass
@dataclass
class Pattern:
name: str
ab_xa: tuple[float, float]
bc_ab: tuple[float, float]
cd_bc: tuple[float, float]
xd_xa: tuple[float, float]
PATTERNS = [
Pattern("Gartley", (0.618, 0.618), (0.382, 0.886), (1.272, 1.618), (0.786, 0.786)),
Pattern("Bat", (0.382, 0.500), (0.382, 0.886), (1.618, 2.618), (0.886, 0.886)),
Pattern("Butterfly", (0.786, 0.786), (0.382, 0.886), (1.618, 2.618), (1.272, 1.272)),
Pattern("Crab", (0.382, 0.618), (0.382, 0.886), (2.618, 3.618), (1.618, 1.618)),
Pattern("Deep Crab", (0.886, 0.886), (0.382, 0.886), (2.000, 3.618), (1.618, 1.618)),
]
def compute_ratios(x: float, a: float, b: float, c: float, d: float) -> dict:
xa = abs(a - x)
ab = abs(b - a)
bc = abs(c - b)
cd = abs(d - c)
xd = abs(d - x)
return {
"AB/XA": ab / xa if xa else np.nan,
"BC/AB": bc / ab if ab else np.nan,
"CD/BC": cd / bc if bc else np.nan,
"XD/XA": xd / xa if xa else np.nan,
}
def _in_range(value: float, target: tuple[float, float], tol: float = 0.03) -> bool:
lo = target[0] * (1 - tol)
hi = target[1] * (1 + tol)
return lo <= value <= hi
def identify_pattern(x: float, a: float, b: float, c: float, d: float,
tol: float = 0.03) -> list[str]:
ratios = compute_ratios(x, a, b, c, d)
matches = []
for pattern in PATTERNS:
if (_in_range(ratios["AB/XA"], pattern.ab_xa, tol)
and _in_range(ratios["BC/AB"], pattern.bc_ab, tol)
and _in_range(ratios["CD/BC"], pattern.cd_bc, tol)
and _in_range(ratios["XD/XA"], pattern.xd_xa, tol)):
matches.append(pattern.name)
return matches
def compute_prz(x: float, a: float, b: float, c: float, direction: str = "bullish",
xa_ratio: float = 0.786, bc_ratio: float = 1.272) -> tuple[float, float]:
xa = abs(a - x)
bc = abs(c - b)
if direction == "bullish":
d_from_xa = x - xa * xa_ratio if a < x else a + xa * xa_ratio
d_from_bc = c - bc * bc_ratio if b > c else c + bc * bc_ratio
else:
d_from_xa = x + xa * xa_ratio if a > x else a - xa * xa_ratio
d_from_bc = c + bc * bc_ratio if b < c else c - bc * bc_ratio
prz_low = min(d_from_xa, d_from_bc)
prz_high = max(d_from_xa, d_from_bc)
return prz_low, prz_high
  • PATTERNS に各パターンの比率レンジを定義する。tuple の (lo, hi) は許容比率の下限・上限
  • compute_ratios は5点から4つの比率を計算する
  • _in_range は許容誤差 tol(デフォルト 3%)内での一致判定
  • identify_pattern は複数パターンにマッチすることを許容する(Bat と Deep Crab は AB/XA が同じ)
  • compute_prz は D 点候補を2つのフィボナッチ関係から算出し、PRZ 帯を返す
  • 実運用では swing 検出関数で X, A, B, C の候補を抽出後、この関数群でスクリーニングする

参考

  • H. M. Gartley, Profits in the Stock Market, H. M. Gartley Inc., 1935. https://archive.org/details/profitsinthestoc0000gart — Gartley 222 の原典
  • Larry Pesavento, Fibonacci Ratios with Pattern Recognition, Traders Press, 1997
  • Scott M. Carney, The Harmonic Trader, Harmonic Trader.com, 1998
  • Scott M. Carney, Harmonic Trading Vol. 1 & 2, FT Press, 2010. https://www.harmonictrader.com/
  • Robert Prechter, At the Crest of the Tidal Wave, New Classics Library, 1995 — Three Drives の整理
  • Suri Duddella, Trade Chart Patterns Like the Pros, 2007 — Shark, Cypher の実務展開
  • Darren Oglesbee — Cypher の初出者(書籍は限定)
  • 独立検証:ハーモニックパターンの statistical edge に関する査読論文は極めて限定的