English
preview
知っておくべきMQL5ウィザードのテクニック(第52回):ACオシレーター

知っておくべきMQL5ウィザードのテクニック(第52回):ACオシレーター

MetaTrader 5トレーディングシステム | 25 4月 2025, 09:30
30 0
Stephen Njuki
Stephen Njuki

はじめに

ACオシレーターは、モメンタムを追跡するために設計されたもう1つのビルウィリアムズインジケーターです。以前の記事で取り上げた別のオシレーターから派生したものなので一般的ですが、このオシレーターによって示されるさまざまなパターンをどのように使用し、さらには組み合わせて優位性を生み出すことができるかを検討します。このインジケーターは、特にモメンタムの加速または減速を追跡することを目的としており、それによって売買のシグナルを導き出すことが可能です。「加速」は「速度」とは異なります。

金融市場におけるこの2つの概念の違いは、特にMetaTraderのような端末で手動取引をおこなうトレーダーにとっては非常に繊細な問題です。速度は価格の変化率を指し、加速度は速度の変化率を正確に意味します。これらを正確に区別して定量化するためには、それぞれ異なるテクニカル指標が必要です。速度の測定には、一般的に以下のようなインジケーターが使われます。変化率(ROC)、MACD?RSI、そしておそらく単純指数移動平均。速度は価格の変化率を指し、加速度はその速度の変化率を意味します。これらを正確に区別して定量化するためには、それぞれ異なるテクニカル指標が必要です。このオシレーターは、以前紹介したオーサムオシレーターを基に派生しており、その計算式を簡単におさらいすると、次のようになります。

 

ただし、ACオシレーターの場合は次のようになります。

ここでは、前と同様に、

  • AOは現在のオーサムオシレーターの値

  • SMAは単純移動平均

このオシレーターの主要な構成要素の一つは「ゼロライン」であり、これは加速するモメンタムのバランスポイントを表しています。一般的に、正のACオシレーター値は強気のモメンタムを示し、負の値は弱気のモメンタムを示すと解釈されます。また、色の表示は、過去に紹介したビル・ウィリアムズの他のオシレーターと同様のロジックに従っており、ゼロラインの上または下に表示される緑のバーは、それぞれ強気または弱気のモメンタムが強まっていることを示します。一方、ゼロラインのいずれかの側に表示される赤のバーは、勢いが弱まっていることを意味します。

オーサムオシレーターは、価格反転の前段階であるモメンタムの変化に着目することで、トレンドの転換を早期に捉えるのに有効です。また、FX、株式、商品などさまざまな市場での汎用性が高く、視覚的にわかりやすいヒストグラム表示のおかげで、初心者にも比較的扱いやすいインジケーターです。要点をまとめると、ACオシレーターの実践的な活用方法としては以下の2点が挙げられます。原則として、ACオシレーターがゼロラインより上にあるときに買い、下にあるときに売るというエントリーシグナルの識別、そして、すでに取り上げたオーサムオシレーターや移動平均といった他のインジケーターと組み合わせることで、トレンドの確認に利用することです。

とはいえ、他の多くのテクニカル指標と同様に、ACオシレーターにもいくつかの制約があります。まず、シグナルの信頼性を高めるためには、トレンド系や出来高系などの補完的なインジケーターによる確認が必要になることが多くあります。また、横ばいまたは方向感のない市場では、ACオシレーターは遅延しやすい傾向があります。さらに、ACオシレーターは短期的な価格変動に敏感であるため、多くの誤ったシグナルに反応してしまう可能性があります。そして最後に、ゼロラインのクロスオーバーについては、対応するオーサムオシレーターに比べて信頼性が低いとされており、この点を踏まえると、ACオシレーターのパターンを詳しく調べる前に、まずオーサムオシレーターと比較して対比することは有意義でしょう。

それぞれの基本的な数式定義についてはすでに説明したとおりなので、各インジケーターの目的とその解釈に進みます。オーサムオシレーターは市場全体のモメンタムを示し、トレンドや反転の把握に役立ちます。一方、ACオシレーターはオーサムオシレーターを基盤としており、モメンタムの変化率、つまりモメンタムの加速や減速をより的確に捉えることを目的としています。ACオシレーターがゼロラインの上にあり、なおかつ上昇している場合には、モメンタムが加速していると判断され、逆にゼロラインの下で下降している場合には、モメンタムは弱気方向に加速していることになります。

ゼロラインは両方のオシレーターにおいて重要な意味を持ちます。オーサムオシレーターにおいては、ゼロラインを跨ぐ動きがモメンタム転換の明確なシグナルとされ、上方向へのクロスは強気、下方向へのクロスは弱気を示します。対してACオシレーターでは、ゼロラインそのものよりも、ヒストグラムバーが上昇しているか下降しているかといった方向性が重視される傾向にあります。オーサムオシレーターほど単体で強力な指標ではないため、ACオシレーターはプラス圏でバーが減少している場合にモメンタムの減速を、マイナス圏でバーが増加している場合には弱気圧力の後退を示すといったように、勢いの変化を見極める上で有効とされます。 

視覚的には、両方のインジケーターはヒストグラムで表現されることが多く、オーサムオシレーターは一般的に動きが滑らかであるのに対し、ACオシレーターは加速や減速に対して敏感であるため、変動が荒くなる傾向があります。オーサムオシレーターのほうが優れているという意見がよく見られる一方で、2つのオシレーターのうち、実はオーサムオシレーターのほうが反応が遅れがちである点にも注目すべきでしょう。これは、オーサムオシレーターがノイズを滑らかにする長期平均(SMA-5およびSMA-34)に依存しているため、短期的な変化に対して鈍感になってしまうからです。一方、ACオシレーターはオーサムオシレーターの変化率に焦点を当てているため、より応答性が高く、勢いの変化を早い段階で捉えることが可能です。

このような違いは、それぞれのインジケーターが向いている用途にも表れます。まずオーサムオシレーターについて見てみると、ゼロラインのクロスを重視しているため、トレンドの識別に適しており、反転の識別にはツインピークのシグナルがよく使われます。また、長期的なモメンタム分析をおこないたいトレーダーにとっては、より広い視野を提供するオーサムオシレーターは理想的なツールと言えるでしょう。一方、ACオシレーターの特徴は以下のとおりです。まず、モメンタムの加速を検出するのに優れており、オーサムオシレーターよりも早くエントリーやエグジットのタイミングを示唆することがあります。次に、短期的なシグナルを捉えることが得意であり、オーサムオシレーターのような長期指標のシグナルを確認する役割も果たします。そして、価格変動に対して高い感度を持つため、スキャルピングなどの短期取引戦略に取り組むトレーダーにとって有用な場面もあるでしょう。

以上をまとめると、オーサムオシレーターは広い視野でトレンドや反転を把握するのに優れているものの、反応速度にはやや劣ります。一方で、ACオシレーターはモメンタムの加速に注目することで、より迅速で機敏なシグナルを発するため、スピーディーな意思決定が求められる場面で役立ちます。そしてすでに述べたように、オーサムオシレーターでトレンドを捉え、ACオシレーターでエントリーとエグジットのタイミングを見極めるという形で、両者を併用するのが効果的です。

ここまでの説明を踏まえて、次はACオシレーターのパターンに移っていきましょう。今回取り上げるのは全部で8つのパターンです。例によって、まずはそれぞれのパターンを個別に検証し、記事の終盤では、それらのパターンの一部またはすべてを組み合わせた場合、限られたテスト期間内においてEAのパフォーマンスにどのような違いが出るのかを見ていきます。

本記事でのテスト対象は、2023年のGBP/USD通貨ペアで、時間足は4時間です。各パターンのテスト結果は最適化実行から得られたものであり、これまでの記事ですでに取り上げた議論に関しては再検証はおこなっていません。とはいえ、新しくこの記事にたどり着いた読者の方で過去のパターン検証に興味がある場合は、以前のインジケーター関連の記事を参照してみてください。また、記事の最後に添付されているコードはMQL5ウィザードで組み立てることを想定しており、その方法についてはこちらこちらの2つのガイドで解説しています。


ゼロラインクロスオーバー

最初に紹介するパターン(「パターン0」)は、基本的な構造でゼロラインを中心に展開されます。強気のシグナルは、ACオシレーターがゼロラインを下から上にクロスしたときに発生し、これは強気モメンタムが減速から加速へと切り替わったことを示唆します。同様に、ACオシレーターがゼロラインを上から下にクロスして下回った場合、弱気モメンタムが減速から加速に転じたことを意味します。MQL5では、このパターンを以下のように実装します。

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && AC(X() + 1) < 0.0 && AC(X()) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && AC(X() + 1) > 0.0 && AC(X()) < 0.0)
   {  return(true);
   }
   return(false);
}

こ本記事でのすべてのテストは、通貨ペアGBP/USDの1時間足、対象期間は2023年です。ウィザードで組み立てたEAを、このパターン(パターン0)のみでテストする場合は、使用するパターンを示す入力パラメータに「1」を設定する必要があります。最適化された設定による有望なテスト結果は、以下のレポートのとおりです。

r0

パターン0で考慮すべき重要な点は、冒頭ですでに強調したように、これが単独のインジケーターではないということです。プライスアクション分析には他のインジケーターと組み合わせるのが最適です。さらに、別のインジケーターと組み合わせる場合でも、確認が常に重要になります。エントリー/エグジットシグナルの収集をずらすことが常に最善です。つまり、現在のバーでクロスオーバーが発生した場合、セカンダリインジケーターからのシグナルは、後続の将来のバーで読み取るのが最適です。ほとんどのインジケーターと同様に、誤ったシグナルは必ず発生します。注意すべき重要な点は、市場が不安定であったり、大きく変動したりしているかどうかです。不安定な市場では、このパターンに関する誤ったシグナルが多く発生する傾向があります。ただし、市場の状況がトレンドである場合は、その場合の信頼性が高くなる傾向があるため、トレーダーは連勝を活用できると期待できます。



ゼロラインより上の連続した緑のバー

2番目のパターン(「パターン1」)は、ゼロラインの上または下に現れる色付きバーの連続数に基づいています。ACオシレーターがゼロラインより上に2本以上の緑のバーを連続して示す場合、それは強い強気モメンタムのシグナルと見なされ、上昇トレンドの継続が期待されます。反対に、ゼロラインの下に複数の赤いバーが連続して表示された場合、それは弱気モメンタムの高まりを示しており、下降トレンドの継続が示唆されます。このパターンは、MQL5で以下のように実装しています。これをMQL5では以下のように実装しています。

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_1(ENUM_POSITION_TYPE T)
{  int _i = X();
   if(T == POSITION_TYPE_BUY && UpperColor(_i) == clrGreen && UpperColor(_i + 1) == clrGreen && UpperColor(_i + 2) == clrGreen)
   {  return(true);               
   }
   else if(T == POSITION_TYPE_SELL && LowerColor(_i) == clrRed && LowerColor(_i + 1) == clrRed && LowerColor(_i + 2) == clrRed)
   {  return(true);               
   }
   return(false);
}

このシグナルでは、バーの大きさにも注目する必要があります。というのも、バーのサイズが増加しているかどうかは、現在のトレンドが勢いを増しているのか、それとも弱まりつつあるのかといったモメンタムの変化を示す手がかりになるからです。パターン1に関する他の重要なポイントとしては、先ほどのパターンと同様にシグナルの確認が重要であること、そしてできる限りトレンドが明確な市場環境で使用するのが望ましいという点が挙げられます。このパターンのみを使用し、使用パターンの入力パラメータに「2」を指定してテストをおこなった場合、最適化された設定に基づくテスト結果は以下のとおりです。

r1



ACオシレーターと価格の乖離(ダイバージェンス)

3番目のパターン(「パターン2」)では、ダイバージェンス(指標と価格の動きの不一致)を活用します。具体的には、価格がより低い安値をつけている一方で、ACオシレーターがより高い安値を形成している場合、これは強気のシグナルと見なされます。反対に、価格がより高い高値を更新しているにもかかわらず、ACオシレーターがより低い高値を示している場合、これは下落方向への反転を示唆するシグナルと解釈されることが多いです。このパターンは、MQL5で以下のように実装されます。

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X() + 3) > Low(X()) && AC(X() + 3) < AC(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X() + 3) < High(X()) && AC(X() + 3) > AC(X()))
   {  return(true);
   }
   return(false);
}

このパターンは、反転の可能性を見極めるうえで有力なテクニカル分析シグナルとして機能します。ダイバージェンスとは本質的に、価格の動きとACオシレーターが異なる方向に進んでいる状態を指します。これは、原則として、現在の価格行動に内在的な弱さがあることを示唆しており、価格の反転が近い可能性を意味します。使用するパターンのインデックスを4に設定して、このパターン単体でテストしたところ、以下のレポートが得られました。

r2

パターン0および1ですでに述べたように、このパターンも他のインジケーターによる確認と併用し、どのような市場環境に最も適しているかを見極めること、短期の時間枠よりも長期の時間枠に重点を置いて誤シグナルを避けること、そして適切なリスク管理をおこなうことは、いずれも非常に重要なポイントです。



ゼロ付近の反転シグナル

4番目のパターン(「パターン3」)は単独使用インデックス(入力パラメータ「patterns-used」に割り当てられたインデックス)が8で、ゼロラインに近い位置でのACオシレーターの反転を示します。このパターンでは、ACオシレーターがゼロ境界より上だがゼロに近いときに赤から緑に変わるのが強気の反転シグナルであり、一方、ACオシレーターがゼロ境界より下だがゼロに近いときに緑から赤に変わるのが弱気の反転シグナルです。ACオシレーターがゼロからどれだけ近いかを定量化することは、微調整が必要な部分です。 

なぜこれが重要であるかについてはすでに明白ですが、改めて強調すべき点かもしれません。強いシグナルと弱いシグナルを識別し、「分離」することが重要です。

その理由は、大きさ(マグニチュード)がモメンタムの強さを示す代理指標として機能することが多く、ゼロライン近くの大きな値が示すのは、反転が重要であり(実際には前のトレンドからの継続)、これをゼロからの大きなギャップとして解釈するからです。そのため、誤ったシグナルを除外するためには、オーサムオシレーターが示す反転やU字型のパターンの多くを除外できるだけの大きな閾値が必要です。このオーサムオシレーターゼロギャップの適切なサイズ設定は、ストップロスレベルの距離のガイドとしても利用でき、市場感情の指標としてエントリーおよびエグジットを微調整するためにも役立ちます。また、バックテストの際には、適切な反転とそれに伴う標準的な引き戻しを識別するために有用な場合もあります。

このギャップの定量化方法は無限にありますが、ここではオーサムオシレーターに密接に関連するいくつかの方法を説明します。まず、絶対的な指標値です。たとえば、取引される証券のポイントサイズが1e-5の場合、絶対値は0.005になるでしょう。もし取引される証券がYENクロスの場合は、絶対値は0.5です。この閾値を使用すると、ゼロからの振幅が絶対値より大きいオーサムオシレーター反転のみが考慮されます。

次に、相対的なマグニチュードという指標もあります。ここでは、現在のオーサムオシレーター値を過去または最近のオーサムオシレーターの平均値と比較します。この方法は、市場の状況に応じて変化する適応可能な閾値として考えることができます。閾値を微調整するために、ユーザー定義の乗数kを過去のオーサムオシレーター平均や最近の値に適用することもできます。さらに、標準偏差に基づく閾値という選択肢もあります。これについては、次のように定型的に計算できます。

ここで

  • μは平均
  • σは標準偏差
  • nはユーザーが最適化するパラメータ

時間に特化したマグニチュードは、ゼロ境界マグニチュードを定量化する別のアプローチです。この手法では、市場の変動が大きい期間やニュースイベント時には絶対的な値を用い、市場が落ち着いているときには代替の閾値を使用することができます。基本的には、前述の相対的マグニチュードの閾値と同様の機能を持ちますが、より時間依存的です。

これらは、オーサムオシレーターがゼロラインからどれだけ離れているかに基づく閾値を設定するためのいくつかの方法です。しかしこの際には、いくつかの落とし穴に注意する必要があります。これらに陥ると、意図しない結果を招く恐れがあります。具体的には、閾値を過度に厳密に設定しすぎること、市場の状況を無視すること、オーサムオシレーターの持つ遅延特性を考慮しないこと、小さな値を誤って解釈してしまうこと、そして市場ノイズの影響を見落としてしまうことなどです。

本記事の目的においては、ACオシレーターがゼロ境界にどれだけ近づくかを厳密に定量化することはおこなわず、単にゼロ付近で発生するUターン(反転)を検出することに焦点を当てています。これをMQL5では以下のように実装しています。

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && AC(X() + 2) > AC(X() + 1) && AC(X() + 1) > 0.0 && AC(X() + 1) < AC(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && AC(X() + 2) < AC(X() + 1) && AC(X() + 1) < 0.0 && AC(X() + 1) > AC(X()))
   {  return(true);
   }
   return(false);
}

このパターンのみを使用して、使用されるパターンの入力パラメータに8を割り当てて単独テストを実行すると、次の結果が得られます。

r3

パターン3は本質的には新たなシグナル形成パターンや反転パターンではなく、むしろトレンド継続型のパターンです。その使用に関するガイドラインも、上で述べた内容と大きくは異なりません。



色付きバーのサイズ増加

5番目のパターン(「パターン4」)は、特定の色を持つACオシレーターバーのサイズが拡大していく動きに着目し、それを活用することを目的とした、やや広範なパターンです。ACオシレーターの上に緑色のバーが増えていく様子が見られる場合(それがゼロラインの上か下かを問わず)、これは強気モメンタムの加速を示唆します。同様に、赤いバーの数が増加している場合も、それがゼロラインのどちら側にあるかに関わらず、弱気モメンタムの加速を示す兆候と考えられます。 

ただし、このパターンはそのままでは範囲が広すぎるため、実装においては少し絞り込みをおこなっています。具体的には、モメンタムの示す方向とは逆側にあるバーで、かつその色付きバーの数が増加している場合にのみ着目するという、やや限定的な形で取り入れています。たとえば、強気シグナルの場合には、ゼロラインの下側にある緑色のバーが徐々に増えていく(しばしばバーの長さが短くなるのが特徴)ことで、強気の勢いが高まりつつあると判断します。反対に、弱気シグナルの場合は、ゼロラインの上に現れる赤いバーが徐々に増加しつつ短くなっていく様子が、弱気モメンタムが勢いを増しているサインとなります。これをMQL5では以下のように実装しています。

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_4(ENUM_POSITION_TYPE T)
{  int _i = X();
   if(T == POSITION_TYPE_BUY && LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrGreen && LowerColor(_i + 2) == clrGreen)
   {  return(true);               
   }
   else if(T == POSITION_TYPE_SELL && UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrRed && UpperColor(_i + 2) == clrRed)
   {  return(true);               
   }
   return(false);
}

このパターンに関する重要な考慮事項は、すでに上で説明したダイバージェンスパターンとかなり重複する可能性があることです。ゼロラインより下の緑色のバーのより高い安値が形成されつつあり、価格動向も安値の低下から平坦化を示唆している場合、それは上向きの価格乖離の可能性がある強気シグナルの追加確認として機能する可能性があります。逆に、ゼロラインより上の赤いバーの高値が下がり、価格が高値から横ばいの高値を示している場合は、価格の引き戻しが予想されることを示している可能性があります。強気シグナルの場合と同様に、追加の確認はほとんど必要ありません。使用されるパターンの入力パラメータを16に割り当てた場合のこのパターンのみのテスト結果は、次のレポートに表示されます。

r4

いつものように、これらの示されたテスト実行は、パターンの「可能性」を示すことを目的としており、将来の結果そのものではありません。これらは、短期間の最適化の入力設定からのものであり、これらの設定はフォワードウォークやクロス検証されていません。読者は、いつものように、自分が意図する取引のセキュリティと、自分が意図するブローカーのデータを持って、これを実行してください。



ACオシレーターのピークと谷

6番目のパターン(「パターン5」)は、ACオシレーターのアクションとプライスアクションパターンを組み合わせ、フラクタルポイントに重点を置いています。強気のピークシグナルは、価格のピークの後にACオシレーターの緑色のバーのサイズが増加し、オシレーターがゼロラインを上回ったときに定義されます。これは強気の勢いが継続していることを示唆しています。同様に、弱気の谷シグナルは、価格変動の谷フラクタルの後に、ゼロラインより下の低い赤いACオシレーターバーが続く場合です。これは弱気の勢いが継続していることを示唆するものでもある。これをMQL5で次のようにコード化します。

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) && UpperColor(X()) == clrGreen && AC(X()) > 0.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) && LowerColor(X()) == clrRed && AC(X()) < 0.0)
   {  return(true);
   }
   return(false);
}

このパターンについては、ACオシレーターや価格のピークが高値を記録した場合、それが潜在的な反転の兆候となる可能性があるため、ある程度の注意を払って取り扱う必要があります。同様に、谷のフラクタルやACオシレーターも強気の反転を示唆することがあります。パターン5の解釈には若干の主観が伴う可能性があり、各シグナルの強度や重要度を正確に評価するためには、いくつかのメトリクスを考慮する必要があります。これには、ピークや谷の「高さ・深さ」、発生頻度、そしてそれらの乖離のティック値などが含まれます。 

一般的に、高いピークや深い谷はより強いモメンタムを示す傾向にあるため、先に示したコード実装を改良するにあたっては、ポイントベースの閾値や、現在のATRの倍数を用いた閾値を導入することで、スイングの動きがその閾値を超えたピークや谷のみをパターンシグナルとして認識するようにフィルタを設けることができます。また、頻度というメトリックは、今回のようにスイングの規模に対する分母として機能させることが可能です。これは、ピークや谷の出現頻度が高ければ高いほど、市場がよりボラティリティの高い状態であることが多いためです。ピークと谷は常に交互に発生するため、一定の遡及期間(たとえば使用している時間足に応じて1日または1週間など)内でいくつ出現しているかをカウントするのが効果的でしょう。

最後に、パターン5においてはピークや谷が主な観点となるため、それらが定義通りに並ばず、たとえば谷-ピークのペアのような形で現れることがあります。このようなズレは「ダイバージェンス」の兆候である可能性があり、パターン5の重要な補完要素として考えることができます。このパターンのみを対象にし、マップの入力パターンを32としてテストをおこなったところ、以下のような結果が得られました。

r5



強いトレンド後の色の変化

7番目のパターン(「パターン6」)は、ACオシレーターの色の変化に基づいています。この色の変化はゼロラインに対する位置によって意味合いが大きく異なるため、パターン4のように条件が広範囲になりすぎる可能性があります。そのため、各シグナルの定義はゼロラインの特定の側に限定しておこないます。たとえば、強気のモメンタムが衰えたことを示すには、ゼロラインの上でACオシレーターバーの色が緑から赤に変化する必要があります。これは弱気シグナルと解釈されます。逆に、ゼロラインの下で赤いバーから緑のバーへと変化した場合は、弱気のモメンタムが尽きたことを示し、強気の反発(プルバック)が近い可能性を示唆します。MQL5では、これを次のように実装します。

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_6(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);
}

この色の変化は、通常、強いトレンドの後に発生するため、シグナルを認識する際には、色の変化だけでなく、その前に強いトレンドがあったかどうかも確認する必要があります。今回のケースのようにエントリーシグナルとして利用することもできますが、長期トレンドの反転局面であることを考慮すれば、テイクプロフィットのポイントとしても機能し得ます。実際、「テイクプロフィット」という観点から見ると、このシグナルは必ずしも単独で強力あるいは信頼性の高いものとは限らないことがわかります。なぜなら、このシグナルは常に、あるいは多くの場合、強いトレンドの終盤、あるいは中盤で現れるためです。パターン6のみを使用し、パターン入力値として64を割り当ててテストを実施したところ、以下のようなレポートが得られました。

r6



極端なレベル付近での横這いのACオシレーター

8番目にして最後のパターンである「パターン7」は、ACオシレーターが極端なレベル付近で横這いになる現象を観察することで得られます。このパターンでは、ACオシレーターが重要な安値付近で横ばいとなり、大部分が赤いバーの状態から緑のバーが出現し始めた場合、強気のエントリーチャンスと見なされます。逆に、ACオシレーターが高値圏で横ばいになり、緑のバーが多くを占めたあとに赤いバーが数本出現する場合は、弱気のエントリーチャンスを示唆します。想定される通り、このシグナルにおいては、強気のケースではACオシレーターがゼロライン以下である必要があり、弱気のケースではACがゼロライン以上である必要があります。MQL5ではパターン7を次のようにコーディングします。

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalAccelerator::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && LowerColor(X() + 3) == clrRed && LowerColor(X() + 2) == clrRed && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrGreen)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && UpperColor(X() + 3) == clrGreen && UpperColor(X() + 2) == clrGreen && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrRed)
   {  return(true);
   }
   return(false);
}

ACオシレーターの平坦化は、特に特定の閾値レベル付近で発生した場合、現在のトレンドが衰退しつつあることを示す強力なシグナルとなる可能性があります。現時点での実装には、パターンを成立と見なす前提として、ACオシレーターが到達すべき閾値は含まれていません。しかし、読者がこのパターンをより鋭く、精度の高いものにしたいと考えるのであれば、この閾値の追加は非常に有効な改善ポイントとなります。マップの入力パラメータを128に設定し、このパターンのみを対象としてテストを実施した結果、以下のレポートが得られました。

r7



すべてのパターン

使用されるマップの入力パラメータを0から255までの範囲で最適化し、パターンの理想的な組み合わせを導き出すことを目的とした最適化をおこなった結果、いくつかの有望なパフォーマンス結果が得られ、以下のレポートにその内容が示されています。

rll



結論

本記事では、最近取り上げたオーサムオシレーターと非常に類似していながらも、価格の変化そのものではなく、価格のモメンタム加速の追跡により重点を置いた、もう一つのビルウィリアムズ系オシレーターを検討しました。また、オーサムオシレーターシグナルで採用されていた手法とは異なり、カスタムシグナルによるバーの色の判定方法にも若干の変更が加えられています。これらの詳細は、以下に添付されたソースコードから確認することができます。本連載は、今後数回の追加記事をもって、いったん締めくくる予定です。

ファイル名詳細
シグナルWZ_52.mqhカスタムシグナルクラスファイル
WZ_52ヘッダーに使用されているファイルを表示する、ウィザードで組み立てたEA

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

添付されたファイル |
SignalWZ_52.mqh (17.46 KB)
wz_52.mq5 (7.65 KB)
EAのサンプル EAのサンプル
一般的なMACDを使ったEAを例として、MQL4開発の原則を紹介します。
MQL5で自己最適化エキスパートアドバイザーを構築する(第3回):ダイナミックトレンドフォローと平均回帰戦略 MQL5で自己最適化エキスパートアドバイザーを構築する(第3回):ダイナミックトレンドフォローと平均回帰戦略
金融市場は一般的に、「レンジ相場」または「トレンド相場」のいずれかに分類されます。このような静的な市場の見方は、短期的な取引においては判断を容易にしてくれるかもしれません。しかし、実際の市場の動きとはかけ離れている側面もあります。この記事では、金融市場がこれら2つのモードをどのように移行するのかを探り、その理解を活かしてアルゴリズム取引戦略への自信をどのように高められるのかを考察します。
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法 エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
この記事では、MT4において複数のEAの衝突をさける方法を扱います。ターミナルの操作、MQL4の基本的な使い方がわかる人にとって、役に立つでしょう。
MQL5の分類タスクを強化するアンサンブル法 MQL5の分類タスクを強化するアンサンブル法
本記事では、MQL5における複数のアンサンブル分類器の実装を紹介し、それらがさまざまな状況下でどれほど効果的に機能するかについて論じます。