Strategi Perdagangan Osilasi RSI Dinamis

Penulis:ChaoZhang, Tanggal: 2023-11-02 16:04:07
Tag:

img

Gambaran umum

Strategi ini menggabungkan tingkat dukungan/resistensi dinamis dan indikator indeks kekuatan relatif (RSI). Ini menetapkan ambang overbought/oversold untuk RSI dan menghasilkan sinyal beli/jual ketika harga melanggar level support/resistance dinamis sementara RSI tidak berada di area overbought/oversold.

Prinsip-prinsip

1. Dukungan/Resistensi Dinamis

Gunakan fungsi keamanan untuk mendapatkan harga penutupan sebagai level support/resistance dinamis.

2. Indikator RSI

Menghitung keuntungan rata-rata dan kerugian rata-rata selama periode tertentu untuk menghasilkan nilai RSI dan menentukan apakah RSI mencapai area overbought/oversold.

3. Sinyal Trading

Ketika harga menembus level dinamis, jika RSI tidak berada di area overbought/oversold, sinyal beli/jual dihasilkan.

4. Sinyal Keluar

Tutup posisi ketika harga kembali ke level dinamis, atau ketika RSI kembali ke kisaran normal.

Analisis Keuntungan

  1. Gunakan dukungan / resistensi dinamis untuk menentukan arah tren untuk tingkat kemenangan yang lebih tinggi.

  2. RSI menyaring keluar kebocoran palsu dan menghindari entri palsu.

  3. Menggabungkan tren dan indikator membuat strategi dapat disesuaikan dengan kondisi pasar yang berbeda.

  4. Aturan yang sederhana dan jelas membuatnya mudah diterapkan.

Risiko dan Solusi

  1. Beberapa tes tingkat dinamis dapat menghasilkan sinyal palsu.

  2. Solo RSI dapat menyebabkan penilaian yang salah. Tambahkan indikator lain untuk combo filter.

  3. Perdagangan yang sering di pasar yang terikat rentang mengarah pada biaya yang lebih tinggi.

  4. Pengaturan parameter yang tidak benar menyebabkan sinyal hilang atau salah.

Arahan Optimasi

  1. Gunakan pembelajaran mesin untuk mengoptimalkan parameter RSI secara otomatis.

  2. Tambahkan strategi stop loss / profit taking untuk mengunci keuntungan dan mengurangi kerugian.

  3. Masukkan lebih banyak indikator untuk penyaringan kombinasi untuk meningkatkan stabilitas.

  4. Tambahkan indikator volatilitas ke ukuran posisi yang lebih rendah ketika volatilitas rendah.

  5. Mengoptimalkan algoritma ukuran posisi untuk menyesuaikan posisi secara dinamis untuk lingkungan pasar yang berbeda.

Ringkasan

Strategi ini menggabungkan penilaian tren dan penyaringan indikator untuk secara efektif mengidentifikasi pembalikan tren di sekitar tingkat kunci sambil mengendalikan risiko. Optimasi lebih lanjut pada penyesuaian parameter, stop loss / profit taking, lebih banyak indikator dll dapat meningkatkan stabilitas dan kemampuan beradaptasi untuk menghasilkan keuntungan yang stabil di berbagai pasar.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels+RSI Strategy v1.0", shorttitle = "Levels+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//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 = "Capital, %")
tf = input('W', title = "timeframe 1")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit")
fromyear = input(1900, defval = 1900, 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")

//Level
level = request.security(syminfo.tickerid, tf, src[1])
plot(level, linewidth = 3, color = silver)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))

//Level Signals
ls = close > level and ap == false ? true : low > level ? true : false
up1 = strategy.position_size == 0 and ls and (close < open or cf == false)
exit1 = close < level and ap == false ? true : high < level ? true : false 

//RSI Signal

up2 = rsi < rsilimit and (close < open or cf == false)
exit2 = rsi > rsilimit and ls == false

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

if up1 or up2 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
    
if  (exit1 and rsi > rsilimit) or exit2
    strategy.close_all()

Lebih banyak