ハーモニックパターン(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 で売りエントリー

模式図(理想化した形状)。各点はフィボナッチ比率で配置され、D点付近のPRZで反転を狙う。
フィボナッチ比率の分類
| 分類 | 比率 | 由来 |
|---|---|---|
| Primary retracement | 0.382, 0.500, 0.618, 0.786 | 通常のフィボナッチ戻し |
| Deep retracement | 0.886 | 0.786 の平方根の逆 |
| Extension | 1.128, 1.272, 1.414, 1.618 | 拡張 |
| Deep extension | 2.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 基準で計算します。

強気(Bullish)で作図。D 点の位置=XA 比率がパターンの識別子。Butterfly / Crab は D が A を下抜けて X の外側に到達する Extension 型。
Gartley(222 パターン)
由来:H. M. Gartley(1935)、ページ222の記述から「Gartley 222」。
判定比率(Bullish)
| 波 | 起点 | 終点 | 比率 |
|---|---|---|---|
| XA | X(高値) | A(安値) | — |
| AB | A | B(中間高値) | AB = XA の 0.618 |
| BC | B | C(中間安値) | BC = AB の 0.382 or 0.886 |
| CD | C | D(最終安値) | CD = BC の 1.272 or 1.618 |
| XD(全体) | X | D | XD = 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つの推進波で構成されます。

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:
- BC の 1.272:
- BC の 1.618:
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 の推奨は次のとおりです。
| 目標 | 水準 |
|---|---|
| 目標 1 | AD の 0.382 戻し |
| 目標 2 | AD の 0.618 戻し |
| 目標 3 | C 点付近 |
| 目標 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 pdimport numpy as npfrom dataclasses import dataclass
@dataclassclass 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_highPATTERNSに各パターンの比率レンジを定義する。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 に関する査読論文は極めて限定的