Market Structure分析では、すべての高値・安値が重要なスイングになるわけではありません。本記事では、有効なスイングポイントの定義方法やノイズ除去の考え方、MT5のEAへ実装するためのアルゴリズム設計について実践的に解説します。
なぜスイングポイントの定義が重要なのか
Market Structure(市場構造)では、高値・安値の切り上げや切り下げからトレンドを判断します。しかし、実際のチャートには細かな値動きが数多く存在するため、すべての高値・安値をスイングポイントとして扱うと、誤ったトレンド判定や過剰な売買シグナルにつながります。
近年のEA開発では、Break of Structure(BoS)やCHoCH(Change of Character)を利用したロジックが増えていますが、その精度は「どの高値・安値を有効なスイングとして認識するか」に大きく左右されます。Market Structureの品質を高めるには、まずノイズを排除し、意味のあるスイングだけを抽出するアルゴリズムが欠かせません。
スイングポイントとは
スイングポイントとは、一定期間の中で価格が反転した高値や安値を指します。
一般的には次のように分類されます。
- Swing High:前後の高値より高い山
- Swing Low:前後の安値より低い谷
ただし、単純に前後数本のローソク足だけで判定すると、小さな値動きまで検出され、市場構造が複雑になりすぎます。
ノイズが増える原因
相場は常にトレンドを形成しているわけではなく、短期的な上下動を繰り返します。
例えば5分足では多数のSwing HighとSwing Lowが出現していても、4時間足では単なる押し目や戻りに過ぎないことがあります。
ノイズが多い状態では次のような問題が発生します。
- BoSが頻繁に発生する
- CHoCHが連続して出現する
- トレンド判定が何度も反転する
- EAの売買回数が過剰になる
そのため、構造的に意味のあるスイングのみを抽出する仕組みが必要です。
有効なスイングを判定する代表的な方法
フラクタル判定
一定本数の前後比較を利用する最も基本的な方法です。
シンプルですが、小さな価格変動にも反応しやすいため、時間足によってはノイズが多くなる傾向があります。
ZigZagアルゴリズム
一定以上の価格変動だけをスイングとして認識します。
市場構造を視覚的に把握しやすい反面、パラメータによって結果が変わるため、バックテスト時には慎重な調整が必要です。
ATRフィルター
ATR(Average True Range:平均的な値動きの大きさ)を利用し、価格変動が一定以上あった場合のみスイングとして採用する方法です。
ボラティリティに応じて判定基準を変えられるため、固定値よりも柔軟に対応できます。
Market Structureベース
BoSやCHoCHが発生した後に形成された高値・安値のみを正式なスイングとして採用する方法です。
価格の構造変化を重視するため、Smart Money Concepts(SMC)との相性も良く、近年のEA開発で採用例が増えています。
複数条件を組み合わせる
実運用では、一つの条件だけで判定するよりも複数の条件を組み合わせた方が安定します。
例えば次のようなフローが考えられます。
1. フラクタルで候補を抽出
2. ATRで最小変動幅を確認
3. ZigZagでノイズを除去
4. BoSまたはCHoCHとの整合性を確認
5. 上位時間足の方向と一致した場合のみ採用
このように段階的なフィルタリングを行うことで、不要なスイングを減らし、市場構造をより明確に認識できます。
EAへ実装する際の設計ポイント
MT5のEAでは、スイング判定を独立したモジュールとして設計すると保守性が向上します。
例えば次のような構成が考えられます。
- Swing Detector
- Trend Analyzer
- Market Structure Engine
- Signal Generator
- Risk Manager
このように役割を分離することで、スイング判定アルゴリズムだけを変更しても、売買ロジック全体へ影響を与えにくくなります。
マルチタイムフレームとの組み合わせ
有効なスイングは、一つの時間足だけで判断するよりも、上位時間足を組み合わせることで信頼性が向上します。
例えば、4時間足でHigher High・Higher Lowが継続している場合、15分足では押し目候補となるSwing Lowだけを重視するといった運用が可能です。
このように市場全体の方向性を先に決めてから下位足のスイングを評価すると、ダマシを減らしやすくなります。
フォワードテストで検証したい項目
スイング判定アルゴリズムは、バックテストだけでなくフォワードテストでも検証することが重要です。
確認したい項目は次のとおりです。
- BoS・CHoCHの発生回数
- トレンド判定の安定性
- エントリー回数の変化
- 勝率とProfit Factor
- 最大ドローダウン
アルゴリズム変更前後を比較することで、ノイズ除去が実際の運用成績へどの程度寄与したかを評価できます。
まとめ
有効なスイングポイントを正しく定義することは、Market Structure分析の土台となります。
単純な高値・安値の検出だけではノイズが多く、BoSやCHoCHの誤判定につながる可能性があります。フラクタル、ZigZag、ATR、Market Structureを組み合わせて構造的に意味のあるスイングだけを抽出することで、EAのシグナル精度やトレンド判定の安定性を高めることができます。
今後のMT5 EA開発では、エントリーロジックの改善だけでなく、スイング判定アルゴリズムそのものを最適化することが、再現性の高いMarket Structure分析につながる重要な要素となるでしょう。







