Strategi Persilangan Purata Pergerakan RSI Rangka Masa Berbilang Masa


Tarikh penciptaan: 2023-11-16 16:28:22 Akhirnya diubah suai: 2023-11-16 16:28:22
Salin: 1 Bilangan klik: 783
1
fokus pada
1617
Pengikut

Strategi Persilangan Purata Pergerakan RSI Rangka Masa Berbilang Masa

Gambaran keseluruhan

Strategi RSI merata silang adalah strategi trend-mengikuti pelbagai tempoh masa. Strategi ini menggunakan RSI untuk pelbagai tempoh masa, dan RSI untuk setiap tempoh masa yang dipertanggungjawabkan dengan purata bergerak, dan akhirnya bergabung menjadi dua indikator isyarat komposit, apabila kedua-dua indikator isyarat berlaku bercabang emas lebih banyak, apabila berlaku bercabang mati kosong, yang merupakan tipikal strategi dua merata silang.

Prinsip

Strategi ini mulakan dengan mengira RSI pada pelbagai jangka masa (seperti 1 minit, 5 minit, 15 minit, dan lain-lain) dan kemudian memproses RSI pada setiap jangka masa dengan purata bergerak berwajaran 15 (VMA) untuk mendapatkan purata RSI pada setiap jangka masa.

Kemudian, gabungan rata-rata RSI dari semua bingkai masa dilakukan dengan berat yang sama, menggabungkan kedua-dua isyarat garis cepat dan perlahan. EMA garis cepat adalah 100 kitaran dan EMA garis perlahan adalah 150 kitaran.

Sinyal beli dihasilkan apabila garis pantas dari bawah ke atas menembusi garis perlahan; Sinyal jual dihasilkan apabila garis pantas dari atas ke bawah menembusi garis perlahan. Dengan cara ini, isyarat silang komprehensif RSI dalam pelbagai kerangka masa dapat mengesan trend dengan berkesan, sambil menyaring bunyi pasaran jangka pendek.

Kelebihan

  1. Kompleks pelbagai kerangka masa, dapat meratakan keluk harga, menyaring penembusan palsu dengan berkesan.

  2. Indeks RSI boleh mencerminkan keadaan overbought dan oversold, dan mengelakkan mengejar kenaikan dan penurunan.

  3. Sistem dua baris lebih baik daripada sistem satu baris.

  4. Menggunakan VMA dan bukannya SMA dapat mengurangkan kesan turun naik jangka pendek ke atas garis purata.

Risiko

  1. Strategi bingkai masa berbilang, keperluan penyesuaian parameter yang tinggi, tetapan yang tidak betul boleh masuk terlalu awal atau terlambat.

  2. Sistem garis rata kurang berkesan untuk penyesuaian kurva dan kurang berkesan pada titik perubahan trend.

  3. Indeks RSI mudah terbentuk dan perlu diberi perhatian terhadap isyarat pembalikan.

Penyelesaian: Sesuaikan tetapan parameter bingkai masa; menilai trend dalam kombinasi dengan penunjuk lain, seperti MACD dan lain-lain; amaran RSI dari isyarat.

Arah pengoptimuman

  1. Pengaturan kuantiti dan parameter yang dioptimumkan dalam bingkai masa untuk menangkap trend.

  2. Pertimbangkan untuk memasukkan mekanisme kawalan kerugian untuk mengawal risiko.

  3. Meningkatkan kualiti pengambilan keputusan, dalam kombinasi dengan penunjuk lain untuk menilai trend dan penyingkiran.

  4. Uji parameter kitaran pegangan yang berbeza untuk mencari kesan pegangan terbaik.

ringkaskan

Strategi persilangan rantaian rantaian RSI merangkumi penghakiman komprehensif indikator RSI dalam pelbagai jangka masa, menggunakan sistem rantaian untuk meluruskan kurva harga dan menghasilkan isyarat perdagangan. Strategi ini adalah strategi pemantauan trend dalam pelbagai jangka masa. Kelebihan strategi ini adalah bahawa ia dapat menjejaki trend dengan berkesan sambil menapis kebisingan, tetapi perlu memperhatikan pengoptimuman parameter dan kawalan risiko.

Kod sumber strategi
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="RSI multitimeframe SMA crossover", shorttitle="RSI multitimeframe strategy", default_qty_type= strategy.percent_of_equity, margin_long=50, default_qty_value=150)

res1 = input(title="Res 01", type=input.resolution, defval="1")
res2 = input(title="Res 0", type=input.resolution, defval="5")
res3 = input(title="Res 1", type=input.resolution, defval="15")
res4 = input(title="Res 2", type=input.resolution, defval="15")
res5 = input(title="Res 3", type=input.resolution, defval="15")
res6 = input(title="Res 4", type=input.resolution, defval="30")
res7 = input(title="Res 5", type=input.resolution, defval="45")
res8 = input(title="Res 6", type=input.resolution, defval="60")



lengthRSI = input(15, minval=1)
lengthMA = input(15, minval=1)
lengthFMA = input(100, minval=1)
lengthFMA2 = input(150, minval=1)
Long_yes = input(defval=1, title="Long trades 0 or 1", minval=0, maxval=1)
Short_yes = input(defval=0, title="Short trades 0 or 1", minval=0, maxval=1)
src = close

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"



// stop loss 
longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)

shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


rsi1 = rsi(src, lengthRSI)
MA1 = vwma(rsi1, lengthMA)






outD1 = security(syminfo.tickerid, res1, MA1)
outD2 = security(syminfo.tickerid, res2, MA1)
outD3 = security(syminfo.tickerid, res3, MA1)
outD4 = security(syminfo.tickerid, res4, MA1)
outD5 = security(syminfo.tickerid, res5, MA1)
outD6 = security(syminfo.tickerid, res6, MA1)
outD7 = security(syminfo.tickerid, res7, MA1)
outD8 = security(syminfo.tickerid, res8, MA1)




//plot_d0 = outD0
//plot_d1 = outD1
//plot_d2 = outD2
//plot_d3 = outD3
//plot_d4 = outD4
//plot_d5 = outD5
//plot_d6 = outD6

out_multi = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA)
out_multi2 = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA2)
//out_multi1 = outD2+outD3+outD4
//out_multi2 = outD4+outD5+outD6

//col0 = outD0 < 20 ? color.lime : outD0 > 80 ? color.red : color.blue
//col1 = outD1 < 20 ? color.lime : outD1 > 80 ? color.red : color.blue
//col2 = outD2 < 20 ? color.lime : outD2 > 80 ? color.red : color.blue
//col3 = outD3 < 20 ? color.lime : outD3 > 80 ? color.red : color.blue
//col4 = outD4 < 20 ? color.lime : outD4 > 80 ? color.red : color.blue
//col5 = outD5 < 20 ? color.lime : outD5 > 80 ? color.red : color.blue
//col6 = outD6 < 20 ? color.lime : outD6 > 80 ? color.red : color.blue


// plot(plot_d0,linewidth=2, color=col0)
// plot(plot_d1, linewidth=2, color=col1)
// plot(plot_d2,linewidth=2, color=col2)
// plot(plot_d3,linewidth=2, color=col3)
// plot(plot_d4,linewidth=2, color=col4)
// plot(plot_d5,linewidth=2, color=col5)
// plot(plot_d6,linewidth=2, color=col6)

long=(out_multi/8)
short=(out_multi2/8)

plot(long, linewidth=1, color=color.green)
plot(short, linewidth=1, color=color.red)

long1=crossover(long,short)
short1=crossunder(long,short)

h0 = hline(65, "Upper Band", color=color.red, linestyle=hline.style_solid, linewidth=2 )
h1 = hline(35, "Lower Band", color=color.green, linestyle=hline.style_solid, linewidth=2)


strategy.entry("buy", strategy.long, when=long1 and window() and Long_yes > 0) 
if strategy.position_size > 0
    strategy.exit(id="XL STP", stop=longStopPrice)
strategy.close("buy",when=short1 )

strategy.entry("sell", strategy.short, when=short1 and window() and Short_yes > 0) 
if strategy.position_size < 0
    strategy.exit(id="XS STP", stop=shortStopPrice)
strategy.close("buy",when=long1 )