
知っておくべきMQL5ウィザードのテクニック(第69回):SARとRVIのパターンの使用
はじめに
パラボリックストップアンドリバース(SAR: Stop-And-Reverse)インジケーターと相対活力指数(Relative Vigour Index: RVI)オシレーターは、本連載で次に検討するペアです。今回の組み合わせは、トレンドの特定とモメンタムの追跡をあわせ持っています。これまでの記事と同様に、この2つの指標から導かれる10種類のシグナルパターンを考察し、MQL5ウィザードで構築したエキスパートアドバイザー(EA)によってテストをおこないます。それでは、これら2つのインジケーターの定義を見ていきましょう。
最適化およびテストは、銘柄「GBPCHF」を対象に、2023年の4時間足で実施します。パターンは一度に1つずつテストしています。MQL5に組み込まれているパラメータ「m_patterns_used」を使用する場合、独自にPatternsUsedという入力パラメータとしてマップを実装する必要があります。このパラメータは整数値で、同時に使用されるパターンの組み合わせをビットマップとして表します。ただし、今回のテストでは1パターンずつ使用します。前回の記事でこの理由は説明していますので、復習されたい方はそちらをご参照ください。パターンは0から9までインデックス付けされており、特定のパターンにのみ対応する整数値を取得するには、単純に「2のパターンインデックス乗」を計算します。たとえば、Pattern_0を使用する場合は2^0 = 1、Pattern_4の場合は2^4 = 16となります。
フォワードウォークは2025年に実施し、期間は2023年1月1日から2025年1月1日までの2年間となります。このテスト期間は明らかに限定的であり、より実用的な検証をおこなうには、異なる市場環境でのテストが望ましいです。市場環境は数年、場合によっては数十年単位で変動することがあります。
パラボリックSAR (Parabolic SAR: Stop and Reverse)
このインジケーターは、トレンドや潜在的な反転ポイントを検出するために開発されました。価格の上または下にドットをプロットすることでトレンドを可視化します。価格の下にドットが表示される場合は強気トレンド、上に表示される場合は弱気トレンドを示します。この仕組みは、トレンドフォロー戦略における合理的なトレーリングストップ設定の補助としても機能します。トレンドフォロー戦略ではドットが動的に調整されるため、予想通り、このインジケーターはトレンド相場での使用に適しています。このインジケーターの計算式は、上部バッファと下部バッファの2つに分かれます。上部バッファは次のとおりです。
下部バッファは次のように定義されます。
ここで
- SAR_n:現在期間のSAR値
- SAR_n+1:次期間のSAR値(予測SAR)
- AF:加速係数(Acceleration Factor)。初期値0.02、最大0.20まで新しいEPが更新されるごとに0.02増加
- EP:極値点(Extreme Point)。これまでの最高値(上昇トレンド)または最安値(下降トレンド)
- EP−SAR_n またはSAR_n−EP:現在のSARと極値との距離。SARの動きを加速させるために使用
ロジックとしては、価格がSARを越えた場合にトレンド反転が発生したとみなし、SARは反対側の極値にリセットされます。その後、トレンドの継続が確認されるごとに加速係数が増加し、通常の上限である0.2に達するまでこのサイクルが繰り返されます。
このインジケーターは、入力期間の価格範囲と終値を比較することでモメンタムを監視します。終値が高値付近にある場合は強気モメンタム、安値付近にある場合は弱気モメンタムを示します。また、RVIには平滑化されたシグナルラインが組み込まれており、RVIの転換点を検出する目的で使用されます。このシグナルラインを下から上にクロスすると強気モメンタム、上から下にクロスすると弱気モメンタムを示します。
RVIは、レンジ相場よりもトレンド相場でより信頼性が高く、トレンドの確認や潜在的な反転の特定に役立ちます。その計算式は以下の通りです。
および
ここで
- RVI:時刻tにおける相対活力指数の値
- Close_t:時刻tにおけるバー(ローソク足)の終値
- 始値_t:時刻tにおけるバーの始値
- High_t:時刻tにおける高値
- Low_t:時刻tにおける安値
- Numerator_t:終値と始値の差(モメンタム)
- Denominator_t: 高値と安値の差(変動幅)
- SAM4:重み[1, 2, 2, 1]を用いた対称加重移動平均(Symmetrical Weighted Moving Average)
この数式は理論的な基本原則に基づくものであり、本記事内で厳密に使用するわけではありませんが、インジケーターを理解するための補足として示しています。数式の基本的な考え方は、終値と始値の差を計算し、現在の価格の動きが全体の価格範囲に対してどのような方向性を持つかを評価することにあります。シグナルラインはRVIを平滑化することでノイズを抑え、より明確なシグナルを生成します。これでインジケーターの基本的な紹介は完了です。次に、生成されるシグナルパターンの説明に進みます。
SARの反転とRVIクロスオーバー(Pattern_0)
最初のパターンでは、パラボリックSARのクロスとRVIのゼロラインクロスを組み合わせて、潜在的なトレンド反転を検出します。SARは価格トレンドの変化を示唆することが多く、RVIはモメンタム方向の確認として機能します。つまり、このパターンは高値・安値の値動きとSARによるトレンドフォロー、RVIによるモメンタムシグナルを統合したものです。
買いシグナルは、前のバーの高値がSARより下にあった下降トレンド中に、現在のバーの安値がSARより上に位置してSARが反転し上昇トレンドを示す場合に発生します。さらに、そのタイミングでRVIがゼロラインを下から上にクロスし、終値がゼロを上回っていることが条件となります。この条件が揃った場合に、強気のシグナルとしてマークされます。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && 0.0 > RVI(X() + 1) && RVI(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && 0.0 < RVI(X() + 1) && RVI(X()) < 0.0) { return(true); } return(false); }
売りシグナルのロジックは、前のバーの安値が上昇トレンド中のSARより上にあった場合に始まり、現在のバーの高値がSARより下に反転すると同時にRVIがゼロラインを下抜けることを条件としています。このパターンは時間足に敏感であり、1時間足から4時間足の中期時間足で最も有効とされます。小さい時間足ではノイズに影響されやすく、大きい時間足では遅れが生じやすいためです。この手法は、トレンド反転パターンとレンジブレイクやボラティリティの高い市場変化の中間的なハイブリッドとしての利用が想定されます。
使用する際は、まず市場のマクロ環境に沿ったトレンドフィルターを適用することが推奨されます。取引は市場のマクロコンテキストと一致している必要があります。ボラティリティフィルターとしてSTD-DEV(標準偏差)を使用し、レンジ相場での取引を避ける方法が考えられます。また、ニュース時間帯におけるトレードを避けるためにニュースタイムフィルターを活用することも可能です。RVIの傾きを追加フィルターとして使うことで、Pattern_0のシグナルをよりクリーンにすることもできます。SARを使用することでトレーリングストップの管理が容易になり、SARレベルがガイドとして機能しますが、SARやRVIは反応が早すぎることがあるため、ATRに基づくストップロスも併用が検討できます。一般的には、このシグナルパターンに他のパターンを組み合わせて使用することが推奨され、MQL5ウィザードの設定により容易に実現可能です。
実装における潜在的な弱点としては、SARの反応性が挙げられます。急激な市場の反転やフェイクブレイクアウトにおいては遅れが大きくなり、シグナルが大幅に遅れてしまうことがあります。また、低活動市場では偽シグナルが多く、追加確認のためのボリュームやボラティリティフィルターが存在しません。そのため、RVIのゼロクロスはレンジ相場では信頼性の低いトリガーとなることがあります。さらに、エントリーの閾値もやや厳格で、許容マージン(例:<、≤、≥)が設定されていない点も課題です。
これらの弱点に対する改善策の一部は比較的簡単です。たとえば、STD-DEVフィルターでは、現在の標準偏差が最適化可能な閾値を超えているかを確認する方法があります。また、RVIの変化量を追跡するモメンタムフィルターを追加することで、直近バーのRVI変化が十分なモメンタムを示す場合のみシグナルを有効にすることが可能です。さらに、ATRを用いた動的なストップロスおよびテイクプロフィットの設定も改善策として考えられます。GBPCHFを対象に、2023年1月1日から2025年1月1日までこのパターンをテストした結果、フォワードウォークでは以下のような報告が得られました。このパターンはフォワードウォークに対して有効性が確認されました。
SARサポートとRVIトレンド(Pattern_1)
2つ目のパターンでは、買いシグナルは前のローソク足の安値がSARより上にあり、かつRVIが強気のモメンタムを示している場合に発生します。さらに、現在のRVI値が直前の値を上回っていることが条件となります。MQL5での実装は以下の通りです。
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_1(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > RVI(X() + 1)) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < RVI(X() + 1)) { return(true); } return(false); }
売りシグナルは、直前バーの高値がSARより下にあり、かつRVIが弱気モメンタムを示している場合に発生し、現在のRVIが前の値を下回っていることが条件です。この相補的な組み合わせは、モメンタムに裏付けられた反転を早期に捉えることを目的としています。このパターンは、特にトレンド相場やボラティリティの高い市場でSARの反応が強くなる場合に、反転取引やモメンタムブレイクアウトに適しています。
このパターンは、少なくとも1時間以上の時間足で使用するのが望ましいとされています。これは、信号が反応型であるため、低時間足では多くの偽シグナルが発生する可能性があるためです。また、OBV(オンバランスボリューム)などのインジケーターを用いたボリュームによるボラティリティフィルターと組み合わせることで、モメンタムシグナルの有効性を確認できます。さらに、STD-DEVやATRも追加確認として活用できます。このパターンに対する他のフィルターとしては、状況に応じた陽線包み足や陰線包み足などのローソク足フィルターも考えられます。SARは反応型の特性があるため、ニュース時間帯の取引を避けることも有効です。また、ATRに基づいたストップロス(SL)やテイクプロフィット(TP)は、このパターンとの相性が良い傾向があります。このパターンを対象におこなったテスト報告は以下の通りです。このパターンはフォワードウォークに対して有効ではありませんでした。
SARブレイクアウトとRVIダイバージェンス(Pattern_2)
3つ目のパターンでは、SARとRVIを組み合わせ、反転の兆候やトレンドの早期確認を捉えることを目的としています。ここでは、価格とSARの相対的な位置関係が重要であり、RVIのモメンタムクロスオーバーが前提条件となります。買いシグナルは、まず高値がSAR以下である場合に発生し、その後、安値より下に落ちる、もしくは反転することで強気の反転を示します。同時にRVIが上昇してモメンタムが強まっていることが条件です。終値がわずかに下がる場合もあり、これはベアトラップや反転直前の最終的な下押しを示唆します。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI(X()) > RVI(X() + 1) && Close(X()) < Close(X() + 1)) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI(X()) < RVI(X() + 1) && Close(X()) > Close(X() + 1)) { return(true); } return(false); }
売りシグナルの特徴は、前のローソク足の安値がSAR以上であり、その後SARが上昇して現在のバーの高値より上に位置し、同時にRVIが低下してモメンタムが弱まっていることです。この場合、終値がわずかに上昇することもあり、これはブルトラップやエクゾースションポイント(勢いの失速点)を示唆します。このパターンは、逆張りとモメンタムのハイブリッド信号であり、SARはトレンド反転の指標として、RVIは内部モメンタムの強さを示します。終値の比較を補助的に用いることで、プライスアクションによる追加の検証が可能となります。
このパターンの利用シーンは、レンジ相場やトランジション相場が中心です。これは、反転が比較的頻繁に発生するためです。また、このパターンは、平均回帰戦略や短期モメンタムトレードをおこなう場合の低時間足でも有効です。
このパターンを使用する際のベストプラクティスとしては、複数時間足での確認をおこなうことが推奨されます。下位時間足では騙しの動き(ホイップソー)が多いため、安全策として有効です。上位時間足で確認が取れれば、さらにシグナルの信頼性が高まります。また、ボラティリティフィルターとの組み合わせも有効です。この場合、STD-DEVや組み込み標準偏差インジケーター、あるいはATRを用いて、反転が十分な値幅を確保できるかを検証します。このパターンは、強いトレンド相場では使用すべきではありません。多くのプルバックが反転と誤認されるため、パフォーマンスが低下する可能性があります。ADXや移動平均などの追加フィルターを組み合わせることで、この問題を軽減できます。
リスク管理の観点では、このパターンではタイトなストップロスが推奨されます。SARの少し外側に設定することで、反転ロジックを尊重できます。目標値はサポート/レジスタンスレベル、またはリスクリワード比(R倍)で約1.5程度を目安に設定するとよいでしょう。バックテストは、スリッページやブローカーのスプレッドを考慮した条件でおこなうことが望ましく、特に低時間足を使用する場合には重要です。特にデイトレードで使用する場合には、パターンが実際の取引条件下で堅牢であることを確認することが不可欠です。パターンのテスト(設定/条件は前述のパターンと同様)結果は次のとおりです。このパターンはフォワードウォークに対して有効ではありませんでした。
SARトレンド継続とRVIゼロギャップ(Pattern_3)
4つ目のパターンは、モメンタムで確認されたトレンドフォロー型のシグナルです。SARを基にした価格関係を用いてポジションのバイアスを設定し、さらにRVIの値がゼロラインとの相対位置で、現在のモメンタムが強気か弱気かを確認します。買いシグナルは、前のバーの安値がSARより上にある場合に発生します。これはSARが価格の下に追従しており、強気のバイアスが存在することを示します。続いて、現在のバーの安値もSARより上にある場合、トレンドが維持されていることの確認となります。さらに、現在および前のバーのRVIがゼロライン以上である必要があり、これはモメンタムが持続していることの指標にもなります。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > 0.0 && RVI(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < 0.0 && RVI(X() + 1) < 0.0) { return(true); } return(false); }
売り条件についても同様で、前のバーの高値がSARより下にある場合、弱気バイアスのサインとなります。その後、現在のバーの高値もSARより下にある場合、トレンドが維持されていることを示します。さらに、現在および前のバーのRVIがゼロライン以下である必要があり、ネガティブなモメンタムの仮説と整合します。このパターンはトレンド確認型のシグナルであり、Pattern_2のように転換点を捉える反転型ではなく、Pattern_3のようにモメンタムと価格がSARと整合する必要もありません。理想的な市場環境は、トレンド相場やブレイクアウト相場、特に大きなプルバック後です。このパターンでは、RVIが直近2本のバーと同じ方向を維持していることを確認し、騙し(ホイップソー)を避けることが重要です。
このトレンド継続パターンの使用においては、すでに前のトレンドが存在している場合に限定して適用するのが望ましいです。ADXが25以上であるなどのトレンドフィルターや、長期EMAの傾きによる確認も有効です。ボラティリティ収縮/ブレイクアウトフィルターとして、ボリンジャーバンドのスクイーズや低STD-DEVを併用することで、より正確にエントリータイミングを測定できます。ストップの設定ルールとしては、ロングの場合はSARの少し下、ショートの場合はSARの少し上に置くことで方向性の安全性を確保できます。SAR自体は、エントリー後の動的トレーリングストップとしても利用可能です。
時間軸の戦略については、1時間足以上の上位時間足で運用する方が堅牢です。これは、トレンドが大きな時間足ほど安定しやすいためです。1分足や5分足の領域は、上位時間足との確認を組み合わせない限り、使用を避けるべきです。エグジットの条件は、RVIが反転する場合や、SARが価格に対して位置を変えた場合などです。Pattern_3のテスト結果を以下に示します。このパターンはフォワードウォークに対して有効でした。
SAR反転とRVIの買われすぎ/売られすぎ(Pattern_4)
5つ目のパターンは、反転型のシグナルであり、価格の転換をモメンタムで確認しつつ捉えることを目的としています。SARと価格の関係は、市場方向の潜在的な変化を示唆します。RVIのクロスオーバーも、モメンタム確認フィルターとして機能します。買いシグナルの条件は、まず前のバーの高値が前のSAR以下であることです。これは価格が弱気の状態にあることを示します。その後、現在のバーの安値がSAR以上である場合、価格が下から反転し強気のセットアップが形成されることを示します。RVI は、私たちが即席で作ったRVI-UP関数によって示されるように、上方向へのクロスオーバーも発生する必要があります。これは強気モメンタムを示します。加えて、現在のRVI値が正であることにより、強気モメンタムの仮説が補強されます。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X()) && RVI(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X()) && RVI(X()) < 0.0) { return(true); } return(false); }
売りシグナルの条件は逆に、前のバーの安値が前のSAR以上であることから始まり、これは過去の強気を示します。その後、現在のバーの高値がSAR以下である場合、弱気のセットアップが形成されます。さらに、RVI-DN関数によりRVIが下向きにクロスすることが必要で、弱気モメンタムの確認となります。加えて、買いシグナルと同様に、現在のRVI値が負であることが弱気の状況を補強します。
このパターンは本質的にモメンタムに基づく反転エントリーであり、SARの反転ポイントを活用し、さらにRVIによるモメンタムの変化によって補強されます。理想的な市場条件は、価格や市場がトレンドの終盤に近い場合や、ブレイクアウトが失敗した後です。また、価格が買われすぎ・売られすぎゾーンに達し、モメンタムのダイバージェンスが存在する場合に特に有効です。
使用する際は、フラットなSARゾーンを避けることが望ましいです。SARが頻繁に反転する場合、このパターンは使用すべきではありません。補助的にMACDやRSIのダイバージェンスなど、補完的なインジケーターを用いてRVIのクロスオーバーを検証するのも有効です。このパターンの時間足適性は、おそらく1時間~4時間足が望ましく、強い反転構造を捉えやすくなります。より短い時間足では、偽反転が多く発生する可能性があります。
エントリー確認には、補助的なローソク足パターンやブレイクアウトフィルター(例:包み足パターン)を活用し、タイミング精度を高めることが可能です。エグジット条件としては、RVIがモメンタムを維持できない場合、またはエントリー後にSARが再度反転した場合などが考えられます。ボラティリティフィルターとしては、STD-DEVやATRを使用し、過度に低ボラティリティの環境下でのシグナルを抑制することが推奨されます。テスト結果は、学習期間およびフォワードウォーク期間において以下の通りです。このパターンはフォワードウォークに対して有効性が確認されました。
SARレンジブレイクとRVIクロスオーバー(Pattern_5)
6つ目のパターンは、トレンド継続型のブレイクアウトシグナルであり、SARが新たなトレンドへ反転した直後にエントリーを捉え、RVIによるモメンタム確認を伴うことを目的としています。買いシグナルの条件は、まず前のバーの安値がSARより上にあることです。これは、価格が「トレーリングストップ」より上でトレンドしていることの確認となります。この条件が成立した後、現在のSARもまた現在のバーの安値より下に位置している必要があり、上昇トレンドが継続していることを示します。さらに、この条件が全て満たされると、RVIが上向きにクロスする必要があります。これは強気モメンタムが再確認され、現行のトレンドと一致していることを示すサインです。これをMQL5で次のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_5(ENUM_POSITION_TYPE T) { if(STD_DEV(X()) >= fabs(SAR(X()) - SAR(X() + __PERIOD))) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X())) { return(true); } } return(false); }
売りシグナルの条件は、まず前のバーの高値がSARより下にあることです。これは下降トレンドの兆候となります。その後、同様の条件が現在のバーでも再現され、現在の高値もSARより下に位置している場合、売り圧力が継続していることを示します。この動きは、RVIが下向きにクロスすることでモメンタムの弱まりを確認することと連動します。このパターンの基本的な考え方は、SARの位置確認とRVIのクロスオーバーを組み合わせ、価格のSARに対する位置とモメンタムの整合性をもとにエントリーをおこなうことで、早期反転を最小化する点にあります。Pattern_3やPattern_4との違いは、パターン5ではSARの継続とRVIの同意のみをフィルターとして使用し、ボラティリティチェックはおこなわない点です。
このパターンは、理想的にはトレンド相場での利用が推奨されます。強い方向性の動きが発生している場合や、大きなプルバック後にトレンドとモメンタムが再確認されたタイミングでの利用が望ましいです。レンジ相場やホイップソー状態では使用を避けるべきです。低ボラティリティ環境やSARの頻繁な反転が起きる場合、このパターンはSARの小さな反転や誤ったRVIのクロスオーバーにより多くの偽シグナルを生む可能性があります。RVIによる確認は、このパターンにおけるモメンタムゲートとして機能します。また、複数時間足の確認を併用することで、より精度の高いエントリーポイントを狙うことが可能です。
このパターンを使用する際は、最適なSAR設定が適用されていることを確認することが重要です。そのため、加速パラメータや最大値パラメータの設定を見直し、対象資産に適合するかを再確認することが望ましいです。さらに、STD-DEVやATRなどのリスクフィルターと組み合わせることで、静かな市場での不要なエントリーを回避できます。パターンのテスト結果は以下の通りです。このパターンはフォワードウォークに対して有効性が確認されました。
SARトレンドとRVIプルバック(Pattern_6)
7つ目のパターンは、ボラティリティ収縮型の反転シグナルであり、SARの圧力が一定で、RVIモメンタムが停滞または弱い価格拒否ゾーンを特定することを目的としています。買い条件のロジックは、前のバーの高値が前のSAR以下である場合です。これは価格がSARのレジスタンス下にあったことを示します。その後、現在のSARが現在の安値以下に位置する場合、SARが下に下がりサポートとして機能していることを示します。この動きは、RVIの値がゼロ付近にある状況で発生します。ゼロ付近のRVIは、モメンタムが低い、もしくは中立的であることを示すとともに、市場が潜在的なブレイクアウトに向けて収縮しているサインでもあります。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X())) { return(true); } return(false); }
このパターンの売り条件のロジックは、前のバーの安値が前のSAR以上であることから始まります。これは、価格がサポートの役割を果たしていたことを示します。その後、現在のSARが現在の高値以上に反転することで、SARが価格の上に位置することになります。RVIはゼロ付近にあり、モメンタムが低下または弱まっている状態で反転直前となります。
RVIフィルターをポイントサイズで使用する目的は、ボラティリティ抑制フィルターとして機能させることです。これにより、ブレイクアウトや反転の直前に発生する静かなモメンタムフェーズを捉えることができます。このパターンの戦略的目的は、SARが反転を試みる収束局面で、RVIがまだ方向性を示さない状況において、前方向への勢いを削ぎ、逆張りの優位性を生み出すことにあります。
このパターンの理想的な使用シーンは、レンジ相場、特に主要なサポート/レジスタンス付近です。強いトレンド相場では使用を避けるべきです。ブレイクアウトロジックと組み合わせることも可能です。さらに、このパターンはスプレッドやピップ値に敏感であるため、これらのモニタリングも重要です。時間帯フィルターを併用することで、パフォーマンスを向上させることもできます。テスト結果は以下の通りです。このパターンのフォワードウォークは失敗しました。
SARトレンドとRVIダブルフォーメーション(Pattern_7)
8つ目のパターンは、SARの位置確認後に複数のRVIの上昇/下降シグナルで確認された、モメンタムに基づくブレイクアウトエントリーを捉えることを目的としています。モメンタムブレイクアウト後のトレンド継続を狙うもので、価格の反発から方向性へのシフトが確認された局面に適用されます。買い条件は、前のローソク足の安値がSARより上にある場合です。これは価格がSARのサポート上で保持されていることを示します。その後、現在のSARも価格の安値より下に位置し、SARが価格に追随していることを確認します。さらに、RVIが直近入力期間内で2回上向きに反転している必要があります。強気シグナルの場合、これは最近のダブルボトムに相当します。これをMQL5で以下のように実装します。
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point()) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point()) { return(true); } return(false); }
売り条件は逆に、前のローソク足の高値がSARより下にある場合です。これは価格がSARのレジスタンス下にあることを示します。その後、現在のSARもSARの下に位置し続け、直近RVIがインジケーター期間内で2回下向きに反転している必要があります。このダブル確認ロジックの目的は、偽のスタートや弱いインパルスをフィルタリングすることにあります。遅延確認の要素を導入することで、モメンタムフィルタリングの形となり、より質の高いトレンドを確保できます。また、リスクリワードの観点でも、このパターンはRVI内でダブルボトムやダブルトップを確認することを条件としているため、モメンタムが継続している場合にのみエントリーする設計となっており、安全性が高まります。パターンのテスト結果は以下の通りです。このパターンはフォワードウォークに対して有効性が確認されました。
SAR加速とRVIスパイク(Pattern_8)
9つ目のパターンは、価格とSARの距離およびRVIモメンタムの両方から加速を確認するシグナルです。価格とSARのギャップが拡大しているかを評価し、これをトレンド強度の指標として使用します。同時に、RVIモメンタムも同方向に追従していることを確認します。買いロジックは、直近2本のバーの安値がSARより上にあり、この安値とSARの間のギャップが拡大している場合、さらにRVIの上向き変化が増加していることです。この処理は、MQL5では次のように記述されています。
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X())) { bool _double = false; for(int i = X() + 1; i < X() + __PERIOD + 1; i++) { if(RVI_UP(i)) { _double = true; break; } } return(_double); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X())) { bool _double = false; for(int i = X() + 1; i < X() + __PERIOD + 1; i++) { if(RVI_DN(i)) { _double = true; break; } } return(_double); } return(false); }
売りロジックも同様で、SARが直近2本のバーにおいて高値より上に位置し、SARと高値の間のギャップが拡大している場合です。さらに、RVIの変化が下向きに増加している場合、これは弱気の加速を示します。RVIの2次差分を使用することで、単なるモメンタムではなく、2次導関数のような挙動を捉え、凸型のカーブや上昇モメンタムを確認できます。
このパターンは、Pattern_7のような基本的なクロスオーバーに依存せず、クロスオーバーイベントを利用しません。代わりに変化率を活用することで、短期的な急反転のノイズを低減しています。また、モメンタムは価格とともに拡大するという前提に基づいており、方向性のあるブレイクアウトが価格で示される場合にのみ、モメンタムも上昇すべきという哲学に従っています。このパターンのテスト結果は以下の通りで、フォワードウォークにおいても有効性が確認されました。
結論
ここまでで、パラボリックSARと相対活力指数(RVI)のパターンの第一回目の紹介を終わります。記事が長くなりすぎたため、今回はPattern_9(10個目のパターン)には触れていません。すべての10パターンの完全なソースコードは下記に添付しており、読者は自由に参照し、必要に応じて修正することができます。このコードはMQL5ウィザードでの使用を前提としており、初めての読者向けのガイドもこちらに用意されています。次回の記事では、これらのシグナルパターンを教師ありの観点で補強することを目的として、フォワードウォークで有効性を確認できなかったパターンに焦点を当てて解説します。
名前 | 説明 |
---|---|
WZ-69.mq5 | ヘッダに使用ファイルを示すウィザード組み立てEA |
SignalWZ-69.mqh | MQL5ウィザードがEAを組み立てる際に使用するカスタムシグナルクラスファイル |
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/18399
警告: これらの資料についてのすべての権利はMetaQuotes Ltd.が保有しています。これらの資料の全部または一部の複製や再プリントは禁じられています。
この記事はサイトのユーザーによって執筆されたものであり、著者の個人的な見解を反映しています。MetaQuotes Ltdは、提示された情報の正確性や、記載されているソリューション、戦略、または推奨事項の使用によって生じたいかなる結果についても責任を負いません。




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