
知っておくべきMQL5ウィザードのテクニック(第50回):Awesome Oscillator
はじめに
Awesome Oscillatorは、前回のインジケーターパターンに関する記事で検討したアリゲーターとは別に、伝説の投資家であるビル・ウィリアムズ(英語)によって開発されたもう1つのインジケーターです。基本的に、市場のモメンタムを測定し、支配的なトレンドの潜在的な変化を特定するために設計されています。Awesome Oscillator (AO)は、34期間の単純移動平均(SMA)と5期間のSMAの差に基づいており、どちらも中央値に適用されます。中央値は次の式で求められます。
(高値+安値)/2
AOは、ゼロラインの上下に振動するヒストグラムとして表示されます。このゼロラインはモメンタムがないことを示す目安であり、そのラインを上または下に越えると、潜在的なトレンドシフトを示唆します。ヒストグラム上の緑色のバーは、前の価格バーからの強気のモメンタムの増加を示し、赤色のバーは同様に前の価格バーからの弱気のモメンタムの増加を示しています。また、一般的なガイドラインとして、ヒストグラムバーがゼロラインの上にある場合、強気のトレンドが支配的であることを示唆することが多く、同じヒストグラムバー(色に関係なく)がゼロラインの反対側に現れると、弱気のモメンタムが支配的であることを意味します。
なぜ「Awesome」なのでしょうか。この名前に対する簡潔な答えや、権威ある情報源は存在しませんが、AOは複雑なモメンタム計算をシンプルな視覚的インジケーターに変換すると考えられています。高速なSMAと「長期的な」SMAに焦点を当てることで、トレーダーは短期的および長期的な市場の動向を相対的に把握することができます。このインジケーターは非常に汎用性が高く、トレンドフォロー戦略や反転戦略にも適しています。その実用的な応用は、主に現在の市場モメンタムに合わせた取引のサポートです。以下で説明するように、さまざまなシグナルパターンを使用して、エントリーポイントやエグジットポイントを特定することができます。また、ダイバージェンス分析にも役立ち、以下で考察するシグナルパターンにも活用されます。
シグナルパターンや応用例は多くありますが、いくつかの固有の制限もあります。AOは多くのオシレーターと同様に、レンジ相場や不安定な市場では誤ったシグナルを発することがあります。この特性により、他のインジケーターと組み合わせて、より広範で包括的な戦略を取る方が効果的である場合があります。
この簡単な紹介を経て、私たちの伝統に従い、AOのパターンをいくつか検討していきます。この記事では、0から8までインデックス番号が付けられた9つの異なるパターンを取り上げます。いつものように、各パターンを個別にテストし、最後にマルチパターンテストを行います。トレーダーが自分の使用経験に基づいて相対的なパターンの重み付けに確信を持っていない限り、ライブ口座での実装には慎重であるべきだと私は考えています。一度に1つのパターンをテストするには、入力パラメータm_inputsまたは「Patterns Used Bitmap」を特定のインデックスに割り当てる必要があります。たとえば、パターン0のみをテストする場合、そのインデックスは2の0乗になります。パターンが4であれば、インデックスは2の4乗になります。
添付のコードはMQL5ウィザードで組み立てることを目的としており、そのために簡単に組み立てられる形式になっています。初めて読む読者のために、これを行う方法についてのガイドがこちらとこちらにあります。本連載では、このMQL5ウィザードによって得られる利点を活用する方法を取り上げています。特に、迅速なアイデアテストとプロトタイピングがその主な利点です。すべてをゼロからコーディングする必要がない点は明確な利点ですが、複数のアイデアをテストする際に提供される標準的なテストプラットフォームは、実際には見過ごされがちです。このプラットフォームは、市場に対する自分の戦略やアプローチで何が本当に重要なのかを理解するために非常に役立ちます。それでは、始めましょう。
ゼロラインクロスオーバー
インデックス0の最初のパターンは、おそらくこのインジケーターで最も一般的なパターンであるゼロラインのクロスオーバーです。定義において、AOのゼロラインは中立的なモメンタム状態を示しており、ヒストグラムがこのラインを上下に越えると、モメンタムの変化が示唆されます。このパターンは非常にシンプルで、AOがゼロラインの下から上に交差すると強気クロスとなり、買いのチャンスを示します。逆に、AOがゼロラインを上から下に交差すると弱気クロスとなり、売りのサインとなります。これをMQL5では以下のように実装しています。
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 1) < 0.0 && AO(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 1) > 0.0 && AO(X()) < 0.0) { return(true); } return(false); }
このパターンで強調すべき重要なポイントは、ゼロラインの交差が、交差の方向に応じて弱気から強気、またはその逆へのモメンタムのシフトを示すということです。これにより、トレーダーにとってトレンドの変化の早期警告として機能する可能性があります。この点は、トレンドラインなどの代替指標でゼロラインの交差を確認する必要性にもつながります。このオシレーターのヒストグラムバーの高さと傾斜は、ゼロライン付近でモメンタムの強さを示す指標として機能します。バーが高ければ、モメンタムが強いことを示し、つまり、緩やかな交差(または短いバーでの交差)は、長いバーでの交差よりも弱いシグナルを示すことが多いと言えます。
いつものように、状況が重要です。そのため、強気の環境での緩やかな交差は、必ずしも弱いシグナルとは限りません。また、不安定な市場での大きなヒストグラムバーの交差が強いシグナルを示すとは限らない点にも注意が必要です。このオシレーターはエントリーシグナルのガイドとして機能し、この記事での主な用途はその通りです。ただし、ロングとショートの条件しきい値を用いて開始と終了をおこなっているため、ウィザードで組み立てられたエキスパートアドバイザー(EA)のシグナルクラスは、適用または選択されたシグナルの終了タイミングも活用することになります。
パターン0の基本的な利点は、解釈が容易であること、そしてこのオシレーターが日中チャートから長期チャートまで幅広い時間枠で適用可能であり、スケーラビリティが高いことです。また、潜在的なトレンド反転の早期警告としても機能します。欠点としては、移動平均に基づいているため、シグナルが遅れがちであり、特に速い動きのある市場ではその傾向が顕著です。また、市場がレンジ相場や小さな調整を行っている場合にも、誤ったシグナルが発生することがあります。最後に、既に述べたように、シグナルを確認することは良い習慣であり、これは本質的に、少なくとも単独では、それほど強いシグナルではないことを意味します。2022年のGBPJPYの4時間足で行った短期間の最適化結果を以下に示します。
ツインピークス・シグナル
2番目のパターンであるパターン1は「ツインピークス」シグナルと呼ばれるもので、手動取引では比較的わかりやすいですが、自動売買への実装やカスタムシグナルとしての再現にはやや複雑さを伴います。定義として、ツインピークスとは、ゼロラインの同じ側に2つのピークが形成される現象を指し、弱気シグナルの場合はゼロラインの上、強気シグナルの場合はゼロラインの下で形成され、かつ2番目のピークがゼロラインにより近い位置にある必要があります。パターン1の重要なルールとして、2つのピークの間でゼロラインをクロスしてはならないという点が挙げられます。
強気シグナル(いわゆる強気のツインピークス)は、両方のピークがゼロラインの下にあり、かつ新しい方のピークがゼロラインにより近い場合です。逆に、弱気シグナルでは、両方のピークがゼロラインの上にあり、直近のピークがゼロラインに近づいている必要があります。このパターンでは、ピーク間のヒストグラムの高さが徐々に低下している必要があり、これは既存トレンド(反転しようとしているトレンド)のモメンタムが弱まっていることを示しています。また、ゼロラインはシグナルの有効/無効を判定する境界線として機能し、2つのピークが形成される前にゼロラインをクロスしてしまうと、そのシグナルは無効となります。さらに、2つのピークの距離が近すぎる場合もシグナルとしては不適切とされます。なお、私たちの実装ではこの「ピーク同士の距離が近すぎる」という条件はチェックしておらず、必要であれば読者自身で独自に実装することを検討してください。ソースコードは以下に記載しています。
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_1(ENUM_POSITION_TYPE T) { bool _1 = false; int _i = X(); if(T == POSITION_TYPE_BUY && AO(_i) < 0.0 && LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { while(AO(_i) < 0.0) { _i++; if(LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) >= 0.0) { break; } } } else if(T == POSITION_TYPE_SELL && AO(_i) > 0.0 && UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { while(AO(_i) > 0.0) { _i++; if(UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) <= 0.0) { break; } } } return(_1); }
パターン1は、価格アクションに対するモメンタムの乖離(ダイバージェンス)を示すことが多く、トレンド反転の早期警告として機能する点で非常に重要です。特に、反転シグナルを捉える能力こそがパターン1の最大の強みと言えるでしょう。ツインピークス・パターンにおける正確なエントリーポイントは、ゼロラインに近い2番目のピークが形成された直後となります。これは、上記のソースコードでも実装されています。ただし、より安全なアプローチとしては、2つのピーク形成後にオシレーターがゼロラインをクロスしたタイミングをエントリーポイントとする方法もあります。
また、パターン1はストップロスの設定にも活用できます。具体的には、このパターンでポジションを開いた後、従来のように価格ベースでストップロスを置くのではなく、オシレーターが最初のピーク(=2つのうち高い方)まで戻ってきた場合にポジションをクローズするというものです。この手法は本実装では採用していませんが、読者が検討すべきアプローチのひとつです。さらにこのパターンは、テイクプロフィットの目安としても応用可能です。たとえば、2つ目のピークでポジションを建てた後、オシレーターがゼロラインを超えた段階でポジションが利益を出していれば、それをクローズするというルールです。この方法は特に長期時間枠で効果を発揮します。というのも、短期時間枠では、価格がまだスプレッド内にある状態でゼロラインを横断してしまう可能性があるためです。
パターン1は、パターン0よりも出現頻度が低く、したがって精度が高いと見なされる場合もありますが、それでもトレンドラインと組み合わせて使用することができます。また、ボリュームデータが利用可能な場合には、2番目の小さなピークで出来高が増加していれば、それがシグナルの明確な裏付けとなり得ます。さらに、MACDやRSIといったダイバージェンス系ツールと併用することで、示されたシグナルに対するさらなる信頼性を持たせることができます。このパターンの利点には、SMAクロスオーバーやパターン0と比較して遅延が少ないという点、次のトレンドの方向性を明確に示すだけでなく、現在のトレンドにおけるモメンタムの弱まりを同時に把握できる点、そしてもちろん、さまざまな時間軸や市場でスケーラブルに活用できる点が挙げられます。2022年のGBPJPYを4時間足で最適化された設定でテストをおこなった結果は、以下のとおりです。
パターン1の制約は、その複雑さに起因するものであり、特にこれをコードとして実装する際に顕著になります。すでに述べたように、このパターンは価格チャートから視覚的に読み取るには比較的わかりやすいものですが、EAに価格バッファからこれを判断させるとなると話は別です。また、不安定な相場や方向感のない相場においては、このパターンによる誤シグナルが多発する傾向があります。前述のツール類やローソク足パターンなどによる確認を併用することで、こうした問題はある程度緩和できるでしょう。
ソーサーセットアップ
ソーサーパターン(パターン2)は、オシレーターのヒストグラムバーの色を読み取ることで潜在的な反転を特定するのに役立つ、もうひとつのAOシグナルパターンです。強気のソーサーセットアップは、市場のモメンタムが上方向に反転する可能性を示しており、これは2本連続した赤いヒストグラムバーによって示されます。このとき、2本目のヒストグラムバーは1本目よりも小さく、これらに続く3本目のバーは緑色で、2本目の短い赤いバーよりも高くなります。これらのバーはいずれもゼロラインの上にある必要があり、エントリーシグナルは通常、この緑のバーの終値で発生します。
弱気のソーサーセットアップは予想どおり強気の反転パターンであり、2本連続した緑のバーがあり、2本目はゼロラインに近い(または短い)、その後の3本目は赤色で、2本目の短い緑のバーよりも高くなります。これらのバーはすべて強気のソーサーを反転させたものであり、ゼロラインの下に位置します。エントリーシグナルは、強気の場合と同様に、この赤いバーの終値で発生します。このパターンにおいて重要なのは、それが純粋な価格変動ではなくモメンタムのシフトに依存している点であり、この特性によって短期的なトレンド反転の特定や、大きなトレンドの強さを再確認するのに効果的である傾向があります。これをMQL5では以下のように実装しています。
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && UpperColor(X() + 2) == clrRed && UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && LowerColor(X() + 2) == clrGreen && LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed) { return(true); } return(false); }
このパターンの主な利点は、識別および解釈が容易であること、他の一般的なインジケーターと併用することでシグナルの精度を高められること、そしてモメンタムの変化が頻繁に起こりうる不安定な市場環境でも比較的うまく機能する傾向があることです。制限としては、ボラティリティが低くトレンドのない環境では精度が低下しやすく、そのような場面では補助的なインジケーターと組み合わせて使用するのが望ましいでしょう。2022年のGBPJPYに対して、4時間足で好ましく最適化された入力設定を用いてテストを実行したところ、次のような結果が得られました。
価格とAOの乖離
パターン3は、ダイバージェンス(乖離)に基づいています。そしてダイバージェンスとは何かと言えば、インジケーターの値と価格の動きの間に生じるズレのことであり、これはしばしば現在のトレンドの反転や勢いの弱まりを示唆するシグナルとなります。このパターンでは、価格の高値・安値とAO(オーサムオシレーター)のピーク・トラフとの間に生じるダイバージェンスに注目します。ただし本稿では、よりシンプルな形のダイバージェンス、つまり価格アクションの高値・安値のトレンドとAOヒストグラムの値のトレンドとの間の乖離を取り上げています。
強気のダイバージェンスは、価格がより低い安値をつけている一方で、AOオシレーターがより高い高値を形成している場合に発生します。このパターンにおける考え方としては、弱気のモメンタムが弱まっている兆しが見られるため、トレンドが上方向に反転する可能性があるというものです。ひとつの具体的な(より鋭い)エントリーシグナルとしては、AOがゼロラインの下にあるときにこのパターンを見つけ、ゼロラインを上抜けしたタイミングで買いポジションに入るという方法が考えられます。
逆に、価格がより高い高値を更新しているにもかかわらず、AOオシレーターがより低い安値を示している場合は、弱気のダイバージェンスが発生しており、価格の動きに反して強気のモメンタムが失速していることを意味します。これは下方向へのトレンド転換を示唆するものであり、ショートポジションの適切なエントリータイミングとしては、AOがゼロラインを下回った時、または補助的な指標で弱気パターンが確認された時が考えられます。これをMQL5では以下のように実装しています。
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 3) > Low(X()) && AO(X() + 3) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 3) < High(X()) && AO(X() + 3) > AO(X())) { return(true); } return(false); }
このパターンの主な特徴は、特に買われすぎまたは売られすぎの価格レベルで、価格反転に先立つことが多い勢いの変化に注目を集めることです。したがって、これは価格の継続よりもむしろ潜在的な反転を識別するために構築されています。上記のパターンで使用してきたのと同じ銘柄と設定を最適化して理想的な設定でテストを実行すると、次のレポートが生成されます。
その利点は、トレンドの変化を発生する前に早期に予測するのに役立ち、さまざまな市場や時間枠にわたって汎用性があり、ブレイクアウトシグナルを確認するために他のインジケーターと組み合わせることができるという点で、すでに検討したパターンとあまり変わりません。同様に、横ばい市場では信頼性が低い傾向があり、他の指標と組み合わせて確認する必要があることが多く、遅れをとる傾向があることを考えると、その欠点もそれほど変わりません。
偽のブレイクアウトフィルタリング
パターン4は偽のブレイクアウトに関するもので、偽のブレイクアウトとは、価格が主要な支持または抵抗レベルを突破したように見えるものの、その後勢いを維持できずに反転する現象を指します。この反転は、最初に突破したバリアを越えた勢いが続かなかったために起こると考えられます。したがって、これらのブレイクアウトを偽のものとしてフィルタリングすることで、少なくとも理論上は取引の精度を向上させることができます。特に、勢いがブレイクスルーが持続可能かどうかを示す重要な指標であると仮定すれば、その効果が期待できます。
冒頭で述べたように、AOは中央値を基に短期SMA(5期間)と長期SMA(34期間)を比較することで勢いを測定します。ブレイクアウトが発生した際にAO値を分析することで、トレーダーはそのブレイクアウトが十分な勢いによってサポートされているか、あるいは5期間の価格アクションと34期間のプライスアクション間にギャップが存在するかを判断できます。MQL5でパターン4を次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < MA(X() + 1) && Close(X()) > MA(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > MA(X() + 1) && Close(X()) < MA(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
ソースでは、ブレイクアウトは8期間の移動平均線との交差であると特定されています。この移動平均期間はおそらくもう少し長く、34期間にすべきだったかもしれません。支持/抵抗のバリアをより重要視するためには長期間が望ましいですが、この短期間でもテスト目的には十分でした。ブレイクアウトを識別するための別の方法には、トレンドラインや三角形、長方形などのチャートパターンが含まれます。これらの指標で定義されたレベルを超えて価格が動いた場合、それは明確にブレイクアウトを示すものとなります。
ブレイクアウトのポイントでAOをさらに分析することで、そのブレイクアウトが持続可能かどうかをある程度判断することができます。もしヒストグラムのサイズ(オシレーターのバーグラフのサイズ)がブレイクアウト時に大きければ、それは信頼できる可能性が高いですが、ヒストグラムが小さい場合やサイズが短い場合は、シグナルを実行する前に追加の確認が必要になることがよくあります。この確認方法としては、AOが最終的にゼロラインを越えるか、またはヒストグラムが既にシグナルのトレンドに沿った半分に位置している場合、ポジションを開く前に、AOのより長いまたは同様の色のヒストグラムバーが確認できることが含まれます。
シグナルの定義については、強気のブレイクアウトは、価格が移動平均を下から上に突破し、AOがゼロラインを越え、最後の2つのバーが緑色である場合を指します。一方、弱気のブレイクアウトは、価格が移動平均を上から下に突破し、AOがゼロラインを下回り、最後の2つのバーが赤色である場合を指します。上記の他のパターンで使用したのと同じシンボルと設定を使用してテストした結果、次のレポートが得られました。
トレンド継続の確認
パターン5は、特定のトレンド(上昇トレンドまたは下降トレンド)が継続する可能性が高いことを確認する役割を果たし、反転前に取引を開始するリスクを軽減します。AOは、モメンタム分析を通じてトレンドの継続を確認するのに効果的です。強気のトレンド継続は、AOヒストグラムがゼロラインより上で緑色のままで、終値が引き続き上昇し続けている場合です。逆に、弱気のトレンド継続は、AOがゼロラインを下回り、価格が下降し、AOヒストグラムが赤色である場合です。MQL5では、これを次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Close(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Close(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
2022年のGBPJPYの最適化設定を4時間枠でテスト実行すると、次のレポートが得られます。
トレンドの継続をサポートし、上記で示した内容を補完するためにコード化できる追加のパターンには、ゼロクロスライン(パターン0)、プルバックシグナル(勢いが一時的に弱まった後、例えばバーが小さくなり、AOヒストグラムバーが再び強くなり、現在の価格トレンドが維持されていることを示すもの)、パターン1で検討したツインピークスシグナルがあります。これらの複数のパターンを組み合わせて取引を行うことは、組み立てられたEAが実行可能であり、各インジケーターのカスタムシグナル記事の最後で詳述します。
ただし、パターン5のみを使用して取引する場合、使用するビットマップの入力パラメータを32に設定します。このパターンを他のパターンと同様の戦略テスター設定で最適化すると、いくつかの好ましい入力設定から次のレポートが得られます。 勢いの影響を受けるため、その長所と制限は、上記で説明した他のパターンと大きく異なることはありません。
ゼロラインバウンス
ゼロラインから跳ね返るかゼロラインに近づくのがパターン6であり、AOがゼロラインに近づいたがそれを越えることができず、以前のトレンドに戻る場合にこの形成の背後にある前提となります。したがって、取引戦略としては、AOがゼロラインを上回っているときにゼロラインに向かって下降し、その後クロスオーバーせずにゼロラインから後退する場合、強気の反発が示唆されるということになります。弱気な反発は、AOがゼロラインを下回り、ゼロラインに向かって急降下した後、クロスすることなく後退する場合にも発生します。これを次のようにコーディングします。
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) >= 0.0 && AO(X() + 1) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < AO(X() + 1) && AO(X() + 1) <= 0.0 && AO(X() + 1) > AO(X())) { return(true); } return(false); }
上記の他のパターンと同様に、好ましい最適化設定でテストを実行すると、次の結果が得られます。
早期逆転警告
パターン7、つまり8番目のパターンは、緑から赤、またはその逆への突然の色の変化によって特徴付けられます。AOからの色の読み取りは次のように実装します。
// color UpperColor(int ind) { // return(AO(ind) >= AO(ind + 1) && AO(ind + 1) > 0.0 ? clrGreen : clrRed); } color LowerColor(int ind) { // return(AO(ind) <= AO(ind + 1) && AO(ind + 1) < 0.0 ? clrRed : clrGreen); }
これらの関数はカスタムシグナルクラスのクラスインターフェイスにあり、このパターンだけでなくクラス全体で使用されます。パターン7の取引戦略は、ゼロラインに対するAOの位置に関係なく、AOヒストグラムの色が緑から赤に変わるときに弱気から強気への移行がおこなわれるというものです。同様に、強気から弱気への移行は、AOがゼロラインに対してどこにあるかに関係なく、ヒストグラムの色が緑から再び赤に突然変化することで示されます。これを次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && ((UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) || (LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrGreen))) { return(true); } else if(T == POSITION_TYPE_SELL && ((UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrRed) || (LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed))) { return(true); } return(false); }
このパターンを、パターンの使用入力が128に割り当てられているという明らかな例外を除いて、上記で他のパターンで使用されたものと同様の条件で適切な最適化設定のみを使用してテストすると、次のレポートが得られます。
ヒストグラムによるトレンドの強さ
最後のパターンであるヒストグラムサイズはインデックス8で、AOヒストグラムサイズにメジャーを追加することで、上記のシンプルなパターン7をさらに一歩進めることを目的としています。上記のカラーコードの実装から、AOのカラーコーディングはヒストグラムサイズの変更によって決まることがわかります。したがって、ゼロラインより上のときにヒストグラムが増加するか、AOがゼロより下のときにバーのサイズが減少すると、AOバーは緑色になります。これは多くの点でパターン7の前提です。ただし、パターン8の場合、強気の勢いの増加は、後続の緑色のバー(増加または関連する減少を意味する)と、最新のAOヒストグラムバーがセキュリティスプレッドの8倍を超えることで示されます。スプレッドの8倍の使用は任意の選択です。通常、最適化された入力パラメータを使用すると、このしきい値をより適切に設定できます。また、現在のボラティリティの一部を使用することもできます。弱気の勢いの増加はこれの裏返しです。これをMQLで次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && UpperColor(X() + 2) == clrGreen && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && LowerColor(X() + 2) == clrRed && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed) { return(true); } return(false); }
ここでの主要な理論は、小さいバー(緑色でも赤色でも)がトレンドの弱まりを示唆し、したがって統合期間を示すのに対し、長く目立つヒストグラムは強い勢いを示し、一般的なトレンドには一定の持続力があることを示唆するというものです。このパターンのみをテスト実行すると、次のレポートが得られます。
私たちのカスタムシグナルクラスは複数のパターンにわたって取引することもでき、個々のパターン実行と同じ年と時間枠でGBPJPYの適切なパターンウェイトの最適化を実行すると、次の結果が得られます。
結論
以前のインジケーターと同様に、別のビル・ウィリアムズインジケーターであるAwesome Oscillatorをパターンごとに検討しました。各パターンの閾値をより適切に管理するための入力パラメータの追加や、もちろん使用前に優先入力パラメータを適切に相互検証するなど、これらのパターンのコーディングで扱っていない実装や側面がいくつかあります。これは、いつものように読者に任せており、完全なソースコードは記事の下部に添付されています。
ファイル名 | 詳細 |
---|---|
SignalWZ_50.mqh | AOをベースにしたカスタムシグナルクラスファイル |
wz_50.mq5 | ウィザードで作成されたEAのサンプル。含まれている/使用されているファイルを表示しています。 |
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/16502
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。





- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索