Market Structureを3条件で測る:高値更新だけで判断しない

高値更新だけでは、トレンド継続と一時的な流動性取りを区別できません。Swing High・Low、終値ブレイク、押し戻し幅の3条件を使い、Market Structureを再現可能なルールとして定量化する方法を解説します。

一瞬の高値更新では構造変化を確認できない

チャート上で直近高値を抜けば、上昇トレンドが強まったように見える。しかし、数ティックだけ高値を更新してすぐレンジ内へ戻る値動きと、終値ベースで突破した後に押し目を形成する値動きでは、構造的な意味が異なる。

Market StructureをEAや検証へ組み込む際に問題になるのは、「高値を更新した」「安値を割った」という目視判断だけでは再現性が低いことである。同じチャートを見ても、Swingの位置やブレイクの有効性を人によって違って判定する可能性がある。

そこで構造判定を、Swing High・Low、終値での突破、突破後の押し戻し幅という3条件へ分けて測る。

第1条件はSwing HighとLowを明示する

最初に必要なのは、比較対象となる高値と安値を機械的に定義することである。

単純な方法では、対象バーの高値が左右n本の高値より高ければSwing High、安値が左右n本より低ければSwing Lowとする。nを大きくすれば重要度の高いSwingだけが残り、小さくすれば細かな構造まで拾う。

重要なのは、検証中に都合よくSwingを選び直さないことである。Pivot幅を固定し、どの時間足でも同じルールで抽出する。

また、現在進行中のバーだけでSwingを確定すると、後から新しい高値が出た際に過去判定が変わる。左右の必要本数が確定してからSwingとして登録すれば、リペイントによる検証誤差を減らせる。

第2条件は終値でのブレイクを見る

高値をヒゲだけで抜いた場合と、終値で抜けた場合を区別する。

例えば直近Swing Highが100.00で、バーの高値が100.20まで上昇しても終値が99.90なら、価格は上側の流動性を取りに行った後で戻った可能性がある。一方、終値が100.10なら、少なくともそのバーでは旧高値より上で価格が受け入れられたと解釈できる。

EAでは、Close[1]が直近Swing Highを上回ったかを判定する。ただし1ポイントでも超えれば有効とするとノイズを拾いやすいため、最小ブレイク幅を設定する方法もある。

例えば「終値がSwing High+0.1ATR以上」とすれば、現在のボラティリティに対して一定以上の突破だけを抽出できる。ATRはAverage True Rangeで、一定期間の平均的な値幅を示す指標である。

第3条件は押し戻しの深さを測る

終値で高値を突破しても、その後すぐ旧レンジへ大きく戻れば、継続的な構造変化とは言いにくい。

そこでブレイク後の押し戻し幅を測る。例えば突破時の価格から、その後数バーの最安値までの距離をATRで割り、Retracement Ratioとして保存する。

押しが浅く、旧Swing Highより上を維持している場合と、突破後に旧高値を大きく下回る場合を分けて記録する。ここで特定の閾値を正解と決めるのではなく、0.5ATR未満、0.5〜1.0ATR、1.0ATR超など複数帯に分け、その後の値動きを比較するとよい。

高値更新そのものより、突破後にどれだけ価格が受け入れられたかを測る考え方である。

BOSと流動性取りを分けて記録する

Market StructureではBOS、つまりBreak of Structureという用語が使われる。一般には既存のSwingを突破し、トレンド構造が継続した状態を指す。

しかしEAでは名称より判定条件が重要である。「ヒゲのみ突破」「終値突破」「終値突破+浅い押し戻し」を別の状態として保存すれば、どの状態が実際に継続性を持っていたかをバックテストできる。

例えば各状態について、その後10本・20本の最大順行幅、最大逆行幅、次のSwing更新までの時間を記録する。これにより、見た目では似たブレイクでも結果分布が違うか確認できる。

時間足が変わればSwingの意味も変わる

5分足のSwing Highと4時間足のSwing Highでは、市場参加者が意識する構造の大きさが異なる。

複数時間足を扱う場合は、上位足と下位足のSwingを同じ配列に混ぜず、それぞれ別に管理する方がよい。上位足では方向構造、下位足ではエントリー付近の細かな構造というように役割を分けられる。

また、Pivot幅やATR期間も時間足ごとに固定し、バックテスト途中で変更しない。条件数を増やしすぎると過剰最適化につながるため、まず3条件だけで結果を測り、その後必要な要素だけ追加する。

EAではスコア化すると扱いやすい

3条件を単純なスコアへ変換する方法もある。

Swing突破を1点、終値で一定幅以上抜ければ1点、押し戻しが基準以内なら1点とし、0〜3点で構造強度を分類する。

このスコアを直接売買判断に使う必要はない。各スコア帯で既存EAの平均損益、最大逆行幅、保有時間、スリッページを比較すれば、どの構造環境で戦略性能が変化するかを確認できる。

まとめ

高値更新だけでは、Market Structureの変化を十分に判断できない。Swing High・Lowの明確な定義、終値でのブレイク、突破後の押し戻し幅を分離して測ることで、目視判断を再現可能なルールへ変換できる。

重要なのはBOSなどの名称を付けることではなく、構造変化を数値として保存し、その後の値動きやEAの損益分布と比較することである。高値を抜いたかではなく、どのように抜け、その後どこまで維持されたかを測ることで、Market Structureを実務的な検証対象として扱える。

ABOUTこの記事をかいた人

MetaTrader 5 向けの検証ツールを開発しています。個人開発です。 扱っているのは売買の方向を示すシグナルではありません。スプレッドや手数料といったコスト、スリッページを含む約定の実態、口座全体のエクスポージャー——損益の構造側を数値で可視化する道具です。 実運用の記録は GogoJungle の REAL TRADE で第三者計測・公開しています。 詳細は「このサイトについて」をご覧下さい。 ご要望はこちらで承ります。