テクニカル指標 / RSIダイバージェンス
ダイバージェンスのツールは単純に見えます。価格は新たな極値を付ける一方、RSIはそうならないというものです。大切なのは、どのスイングを数え、どのRSIを読み、ツールが認識するまでに何本のバーが確定する必要があるかです。このページでは、厳密なルール、実際の時間足チャート、確認可能なコードで説明します。

RSIが測定するもの
相対力指数は、最近の上昇幅の平均と下落幅の平均を比較し、結果を0から100の範囲に換算します。MT5ヘルプによると、Wilderは指数の導入時に14期間を推奨し、その後は9期間や25期間のものも普及しました。同ヘルプは、RSIの山は通常70より上、谷は30より下に現れるとしています。MT5ヘルプ:RSI
このダウンロードでは、30と70の線は目安として描画するだけです。これらでダイバージェンスを絞り込むことはありません。コード
ダイバージェンスが比較するもの
ダイバージェンスは二つの価格スイングと、同じ二本のバーのRSI値を比較します。MT5ヘルプでは、価格の新高値または新安値を、RSI自身の新高値または新安値が裏付けない状態と説明しています。このダウンロードでは、その説明を厳密なパターンに置き換えています。MT5ヘルプ:RSI
- 通常の弱気:価格のスイング高値が切り上がり、二つ目の高値でRSIが低下します。
- 通常の強気:価格のスイング安値が切り下がり、二つ目の安値でRSIが上昇します。
- 隠れた弱気(初期設定では無効):スイング高値が切り下がり、二つ目の高値でRSIが上昇します。
- 隠れた強気(初期設定では無効):スイング安値が切り上がり、二つ目の安値でRSIが低下します。
このページでは、ダイバージェンスの後に価格が反転するかどうかは検証していません。ルールが何を、いつ検出できるかと、その後も価格が二つ目のスイングを超えた実例を示しています。チャートデータ
このダウンロードのRSI計算方法
指標は終値とWilderの平滑化を使います。各バーの価格変化を上昇分と下落分に分け、いずれかは常にゼロとなり、両方を平滑化します。バーは読み込んだ最古のバーから、ゼロを起点に数えます。
change[t] = Close[t] − Close[t−1] gain[t] = max(change[t], 0) loss[t] = max(−change[t], 0) バー N での初期値: AvgGain[N] = (gain[1] + … + gain[N]) / N AvgLoss[N] = (loss[1] + … + loss[N]) / N 以降のバー: AvgGain[t] = (AvgGain[t−1] × (N − 1) + gain[t]) / N AvgLoss[t] = (AvgLoss[t−1] × (N − 1) + loss[t]) / N RSI[t] = 100 − 100 / (1 + AvgGain[t] / AvgLoss[t])
Nは期間で、初期値は14です。平滑化にはMT5ヘルプの平滑移動平均を使います。前の平均にN − 1を掛け、新しい値を加えてNで割ります。MT5のRSIヘルプには最終式はありますが、使用する平均は指定されていません。そのため、このページではコードが使用する平均を明示しています。MT5ヘルプ:平滑移動平均 MT5ヘルプ:RSI コード
初期値と計算開始までの期間
最初の平均上昇幅と平均下落幅は、最初の14回の変化の単純平均なので、最初のRSI値には15個の終値が必要です。このエクスポートでは2025-12-04 22:00のバーに当たり、値は42.78です。それ以前のバーは空欄のままで、バーが14本以下の場合は何も描画しません。コード このページで使用した数値
初期値の影響は弱まりますが、完全には消えません。各段階で前の平均の(N − 1) / Nを残すため、100本後も各平均における初期値の重みは約0.06%です。異なる最初のバーや異なる初期値から始めるRSIは、当初異なる値を示します。終値と平滑化が同じなら、平均の差は各バーでその係数分だけ縮小します。このページで使用した数値
価格が動かない場合
平均下落幅がゼロの場合、式はゼロ除算になります。コードは、平均上昇幅が正なら100、両平均がゼロなら50を返します。後者は価格が全く動いていない状態です。平均上昇幅がゼロで平均下落幅が正の場合、式自体が0を返します。コード
実データでこれらのケースは発生していません。該当なしであり、4,986個のRSI値のうち、正確に0、50、100となるものはありません。代わりに、テストでは人工的な横ばいおよび一方向の価格系列で検証しています。相互照合
同じ条件で比較してください。二本のRSI線が一致するのは、終値、期間、平滑化、初期値、最初のバーが一致するときだけです。ダイバージェンス一覧同士の比較には、ピボットとペアリングのルールも一致する必要があります。
指標がダイバージェンスを見つける仕組み
スイングのピボット
バーの高値が、その前の5本すべての高値を厳密に上回り、その後の5本の高値に超えられないとき、高値ピボットとなります。安値ピボットでは安値に対して逆のルールを適用します。
バー p の高値ピボット: High[p] > High[j] 対象 j = p − L … p − 1
High[p] ≥ High[j] 対象 j = p + 1 … p + R
バー p の安値ピボット: Low[p] < Low[j] 対象 j = p − L … p − 1
Low[p] ≤ Low[j] 対象 j = p + 1 … p + R
LはPivotLeftBars、RはPivotRightBarsです。この非対称性で同値を処理します。右側の同じ高値ではピボットを取り消しませんが、左側の同じ高値では取り消します。互いの範囲内に同じ高値が二つある場合、先のバーがピボットとなります。実データにも同値があります。このエクスポートでは10個の高値ピボットと4個の安値ピボットの右側に同じ極値があり、14個の高値と4個の安値は、左側の同じ極値だけを理由に除外されました。合計は高値ピボット313個、安値ピボット311個です。コード 件数
ペアとダイバージェンス判定
新たなピボットが確定すると、コードは同じ種類の直前のピボットとのみ比較します。両者の間隔が5から60本で、最初のピボットにRSI値が存在するときに判定します。より近いピボットがある場合、さらに古いものとの比較は必ず遮られます。コード
通常の弱気: High[p2] > High[p1] かつ RSI[p2] < RSI[p1] 通常の強気: Low[p2] < Low[p1] かつ RSI[p2] > RSI[p1] 隠れた弱気: High[p2] < High[p1] かつ RSI[p2] > RSI[p1] 隠れた強気: Low[p2] > Low[p1] かつ RSI[p2] < RSI[p1] 報告されるバー: c = p2 + R
比較はすべて厳密なので、価格またはRSI値が同じ場合はダイバージェンスになりません。左に5本、右に5本ある場合、同じ種類のピボット間隔は必ず6本以上となるため、初期設定では最小距離の制約は効きません。ルール
設定
ダウンロードの入力項目は以下のとおりです。このページの全図は初期設定を使っています。これらは説明用の出発点であり、最適化された値ではありません。
| 入力項目 | 初期値 | 制御する内容 |
|---|---|---|
RsiPeriod |
14 | Wilderの平滑化による終値RSIの期間。 |
PivotLeftBars |
5 | ピボットが極値を厳密に超える必要がある、直前のバー数。 |
PivotRightBars |
5 | ピボットの極値を超えてはならない、直後の確定済みバー数。確定の遅れにもなります。 |
MinPivotDistance |
5 | ペアの両ピボット間で許容する最小バー数。 |
MaxPivotDistance |
60 | 両ピボット間で許容する最大バー数。直前のピボットの探索はそこで止まります。 |
ShowHidden |
false | 独自の矢印を伴う点線で、隠れたダイバージェンスを追加します。 |
期間は新たな変化の重みを決めます。Wilderの平滑化では初期設定で1/14、MT5ヘルプが挙げる別の期間では1/9または1/25の重みになるため、短い期間ほど各バーに強く反応します。PivotRightBarsは速さと確定の兼ね合いです。値を大きくしてもピボットは増えず、すべての検出が追加バー数だけ遅れます。MT5ヘルプ:RSI このページで使用した数値
実例の読み方
図2から4は、固定の選定ルールでエクスポートから選びました。図2と3のルールはピボット間のRSI差で検出を順位付けし、その後の価格推移は考慮しません。図4は意図的に失敗例を選んでいます。選定ルール

図2の二つ目の高値は最初より0.00039高い一方、RSIは18.99ポイント低くなっています。両系列は異なる価格から作られます。ピボットは高値と安値、RSIは終値を使います。二つ目の高値を付けたバーの終値は1.16168で、自身の高値を0.00420、前の終値を0.00212下回りました。そのため、新高値を付けたそのバーでRSIは下落を記録しました。このページで使用した数値

図3の二つ目の安値は最初より僅か0.00009低く、これは9ポイントに相当します。この銘柄の価格刻みは0.00001です。一方、RSIは26.22ポイント高くなっています。ルールには最小幅がないため、これほど小さい差も他と同様に数えます。ここでもピボットのバーは極値から離れて引けました。終値は1.16176で、安値より0.00355、前の終値より0.00272高い値です。このページで使用した数値
どちらも結果を理由に選んだ例ではありません。図2の確定後、続く24本の高値がピボット2を超えることはありませんでした。図3の確定後は、2026-05-21 16:00に安値1.15757を付けてピボット2を下回りました。確定バーから18本後です。チャート記録

図4の検出はルール上正しく、高値が切り上がる一方でRSIは17.88ポイント低下していました。失敗したのは反転への期待です。安値1.15237までの下落が2026-04-07 05:00にあった後、価格はさらに高い高値へ進みました。チャート記録 このページで使用した数値
サンプルが示すこと
初期設定のエクスポートには通常の検出が73件あり、弱気が29件、強気が44件です。ShowHiddenを有効にすると、隠れた弱気が43件、隠れた強気が29件追加され、合計145件となります。これらはこのルールの下でのサンプルの件数です。的中率ではなく、取引成績は検証していません。件数
ダイバージェンスは既に起きた二つのスイングを表します。その後の価格の動きは別の問題です。
ダイバージェンスが判明する時点
確定の遅れ
ピボットには右側の5本の確定済みバーが必要なので、検出器がピボット2を認識できるのは最後のバーが閉じてからです。コードはピボット2ではなく、その確定バーに矢印を置き、二つのRSI値を結ぶ線も同時に表示します。チャートの最新バーは形成中と扱うため、ピボットを確定させることはありません。コード

リペイントするのでしょうか
記録された検出は、確定済み履歴が変わらない限り同じ位置に残ります。ネイティブテストでは全5,000本を一本ずつ再生し、まず最新バーの途中のティックを変え、その後最終値を与えます。各段階で、検出が確定バーでのみ現れ、その後変わらないことを確認します。最新バーのRSI値は、どのRSIと同様、各ティックで動きます。より古い履歴のダウンロードなどで価格履歴自体が変わると、端末はprev_calculatedにゼロを渡し、指標は新しいデータですべてを再計算します。ネイティブテスト MQL5リファレンス:OnCalculate
スイングを定義するバーが閉じる前に、そのスイングを確定することはできません。
他のツールとの組み合わせ
検出器が比較するのは二つのスイングと二つのRSI値だけです。それ以上の条件は別のルールとなり、自分で定義して検証する必要があります。このガイドでは、以下の追加条件はいずれも検証していません。
- 価格水準。図2から5の点線はピボット2の水準を延長したものです。その後の価格が超えたかどうかはチャートで確認でき、図3から5では超えています。
- RSI水準。30未満の強気検出に限定する、といったフィルターは新たな入力条件です。このダウンロードは30と70の線を描きますが、絞り込みには使いません。
- その他のRSIの読み方。MT5ヘルプにはRSI線自体の山と谷、チャートパターン、フェイラースイング、支持線や抵抗線も説明されています。この検出器はそれらを探しません。
- トレンドフィルターと上位時間足。移動平均などのトレンドフィルターや、上位時間足に同じルールを適用すると、残る検出が変わります。このページではどちらも測定していません。
制約
- 検出器は過去のバーを説明します。予測は行わず、的中率や取引結果も報告していません。
- 構造上、すべての検出はピボット2から5本の確定済みバーを経て届きます。
- 微小な差も数えます。評価した621ペアの最小価格差は0.00001で、銘柄の最小価格刻みでした。最小RSI差は0.05ポイントです。完全に同じピボット価格は1ペアにあり、ルール上ダイバージェンスではありませんでした。
- ピボットは高値と安値、RSIは終値を使います。長いヒゲのあるバーは新たな極値を付けても、図2と3のようにそこから離れて引ける場合があります。
- 比較するのは隣接ピボットだけで、間隔は最大60本です。隣接していないスイング間のダイバージェンスは報告しません。
- 読み込んだ履歴の初めに近い値は初期値に依存し、他のRSI実装と異なる場合があります。
- 時刻は取引サーバーの時計で、取得時はUTC+3です。過去の夏時間の変更はモデル化していません。チャートは週末などの空白期間を圧縮しています。
- MQL4ファイルはMT4でコンパイルも実行もしていません。
指標を使う
以下の手順はMT5向けです。.mq4ファイルはMT4向けですが、そこでのテストは行っていません。
- 下の.mq5ソースまたはコンパイル済み.ex5をダウンロードします。
- データフォルダーを開き(MetaEditorの「ファイル › データフォルダーを開く」)、MQL5\Indicatorsフォルダーにファイルをコピーします。
- ソースを使う場合はMetaEditorで開き、F7を押してコンパイルします。これにより.ex5ファイルが作成されます。
- MT5のNavigatorウィンドウから指標をチャートへドラッグします。指標は独自の目盛りを持つ別ウィンドウで開き、範囲は0から100に固定されています。
- このページに合わせるには初期設定を保ちます。変更する場合は、適用時に設定表の入力項目を変更します。
MQL5ソース
編集可能なネイティブMQL5コードです。別ウィンドウにRSIとダイバージェンスの線や矢印を表示します。注文、アラート、DLLのインポート、ウェブリクエストはありません。
確認した内容
MQL5ファイルの計算部分は、エントリー関数名だけを変えてテストプログラムにコンパイルし、同じ5,000本のバーでMT5の数学テスターにより実行しました。同じルールの独立した参照実装も同じ行を処理しました。そのWilder平均は指数加重平均を使い、同じ漸化式を別の算術形式で表しています。テストプログラムの範囲 MQL5リファレンス:テスト 指数加重平均
全4,986個のRSI値は4.97e-14ポイント以内で一致し、そのうち2,139個はビット単位でも同一でした。合格許容誤差は1e-9ポイントで、想定される浮動小数点誤差の約1e-13ポイントより十分大きく、指標の表示小数桁2桁よりはるかに細かい値です。ShowHiddenを有効にした全145件の検出は、種類、確定バー、両ピボットバーが完全一致しました。許容誤差に近い判定はなく、評価したペアの最小RSI差は0.05ポイントでした。相互照合 ビルドログ
ネイティブプログラムの合格数は41、総チェック数は41でした。計算開始までの期間と初期値、横ばいと一方向の価格、同じ高値と安値、既知の正解があるダイバージェンス、履歴不足、反復ティック、形成中バーの変更、バーの追加、バー単位の再生、ShowHiddenの初期設定を対象としています。相互照合スクリプトの合格数は24、総比較数は24でした。ネイティブテスト 相互照合
これらの確認は計算と更新ロジックを対象としています。ライブチャートでの描画、MT4、取引結果は対象外です。テストプログラムの範囲
リスク警告。取引にはリスクがあり、資金を失う可能性があります。この指標は過去の価格とRSIのパターンを示すだけで、価格予測、注文の発注や保護、リスク管理は行いません。例はルールの説明用です。取引シグナルではなく、このページのいかなる内容も結果を約束しません。
よくある質問
RSIダイバージェンスとは何ですか
二つの価格スイングと、同じ二本のバーのRSI値との不一致です。通常の弱気ダイバージェンスでは価格のスイング高値が切り上がる一方、二つ目の高値でRSIが低下します。通常の強気ダイバージェンスでは価格のスイング安値が切り下がる一方、二つ目の安値でRSIが上昇します。
このダウンロードはどのようにRSIを計算しますか
終値と、期間14のWilderの平滑化を使います。最初の平均上昇幅と平均下落幅は、最初の14回の価格変化の単純平均です。その後の各変化は1/14の重みで入ります。平滑化が異なるRSIは全体を通して異なる値となります。同じ平滑化でも初期値や最初のバーが異なる場合、差は履歴の初めに最も大きく、その後薄れます。
ダイバージェンスがスイングから5本後に現れるのはなぜですか
スイングがピボットになるのは、右側の5本がその極値を超えずに閉じた後です。指標はその最後のバーでダイバージェンスを報告し、ピボットのバーに戻して表示しません。そのため、チャートはその時点で指標が認識できた内容を示します。
指標はリペイントしますか
確定済み履歴が変わらない限り、確定後はしません。各新規バーで途中のティックを入れた全5,000本のネイティブ再生では、早く現れた検出、移動した検出、後で変わった検出はありませんでした。形成中バーのRSI値は各ティックで変わり、古い履歴の追加ダウンロードなど読み込んだ履歴の変更があると、指標はすべてを再計算します。
隠れたダイバージェンスとは何ですか
隠れた弱気ダイバージェンスは、スイング高値が切り下がる一方でRSIが上昇するものです。隠れた強気ダイバージェンスは、スイング安値が切り上がる一方でRSIが低下するものです。初期設定では無効です。ShowHiddenをtrueにすると、独自の矢印を伴う点線で描画します。相互照合では設定を有効にして比較しました。ネイティブテストでは、初期設定で隠れたダイバージェンスが描かれず、通常のものは変わらないと確認しました。
ダイバージェンスは価格の反転を意味しますか
このページはそれを示していません。固定ルールの下で一つのサンプルを説明しており、図3、4、5はいずれも確定後に価格が二つ目のスイングを超えています。的中率や取引結果は検証していません。
MQL4ファイルをMT4で使えますか
.mq4ファイルには、テストしたMQL5ファイルと同じ計算部分があり、MT4形式のバッファー設定を使います。静的レビューのみで、MT4でコンパイルや実行はしていません。使用前にMT4付属のMetaEditorでコンパイルし、コンパイラーログのエラーや警告を確認してください。
出典と再現性
MT5ヘルプ:相対力指数:範囲、Wilderの期間と一般的な代替期間、通常の山と谷、ダイバージェンス、計算式。
MT5ヘルプ:移動平均:平滑移動平均の計算式。
MQL5リファレンス:OnCalculate:prev_calculated値と、価格データ変更後の全再計算。
MQL5リファレンス:copy_rates_from_pos:エクスポートに使うバー位置。位置ゼロは現在のバーで、エクスポートでは除外します。
MQL5リファレンス:テスト:ネイティブテストで使用した数学計算モード。
参照ライブラリーの文書:指数加重平均:独立照合で使用したadjust=Falseの漸化式。
MetaEditorヘルプ:プラットフォームの構造:データフォルダーと指標フォルダー。
MT5ヘルプ:アルゴリズム取引:MQL5\IndicatorsフォルダーとF7でのコンパイル。
MT5ヘルプ:テクニカル指標:Navigatorからの指標適用と独立した指標ウィンドウ。
このページとチャートで使用した数値 · エクスポートしたバー · エクスポートの由来 · 参照RSIとピボット · 参照検出結果 · ネイティブMQL5バッファー · ネイティブMQL5検出結果 · 相互照合 · ネイティブテスト実行 · ビルドログ · コンパイラーログ · 仕様書
チャートは週末などのバー間の空白期間を圧縮しています。時刻はエクスポート時の端末の取引サーバー時計です。例は再現性のため固定しており、リアルタイムの市場解説ではありません。
レバレッジ商品は短期間で損失が生じるおそれがあります。日本でFXを提供する事業者には登録が必要です。




