Trend RSI Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2023-10-26 15:44:15
Tag:

img

Ringkasan

Strategi ini merancang sistem perdagangan trend sederhana berdasarkan penunjuk RSI, yang boleh menentukan arah trend pasaran melalui RSI dan melaksanakan kedudukan panjang dan pendek automatik dalam julat tarikh tertentu.

Logika Strategi

Strategi ini menggunakan penunjuk RSI untuk menentukan trend pasaran, dan Bollinger Bands untuk mengesahkan zon overbought dan oversold.

Pertama, nilai RSI dikira. Band atas dan bawah Bollinger Band dikira berdasarkan purata bergerak dan penyimpangan standard RSI. RSI berfluktuasi antara 0-1, dan Bollinger Band mengenal pasti zon overbought dan oversold melalui penyimpangan standard. Apabila RSI lebih tinggi daripada band atas, ia adalah zon overbought, dan apabila lebih rendah daripada band bawah, ia adalah zon oversold.

Apabila RSI menembusi dari band bawah ke band atas, isyarat beli dihasilkan. Apabila RSI menembusi dari band atas ke band bawah, isyarat jual dihasilkan, untuk mengikuti trend. Selepas memasuki pasaran, tiada stop loss atau mengambil keuntungan ditetapkan sehingga kedudukan ditutup pada akhir julat tarikh yang ditentukan.

Strategi ini menggunakan RSI dengan mudah dan berkesan untuk menentukan arah trend, dan Bollinger Bands untuk mengenal pasti peluang perdagangan tertentu. Dengan menentukan julat tarikh, risiko yang tidak perlu dapat dielakkan.

Analisis Kelebihan

  • Menggunakan RSI untuk menentukan arah trend adalah mudah dan berkesan
  • Menggabungkan Bollinger Bands untuk mengesahkan isyarat dagangan mengelakkan pecah palsu
  • Menentukan julat tarikh dagangan membantu mengelakkan risiko pasaran
  • Tiada stop loss atau mengambil keuntungan, memaksimumkan trend berikut
  • Penyesuaian parameter yang fleksibel, menyesuaikan diri dengan pelbagai persekitaran pasaran

Risiko dan Pengoptimuman

  • Pasaran mungkin mempunyai turun naik yang ganas, membawa kepada kerugian
  • Tiada Stop Loss atau mengambil keuntungan gagal mengawal risiko dengan berkesan
  • Tetapan parameter yang tidak betul boleh menyebabkan overtrading atau peluang yang hilang

Arahan pengoptimuman:

  • Tambah stop loss dan mengambil keuntungan untuk mengawal risiko
  • Mengoptimumkan tetapan parameter untuk meningkatkan kadar kemenangan
  • Tambah penunjuk lain untuk menapis isyarat dan mengelakkan pecah palsu
  • Sesuaikan saiz kedudukan secara dinamik

Ringkasan

Ringkasnya, ini adalah strategi trend berikut yang sangat mudah dan langsung. Menggunakan RSI untuk menentukan trend, Bollinger Bands untuk menapis isyarat, dan menentukan julat tarikh dagangan, dapat dengan berkesan mengikuti trend dan mengawal risiko. Tetapi strategi boleh dioptimumkan lebih lanjut. Walaupun mengekalkannya mudah dan berkesan, kaedah seperti stop loss, pengoptimuman parameter dan penapisan isyarat dapat ditambah untuk menjadikannya lebih sesuai untuk perdagangan langsung.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Gidra
//2018

//@version=2
strategy(title = "Gidra's RSI or MFI Strategy v0.1", shorttitle = "Gidra's RSI or MFI v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, title="source")
lengthRSI = input(14, title="RSI or MFI length")
// RSI %B
useRSI = input(true, title="use RSI or MFI")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//MFI
upper = sum(volume * (change(src) <= 0 ? 0 : src), lengthRSI)
lower = sum(volume * (change(src) >= 0 ? 0 : src), lengthRSI)
mf = rsi(upper, lower)

//RSI
rsi = useRSI?rsi(src, lengthRSI): mf

// %B
length = input(50, minval=1, title="BB length")
mult = input(1.618, minval=0.001, maxval=50)
basis = sma(rsi, length)
dev = mult * stdev(rsi, length)
upperr = basis + dev
lowerr = basis - dev
bbr = (rsi - lowerr)/(upperr - lowerr)

plot(bbr, color=black, transp=0, linewidth=2)
// band1 = hline(1, color=white, linestyle=dashed)
// band0 = hline(0, color=white, linestyle=dashed)
// fill(band1, band0, color=teal)
hline(0.5, color=white)

//Signals
up = bbr >= 0 and bbr[1] < 0
dn = bbr <= 1 and bbr[1] > 1
//exit = ((bbr[1] < 0.5 and bbr >= 0.5) or (bbr[1] > 0.5 and bbr <= 0.5))

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
    strategy.close_all()

Lebih lanjut