Strategi ini mendesain sistem perdagangan sederhana berdasarkan indikator RSI, yang dapat menentukan arah tren pasar melalui RSI dan menerapkan posisi panjang dan pendek otomatis dalam kisaran tanggal tertentu.
Strategi ini menggunakan indikator RSI untuk menentukan tren pasar, dan Bollinger Bands untuk mengkonfirmasi zona overbought dan oversold.
Pertama, nilai RSI dihitung. Band atas dan bawah Bollinger Band dihitung berdasarkan rata-rata bergerak dan standar deviasi RSI. RSI berfluktuasi antara 0-1, dan Bollinger Band mengidentifikasi zona overbought dan oversold melalui standar deviasi. Ketika RSI lebih tinggi dari band atas, itu adalah zona overbought, dan ketika lebih rendah dari band bawah, itu adalah zona oversold.
Ketika RSI menembus dari band bawah ke band atas, sinyal beli dihasilkan. Ketika RSI menembus dari band atas ke band bawah, sinyal jual dihasilkan, untuk mengikuti tren. Setelah memasuki pasar, tidak ada stop loss atau take profit yang ditetapkan sampai posisi ditutup di akhir kisaran tanggal yang ditentukan.
Strategi ini menggunakan RSI secara sederhana dan efektif untuk menentukan arah tren, dan Bollinger Bands untuk mengidentifikasi peluang perdagangan tertentu.
Arahan Optimasi:
Secara singkat, ini adalah strategi trend following yang sangat sederhana dan langsung. Menggunakan RSI untuk menentukan tren, Bollinger Bands untuk menyaring sinyal, dan mendefinisikan rentang tanggal perdagangan, dapat secara efektif mengikuti tren dan mengendalikan risiko. Tetapi strategi dapat lebih dioptimalkan. Sementara tetap sederhana dan efektif, metode seperti stop loss, optimasi parameter dan penyaring sinyal dapat ditambahkan untuk membuatnya lebih cocok 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()