English Русский Deutsch
preview
MQL5入門(第18回):ウォルフ波動パターンの基本

MQL5入門(第18回):ウォルフ波動パターンの基本

MetaTrader 5トレーディング |
211 1
Israel Pelumi Abioye
Israel Pelumi Abioye

はじめに

連載「MQL5入門」の第18回へようこそ。今回は、これまでに取り上げた内容を基盤に、プロジェクトベースのアプローチを通じてMQL5スキルを実践的に磨いていきます。前回の第17回では、トレンドラインのブレイクアウトや反転セットアップに注目し、主要なレベルに反応して価格動向に基づき取引するエキスパートアドバイザー(EA)の作り方を示しました。

今回の記事では、より高度なチャートパターンであるウォルフ波動を取り上げます。基本的なパターンは単純なサポートとレジスタンスのブレイクに依存することが多いのに対し、ウォルフ波動は正確な5点構造を持ち、特定のターゲットラインに向かって価格が動くことを予測することを目的としています。これにより、反転を予測したり、より精度の高いエントリータイミングを把握したりするための強力なツールとなります。 

今回は、ウォルフ波動パターンの概念を中心に、強気と弱気の両方のセットアップの見つけ方を解説します。チャート上でパターンを識別する方法や、有効なウォルフ波動構造を定義する条件を理解できるようにします。さらに、プログラム的にこのパターンを認識し、EAを作成するためのフレームワークも紹介します。MQL5を用いてウォルフ波動を自動識別し、パターンに基づいたEAを構築する方法は、次回の記事で具体的に適用していきます。



1. ウォルフ波動パターン

市場の方向転換の可能性を特定するために使われるリバーサルチャートパターンの一つがウォルフ波動です。価格の動きは5つの異なる波で構成されます。この5つのポイントを描くには、重要なスイングハイとスイングローを特定する必要があります。 5つのポイントが確定すると、パターンは第5波で価格が反転し、1~4のポイントから引かれるターゲットラインの方向へ進むことを示します。さらに精度を高めるため、予測されるターゲットエリアを算出し、フィボナッチエクステンションを用いてパターンの妥当性を検証します。

弱気ウォルフ波動パターン

弱気ウォルフ波動パターンでは、5つの価格ポイントが順番に、かつ明確な構造ルールに従って配置されます。パターンはWAVE1から始まります。WAVE1はスイングハイで開始します。WAVE2はWAVE1より下に置かれるスイングローです。WAVE3はWAVE1を超えるスイングハイであり、WAVE1とWAVE2間の価格変動のフィボナッチエクステンション範囲内に収まる必要があります。WAVE4はスイングローで、WAVE2より上であり、かつWAVE1およびWAVE3より下に位置します。

WAVE5が最重要ポイントで、WAVE3を超えるスイングハイであり、WAVE3とWAVE4間の特定のフィボナッチエクステンション範囲内に収まる必要があります。WAVE5の完成は、過度に上昇した動きの終了を示すことが多く、すべての条件が満たされると下方向への反転の可能性が高いと見なされます。

図1:弱気ウォルフ波動パターン

WAVE3とWAVE4はWAVE1とWAVE2の少なくとも70%の大きさである必要があり、反転の精度を高めます。ウォルフ波動パターンを認識するには、3本のトレンドラインが重要です。パターンの上部構造をより明確に定義するため、最初のトレンドラインはWAVE1からWAVE3に引かれます。下側の境界は、WAVE2とWAVE4を結ぶ2本目のトレンドラインによって形成されます。これら2本のラインによって、パターンは収束する形で視覚的にフレーム化されます。3本目のトレンドラインはより戦略的な役割を果たし、WAVE1からWAVE4に引かれます。これによりWAVE5の予測軌道を判断しやすくなります。この最後のラインはエントリーの重要な参照点となり、価格がこのラインに到達または接近した際に反転の可能性を示すことが多いです。

強気ウォルフ波動パターン

強気ウォルフ波動パターンでは、5つのスイングポイントを特定の順序で認識する必要があり、それぞれが正確な構造ルールに従う必要があります。パターンはWAVE1のスイングローから始まります。次にWAVE2が現れ、WAVE1より上のスイングハイを形成します。その後、WAVE3はWAVE1と2の間の動きのフィボナッチエクステンション範囲内に収まるスイングローとして認識され、WAVE1より下に位置します。続いてWAVE4はWAVE1と3より上、WAVE2より下のスイングハイとして現れます。

この強気のセットアップで最も重要なのはWAVE5です。WAVE3からWAVE4の動きの特定のフィボナッチエクステンション範囲内に位置し、WAVE3より下のスイングローとして認識されます。WAVE5の完成後、市場は下方向にやや過剰に拡張していると考えられ、上方向への反転の可能性が高いと判断されます。

弱気パターンと同様に、強気ウォルフ波動も波の対称性に依存します。WAVE3からWAVE4の遷移は、理想的にはWAVE1からWAVE2の遷移と同じくらいの長さであるべきです。より具体的には、WAVE1からWAVE2の動きはWAVE3からWAVE4の動きと少なくとも70%は類似している必要があります。

3本のトレンドラインがブルウォルフ波動の確認に重要な役割を果たします。WAVE1からWAVE3に引かれる最初のラインはパターンの下部構造を定義します。WAVE2とWAVE4を結ぶ2本目のラインは構造の上限を形成します。この2本のラインによって、収束する狭い形状が作られることが多いです。3本目で最も重要なトレンドラインはWAVE1からWAVE4に引かれ、WAVE5の予測軌道を示すのに役立ち、エントリーの重要な参照点となります。

図2:強気ウォルフ波動パターン

波の識別

ウォルフ波動を識別するには、まずスイングハイとスイングローを検出する方法を理解する必要があります。前回の記事では、これら重要なポイントの特定方法について説明しました。スイングハイは、特定のバーの高値がその前後の一定本数のバーの高値よりも高い場合に成立します。同様に、スイングローは、バーの安値が周囲の指定本数のバーの安値よりも低い場合に成立します。これらのスイングポイントは、ウォルフ波動パターンの五波構造を決定する基礎となります。スイングポイントを正確に検出できなければ、パターン全体を信頼性高く特定することはできません。

スイングハイとスイングローが正確に検出されたら、次にそれらを五波構造に整理します。 各波は特定の順序で他の波と接続される必要があります。たとえば、WAVE3は価格変動の正当なフィボナッチ拡張範囲内に収まる必要があり、WAVE1から2は初期の方向性を決定します。このように整然と並べることで、パターンの幾何学的対称性と予測力を維持できます。EAに組み込む前に、この順序を正しく構築することが非常に重要です。

//+------------------------------------------------------------------+
//| FUNCTION FOR SWING LOW                                           |
//+------------------------------------------------------------------+
bool IsSwingLow(const double &low_price[], int index, int lookback)
  {
   for(int i = 1; i <= lookback; i++)
     {
      if(low_price[index] > low_price[index - i] || low_price[index] > low_price[index + i])
         return false;
     }
   return true;
  }

//+------------------------------------------------------------------+
//| FUNCTION FOR SWING HIGH                                          |
//+------------------------------------------------------------------+
bool IsSwingHigh(const double &high_price[], int index, int lookback)
  {
   for(int i = 1; i <= lookback; i++)
     {
      if(high_price[index] < high_price[index - i] || high_price[index] < high_price[index + i])
         return false;
     }
   return true;
  }

図3:スイングハイとスイングロー

価格チャートのスイングローはIsSwingLow()関数を使って見つけることができます。スイングローは、あるバーの安値がその周囲のバーの安値よりも低い場合に成立します。この関数には、安値の配列、比較する前後バーの数を指定するルックバック、そしてチェックするインデックスが入力として渡されます。関数は現在のバーの安値を周囲のバーと比較し、もし条件を満たさなければfalseを返します。条件を満たし、周囲の値より低ければtrueを返し、現在の安値がスイングローであることを示します。

同様に、スイングハイの特定はIsSwingHigh()関数が担当します。バーの高値がその前後のバーの高値を上回る場合にスイングハイと見なされます。IsSwingLow()と操作は似ていますが、安値ではなく高値を比較します。対象インデックスの周囲のバーの中に、より高い高値があるかどうかを確認するために、IsSwingHigh()はそれらを順に調べます。もし一つでも周囲のバーの高値が現在のバーより高ければ、関数はfalseを返し、現在のバーはスイングハイではないと判断されます。逆に、現在のバーの高値が周囲の全てのバーの高値より高ければ、スイングハイとして確認されます。

ウォルフ波動のような波動ベースのパターンを分析する際、これらの関数は価格データのピークや谷を特定するために非常に重要です。スイングハイとスイングローをつなぐことで、パターン内の波を生成できます。これにより、EAは市場の実際の動きに基づき、特定の転換点をプログラム的に識別して正当な波構造を構築することが可能になります。

両関数において、ルックバックパラメータは重要な役割を果たします。これは現在のバーの前後でチェックするバーの本数を指定するもので、値を大きくするほど、スイングが周囲の価格変動から明確に区別されるため、誤検出を減らすことができます。テクニカルパターン内の波を認識するロジックはこれらの関数に基づいており、EAでは潜在的なトレードセットアップを特定する際に頻繁に使用されます。

ローソク足データの取得とスイングの識別

どのチャートパターンを扱う場合でも、基本はプライスアクションを直接分析することです。プライスアクションを正確に分析するための最初で最も重要なステップは、チャートからローソク足データを取得することです。バーのデータにアクセスできなければ、ウォルフ波動のようなチャートパターンを定義するために必要なスイングハイやスイングローを特定することはできません。 一定本数の直近バーについて、始値、終値、高値、安値、時間のデータを取得します。重要な価格の転換点を特定するため、これらの値を配列に保持し、過去のローソク足と照らし合わせてスキャンします。これにより、ウォルフ波動パターンに類似した波の生成を識別するためのスイングポイントを特定できます。その後の作業である、フィボナッチエクステンションの算出、パターン構造の確認、トレンドラインの描画などは、すべて正確なスイング検出に基づいておこなわれます。

input ENUM_TIMEFRAMES timeframe = PERIOD_CURRENT;
int bars_check  = 500;
datetime time_bar;
double total_symbol_bars;

double open[];
double close[];
double low[];
double high[];
datetime time[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   total_symbol_bars = Bars(_Symbol, timeframe);
   time_bar = iTime(_Symbol, timeframe, 0);
   CopyOpen(_Symbol, timeframe, time_bar, bars_check, open);
   CopyClose(_Symbol, timeframe, time_bar, bars_check, close);
   CopyLow(_Symbol, timeframe, time_bar, bars_check, low);
   CopyHigh(_Symbol, timeframe, time_bar, bars_check, high);
   CopyTime(_Symbol, timeframe, time_bar, bars_check, time);
  }

//+------------------------------------------------------------------+
//| FUNCTION FOR SWING LOW                                           |
//+------------------------------------------------------------------+
bool IsSwingLow(const double &low_price[], int index, int lookback)
  {
   for(int i = 1; i <= lookback; i++)
     {
      if(low_price[index] > low_price[index - i] || low_price[index] > low_price[index + i])
         return false;
     }
   return true;
  }

//+------------------------------------------------------------------+
//| FUNCTION FOR SWING HIGH                                          |
//+------------------------------------------------------------------+
bool IsSwingHigh(const double &high_price[], int index, int lookback)
  {
   for(int i = 1; i <= lookback; i++)
     {
      if(high_price[index] < high_price[index - i] || high_price[index] < high_price[index + i])
         return false;
     }
   return true;
  }

説明

このEAでは、解析する過去バーの数を管理するために、時間軸やbars_checkといった重要な変数を初期化します。スイングやチャートパターンを認識するために、ローソク足データを格納する配列も宣言されます。EAはBars()とiTime()関数を使用して、存在するバーの本数やデータの取得開始位置を決定します。その後、Copy*()系の関数で過去の価格データを配列に読み込み、分析に使用します。

特定の期間やバー数について、CopyOpen()などの関数は始値、終値、高値、安値といった特定の価格データを配列に読み込みます。対象となる価格の種類は異なりますが、すべて同じフレームワークに従っています。 IsSwingLowやIsSwingHigh関数は、ローソク足の安値や高値がルックバック範囲内の周囲ローソク足よりも極端であるかを確認することで、重要な価格の転換点を特定するのに役立ちます。条件を満たせば、そのローソク足は有効なスイングポイントとしてマークされます。

ウォルフ波動のようなチャートパターンを特徴づける5つの波ポイントを見つけるには、これらの関数を活用する必要があります。実際、スイング検出関数は、チャートパターンを扱う限り常に役立つ重要なツールです。この手法の基礎を成すものであり、このシリーズの他の記事と同様、以前に提示した基本概念をさらに発展させています。ただし、本連載のこのセクションだけを読んでいる読者向けにも、各関数や考え方について明確に説明することが重要です。

図4:バーデータ


2. EAの構築

EAの仕組み

ウォルフ波動EAを開発するには、有効な売買の機会を特定するロジックを理解することが必要です。EAは、過去の価格データから波を識別し、それらが対称性やフィボナッチの整合性などの条件を満たしているかを検証できる必要があります。これにより、EAは正確かつ効率的に機能します。

実際のコーディングに入る前に、EAの意思決定を導く基本的なフレームワークを明確にしておくことが重要です。これには、有効なパターンとは何か、エントリーの可能性を考慮すべきタイミング、偽パターンを避ける方法を明確にすることが含まれます。このフレームワークを確立すれば、EAは従来のウォルフ波動構造に従った高確率セットアップのみに反応するようになります。

本記事では、パターンのロジックをプログラムに翻訳するための土台を説明します。チャート上で主要な波ポイントを視覚的に表現する方法や、EAが分析に使用するデータを準備する方法についても取り上げます。

売りのロジック

  • EAは、弱気ウォルフ波動パターンのWAVE1、WAVE2、WAVE3、WAVE4に該当する4つのポイントを検出します。
  • チャート上には3本のトレンドラインを描画します。1本目はWAVE1とWAVE3を結び、上部構造を描きます。2本目はWAVE2とWAVE4を結び、下部構造を形成します。3本目のトレンドラインはWAVE1とWAVE4を結び、利益目標の予測エリアを示すために使用されます。
  • さらに、WAVE1と2の区間、WAVE3と4の区間それぞれにフィボナッチエクステンションを設定し、WAVE3とWAVE5がウォルフ波動構造に基づく必要な拡張条件を満たしているかを確認します。
  • EAは、価格がWAVE1からWAVE3に引かれたトレンドラインを上抜けし、終値がその上でクローズするブルのブレイクアウトを監視します。
  • ブレイクアウト後、EAは確認ローソク足を待ちます。これは、同じトレンドラインを下抜けしてクローズする陰線です。
  • 確認ローソク足がクローズすると、EAは即座に売り注文を発注します。
  • その後、ブレイクアウト足から確認足までの間のすべてのバーを評価し、その範囲での最高値を特定します。この高値がWAVE5の頂点として設定され、ストップロスレベルに使用されます。
  • テイクプロフィットはあらかじめ設定されます。これにより、取引はWAVE1からWAVE4に引かれた予測トレンドラインに価格が到達するまで継続します。このトレンドラインが最終的なテイクプロフィットのトリガーとして機能します。
  • 価格がWAVE1からWAVE4のトレンドラインに到達すると、EAは自動的に売りポジションを決済します。

図5:売りのロジック

買いのロジック

  • EAは、強気ウォルフ波動パターンのWAVE1、WAVE2、WAVE3、WAVE4に該当する4つのポイントを検出します。
  • チャート上には3本のトレンドラインを描画します。1本目はWAVE1とWAVE3を結び、下部構造を定義します。2本目はWAVE2とWAVE4を結び、上限境界を形成します。3本目のトレンドラインはWAVE1とWAVE4を結び、利益目標の予測エリアを示すために使用されます。
  • さらに、WAVE1と2の区間、WAVE3と4の区間それぞれにフィボナッチエクステンションを設定し、WAVE3とWAVE5が正しいウォルフ波動パターンに期待される拡張範囲内にあるかを確認します。
  • EAは、価格がWAVE1からWAVE3に引かれたトレンドラインを下抜けし、終値がその下でクローズするベアのブレイクアウトを監視します。
  • ブレイクアウト後、EAは確認ローソク足を待ちます。これは同じトレンドラインを上抜けして終値が上でクローズするブルリッシュローソク足です。
  • 確認ローソク足がクローズすると、EAは即座に買い注文を発注します。
  • 次に、EAはブレイクアウト足から確認足までの間のすべてのバーを評価し、その範囲での最安値を特定します。この安値がWAVE5の底として設定され、ストップロスレベルに使用されます。
  • テイクプロフィットはあらかじめ設定されます。取引はWAVE1からWAVE4に引かれた予測トレンドラインに到達するまで継続します。
  • このラインが利益目標ゾーンとして機能し、価格がWAVE1からWAVE4のトレンドラインに到達すると、EAは自動的に買いポジションを決済します。

図6:買いのロジック

注記  このプロジェクトはMQL5プログラミングやチャートパターン戦略の学習を目的としており、実際の取引向けではありません。実際の市場で戦略を使用する前には、必ず金融の専門家に相談してください。


結論

本記事では、ウォルフ波動パターンの概念、その構造、そしてこれに基づくEAを構築するためのロジックについて紹介しました。スイングハイとスイングローを使って有効な波ポイントを特定する方法や、買いと売りのセットアップを導く基本原則についても解説しました。次回の記事では、このロジックをMQL5でプログラムとして実装し、ウォルフ波動戦略を自動取引で実際に動かす方法を学びます。

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/18555

添付されたファイル |
最後のコメント | ディスカッションに移動 (1)
Alamdar
Alamdar | 13 7月 2025 において 06:50
広告ばかりで役に立たない
ダイナミックマルチペアEAの形成(第3回):平均回帰とモメンタム戦略 ダイナミックマルチペアEAの形成(第3回):平均回帰とモメンタム戦略
本記事では、ダイナミックマルチペアエキスパートアドバイザー(EA)を構築する旅の第3部として、平均回帰戦略とモメンタム戦略の統合に焦点を当てます。価格の平均からの乖離(Zスコア)を検出して取引に活かす方法や、複数の通貨ペアにおけるモメンタムを測定して取引方向を判断する方法について詳しく解説します。
初心者からエキスパートへ:MQL5を使用したアニメーションニュースヘッドライン(IV) - ローカルホストAIモデル市場インサイト 初心者からエキスパートへ:MQL5を使用したアニメーションニュースヘッドライン(IV) - ローカルホストAIモデル市場インサイト
本日のディスカッションでは、オープンソースのAIモデルをセルフホスティングし、市場インサイトの生成に活用する方法について探ります。これは、News Headline EA(エキスパートアドバイザー)を拡張し、AIインサイトレーンを導入することで、多機能統合型アシストツールへと変貌させる取り組みの一環です。このアップグレードにより、EAはカレンダーイベント、金融ニュース速報、テクニカル指標に加え、AIによる市場見解を提供できるようになり、タイムリーで多角的、かつ知的なサポートを取引判断に提供します。本日は、実践的な統合戦略や、MQL5が外部リソースと連携して強力で知的な取引ターミナルを構築する方法についても議論します。
グラフ理論:ダイクストラ法を取引に適用する グラフ理論:ダイクストラ法を取引に適用する
ダイクストラ法は、グラフ理論における古典的な最短経路探索手法であり、市場ネットワークをモデル化することで取引戦略の最適化に応用できます。トレーダーは、ローソク足チャート上の価格データをグラフとして扱い、最も効率的な「経路」を見つけるためにダイクストラ法を使用できます。
MQL5 Algo Forgeへの移行(第4回):バージョンとリリースの操作 MQL5 Algo Forgeへの移行(第4回):バージョンとリリースの操作
SimpleCandlesプロジェクトおよびAdwizardプロジェクトの開発を継続しつつ、MQL5 Algo Forgeのバージョン管理システムおよびリポジトリのより詳細な活用方法についても説明していきます。