Strategi Dagangan Osilasi RSI Dinamis

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

img

Ringkasan

Strategi ini menggabungkan tahap sokongan / rintangan dinamik dan penunjuk indeks kekuatan relatif (RSI). Ia menetapkan ambang overbought / oversold untuk RSI dan menghasilkan isyarat beli / jual apabila harga memecahkan tahap sokongan / rintangan dinamik sementara RSI tidak berada di kawasan overbought / oversold.

Prinsip-prinsip

1. Sokongan / rintangan dinamik

Gunakan fungsi keselamatan untuk mendapatkan harga penutupan sebagai tahap sokongan / rintangan dinamik. Isyarat perdagangan dihasilkan apabila harga memecahkan tahap dinamik ini.

2. Penunjuk RSI

Mengira keuntungan purata dan kerugian purata dalam tempoh tertentu untuk menjana nilai RSI dan menentukan sama ada RSI mencapai kawasan overbought / oversold.

3. Isyarat Perdagangan

Apabila harga memecahkan tahap dinamik, jika RSI tidak berada di kawasan overbought / oversold, isyarat beli / jual dihasilkan. Jika tidak, isyarat pecah diabaikan.

4. Isyarat Keluar

Tutup kedudukan apabila harga kembali ke tahap dinamik, atau apabila RSI kembali ke julat normal.

Analisis Kelebihan

  1. Gunakan sokongan / rintangan dinamik untuk menentukan arah trend untuk kadar kemenangan yang lebih tinggi.

  2. RSI menyaring pelarian palsu dan mengelakkan entri palsu.

  3. Menggabungkan trend dan penunjuk menjadikan strategi dapat disesuaikan dengan keadaan pasaran yang berbeza.

  4. Peraturan yang mudah dan jelas memudahkan pelaksanaannya.

Risiko dan Penyelesaian

  1. Pelbagai ujian tahap dinamik boleh menghasilkan isyarat palsu.

  2. Solo RSI boleh menyebabkan penilaian yang salah Tambah penunjuk lain untuk penapisan gabungan.

  3. Perdagangan yang kerap di pasaran yang terikat julat membawa kepada kos yang lebih tinggi.

  4. Tetapan parameter yang tidak betul membawa kepada isyarat yang hilang atau salah.

Arahan pengoptimuman

  1. Gunakan pembelajaran mesin untuk mengoptimumkan parameter RSI.

  2. Tambah strategi stop loss / mengambil keuntungan untuk mengunci keuntungan dan mengurangkan kerugian.

  3. Masukkan lebih banyak penunjuk untuk penapisan gabungan untuk meningkatkan kestabilan.

  4. Tambah penunjuk turun naik kepada saiz kedudukan yang lebih rendah apabila turun naik rendah.

  5. Mengoptimumkan algoritma saiz kedudukan untuk menyesuaikan kedudukan secara dinamik untuk persekitaran pasaran yang berbeza.

Ringkasan

Strategi ini menggabungkan penilaian trend dan penapisan penunjuk untuk mengenal pasti pembalikan trend di sekitar tahap utama dengan berkesan sambil mengawal risiko. pengoptimuman lanjut pada penyesuaian parameter, berhenti kerugian / mengambil keuntungan, lebih banyak penunjuk dan lain-lain dapat meningkatkan kestabilan dan daya adaptasi untuk menjana keuntungan yang stabil dalam pelbagai pasaran.


/*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 lanjut