RSI Strategi Dagangan Saldo Pendek Panjang

Penulis:ChaoZhang, Tarikh: 2023-10-30 15:49:35
Tag:

img

Ringkasan

Strategi ini menggunakan gabungan penunjuk RSI dalam jangka masa yang berbeza untuk menentukan sama ada pasaran semasa terlalu banyak dibeli atau terlalu banyak dijual, dan menggabungkan hubungan antara harga dan purata bergerak untuk menjana isyarat beli dan jual.

Logika Strategi

  1. Hitung nilai RSI jangka masa 5 minit, 15 minit, dan 1 jam. Apabila RSI 5 minit, 15 minit dan 1 jam berada di bawah 25 pada masa yang sama, ia dinilai sebagai keadaan oversold dan menghasilkan isyarat beli. Apabila RSI 5 minit, 15 minit dan 1 jam berada di atas 75 pada masa yang sama, ia dinilai sebagai keadaan overbought dan menghasilkan isyarat jual.

  2. Jika harga di bawah purata bergerak, isyarat beli dihasilkan. Jika harga di atas purata bergerak, isyarat jual dihasilkan.

  3. Berdasarkan kedudukan semasa, saiz perdagangan awal dan peraturan piramid ditetapkan: 2 kontrak untuk entri pertama, dan kemudian menambah 1 kontrak setiap kali sehingga kedudukan mencapai 2 kontrak.

  4. Stop loss diaktifkan apabila kerugian mencapai 3%. ambil keuntungan apabila keuntungan mencapai 1%.

Kelebihan

  1. Menggunakan penunjuk RSI merentasi pelbagai jangka masa untuk menentukan keadaan overbought dan oversold meningkatkan kebolehpercayaan isyarat.

  2. Menggabungkan purata bergerak menghasilkan isyarat perdagangan tambahan dan memperluaskan peluang perdagangan.

  3. Menetapkan kawalan saiz kedudukan dan nisbah keuntungan / kerugian untuk berhenti kehilangan dan mengambil keuntungan menguruskan risiko.

  4. Meningkatkan dengan kuantiti tetap meningkatkan potensi keuntungan.

Risiko

  1. Risiko perbezaan RSI. Harga boleh terus trend untuk tempoh selepas RSI mencapai ambang overbought atau oversold sebelum membalik.

  2. Isyarat perdagangan purata bergerak mungkin menyesatkan. purata bergerak gagal untuk mengesan perubahan harga tepat pada masanya semasa turun naik harga yang besar.

  3. Ukuran kedudukan yang salah dan tetapan nisbah keuntungan / kerugian membawa kepada kawalan risiko yang tidak betul.

  4. Keadaan piramida perlu ditetapkan dengan munasabah untuk mengelakkan kehilangan yang membesar.

Arahan pengoptimuman

  1. Sesuaikan parameter RSI dan uji kombinasi tempoh yang berbeza untuk mencari isyarat overbought / oversold yang lebih boleh dipercayai.

  2. Uji purata bergerak yang berbeza sebagai isyarat perdagangan tambahan, atau penunjuk teknikal lain.

  3. Mengoptimumkan saiz kedudukan dan peraturan stop loss/take profit untuk membina mekanisme kawalan risiko yang lebih saintifik.

  4. Mengoptimumkan keadaan piramid untuk mengelakkan kehilangan pembesar. Pertimbangkan skala eksponensial dan bukannya skala kuantiti tetap.

Ringkasan

Strategi ini menggunakan RSI merentasi pelbagai jangka masa untuk menentukan potensi trend dan mencapai kadar kemenangan yang lebih tinggi. Isyarat tambahan dihasilkan dengan purata bergerak untuk memperluaskan peluang perdagangan. Risiko dikendalikan melalui saiz kedudukan, hentikan kerugian / ambil keuntungan, dan piramid kuantiti tetap. Secara keseluruhan, strategi ini menggabungkan indikator trend dan pembalikan purata, menggabungkan kedua-dua trend berikut dan logik memilih bawah, dan berkesan semasa penyatuan. Ujian dan pengoptimuman lanjut diperlukan untuk membina kawalan risiko yang lebih kukuh untuk prestasi yang lebih konsisten.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("5M_RSI_Strategy", overlay=true, pyramiding = 1)
len =14 
Initial_Trade_Size = 2
up = rma(max(change(close), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
RSI_1h = request.security(syminfo.tickerid, "60", rsi)
RSI_3h = request.security(syminfo.tickerid, "180", rsi)
RSI_15m = request.security(syminfo.tickerid, "15", rsi)
RSI_5m = request.security(syminfo.tickerid, "5", rsi)
RSI_1m = request.security(syminfo.tickerid, "1", rsi)
ema21_5 = ema(request.security(syminfo.tickerid, "5", close), 21)
ema21_15 = ema(request.security(syminfo.tickerid, "15", close), 21)
//(RSI_3h<=25) and  (RSI_1h<=25) and (RSI_15m<=25) and
Positive = ((RSI_5m<=25) and (RSI_15m<=25) and (RSI_1h<=25))?true:false
//alertcondition(Positive, title='POS', message='POS')        
//plotshape(Positive, style=shape.triangleup,location=location.belowbar, color=green,size =size.tiny)
Negative = (( RSI_5m>=75) and ( RSI_15m>=75) and ( RSI_1h>=75))?true:false
//alertcondition(Negative, title='NEG', message='NEG')
//plotshape(Negative, style=shape.triangledown,location=location.abovebar, color=red,size=size.tiny)          Positive and   Negative and 

lastordersize = abs(strategy.position_size)>=Initial_Trade_Size?abs(strategy.position_size):Initial_Trade_Size
//lastordersize =1
// and ((ema21_15-low)/ema21_15) > 0.077
//Adding to position rules
if (abs(strategy.position_size) >= Initial_Trade_Size and (abs(close - strategy.position_avg_price)/abs(strategy.position_avg_price)>0.03))
    if(strategy.position_avg_price > close and strategy.position_size > 0)
        strategy.entry("Add", strategy.long , qty = lastordersize , when = true)
    if(strategy.position_avg_price < close and strategy.position_size < 0)
        strategy.entry("Add", strategy.short, qty = lastordersize , when = true)
if (strategy.position_size == 0)
    if (Positive or ((ema21_5-low)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.long , qty = lastordersize , when = true)
    // and ((high-ema21_15)/ema21_15) > 0.077
    if (Negative or ((high-ema21_5)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.short, qty = lastordersize , when = true)
//lastordersize := lastordersize * 2
//or (strategy.openprofit / abs(strategy.position_size * close))>=0.01
if(cross(ema21_5, high) or cross(ema21_5, low))
    strategy.close_all()

Lebih lanjut