RSI(Relative Strength Index, 相対力指数)
RSI は、上昇幅と下落幅のバランスから価格の過熱感、勢い、反転候補を数値化するオシレーターです。単体で売買するより、上位足の方向、水平線、時間帯と組み合わせるのが実践的です。

架空データによるイメージ図(実際の相場データではありません)。下段が RSI(14)。30以下(売られすぎ)と70以上(買われすぎ)を色で示している。
定義
RSI は J. Welles Wilder Jr. が1978年に発表したモメンタム系オシレーター。直近 本の上昇幅と下落幅を平滑化し、0 から 100 の範囲に正規化します。
価格を終値 とします。
Wilder RSI では、上昇幅 と下落幅 を Wilder スムージング で平均します。これは通常の EMA と同じ再帰形ですが、平滑化係数は を使います。
- RSI は上昇幅の平均が下落幅の平均より大きいほど高くなる
- は上昇圧力と下落圧力がほぼ均衡している状態
- 以上は買われすぎ、 以下は売られすぎとして扱う
- 強いトレンドでは 70 以上や 30 以下に張り付くため、逆張りシグナルとして機械的に使わない
Wilder 版と Cutler 版
Wilder 版は の再帰 EMA で平均上昇幅と平均下落幅を更新します。Cutler 版は同じ / を SMA で平均します。Cutler 版は開始位置への依存が小さいですが、Wilder 版とは値がわずかに異なります。チャートソフトの RSI は通常 Wilder 版を前提にします。
代表的な期間
| 期間 | 呼称 | 主な用途 |
|---|---|---|
| 7 / 9 | 短期 RSI | スキャル、東京時間の短期反転、過敏な行き過ぎ判定 |
| 14 | 標準 RSI | Wilder 標準。日足、1H、15分足で最も使われる |
| 21 | 中期 RSI | ノイズを抑えたデイトレ、ロンドン以降の流れ確認 |
| 25 / 28 | 中長期 RSI | 4H、日足のスイング、トレンド中の押し目/戻り目判定 |
| 50 | 長期 RSI | 大局のモメンタム確認。売買タイミングより環境認識向き |
USD/JPY は 14 RSI を基準に、短期売買では 9 RSI、4H 以上では 21 / 25 RSI を使うと整理しやすくなります。
シグナル
買われすぎ / 売られすぎ
- RSI 70 以上:買われすぎ。上昇の勢いが強いが、短期反落の候補にもなる
- RSI 30 以下:売られすぎ。下落の勢いが強いが、短期反発の候補にもなる
- RSI 80 / 20:強いトレンドや指標発表後の極端な行き過ぎ判定に使う
- 70 到達だけで売らない。30 到達だけで買わない。価格の節目と反転足を必ず確認する
センターライン
RSI 50 はモメンタムの分岐線です。
- 50 超え:上昇圧力が優勢
- 50 割れ:下落圧力が優勢
- 上昇トレンドでは 40〜50 が押し目帯になりやすい
- 下落トレンドでは 50〜60 が戻り売り帯になりやすい
ダイバージェンス
価格と RSI の方向が食い違う状態。勢いの鈍化を示します。
弱気ダイバージェンス
- 価格は高値更新
- RSI は高値切り下げ
- 上昇の勢いが鈍化している。高値圏の利確、売り準備に使う
強気ダイバージェンス
- 価格は安値更新
- RSI は安値切り上げ
- 下落の勢いが鈍化している。安値圏の利確、買い準備に使う
ダイバージェンスは反転確定ではありません。水平線、トレンドライン、ローソク足の反転パターンと組み合わせます。
RSI のレンジシフト
強い上昇トレンドでは RSI が 40〜80 の範囲で推移しやすく、強い下落トレンドでは 20〜60 の範囲で推移しやすくなります。
- 上昇トレンド: RSI 40〜50 への低下を押し目候補にする
- 下落トレンド: RSI 50〜60 への上昇を戻り売り候補にする
- レンジ相場: RSI 70 / 30 を逆張り候補にする
相場の地合いによって基準線を固定しないこと。トレンド中の 70 は売りシグナルではなく、買いの強さそのものとして扱います。
フェイラースイング
RSI が極端値をつけた後、再度同方向に伸びきれずに反転する形です。
強気フェイラースイング
- RSI が 30 を下回る
- RSI が 30 を上回って反発する
- RSI が再度下げるが前回安値を割らない
- 直近の RSI 高値を上抜ける
弱気フェイラースイングは反転。
価格ではなく RSI 自体の高値、安値の構造を見ます。レンジ終盤の反転確認に使います。
USD/JPY での使いどころ
- 東京仲値(JST 09:55):実需フローで一方向に伸びた後、RSI 70 以上または 30 以下から反転しやすい。仲値前の伸びを追いかけるより、仲値後に 5分足 / 15分足 RSI が 50 を割る動き、超える動きを確認する
- 東京午前のレンジ:値幅が狭い日は 15分足 RSI 70 / 30 が効きやすい。直近高値、安値の内側では逆張り、外側に抜けたら撤退する
- ロンドンオープン(JST 16:00):東京時間のレンジ上限、下限を抜けると RSI が 70 / 30 に到達しやすい。ここでは逆張りより、RSI 50 付近への押し戻しを待つ順張りが機能する
- ロンドン序盤のだまし:16:00 前後に一度ブレイクしてから反転する動きがある。RSI の極端値だけで入らず、ブレイク足の終値と次足の継続を確認する
- NYオープン(JST 22:30、米夏時間基準):米指標、米金利、株式市場の動きで USD/JPY のボラティリティが上がる。RSI 80 / 20 まで振れやすいため、70 / 30 の逆張りは浅い損切りを必須にする
- NY序盤のトレンド継続:1H RSI が 50 より上、15分足 RSI が 40〜50 で反発する形は押し目買い候補。1H RSI が 50 より下、15分足 RSI が 50〜60 で失速する形は戻り売り候補
- 日足と 4H の環境認識:日足 RSI が 50 より上なら買い優勢、50 より下なら売り優勢。4H RSI のダイバージェンスは短期売買よりもポジション縮小、利確判断に使う
USD/JPY は金利差、米指標、日本当局発言で一方向に走ることがあります。RSI は反転を当てる道具ではなく、勢いの過熱と鈍化を測る道具として使います。
落とし穴
- 強トレンドで逆張りしない:RSI 70 以上は売り、30 以下は買いと固定すると、トレンド日に連続して損切りになる。上位足が同方向なら極端値は勢いの証拠として扱う
- 時間帯を無視しない:東京仲値、ロンドンオープン、NYオープンでは値動きの性質が変わる。同じ RSI 70 でも、東京仲値後の 70 とロンドンブレイク中の 70 は意味が違う
- ダイバージェンスを早取りしない:価格が高値更新を続ける間、弱気ダイバージェンスは何度も失敗する。価格が直近安値を割る、または RSI が 50 を割るまで反転確定ではない
- 期間最適化をやりすぎない:13、14、15 のような細かい最適化はバックテストに過剰適合しやすい。9、14、21、25 のような意味のある区切りを優先する
- Wilder 版と Cutler 版を混同しない:
ewm(alpha=1/n)の Wilder RSI とrolling(n).mean()の Cutler RSI は同じ値にならない。検証と実運用で計算式を固定する - 終値確定前の RSI を確定値として扱わない:足の途中の RSI は価格変動で変わる。15分足や1H足では、確定前の RSI クロスをシグナルにすると先読みに近い挙動になる
- スプレッド拡大を無視しない:NYオープン、重要指標、早朝の薄商いでは RSI の反転シグナルが出ても約定条件が悪化する
- 水平線なしで使わない:RSI は価格水準を持たない。70 / 30 だけでは損切り位置が決まらない。直近高値、安値、日足節目、仲値前後のレンジ端を必ず合わせる
Python 実装スケッチ
import pandas as pd
def wilder_rsi(close: pd.Series, n: int = 14) -> pd.Series: delta = close.diff()
gain = delta.clip(lower=0) loss = (-delta).clip(lower=0)
avg_gain = gain.ewm(alpha=1 / n, adjust=False, min_periods=n).mean() avg_loss = loss.ewm(alpha=1 / n, adjust=False, min_periods=n).mean()
rs = avg_gain / avg_loss rsi = 100 - (100 / (1 + rs))
return rsi
def cutler_rsi(close: pd.Series, n: int = 14) -> pd.Series: delta = close.diff()
gain = delta.clip(lower=0) loss = (-delta).clip(lower=0)
avg_gain = gain.rolling(window=n, min_periods=n).mean() avg_loss = loss.rolling(window=n, min_periods=n).mean()
rs = avg_gain / avg_loss rsi = 100 - (100 / (1 + rs))
return rsiewm(alpha=1/n, adjust=False, min_periods=n) を使うと、Wilder スムージングの再帰 EMA になります。adjust=False は再帰計算、alpha=1/n は Wilder の平滑化係数、min_periods=n は初期の未成熟区間を NaN にする指定です。バックテストではこの NaN 区間を売買対象から外します。
参考
- J. Welles Wilder Jr., New Concepts in Technical Trading Systems, Trend Research, 1978
- John J. Murphy, Technical Analysis of the Financial Markets, ch. 10 (Oscillators and Contrary Opinion)
- pandas documentation —
pandas.Series.ewm - Investopedia — “Relative Strength Index (RSI)”