RSI逆張りバックテスト結果|USDJPY 5分足で期間比較

※当サイトはアフィリエイト広告(Amazonアソシエイツ等)を利用しています。

こんにちは。trade-engineer.com 運営者のHです。

RSIの逆張りシグナルは「売られすぎ・買われすぎ」を示す教科書的な使い方として広く知られていますが、実際にバックテストで検証した結果を公開しているケースはあまり多くありません。今回はMQL4を使ってUSDJPY 5分足の確定足ベースSTFで、RSIの期間・閾値・複合条件を変えながら勝率がどう変わるかを数値で確認します。

記事のポイント
  • RSI(14)の70/30逆張りは5分後判定で勝率53.02%、判定時間を伸ばすほど勝率が上昇する
  • RSI期間を短くすると(7)エントリー回数は増えるが勝率が低下し、長くすると(21)逆の傾向になる
  • 閾値を80/20に引き上げると勝率は上がるがエントリー機会が激減し、実用性とのトレードオフが生じる
  • ロウソク足の方向一致フィルターを加えると、エントリー回数を保ちながら勝率を改善できる
目次

RSI逆張りの検証条件と基本結果

まず検証の全体像を整理します。この記事で使うデータはすべて同じ環境で取ったものなので、条件間の比較が成立します。

検証環境の設定(USDJPY 5分足・確定足STF)

今回の検証環境は以下のとおりです。シングルタイムフレーム(STF)で確定足ベースのエントリー判定を使い、他のインジケーターや時間帯フィルターは一切加えていません。RSI単体の素の勝率を確認するためです。

項目設定値
通貨ペアUSDJPY
時間足5分足
判定方式確定足ベース STF(シングルタイムフレーム)
エントリー方向逆張り(RSIが70超→売り、30割れ→買い)
判定時間5分後・10分後・15分後(1本・2本・3本後の終値)

「判定時間」は、エントリーから何本後の終値でトレードを評価するかを示します。5分後=1本後の終値、15分後=3本後の終値です。

memo

確定足ベースとは「現在進行中のローソク足が確定(閉じた)タイミングでインジケーターの値を参照する」方式です。リペイントを防ぐために重要な設定で、MQL4では iRSI(Symbol(), PERIOD_M5, 14, PRICE_CLOSE, 1) のように shift=1 を指定します。

RSI(14)レベル70/30の基本勝率

最初に最も標準的な設定、RSI期間14・閾値70/30での結果を確認します。これが今回の比較の基準になります。

RSI(14) 70/30 5分後判定のバックテスト結果

RSI(14)のレベル70に到達した足の確定後に売りエントリー、レベル30に到達した足の確定後に買いエントリーするルールで検証しました。5分後判定の勝率は53.02%です。5分という短い時間では誤差の範囲に近く、RSI単体でエッジを出すには不十分な印象です。ただし損益分岐点(50%)は超えており、方向性としては機能していることは確認できます。

判定時間別(1本後・2本後・3本後)の比較

判定時間を変えると勝率はどう変わるでしょうか。5分後・10分後・15分後の3パターンで比較します。

RSI(14) 70/30 10分後判定のバックテスト結果
RSI(14) 70/30 15分後判定のバックテスト結果

5分後から判定時間を伸ばすほど勝率が上昇する傾向が確認できました。15分後(3本後)では5分後よりも2〜3ポイント高い結果になっています。これはRSIの示す「行き過ぎ」が解消されるまでに一定の時間がかかるためと考えられます。以降の比較は15分後判定を基準に進めます。

point

判定時間を伸ばすほど勝率が上がる傾向は、RSIに限らずモメンタム系インジケーター全般に見られます。ただし同時に「他のシグナルと重なる」リスクも増えるため、上位時間足の方向を確認するMTF分析と組み合わせる価値があります。

RSI期間を変えた場合の影響(7・14・21)

次に、RSIの計算期間を変えて勝率とエントリー回数がどう変わるかを確認します。期間7・14・21の3パターン、いずれも閾値70/30・15分後判定での比較です。

RSI期間エントリー回数(相対)勝率評価
7大幅増(14の約3倍)低下回数は稼げるが精度が落ちる
14基準約55〜56%バランスが最も取れている
21半分以下わずかに上昇サンプル不足で統計精度に不安

期間7では閾値70/30に到達する頻度が急増するためエントリー回数が大幅に増えますが、シグナルの「質」が低下して勝率が下がります。期間21では逆に、滅多に閾値に達しないため勝率はわずかに上がるものの、サンプル数が少なすぎて統計的な信頼度が下がります。期間14がエントリー回数と勝率のバランスとして最も現実的です。

閾値80/20と70/30の結果比較

閾値を標準の70/30から80/20に引き上げると「より強い行き過ぎ」だけを狙うことになります。直感的には勝率が上がりそうですが、実際の結果を確認します。

閾値エントリー回数(相対)勝率評価
70/30基準基準(約55〜56%)回数・勝率ともに実用的
80/20激減上昇月間エントリー機会が極めて少ない

80/20は確かに勝率が上がりますが、エントリー回数が大幅に減少します。USDJPY 5分足でRSIが80を超える瞬間は頻繁には起きないため、戦略として機能させるには別の条件と組み合わせる必要があります。

caution

エントリー回数が少ないほど「たまたま良かった」可能性が高くなります。閾値80/20で月間5〜10エントリーしか取れない場合、数ヶ月分のデータを集めないと統計的な有意性を主張できません。短期間の良結果を根拠に実運用するのは危険です。

フィルター追加の効果と実運用への展開

RSI単体での検証結果を踏まえ、フィルターを加えることで勝率を改善できるかを確認します。MQL5での実装コードと連敗リスクへの対処まで整理します。

ロウソク足の方向一致フィルターの結果

RSI(14)の70/30条件に「エントリー判定足のローソク足の方向」を追加したフィルターを検証します。売りエントリーの場合は「RSI(14)≥70 かつ 判定足が陽線」、買いエントリーは「RSI(14)≤30 かつ 判定足が陰線」という条件です。

この複合条件は「行き過ぎた方向へのローソク足が確定した瞬間」を狙います。RSI単体より絞り込まれますが、エントリー回数は実用的な水準を保ちながら勝率が改善されました。閾値80/20と同程度かそれ以上の勝率改善が、より多いエントリー回数で実現できています。

point

陽線確定後に売りというのは「上方向へのモメンタムが一時的に強まったが、RSIが過熱を示している状態」を捉えています。陽線だからといってそのまま上がり続けるとは限らず、むしろ短期的な反転が起きやすいタイミングと判断できます。

連敗パターンの分析と資金管理

勝率55〜57%という数字は「ほぼ互角」に近く、連敗が起きるのは避けられません。実際にバックテストを確認すると、RSIシグナルが密集するトレンド相場で連続して逆方向に動く区間が複数見られます。

連敗回数確率の目安(勝率55%の場合)対策
3連敗約9%(10回に1回程度)1回あたりの損失を資金の1〜2%以内に抑える
5連敗約2%(50回に1回程度)ドローダウン上限を設定し一時停止ルールを持つ
7連敗約0.5%EAのフォワードテストで先に確認する

特にトレンドが強い時間帯(ロンドン・NYセッション開始直後)はRSI逆張りが機能しにくくなります。時間帯フィルターを加えることが改善の次のステップです。

MTF RSIとの組み合わせ可能性

5分足RSIだけでなく、上位時間足(15分・1時間足)のRSIも同時に確認するマルチタイムフレーム(MTF)分析は逆張りの精度を高める有効な手段です。

例えば「1時間足のRSIがニュートラル圏(40〜60)にある状態で5分足RSIが70を超えた場合にのみ売りエントリー」とする条件は、上位足トレンドと逆らう局面を除外できます。MTF RSIの実装については マルチタイムフレーム分析とMTF_RSIインジケーターの実装 で詳しく解説しています。

MQL5でのRSI逆張りロジック実装

今回検証した「RSI(14)≥70 かつ 確定足が陽線 → 売り」の条件をMQL5のEAに落とし込む場合のコア部分を示します。

// RSI + ローソク足フィルター(売り・買いエントリー条件)
// 確定足ベース: shift=1

double rsi_val = iRSI(_Symbol, PERIOD_M5, 14, PRICE_CLOSE, 1);

// 1本前(確定足)のローソク足の方向判定
double close1 = iClose(_Symbol, PERIOD_M5, 1);
double open1  = iOpen(_Symbol, PERIOD_M5, 1);
bool is_bullish = (close1 > open1); // 陽線

// 売りエントリー条件: RSI過熱 + 陽線確定
bool sell_signal = (rsi_val >= 70.0) && is_bullish;

// 買いエントリー条件: RSI売られすぎ + 陰線確定
bool buy_signal  = (rsi_val <= 30.0) && !is_bullish;

バックテストの実装と勝率確認の手順については MQLでバックテストを取って勝率を確認する の記事を参照してください。

memo

上記コードはエントリー条件の判定部分のみです。実際のEAにするにはOnTick関数内でのポジション管理、ストップロス・テイクプロフィットの設定、1ポジションのみ保有するガード処理などを追加する必要があります。

ローソク足判定のMQL4実装と注意点

MQL4でローソク足が陽線か陰線かを判定する関数は標準では用意されていないため、自作する必要があります。iBarType関数の実装については MQL4でiBarType関数を自作する陽線陰線判定の実装手順 に詳細をまとめています。

今回の複合条件でよくあるミスは「現在進行中の足(shift=0)を参照してしまうリペイント問題」です。shift=1(確定済みの1本前)を常に使うことが、バックテスト結果とフォワードの乖離を防ぐ最重要ポイントです。

RSI逆張りをFXで使う際のまとめと次のステップ

今回の検証結果をまとめます。RSI(14)の70/30逆張りはUSDJPY 5分足において、単体では「損益分岐点はわずかに超えるが強力なエッジとは言えない」という結果でした。ただしロウソク足フィルターとの組み合わせによって、実用的なエントリー回数を保ちながら勝率を改善できることも確認できています。

条件勝率の傾向エントリー回数実用性
RSI(14) 70/30 5分後53.02%十分△ 単独では弱い
RSI(14) 70/30 15分後約55〜56%十分○ ベースとして使える
RSI(7) 70/30低下過多△ ノイズが多い
RSI(21) 70/30わずかに上昇不足△ サンプル不足
RSI(14) 80/20上昇激減△ 単独では機会が少ない
RSI(14) 70/30+ロウソク足上昇適切◎ 最も実用的

次の改善ステップとしては、①時間帯フィルター(トレンドが強いセッション重複時を除外)、②MTF RSIとの組み合わせ、③ストップロス設定による期待値計算、の3方向が考えられます。EAとしての実装と長期フォワードテストに移行することで、より信頼性の高い検証データが得られます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次