エンガルフィング(プライスアクション概念)に関する高度な考慮点
直接の答え
「エンガルフィング」とは、あるローソク足の実体(real body)が、直前のローソク足の実体と重なり、その実体を「飲み込む(engulfs)」プライスアクションのセットアップを指します。高度な考慮点の多くは、(1) 測定を正確に定義すること、(2) ローソク足の実体ルールの安定したメカニクスを、ボラティリティや執行コストのような変動要因から切り分けること、そして(3) 異なる実装が異なる結果を生むエッジケースを明示的に管理することにあります。
この記事では、エンガルフィングを独立して検証できるように説明する方法を解説します。つまり、そのパターンが何であるか、どのような前提が各例で使われているか、何が失敗し得るのか、そしてあなた自身の解釈で何を確認する必要があるのか、という点です。
メカニズムと明確な定義
1) 「engulf(飲み込む)」の正確なルールを選ぶ
実用的なエンガルフィング定義には、OHLCバー(open, high, low, close)に機械的に適用できる明確な比較が必要です。
よくある構成要素は次のとおりです:
- ローソク足の実体(candle body):open から close までの範囲。方向は、close が open より上か(強気のローソク足)下か(弱気のローソク足)で決まります。
- エンガルフィング条件(engulfing condition):2本目のローソク足の実体が、1本目のローソク足の実体の反対側の境界を越えるという意味で、2本目の実体が1本目の実体と**重なっている(overlaps)**こと。
検証可能にするために、次のような記述を明確に指定すべきです:
- 強気のエンガルフィング:2本目のローソク足は強気であり、その実体の下側境界が1本目のローソク足の実体の下側境界と同じかそれ以下で、かつその実体の上側境界が1本目のローソク足の実体の上側境界と同じかそれ以上である。
- 弱気のエンガルフィング:2本目のローソク足は弱気であり、その実体の上側境界が1本目のローソク足の実体の上側境界と同じかそれ以上で、かつその実体の下側境界が1本目のローソク足の実体の下側境界と同じかそれ以下である。
これは安定した機械的ルールですが、それでもなお**定義(definition)**です。異なるソースは細部を異なる形で実装しており、その違いによってカウントされるインスタンスが変わり得ます。
2) 等価(equality)と「少なくとも(at least)」の扱いを決める
曖昧さが隠れるのがエッジケースです:
- エンガルフィングのローソク足の実体境界がちょうど一致する場合(例:上側境界が等しい)。
- 「engulf(飲み込む)」には厳密な不等号が必要か、それとも等価を許すのか(「同じかそれ以上(at or beyond)」)?
等価を許せば、より多くのパターンを数える可能性があります。厳密なエンガルフィングのみを要求すれば、数えるパターンは少なくなります。どちらも一貫してよいのですが、重要なのは、同じ分類を他者が再現できるように、あなたのルールが明示的に書かれていることです。
3) 実体とヒゲを分ける
多くの誤解は、ヒゲの挙動(高値/安値の極値)を実体の重なりと混同することから生まれます。エンガルフィングの定義は実体ベースです。ヒゲを、ローソク足の方向を決める以外は無視するのかどうかを明記すべきです。
例として明示的なアプローチ(前提を明記):
- エンガルフィングの確認には open と close だけを使うと仮定する。
- ヒゲについては何も要求しない(たとえば、エンガルフィングのローソク足が高値付近でクローズすることを要求しない)。
これらの前提のもとでは、open/close の系列が同一であれば、ヒゲの形が異なっていても、同じエンガルフィング事象が分類されます。
4) 「方向性の意図」と「測定可能なパターン」を分ける
エンガルフィングを次の2つの部分として扱うと役立ちます:
- パターン分類(OHLCの実体から測定可能なもの)。
- 解釈(そのパターンが文脈の中で「意味するもの」だとあなたが考える内容)。
高度な考慮点は、解釈が分類を汚染しないように保つことに焦点があります。言い換えると、まずそのルールが同じローソク足を指していることを検証し、そのうえで、適切な注意を払いながら、追加の文脈が信頼性を高めるのか損なうのかを評価できます。
エビデンスと例のシナリオ(前提を明記)
ここにはリアルタイムデータがなく、結果は状況によって変わるため、「エビデンス」を最も安全に語る方法は、例としての実装と、あなたが確認すべきことを通じて示すことです。
1) あなたが検証できる最小限のコーディングモデル
時間順に並んだローソク足が、固定されたタイムフレーム(例:1分足、1時間足)で存在すると仮定します。次を定義します:
- 実体の境界:body_high = max(open, close), body_low = min(open, close).
- ローソク足の方向:close > open なら強気、close < open なら弱気。
次に、2つのブール関数を実装します:
- bullish_engulfing(t): ローソク足 t が強気であり、かつ body_low(t) <= body_low(t-1) であり、かつ body_high(t) >= body_high(t-1) である。
- bearish_engulfing(t): ローソク足 t が弱気であり、かつ body_high(t) >= body_high(t-1) であり、かつ body_low(t) <= body_low(t-1) である。
このモデルは、測定可能なものに対して意図的に厳密です。「高度な考慮点」は、多くの実装が1行の違いで異なるという点です(境界の厳密/包含、ドージ(doji)ローソク足の扱い、body_high/body_low の定義方法など)。あなたの選択を文書化すれば、他者はあなたと同じ結果を再現できます。
2) タイムフレームが分類を変える方法
前提:固定されたバー構築で、単一のタイムフレームを分析する。 タイムフレームを変えると、バーが集約される際に open/close の点が変わるため、エンガルフィングの事象が現れたり消えたりします。これはエンガルフィングの失敗ではなく、パターンが バー定義 に結びついているという注意喚起です。
実用的なチェック(検証タスクであり助言ではない):
- 2つのタイムフレームを選び、エンガルフィングのインスタンス集合が期待どおりに変化することを確認する。
- 分類コードが同じ OHLC ソースを使い、同じタイムゾーン処理をしていることを確認する。
3) 部分的な重なりと「ニア・エンガルフィング」
「エンガルフィング」を曖昧に解釈する(たとえば「ほとんど重なる」や「ヒゲ同士でのエンガルフィング」)場合、もはや単一の再現可能なルールを使っていません。
より安全なアプローチは、正確に定義しない限り曖昧な閾値を避けることです。たとえば、測定可能な重なり比率を定義できます:
- overlap = 実体区間の交差部分の長さ。
- overlap >= X% を要求する。
高度な考慮点:X を選ぶことは新しいパラメータを導入し、過去データに合わせて調整すると過学習(overfit)につながり得ます。このような閾値を使う場合は、独立した検証が可能になるように透明性を保ってください。
限界とリスク(何が失敗し得るか)
1) コストと執行の影響
エンガルフィングが正しく分類されていても、実現される結果は市場のミクロ構造に依存します:
- スプレッド(bid/ask の差)、
- スリッページ(期待した約定と実際の約定の差)、
- そして、いつエントリー/エグジットできるかに影響する運用上の制約。
これらの要因はプロバイダー、銘柄、時間帯によって変わるため、「パターンの成功率(pattern success)」が歴史的に良かったとしても、それがそのまま実際の結果に自動的に変換されるわけではありません。
2) データ品質とバー構築
エンガルフィングの分類は open と close の値に依存します。データの違いによってラベルが変わり得ます:
- (あなたの対象銘柄セットに関連する場合)企業行動や契約ロールオーバー、
- タイムゾーンの整合とセッション境界、
- 欠けたバーや異なるフィードソース。
高度なチェック:小さなサンプルについて、あなたの OHLC 系列を別の独立したデータセットと照合し、同じルールのもとでエンガルフィングのラベルが一致することを確認する。
3) 非定常性と市場レジームの変化
パターンはレジームによって異なるパフォーマンスを示し得ます(たとえば、高ボラティリティ vs 低ボラティリティ)。これは必ずしも「パターンの失敗」ではありません。パターン出現からその後のリターンへの対応関係が安定していない、という注意喚起です。
DOCUMENT END