知っておくべきMQL5ウィザードのテクニック(第75回):Awesome Oscillatorとエンベロープの使用
はじめに
オーサムオシレータ(AO: Awesome Oscillator)とエンベロープチャネル(Envelopes Channel)の組み合わせは、トレンドフォローとサポート/レジスタンス識別のシナジーを融合させることを目的とした、検討中のインジケーターペアリングの一つです。本記事では、この組み合わせから得られる可能性のある10種類のシグナルパターンを考察し、2023年のUSD/JPYの30分足チャートを対象に評価テストをおこない、2024年のデータを用いてフォワードテストを実施します。シグナルパターンの詳細に入る前に、まず各インジケーターの基本的な定義を確認します。最初にAOについて見ていきましょう。これは故ビル・ウィリアムズによって開発されたトレンド指標で、資産価格の中央値の短期および長期平均を比較するものです。
このインジケーターはヒストグラムとして表示され、トレンド方向および反転シグナルを識別するのに役立つほか、弱気/強気のダイバージェンス、ツインピークス、ゼロラインのクロスオーバーを特定する際にも有用です。基本的な算出式は以下の通りです。
![]()
ここで
- AOt = 時刻tにおけるAwesome Oscillatorの値
- Mt =(Ht+Lt)/2 = 時刻tにおける中央値価格
- Ht = 時刻tにおける高値
- Lt = 時刻tにおける安値
- SMA5(Mt) = 中央値価格の5期間単純移動平均
- SMA34(Mt) = 中央値価格の34期間単純移動平均
AOがゼロラインを上抜けた場合、短期モメンタムが長期を上回ったことを意味し、一般的に強気シグナルとされます。反対にゼロラインを下抜けした場合は弱気シグナルです。また、このインジケーターはツインピークス戦略にも利用でき、ゼロラインの上下で2つのピークを形成し、後のピークが前よりゼロラインに近い場合にはトレンド転換の兆候とみなされ、新たなシグナルとなる可能性があります。AOはトレンド市場で特に有効であり、モメンタム確認の補助的な役割も果たします。
次に、2つ目のインジケーターであるエンベロープチャネルについて説明します。これは移動平均線を中心に上下2本のラインを描画し、一定のパーセンテージで乖離させることで構成されます。上側のラインは上バンド、下側は下バンドと呼ばれます。このインジケーターは、資産価格の買われ過ぎ/売られ過ぎレベルやボラティリティの境界を特定する目的で使用されます。AOがトレンド市場に強いのに対し、エンベロープチャネルはレンジ相場(保ち合い)に適しており、平均回帰型の戦略に有効です。その計算式は以下の通りです。

ここで
- MAt = 時刻tにおける移動平均(通常はSMAまたはEMA)
- P = 偏差率(例:2%)
- Upper Band = チャネルの上側境界
- Lower Band = チャネルの下側境界
価格が上バンドに到達した場合は買われ過ぎ、下バンドに触れた場合は売られ過ぎを示唆します。ただし、強いトレンド相場では価格がバンドに沿って推移することがあるため、シグナルの確認が重要です。エンベロープは動的であり、ボラティリティが高まると拡張し、市場が落ち着くと収縮します。RSI、MACD、出来高系インジケーターなどと組み合わせてシグナルの妥当性を検証することも多く、AOとの併用も特異なものではありません。
この組み合わせから期待できる他のシナジーとしては、トレンドシグナルと比較した際の遅行性の低減が挙げられます。エンベロープのシグナルはトレンド追随型より先行的であり、ミーンリバージョン(平均回帰)取引を可能にするほか、レンジ相場やボラティリティの高い状況でも有効です。さらに、エンベロープ境界での反転警告の形でモメンタムの乖離を活用する点も、この組み合わせの利点です。
AO極値におけるエンベロープフェイクアウト(Pattern_0)
最初のパターンは、AOにおける極端な値によって確認される、典型的なフェイクアウト型の反転シグナルです。強気のセットアップ、すなわち「偽の弱気ブレイクアウト」は、価格が一時的にエンベロープの下バンドを下抜けした後、すぐにチャネル内へ戻るときに発生します。この局面では、AOが売られ過ぎの状態を示しています。言い換えれば、売り手が価格をサポートレベルの外側へ押し出すものの、それを維持できずに失速したことを意味します。この時点でAOは、しばしばゼロラインより下に位置しており、弱気モメンタムを示すと同時に、局所的なボトム(トラフ)を形成していることが多いです。たとえば、AOのヒストグラムが赤色で徐々に縮小している、あるいは偽の下方ブレイクに対して小さな強気ダイバージェンスが見られる場合があります。こうした複合的なシグナルは、価格が極端なレベルに達し、下方向のモメンタムが衰えつつあることを示唆します。MQL5では、このパターンを以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_0(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X()) > 0.0 && AO(X() + 1) < 0.0 && Close(X() + 2) > Envelopes_Lo(X() + 2) && Close(X() + 1) <= Envelopes_Lo(X() + 1) && Close(X()) > Envelopes_Lo(X()) //m_symbol.Bid() ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X()) < 0.0 && AO(X() + 1) > 0.0 && Close(X() + 2) < Envelopes_Up(X() + 2) && Close(X() + 1) >= Envelopes_Up(X() + 1) && Close(X()) < Envelopes_Up(X()) ) { return(true); } return(false); }
同様の弱気フェイクアウトはエンベロープの上バンドでも発生します。価格が一時的にエンベロープの上バンドを上抜けし、偽の強気ブレイクアウトを示した後、再びその内側へ戻るケースです。この際、AOはゼロラインより上に位置しており、丸みを帯びたトップ形状や緑のヒストグラムの減少を示している可能性があります。これは買い圧力の衰退を示唆します。これらのフェイクアウトパターンの本質は、平均回帰シグナルです。価格がエンベロープバンドを突き抜けた後に再び内部へ戻る場合、それはブレイクアウト試行の拒否を示すことが多いです。エンベロープは価格の想定レンジを定義しており、その内側へ素早く戻る動きは、外側への突発的な値動きが後追いの買い手または売り手に対する罠であったことを意味します。AOの役割は、そのブレイクアウトが実際のトレンドに裏付けられていなかったことを確認する点にあります。
下方向のフェイクアウト時にAOが極端に低い値、または赤いヒストグラムが縮小している場合、売られ過ぎ状態であり、売り手の勢いが尽きつつあることを示します。これは強気反転の可能性を高めます。反対に、上方向のフェイクアウト時にAOが極端に高い値、または緑のヒストグラムが減少している場合は買われ過ぎを意味し、買い手の力が弱まっていることを示します。
AOをフィルターとして追加することで、これらのフェイクアウト(または偽ブレイクアウト)の信頼性が向上します。AOを組み合わせることにより、価格がエンベロープ内へ再突入時のエントリーが極端な位置でおこなわれるため、エントリーの正確性が高まり、さらにリスクリワード比も良好になります。これは、エントリーが価格の極端なレベルでおこなわれることで、直近のスイングハイ/ローのすぐ外側(すなわちエンベロープ外)にストップを配置できるためです。このパターンをUSD/JPYの30分足で2年間にわたりテストしたところ、そのうち2023年を学習期間として使用した結果、以下のレポートを得ました。

このパターンは、フォワードテストにおいても正または横ばいのパフォーマンスを維持しており、更なる検証を除けば有望な結果を示しています。
AOモメンタム確認による持続的ブレイクアウト(Pattern_1)
Pattern_1は多くの点でフェイクアウト(Pattern_0)とは正反対の構造です。このパターンは、エンベロープの外側へのブレイクアウトが本物であり、実際に継続する可能性が高い場面を検出します。その実現には、AOによる強いモメンタムの確認が必要です。強気シグナルは、価格がエンベロープの上バンドを少なくとも2本連続して上抜けて終値を形成し、かつAOが強い上昇モメンタムを示した場合に発生します。これはAOが大きな正の値を示す、あるいは直近レンジに対して買われ過ぎ領域に位置することによって確認されます。実際の取引では、連続2本のローソク足がエンベロープの上バンドの上でクローズすれば、レジスタンスを突破する強固な上昇圧力を示していると判断できます。
同時にAOがゼロラインを大きく上回り、複数期間にわたる高値レベルに達している、または高いレベルで緑色のヒストグラムを維持している場合、それは買い圧力が非常に強いことを裏付けます。これはトレンド継続の強気シグナルであり、単なる一時的な上抜けではなく、明確なブレイクアウトが進行中であることを意味します。MQL5でPattern_1を次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_1(ENUM_POSITION_TYPE T) { vector _last = AO_Last3(X()); if ( T == POSITION_TYPE_BUY && _last[0] < 0.0 && _last[2] < 0.0 && _last[0] > _last[2] && Close(X() + 2) > Envelopes_Mid(X() + 2) && Close(X() + 1) <= Envelopes_Mid(X() + 1) && Close(X()) > Envelopes_Mid(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && _last[0] > 0.0 && _last[2] > 0.0 && _last[0] < _last[2] && Close(X() + 2) < Envelopes_Mid(X() + 2) && Close(X() + 1) >= Envelopes_Mid(X() + 1) && Close(X()) < Envelopes_Mid(X()) ) { return(true); } return(false); }
一方、弱気の対応パターンは下方向へのブレイクアウトです。これは、価格がエンベロープの下バンドを2本以上連続して下抜けして終値を形成し、AOが強い売りモメンタムによって深くマイナス領域に入っている場合に発生します。これは継続的な動きを伴う真の下方ブレイクを示唆します。このパターンはトレンド市場向けに設計されています。Pattern_0ではエンベロープが価格を包み込む想定でしたが、本パターンでは価格が一定期間エンベロープの外側に留まることで、ボラティリティがトレンド方向に拡大していることを示します。エンベロープは動的なチャネルとして機能し、価格が複数バーにわたってその外側を推移する場合、旧来のレンジが崩れ、新たなトレンド局面に移行したサインと考えられます。
AOはこのとき確認フィルタとして機能します。たとえば、価格が2回連続で上限バンドの上でクローズしても、AOがわずかにゼロを上回る程度であれば、そのブレイクアウトにはモメンタムが欠け、偽の可能性があります。しかし、AOがゼロラインを大きく上回り、連続して長い緑のバー(モメンタム加速の兆候)を示している場合、そのブレイクアウトには実体があると判断できます。Pattern_1をPattern_0と同条件下でテストしたところ、良好なフォワードウォークを伴う印象的な結果レポートを得ることができました。

Pattern_1は、フォワードウォークテストにおいて優れたパフォーマンスを示したものの一つです。ショートエントリー時のチャートパターンを以下に示します。

エンベロープサポート/レジスタンスにおけるAOダイバージェンス(Pattern_2)
Pattern_2は、テクニカル分析において最も強力な反転シグナルの一つである「ダイバージェンス」を活用するものです。価格がエンベロープの境界付近に位置している際に、価格とオシレータ(ここではAO)の間で強気または弱気のダイバージェンスが発生する状況を捉えます。強気のダイバージェンスセットアップは、価格がより低い安値をつけ、エンベロープの下バンドに接触またはわずかに下抜けしてサポートをテストする一方で、AOがより高い安値を形成する場合に現れます。AOのヒストグラムにおいて、2回目の下げのトラフ(谷)が1回目よりも浅くなるのが典型的な形です。つまり、市場は新たな価格安値を更新しているにもかかわらず、AOは新たなモメンタム安値を記録できていない状態です。これは、下方圧力の減退を示す古典的なサインです。
この局面では、エンベロープの下バンドが強力なサポート帯として機能し、ダイバージェンスと一致することで反転のシナリオに信頼性を加えます。MQL5では、このパターンを以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_2(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) < AO(X()) && Close(X() + 2) > Envelopes_Lo(X() + 2) && Close(X() + 1) <= Envelopes_Lo(X() + 1) && Close(X()) > Envelopes_Lo(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) < AO(X() + 1) && AO(X() + 1) > AO(X()) && Close(X() + 2) < Envelopes_Up(X() + 2) && Close(X() + 1) >= Envelopes_Up(X() + 1) && Close(X()) < Envelopes_Up(X()) ) { return(true); } return(false); }
弱気のダイバージェンスはその鏡像パターンです。価格がエンベロープの上バンドに接触またはわずかに上抜けし(重要なレジスタンスをテスト)、より高い高値を形成する一方で、AOのヒストグラムはより低い高値を示します。これは、価格が新高値を更新しても、2回目の上昇では買いモメンタムが弱まっていることを意味します。結果として、天井形成および反転の可能性を示唆します。ダイバージェンス・パターンは、トレンド転換を予測する上で非常に有効です。ここで価格の極値がエンベロープのバンド付近で発生する条件を課すことで、サポートおよびレジスタンスという論理的なレベルでのダイバージェンスに焦点を当てることができ、その分シグナルの精度が高まります。たとえば、エンベロープの下バンドで発生する強気ダイバージェンスは、下降局面の最終段階を示し、その後の大きな反発を予兆することがあります。
このパターンの背景にある心理は直感的です。エンベロープは価格が売られ過ぎ領域にあることを示し、AOは相対的なモメンタムが価格動向ほど弱気ではなくなっていることを示しています。言い換えれば、売り手は価格を新安値に押し下げたものの、AOがより高い安値を形成していることから、売り圧力が減退していることが分かります。多くの場合、ダイバージェンスが完成するころには、AOが上向きに転じ始め、価格が横ばいまたはわずかに安値を更新している段階でモメンタムの変化を裏付ける追加シグナルとなります。エンベロープは価格の動きを包み込み、その外側へ明確に抜け切れないことが、サポートが保持されたことを示します。テスト結果によると、このパターンも利益を伴ってフォワードに機能しており、ややノイズの多い(変動的な)展開ながらも堅実な成果を示しています。テストレポートは以下に示します。

AOゼロラインクロスとエンベロープミッドラインへのプルバック(Pattern_3)
Pattern_3はトレンド再開のパターン、いわゆる「押し目買い/戻り売り」のセットアップです。このパターンは、AOのゼロラインを通じたモメンタムの変化と、価格の主要移動平均であるエンベロープのミッドラインへのプルバックを組み合わせたものです。 強気バージョンでは、AOがゼロラインを下から上にクロスし、モメンタムがネガティブからポジティブに変化したことを示します。これにより、買い手が優勢になっていることが分かります。同時に、プルバックしていた価格は、エンベロープのミッドライン付近でサポートを見つけます。このミッドラインはチャネルの中心となる移動平均です。
基本的に、価格は上昇トレンドの中で平均値であるミッドラインまで戻り、その際にAOがゼロラインを上抜けることで、プルバックが終了し、上昇モメンタムが再び強まる可能性を示します。これにより、動的サポートであるミッドラインでの「押し目買い」シグナルが得られます。MQL5では、このパターンを以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_3(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X()) - AO(X() + 1) > AO(X() + 1) - AO(X() + 2) && AO(X() + 1) > AO(X() + 2) && AO(X() + 2) > 0.0 && Close(X() + 1) < Envelopes_Up(X() + 1) && Close(X()) > Envelopes_Up(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 1) - AO(X()) > AO(X() + 2) - AO(X() + 1) && AO(X() + 2) > AO(X() + 1) && AO(X() + 2) < 0.0 && Close(X() + 1) > Envelopes_Lo(X() + 1) && Close(X()) < Envelopes_Lo(X()) ) { return(true); } return(false); }
弱気のセットアップでは、モメンタムとトレンドが弱気方向に転じるため、AOがゼロラインを上から下へクロスします。これは、価格が下方からエンベロープのミッドラインへ向かって戻すタイミングで発生します。このとき、ミッドラインは動的レジスタンスとして機能します。したがって、このパターンは下降トレンド中の戻り局面でのショートエントリー、すなわち「平均値への戻り売り」を示唆します。この仕組みにより、クラシックなトレンドフォロー型のエントリーを捉えることができます。エントリー方向は大きなトレンドの流れに沿い、小さな逆行の後に仕掛ける形となります。
確立されたトレンドにおいて、価格は通常、この移動平均の周辺で上下動を繰り返します。上昇トレンドではミッドラインの上側に位置しやすく、下落トレンドではその下側に位置しやすい傾向があります。価格が上昇傾向にあるミッドラインへプルバックし、そこで支えられる場合は、トレンド継続の良好なエントリーポイントとなることが多いです。一方で、AOのゼロラインは、強気と弱気のモメンタムを明確に分ける指標として機能します。
したがって、市場が上昇基調にあり、価格がミッドラインより上、AOもゼロラインより上に位置している状況を考えます。このとき、小規模な調整が入り、AOが一時的にゼロラインを下回り、価格もミッドラインまで下落したとします。その後、AOが再びゼロラインを上抜けた場合、それはモメンタムが既存の上昇トレンドに再び整合し始めたことを示唆し、再エントリーの合図となります。このパターンは、前述の3つのパターンと同様にフォワードテストでも良好な結果を示しました。テストレポートは以下に示します。

ボラティリティスクイーズとAOブレイクアウトバイアス(Pattern_4)
Pattern_4は、エンベロープチャネル内で発生するボラティリティの収縮を活用する手法です。一般的に「スクイーズ」と呼ばれる現象であり、これはブレイクアウトに先行して現れることが多く、AOがそのブレイクアウト方向の手掛かりを示してくれます。このパターンでは、エンベロープの上下バンドが大きく狭まり、低ボラティリティまたは持ち合い状態を示唆します。このとき、上バンドと下バンドが互いに接近し、あるいはほぼ横ばいになるような形が確認されます。これは、価格変動のレンジが徐々に縮小している「静かな相場局面」であることを意味します。このスクイーズの中で注目すべきは、AOにおける緩やかな変化やバイアスの兆候です。これは重要です。というのも、AOがゼロライン付近で停滞する一方で、わずかにゼロを下回った位置からゆっくりと上昇して強気圏に向かうような動きを示す場合があり、そのような振る舞いはロングバイアスを示唆するからです。逆に、AOがゼロライン付近で停滞しつつ上から下へ徐々に下降していく場合は、ショートバイアスを示唆します。
強気のセットアップでは、価格がレンジ内で横ばいに推移するためAOも小さなレンジで推移しますが、AOのヒストグラムにおいて短い緑色のバーが赤色のバーより多く出現するなど、わずかに上方向に傾くサインが観察されることがよくあります。このような微かなモメンタムの蓄積は、スクイーズが解消してボラティリティが拡大した際に上方向へのブレイクアウトが発生する可能性を高める重要な手掛かりとなります。MQL5でPattern_4を次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_4(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) < AO(X()) && AO(X() + 1) > 0.0 && Close(X() + 2) <= Envelopes_Mid(X() + 2) && Close(X() + 2) >= Envelopes_Lo(X() + 2) && Close(X() + 1) <= Envelopes_Mid(X() + 1) && Close(X() + 1) >= Envelopes_Lo(X() + 1) && Close(X()) <= Envelopes_Mid(X()) && Close(X()) >= Envelopes_Lo(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) < AO(X()) && AO(X() + 1) > 0.0 && Close(X() + 2) >= Envelopes_Mid(X() + 2) && Close(X() + 2) <= Envelopes_Up(X() + 2) && Close(X() + 1) >= Envelopes_Mid(X() + 1) && Close(X() + 1) <= Envelopes_Up(X() + 1) && Close(X()) >= Envelopes_Mid(X()) && Close(X()) <= Envelopes_Up(X()) ) { return(true); } return(false); }
同様に、弱気バイアスのスクイーズでは、AOが小さな変動を繰り返しながら徐々に下方へと後退していく動きを示します。ヒストグラム上では、ゼロライン付近でわずかに切り下がる高値の連続(低い高値)として現れる場合が多く、これはブレイクアウトが発生した際、価格が下方向へ動きやすいこと、すなわち「最も抵抗の少ない経路」が下方向であることを示唆します。このパターンは有名なボリンジャーバンドのスクイーズ現象に似ていますが、違いはAOとエンベロープを組み合わせている点です。
エンベロープの収縮(バンドの狭まり)は、基準となる移動平均が大きく変動しておらず、最近の高値・安値がその平均値から顕著に乖離していないことを意味します。つまり、典型的な持ち合い局面です。バンドの狭まりは視覚的にもわかりやすく、さらには定量的に測定することも可能です。たとえば、バンド間の距離を平均値に対するパーセンテージとして算出することで、収縮度を指標化できます。
したがって、このパターンの発生を明確に判定できる利点があります。しかし、低ボラティリティの期間は多くのトレーダーが注目を怠りがちな時期でもあります。したがって、このような静かな局面でAOのバイアス変化に注意を払うことで、多くの市場参加者がブレイクアウトを確認してから動き出すよりも一歩早く仕掛けるチャンスを得られる可能性があります。ただし、このパターンのテスト結果においては、これまでのシグナルパターンとは異なり、フォワードウォークにおいて信頼性に疑問が残る結果となりました。それでもなお、以下にそのレポートを示します。

AO極値モメンタムとエンベロープ拡張(Pattern_5)
Pattern_5は、モメンタムが極端なレベルに達している、非常に強力なトレンドを捉えることを目的としています。このパターンの特徴は、AOが非常に高い、または非常に低い値を長期間維持することにあります。これは、継続的な買い圧力または売り圧力が存在していることを示すシグナルとなります。AOがこのような動きを見せている間、エンベロープのバンドも同時に拡大し始め、傾斜がより急になります。これは、強力な方向性の動きが進行中であることを裏付けるサインです。
Pattern_5の強気シグナルでは、AOがゼロラインより上の高レベルに長時間留まります。これは通常、直近のピークを上回るレベルで発生し、AOが明確にプラス圏に固定されている状態を示します。視覚的には、AOがすべて緑色の高いヒストグラムを連ねているように見えるでしょう。同時に、エンベロープの上バンドが鋭く上向きに傾斜しているのが確認できます。チャート上では、新しいバーが形成されるたびに上限バンドを押し上げていくように見え、エンベロープ全体がより高い価格帯に適応していることを示します。
このパターンの一部の実装では、「エンベロープの拡張」とは、エンベロープをパーセンテージベースで追跡する際に、バンドと価格の実際の距離が拡大して見える現象を指します。これはパーセンテージ幅自体は一定でも、価格レベルの上昇により絶対距離が拡大するためです。注目すべき視覚的特徴は、チャネル全体が明確に上向きに傾いており、横ばいではない点です。したがって、AOが一定の閾値を上回り、かつエンベロープが上向きに傾斜している場合、それはトレンド継続型の買いシグナルを示します。このときトレンドは強い推進力を持っており、価格はさらに上昇を続ける可能性が高いと判断されます。MQL5では、このパターンを以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_5(ENUM_POSITION_TYPE T) { vector _last = AO_Last3(X()); if ( T == POSITION_TYPE_BUY && _last[0] < 0.0 && _last[2] < 0.0 && _last[0] > _last[2] && Low(X()) < Low(X() + 1) && Envelopes_Up(X() + 1) - Envelopes_Lo(X() + 1) > Envelopes_Up(X()) - Envelopes_Lo(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && _last[0] > 0.0 && _last[2] > 0.0 && _last[0] < _last[2] && High(X()) > High(X() + 1) && Envelopes_Up(X() + 1) - Envelopes_Lo(X() + 1) > Envelopes_Up(X()) - Envelopes_Lo(X()) ) { return(true); } return(false); }
弱気版は、AOが深くマイナス圏に留まり、複数の赤いヒストグラムバーが明確にゼロラインの下に位置している状態で確認されます。これに加えて、エンベロープが顕著に下向きへ傾斜している場合、継続的な売りモメンタムが発生しており、ショートトレンドの継続を示唆します。このパターンは、本質的に市場が「極端なトレンド状態」にある局面、すなわち暴騰または暴落といった強い一方向の動きが生じている場面を示します。エンベロープの上バンドが連続して新高値を更新し、下バンドもそれに追随して動くような場合、これは「価格がバンドに沿って推移している」状態として解釈されます。
多くの戦略では、価格がボリンジャーバンドの上限(あるいは今回のケースではエンベロープの上バンド)に沿って推移し続ける局面を「トレンド発生中」と見なします。本パターンも同様の概念に基づいていますが、AOが極端なモメンタムを確認・裏付けることを条件としています。実際のチャート上では、Pattern_5は市場が一時的な持ち合いを終えた後に出現することが多く、Pattern_4(ボラティリティスクイーズ)やPattern_1の後に現れるケースもあります。このパターンのテスト結果は以下のとおりであり、フォワードウォークでも良好な収益性を示しました。

ダブルボトム/トップとAOツインピークス(Pattern_6)
7番目のパターンであるPattern_6は、エンベロープの境界付近で形成されるダブルボトムまたはダブルトップと、AOで現れる独特のツインピークスパターンを組み合わせた手法です。強気パターンの場合、価格が下落基調の中でエンベロープの下バンド付近でサポートを見つけ、いったん反発した後、再び下バンドを試す動きを想定します。このとき、価格はW字型のダブルボトムを形成します。2つの安値はほぼ同じレベルに位置し、いずれもエンベロープの下バンドというサポートゾーンで支えられた形になります。これにより、サポートが2度有効であったことを確認できます。同時に、AOでは、ゼロラインの下方で強気のツインピークス形状が現れます。
このAOの形状において、2つの谷(トラフ)のうち2番目の谷が1番目よりも高い位置、すなわちゼロラインに近い位置に形成されるのが特徴です。より重要なのは、この間にAOがゼロラインを上抜けることがなく、両方の谷がゼロライン下方のマイナス領域内で形成されている点です。これらのツインピークスは、売り圧力の減退を背景に、強気モメンタムの基盤が形成されつつあることを示すものと見なされます。この強気反転の機会をMQL5で次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_6(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && AO(X() + 1) < 0.0 && AO(X()) > 0.0 && Close(X() + 2) > Envelopes_Lo(X() + 2) && Close(X() + 1) <= Envelopes_Lo(X() + 1) && Close(X()) > Envelopes_Lo(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && AO(X() + 1) > 0.0 && AO(X()) < 0.0 && Close(X() + 2) < Envelopes_Up(X() + 2) && Close(X() + 1) >= Envelopes_Up(X() + 1) && Close(X()) < Envelopes_Up(X()) ) { return(true); } return(false); }
このパターンの弱気版は、エンベロープの上バンドで形成されるダブルトップ、M字型です。価格は上バンドに到達した後、反落し、再び上バンドを試してほぼ同じ高値を形成します。同時に、AOはゼロラインの上方で弱気のツインピークスを示します。このとき、2つのピークの間でクロスオーバーは発生せず、2番目のピークは1番目より低い位置にあります。これは買い圧力の減少を示し、価格下落の可能性を示唆します。
Pattern_6は、古典的なチャートパターンとオシレーターによる確認を組み合わせたものです。既知のサポート(たとえばエンベロープの下バンド)でダブルボトムが形成される場合、そのレベルが「守られた」ことを示唆します。AOツインピークスは反転シグナルとして確立されており、単独でも反転の可能性を示します。エンベロープを組み合わせることで、これらの高値/安値が極端な価格帯で発生していることが示され、サポートやレジスタンスが任意でないこと、レンジ内での反転点であることが明確になります。
通常、ダブルボトムの場合は2つの安値の間のネックラインを突破したとき、もしくは2つ目の安値形成後にAOが緑に転じた条件でエントリーします。ストップロスは、ロングではダブルボトムの安値の直下、ショートではダブルトップの高値の直上に設定します。このように、局所的リスクは小さくなり、潜在的リワードはエンベロープの反対側バンドまでの値動きとなります。このパターンをテストした結果、USD/JPY、30分足、同じ2年間の条件下で、他のパターンと同程度の取引数は得られませんでした。エントリー条件が厳しいため、より短い時間軸での適用が適している可能性があります。以下にテストレポートを示します。

売られ過ぎからの急反発AOとエンベロープブレイクアウト(Pattern_7)
Pattern_7は、極端なモメンタムが発生した後に現れる、急激な反転を捉えるパターンです。AOが深く売られすぎた状態から突然急上昇し、強気の値を示すと同時に、価格がエンベロープの上バンドを突破して上昇する場合に発生します。この場合は、シグナルが強気の反転となります。実際の強気セットアップでは、AOは大幅な売り圧力を示す非常に低いレベルにあり、直前の大きな下落を反映しています。その後、数本のバーの間にAOがゼロラインを上抜け、プラス圏に転じます。
これは、モメンタムの急変を示しています。売り手が完全に支配していた状況から、急激に崩れ、買い手に制御を奪われたことを意味します。同時に、大きく下落していた価格はエンベロープの上バンドを上抜けてチャネルの外側で終値をつけ、明確な上方向のブレイクアウトを示します。このセットアップは、通常ニュースなどの外的要因によって発生することが多いです。MQL5では、このパターンを以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 7. \ //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_7(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && AO(X() + 1) > AO(X() + 2) && AO(X()) > AO(X() + 1) && Close(X() + 2) <= Envelopes_Lo(X() + 2) && Close(X() + 1) > Envelopes_Lo(X() + 1) && Close(X()) > Close(X() + 1) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && AO(X() + 1) < AO(X() + 2) && AO(X()) < AO(X() + 1) && Close(X() + 2) >= Envelopes_Up(X() + 2) && Close(X() + 1) < Envelopes_Up(X() + 1) && Close(X()) < Close(X() + 1) ) { return(true); } return(false); }
このパターンの弱気版は逆パターンで、AOが買い過ぎ状態から短期間でゼロライン以下に急降下し、同時に価格がエンベロープの下バンドを下抜ける場合に発生します。これにより、下方向へのブレイクアウトリバーサルが示されます。この形成は、本質的にV字型の反転を捉えたものです。市場が一方向に強くトレンドしていたり、急速に動いていた局面で、急落や反転が発生し、勢いよく反対方向へ動くタイミングで起こります。AOはそのモメンタムの転換を数値化します。
Pattern_7は基本的に、以前の極端なモメンタムが持続しなかったことを前提としており、何らかの明確なトリガーによって反転した結果として発生します。このトリガーがない場合、依然として継続中の上昇局面でのボラティリティの一時的な急上昇、たとえば変動の大きい戻りに過ぎないことがあります。したがって、文脈が非常に重要です。過度に延長した上昇や、ニュースなどに支えられたイベントに注目する必要があります。テストにおいて、Pattern_7はPattern_1と同程度のパフォーマンスを示しており、フォワードウォークでも有意な結果が得られました。以下にそのレポートを示します。

以下に、Pattern_7の強気シグナルのチャート例を示します。これらのチャートパターンは、フォワードウォークで最も優れたシグナルを示すものを対象としています。ただし、エキスパートアドバイザー(EA)のソースコードも添付されているため、読者はテスト後のチャート上でこれらのパターンをさらに詳しく確認することができます。
ブレイクアウト後のエンベロープへのプルバックとAOによる確認(Pattern_8)
最後から2番目のシグナルパターンは、「スローバック」または「ブレイクアウト後のプルバック」戦略です。このパターンは、価格がエンベロープを突破した直後に発生し、価格が一時的に反転して突破したバンドを試すタイミングで機能します。その際、AOは極端なレベルに留まっており、支配的なモメンタムが依然として継続していることを示します。強気セットアップの場合、価格は上昇トレンドやPattern_1、あるいはPattern_7などを背景にエンベロープの上バンドを上抜けるブレイクアウトを形成します。初期の急上昇の後、価格はわずかにプルバックしますが、この戻りの安値はエンベロープの上バンドより下回らないことが重要です。言い換えると、価格はエンベロープ内に戻らず、上バンドに軽く触れるだけで、そのままわずかに上方に留まります。
この動きは、新たに形成されたサポート(エンベロープの上バンド)への「スローバック」として機能します。このプルバック中、AOはゼロラインより上に留まり、比較的高レベルで推移します。モメンタムは失われておらず、一時的に休止しているだけです。小さなプルバックによりAOが一時的に低下することはありますが、依然として明確にプラス圏に位置します。これらの条件下では、パターンは上昇トレンドでの低リスクなエントリーを示唆します。ブレイクアウトは上エンベロープ上方で維持されているため確認され、AOは強気モメンタムを示しています。このパターンのMQL5実装は以下の通りです。
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_8(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && AO(X() + 1) > AO(X() + 2) && AO(X()) > AO(X() + 1) && Close(X() + 2) > Envelopes_Up(X() + 2) && Close(X() + 1) > Close(X() + 2) && Close(X()) > Close(X() + 1) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && AO(X() + 1) < AO(X() + 2) && AO(X()) < AO(X() + 1) && Close(X() + 2) < Envelopes_Lo(X() + 2) && Close(X() + 1) < Close(X() + 2) && Close(X()) < Close(X() + 1) ) { return(true); } return(false); }
弱気版の場合、価格がエンベロープの下バンドを下抜けた後、上方向にプルバックする動きを想定します。このとき、戻り高値は下バンドの下に留まり、下バンドがレジスタンスとして機能します。AOがマイナス圏に留まることで、このセットアップは「戻り売り」をショートする機会を示し、下落トレンドが継続する可能性をある程度確認できます。Pattern_8はテストの結果、フォワードウォークにおいて利益を出すことができなかった最初のパターンとなりました。テストレポートは以下に示します。

エンベロープ傾斜とAOベースラインシフト
最後のパターンは、新たな持続的トレンドの開始を捉えることに焦点を当てています。具体的には、エンベロープの傾きの明確な変化と、AOのベースラインモメンタムの確認的変化を組み合わせます。強気シナリオでは、以前は横這いだったエンベロープチャネルが急激に上向きに傾き始め、価格の動きが強気に変化したことを示します。これは通常、上バンドやミッドラインの最初の高値から観察されます。例として、連続する数本のバーにおいて、エンベロープの上バンドが前のバーより高くなる動きが確認されます。エンベロープが強気の傾きを示すと同時に、AOもゼロラインを上抜けて明確にプラス圏に位置します。
実際には、AOは以前のレンジではゼロライン付近やゼロ以下で振動していた可能性がありますが、持続的な買い圧力により、明確にプラスに転じています。多くの場合、AOはゼロラインより上で数本のバーにわたって緑色を維持することがあります。これらの条件が揃うことで、市場がレンジや不規則な相場から脱し、秩序だった上昇トレンドに入った可能性が高いことを示す、強力なトレンド買いシグナルとなります。このパターンをMQL5で次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 9. | //+------------------------------------------------------------------+ bool CSignalAO_Envelopes::IsPattern_9(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) > AO(X()) && AO(X()) > 0.0 && Close(X() + 2) > Envelopes_Mid(X() + 2) && Close(X() + 1) <= Envelopes_Mid(X() + 1) && Close(X()) > Envelopes_Mid(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) < AO(X() + 1) && AO(X() + 1) < AO(X()) && AO(X()) < 0.0 && Close(X() + 2) < Envelopes_Mid(X() + 2) && Close(X() + 1) >= Envelopes_Mid(X() + 1) && Close(X()) < Envelopes_Mid(X()) ) { return(true); } return(false); }
このパターンの弱気版では、エンベロープが下向きに傾き、下バンドがバーごとに下がっていきます。同時に、AOはゼロラインを下抜け、マイナス圏に留まることで、新たな下降トレンドが形成されつつあることを示します。このパターンはあくまで確認シグナルとして機能します。Pattern_7やPattern_6のように絶対的な高値や安値を捉えることを目的としてはいません。目的は、横ばいまたは弱い相場から、トレンド相場への微妙な変化を捉えることです。USD/JPY、30分足、2年間の期間でこのパターンをテストした結果、Pattern_8のように利益を出すフォワードウォークは得られませんでした。以下にそのレポートを示します。

結論
本記事では、オーサムオシレータ(AO: Awesome Oscillator)とエンベロープチャネルを組み合わせた別のインジケーターのペアリングを検証しました。検証は、1年間の期間を学習/最適化に使用し、続く1年間でフォワードテストをおこなう形で実施しています。これまでの各記事でも強調してきたように、このテスト期間は限られており、実運用に使用する前に、読者自身で異なる市場条件や銘柄を十分に検証することが非常に重要です。今後の記事では、フォワードウォークで利益を出せなかったPattern_8およびPattern_9に、教師あり学習がどの程度有効に作用するかを検証する予定です。
| 名前 | 説明 |
|---|---|
| WZ-75.mq5 | ヘッダにインクルードファイルを示すウィザード組み立てEA |
| SignalWZ-75.mqh | ウィザードアセンブリで使用されるカスタムシグナルクラスファイル |
添付ファイルは、MQL5ウィザードでEAを組み立てるために使用することを目的としています。新しい読者のためのガイドはこちらです。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/18842
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。
MQL5で自己最適化エキスパートアドバイザーを構築する(第9回):二重移動平均クロスオーバー
MQL5で他の言語の実用的なモジュールを実装する(第2回):Pythonに着想を得たREQUESTSライブラリの構築
MQL5取引ツール(第5回):リアルタイム銘柄監視のためのローリングティッカーテープの作成
MQL5取引ツール(第4回):動的配置とトグル機能による多時間軸スキャナダッシュボードの改善
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索