اندیکاتور RSI (شاخص قدرت نسبی)

RSI سرعت و قدرت حرکت‌های اخیر قیمت را بین ۰ تا ۱۰۰ نشان می‌دهد و از پرکاربردترین اسیلاتورهای تحلیل تکنیکال است.

چیست

شاخص قدرت نسبی یا RSI را جی. ولز وایلدر در ۱۹۷۸ معرفی کرد. این اندیکاتور مقایسه می‌کند کندل‌های صعودی اخیر نسبت به کندل‌های نزولی چقدر قوی‌تر بوده‌اند و نتیجه را روی مقیاس ۰ تا ۱۰۰ نشان می‌دهد. RSI در پنجره‌ای جدا زیر چارت رسم می‌شود.

چطور محاسبه می‌شود

  1. میانگین هموارشده‌ی سودهای کندل‌ها و میانگین هموارشده‌ی ضررها در ۱۴ کندل اخیر (روش وایلدر) حساب می‌شود.
  2. نسبت این دو میانگین، قدرت نسبی (RS) است.
  3. RSI = ۱۰۰ − ۱۰۰ ÷ (۱ + RS)

تریدرها چطور آن را می‌خوانند

  • بالای ۷۰ را معمولاً اشباع خرید و زیر ۳۰ را اشباع فروش می‌دانند؛ ولی در روندهای قوی RSI می‌تواند مدت‌ها در این ناحیه‌ها بماند.
  • عبور از ۵۰ نشان می‌دهد کدام طرف، خریداران یا فروشندگان، دست بالا را دارد.
  • واگرایی: وقتی قیمت سقف بالاتر می‌زند ولی RSI سقف پایین‌تر، شتاب روند کم شده است.
  • در روند صعودی RSI معمولاً بین ۴۰ تا ۸۰ و در روند نزولی بین ۲۰ تا ۶۰ نوسان می‌کند.

تنظیمات

طول پیش‌فرض ۱۴ است. طول کوتاه‌تر (مثلاً ۷) حساس‌تر است و سیگنال بیشتری با خطای بیشتر می‌دهد؛ طول بلندتر (۲۱) آرام‌تر است. بعضی تریدرها برای بازارهای پرنوسان سطح‌های ۸۰ و ۲۰ را به جای ۷۰ و ۳۰ استفاده می‌کنند.

کجا گول می‌زند

  • فروش فقط به خاطر RSI بالای ۷۰ در یک روند صعودی قوی، یکی از رایج‌ترین ضررهای تازه‌کارهاست.
  • واگرایی زمان برگشت را نمی‌گوید؛ برای ورود منتظر تأیید قیمت بمان.

کد Pine Script آن در Vlevel

این همان اسکریپتی است که چارت اجرا می‌کند. در پنجره‌ی اندیکاتورهای چارت می‌توانی آن را باز کنی، تغییر دهی و نسخه‌ی خودت را ذخیره کنی.

Relative Strength Index · Pine Script v6
//@version=6
indicator("Relative Strength Index", shorttitle = "RSI", format = format.price, precision = 2)
length = input.int(14, "RSI Length", minval = 1)
src    = input.source(close, "Source")
maKind = input.string("None", "MA Type", options = ["None", "SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Smoothing", display = display.none)
maLen  = input.int(14, "MA Length", minval = 1, group = "Smoothing", display = display.none)
change = ta.change(src)
up     = ta.rma(math.max(change, 0), length)
down   = ta.rma(-math.min(change, 0), length)
rsi    = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
ma(float src, int len, string kind) =>
    switch kind
        "SMA" => ta.sma(src, len)
        "EMA" => ta.ema(src, len)
        "SMMA (RMA)" => ta.rma(src, len)
        "WMA" => ta.wma(src, len)
        "VWMA" => ta.vwma(src, len)
        => ta.sma(src, len)
plot(rsi, "RSI", color = #c084fc)
plot(maKind != "None" ? ma(rsi, maLen, maKind) : na, "RSI-based MA", color = #f5c542)
hline(70, "Upper Band", color = color.new(color.white, 75), linestyle = hline.style_dashed)
hline(50, "Middle Band", color = color.new(color.white, 75), linestyle = hline.style_dotted)
hline(30, "Lower Band", color = color.new(color.white, 75), linestyle = hline.style_dashed)

اندیکاتورها قیمت‌های گذشته را توصیف می‌کنند و هیچ‌کدام آینده را پیش‌بینی نمی‌کنند. برای آموزش است، نه توصیه‌ی سرمایه‌گذاری.