RSIの買われすぎ・売られすぎラインに到達すると、アラートで知らせてくれるインジケーターを作りました。
無料で、確認不要で使っていただけます。
デフォルトで搭載されているRSIにもアラートを設定することはできるのですが、一度鳴ると消えてしまいます。ずっとチャートを見ていられない方や、スマホ通知で受け取りたい方向けに、何度でも反応するよう改造しています。
RSIとは
RSI(Relative Strength Index)は、相場の買われすぎ・売られすぎを数値で表すインジケーターです。1978年にJ・ウェルズ・ワイルダーが考案し、今も世界中のトレーダーに使われています。
値は0から100の間で動き、一般的に70以上で買われすぎ、30以下で売られすぎと判断します。
計算のしくみはシンプルで、一定期間の「上昇した値幅の平均」と「下落した値幅の平均」を比べて、どちらの力が強いかを出しているだけです。数値が高いほど買い圧力が強く、低いほど売り圧力が強いということになります。
ただしRSIはトレンド相場に弱い面があります。強いトレンドが続いているときは買われすぎ・売られすぎの状態が長く続くことがあるので、他のインジケーターと組み合わせて使うのがおすすめです。
RSIアラートインジケーター

コチラがRSIのアラートインジケーターの画面です。
計算方法は一般的なRSIと変わりませんが、買われすぎ・売られすぎのゾーンに背景色を加えて、視覚的にわかりやすくしています。
標準のRSIと見た目はほぼ同じですが、アラートの動作が違います。デフォルトのRSIはアラートが一度鳴ると止まってしまいますが、このインジはラインを超えるたびに毎回通知が来ます。
設定画面


コチラがパラメータ画面とスタイル画面です。
パラメータで変更できる項目はこちらです。
- RSI期間(デフォルト14)
- 移動平均線の種類と期間
- 買われすぎ・売られすぎラインの位置(デフォルト70・30)
買われすぎ・売られすぎのラインは自由に動かせます。70・30が合わないと感じる通貨ペアや時間足では、数値を調整してみてください。
スタイル画面では各ラインの色を変更できます。
アラート画面

コチラがアラート設定画面です。このインジには4種類のアラートが用意されています。
- RSI Overbought Alert(買われすぎアラート) RSIが設定した買われすぎラインを下から上に突き抜けた瞬間
- RSI Oversold Alert(売られすぎアラート) RSIが設定した売られすぎラインを上から下に突き抜けた瞬間
- RSI Crosses Above MA(RSIが移動平均線を上抜け) RSI線が移動平均線を下から上に突き抜けた瞬間
- RSI Crosses Below MA(RSIが移動平均線を下抜け) RSI線が移動平均線を上から下に突き抜けた瞬間
自分の手法に合わせて使いたいアラートを選んでください。買われすぎ・売られすぎだけ使いたい場合は上の2つだけ設定しておけばOKです。
実際の使いどころ
このインジの一番の使い方は、張り付かなくていいトレードです。
たとえば「RSIが30を割ったら買いを検討したい」という場面で、チャートをずっと眺めている必要がなくなります。スマホに通知が来たときだけチャートを確認して、エントリーするかどうか判断すればいい。
特にスキャルピングではなくスイングトレードや中長期で持ちたい方に使いやすいと思います。
注意点としては、RSIが買われすぎ・売られすぎになってもそのまま伸び続けることがあります。強いトレンドが出ているときほどこの現象が起きやすいので、アラートが来たからといって即エントリーするのではなく、トレンドの方向や他のインジとの兼ね合いを確認してから判断するのが無難です。
RSIアラートインジケーターコード
//@version=6
indicator(title="RSI 買われすぎ売られすぎアラート", shorttitle="RSI Alert", format=format.price, precision=2)
// ================================================================
// 移動平均関数
// ================================================================
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA(RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// ================================================================
// 設定
// ================================================================
grp_rsi = "RSI設定"
grp_ma = "移動平均線設定"
grp_alert = "アラートレベル"
grp_color = "カラー設定"
rsiLength = input.int(14, minval=1, title="RSI期間", group=grp_rsi)
rsiSource = input.source(close, title="ソース", group=grp_rsi)
maType = input.string("SMA", title="MAの種類",
options=["SMA","EMA","SMMA(RMA)","WMA","VWMA"], group=grp_ma)
maLength = input.int(14, minval=1, title="MA期間", group=grp_ma)
obLevel = input.int(70, minval=50, maxval=100, title="買われすぎライン", group=grp_alert)
osLevel = input.int(30, minval=0, maxval=50, title="売られすぎライン", group=grp_alert)
rsiColor = input.color(color.new(#00ACC1, 0), title="RSIラインの色", group=grp_color)
maColor = input.color(color.new(#FFA726, 0), title="MAラインの色", group=grp_color)
obColor = input.color(color.new(#EF5350, 92), title="買われすぎゾーンの色", group=grp_color)
osColor = input.color(color.new(#66BB6A, 92), title="売られすぎゾーンの色", group=grp_color)
midColor = input.color(color.new(#9C27B0, 80), title="中間ゾーンの色", group=grp_color)
// ================================================================
// RSI計算
// ================================================================
up = ta.rma(math.max(ta.change(rsiSource), 0), rsiLength)
down = ta.rma(-math.min(ta.change(rsiSource), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLength, maType)
// ================================================================
// プロット
// ================================================================
plot(rsi, "RSI", color=rsiColor, linewidth=2)
plot(rsiMA, "RSI MA", color=maColor, linewidth=2)
obLine = hline(obLevel, "買われすぎ", color=color.new(#E91E63, 0), linestyle=hline.style_dashed, linewidth=1)
midLine = hline(50, "中間ライン", color=color.new(#9C27B0, 50), linestyle=hline.style_dotted, linewidth=1)
osLine = hline(osLevel, "売られすぎ", color=color.new(#00BCD4, 0), linestyle=hline.style_dashed, linewidth=1)
fill(obLine, hline(100), color=obColor, title="買われすぎゾーン")
fill(osLine, hline(0), color=osColor, title="売られすぎゾーン")
fill(obLine, osLine, color=midColor, title="中間ゾーン")
// ================================================================
// アラート条件
// ※ ta.crossover / ta.crossunder を使用しているため
// 「ラインを突き抜けた1回だけ」反応します。
// ゾーン内にいる間は連発しません。
// アラート設定画面では「バーの終値ごとに1回」を選択してください。
// ================================================================
rsiOverbought = ta.crossover(rsi, obLevel) // 買われすぎラインを下から上に突き抜けた瞬間
rsiOversold = ta.crossunder(rsi, osLevel) // 売られすぎラインを上から下に突き抜けた瞬間
maCrossUp = ta.crossover(rsi, rsiMA) // RSIがMAを上抜け
maCrossDown = ta.crossunder(rsi, rsiMA) // RSIがMAを下抜け
alertcondition(rsiOverbought, title="買われすぎアラート", message="RSIが買われすぎライン({{plot_0}})を上抜けました")
alertcondition(rsiOversold, title="売られすぎアラート", message="RSIが売られすぎライン({{plot_0}})を下抜けました")
alertcondition(maCrossUp, title="RSIがMAを上抜け", message="RSIが移動平均線を上抜けました")
alertcondition(maCrossDown, title="RSIがMAを下抜け", message="RSIが移動平均線を下抜けました")

Tradingviewでは「RSI Overbought Oversold Alert」という名前で無料公開しています。
コチラは英語説明なので、日本語が良い方は上のコードをお使いください。
あと、MT4やMT5など他のツールでチャートを見ている方はぜひ一度TradingViewを見てみてください。
まとめ
RSIの買われすぎ・売られすぎをアラートで通知するインジケーターを紹介しました。
標準のRSIと計算は同じですが、アラートが毎回鳴るようにしてあるので、チャートから離れている時間が長い方に特に便利です。
買われすぎ・売られすぎのラインも自由に変更できるので、自分のトレードスタイルに合わせてカスタマイズしてみてください。



コメント