Strategi Perdagangan Divergensi RSI


Tanggal Pembuatan: 2023-10-25 16:47:14 Akhirnya memodifikasi: 2023-10-25 16:47:14
menyalin: 0 Jumlah klik: 846
1
fokus pada
1617
Pengikut

Strategi Perdagangan Divergensi RSI

Ringkasan

Strategi perdagangan deviasi RSI memberikan sinyal beli dan jual dengan mengidentifikasi deviasi antara indikator RSI dan pergerakan harga. Strategi ini memiliki fungsi stop loss, stop stop, dan tracking stop loss untuk mengendalikan risiko secara efektif.

Prinsip

Strategi ini terutama didasarkan pada deviasi dari indikator RSI untuk mengidentifikasi peluang perdagangan. Secara khusus, strategi ini pertama-tama menghitung nilai RSI dalam periode tertentu, dan kemudian menggambar garis tren dari indikator RSI. Pada saat yang sama, strategi ini juga menggambar garis tren harga.

Jika identifikasi RSI garis rendah naik dan harga garis tinggi turun, memberikan sinyal beli. Jika identifikasi RSI garis tinggi turun dan harga garis rendah naik, memberikan sinyal jual. Setelah membentuk sinyal perdagangan, strategi dapat sesuai dengan ukuran nilai RSI untuk melakukan perdagangan sesuai.

Selain itu, strategi juga mengatur stop loss, stop loss dan tracking stop loss. Stop loss dapat mengontrol risiko kerugian, stop loss dapat mengunci keuntungan, dan tracking stop loss dapat membuat keuntungan terus berjalan. Pengaturan ini dapat secara efektif mengelola risiko setiap perdagangan.

Keunggulan

Strategi RSI deviasi ini memiliki keuntungan sebagai berikut:

  1. Dengan menangkap deviasi dari RSI, kita dapat mendeteksi perubahan harga lebih awal.

  2. Indikator RSI digunakan secara luas, dan sebagian besar perangkat lunak perdagangan memiliki RSI built-in. Strategi ini sangat cocok.

  3. Parameter indikator RSI diatur secara fleksibel, dapat disesuaikan dengan siklus pengamatan pasar, sesuai dengan situasi yang berbeda.

  4. Kombinasi dengan Stop Loss, Stop Stop dan Tracking Stop Loss, memungkinkan pengendalian risiko yang efektif untuk setiap transaksi.

  5. Strategi trading dengan frekuensi sinyal yang moderat, hindari trading yang terlalu intensif.

  6. Strategi yang jelas dan mudah dimengerti, mudah untuk diterapkan oleh program komputer.

Risiko

Strategi ini juga memiliki beberapa risiko:

  1. RSI deviasi tidak 100% dapat diandalkan, mungkin terjadi sinyal palsu. Perlu digabungkan dengan indikator lain untuk filter sinyal.

  2. Dalam situasi tren, RSI deviasi dari sinyal mungkin tidak berlaku dan harus dihindari.

  3. Tidak tepatnya pengaturan parameter RSI juga dapat mempengaruhi efektivitas strategi. Periode yang terlalu pendek dapat meningkatkan frekuensi perdagangan dan risiko.

  4. Stop loss yang terlalu kecil dapat menyebabkan stop loss prematur; stop loss yang terlalu besar tidak dapat mengontrol risiko secara efektif.

  5. Tracking stop loss dapat terjadi terlalu cepat pada saat harga sangat berfluktuasi. Anda perlu mengatur jarak tracking stop loss yang masuk akal dalam kombinasi dengan fluktuasi pasar.

Resiko tersebut dapat diatasi dengan:

  1. Menambahkan indikator lain, seperti MACD, Brinline dan lain-lain untuk memfilter sinyal, mengurangi sinyal palsu.

  2. Strategi ini hanya digunakan untuk mengkonsolidasikan pasar yang bergoyang, menghindari tren yang jelas.

  3. Optimalkan pengaturan parameter RSI, pilih panjang siklus yang optimal. Selain itu, uji preferensi parameter dari berbagai pasar.

  4. Berdasarkan data retrospeksi sejarah, posisi stop loss dan stop loss yang masuk akal ditetapkan.

  5. Adaptasi dari volatilitas pasar dan preferensi risiko dalam hal stop loss.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Menambahkan penilaian indikator lain untuk memfilter sinyal perdagangan dan meningkatkan keandalan sinyal.

  2. Mengoptimalkan pengaturan parameter RSI secara otomatis menggunakan teknologi pembelajaran mesin.

  3. Berdasarkan pola pasar yang berbeda, desain algoritma stop loss yang dinamis. Misalnya, memperluas stop loss dalam kondisi goyah dan mengurangi stop loss dalam kondisi tren.

  4. Desain algoritma manajemen posisi dinamis yang menyesuaikan ukuran posisi untuk setiap transaksi berdasarkan faktor-faktor seperti volatilitas pasar.

  5. Dalam pelacakan stop loss, konsep volatilitas diperkenalkan, dan jarak pelacakan stop loss diatur berdasarkan intensitas fluktuasi harga.

  6. Mencoba menerapkan strategi ke varietas lain, seperti pasar forex dan cryptocurrency.

  7. Membangun sistem perdagangan kuantitatif, otomatisasi perdagangan yang strategis.

Meringkaskan

Strategi RSI deviasi menghasilkan sinyal perdagangan dengan menangkap deviasi antara indikator RSI dan pergerakan harga. Keuntungan dari strategi ini adalah sederhana, jelas, dan mudah untuk diotomatisasi. Selain itu, pengaturan stop loss, stop loss, dan tracking stop loss juga dapat mengontrol risiko secara efektif. Namun, strategi ini juga memiliki beberapa keterbatasan, membutuhkan sinyal verifikasi kombinasi multi-indikator, tidak cocok untuk situasi tren yang kuat.

Kode Sumber Strategi
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
// strategy("RSI Divergence Strategy", overlay=true, scale = scale.none)
rsilen=input.int(14, title="rsi length")
rsisrc=input(close, title="source")
x=ta.rsi(rsisrc,rsilen)
len=input.int(14, title="RSI Divergence length", maxval=500)
tpb = input.float(25, title="take profit", group = "buy", step = 0.5)
sb = input.float(5, title="stop", group = "buy", step = 0.5)
tsb = input.float(0.25, title="trailing stop", group = "buy", step = 0.5)
tps = input.float(25, title="take profit", group = "sell", step = 0.5)
ss =input.float(5, title="stop", group = "sell", step = 0.5)
tss = input.float(0.25, title="trailing stop", group = "sell", step = 0.5)
src=close
extrapolation=0
zoom=input.int(0, title="zoom", maxval=27, minval=-27)
hline(300-zoom*10, color=color.rgb(54, 58, 69, 100))
hline(10, color=color.rgb(54, 58, 69, 100))
// for ax+b
xo=0.0
yo=0.0
xyo=0.0
xxo=0.0
for i=0 to len-1
    xo:= xo + i/(len)
    yo:= yo + x[len-1-i]/(len)
    xyo:= xyo + i*x[len-1-i]/(len)
    xxo:= xxo + i*i/(len)
dnm=ta.lowest(low,200)
dizi=array.new_float(len*2+1+extrapolation)
// linedizi=array.new_line()
a=(xo*yo-xyo)/(xo*xo-xxo)
b=yo-a*xo
for i=0 to len-1+extrapolation
    array.set(dizi,i,a*i+b)
//// for src
// for ax+b
xo2=0.0
yo2=0.0
xyo2=0.0
xxo2=0.0
for i=0 to len-1
    xo2:= xo2 + i/(len)
    yo2:= yo2 + src[len-1-i]/(len)
    xyo2:= xyo2 + i*src[len-1-i]/(len)
    xxo2:= xxo2 + i*i/(len)

dizi2=array.new_float(len*2+1+extrapolation)
// linedizi2=array.new_line()
a2=(xo2*yo2-xyo2)/(xo2*xo2-xxo2)
b2=yo2-a*xo2
for i=0 to len-1+extrapolation
    array.set(dizi2,i,a2*i+b2)
ttk=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)))? 1 : 
 ((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)))? -1 : 0
cg=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)))// and ta.highest(ttk[1],len/2)<1)
cr=((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)))// and ta.lowest(ttk[1],len/2)>-1)
bgcolor(color=(cg and ta.highest(ttk[1],len/2)<1)? color.rgb(76, 175, 79, 50) : 
 (cr and ta.lowest(ttk[1],len/2)>-1)? color.rgb(255, 82, 82, 50) : na, offset=0, display=display.none)
plot(x)

// for ax+b
xo3=0.0
yo3=0.0
xyo3=0.0
xxo3=0.0
for i=0 to len-1
    xo3:= xo3 + i/(len)
    yo3:= yo3 + x[len-1-i+(ta.barssince(cg))]/(len)
    xyo3:= xyo3 + i*x[len-1-i+(ta.barssince(cg))]/(len)
    xxo3:= xxo3 + i*i/(len)

dizi3=array.new_float(len*2+1+extrapolation)
// linedizi3=array.new_line()
a3=(xo3*yo3-xyo3)/(xo3*xo3-xxo3)
b3=yo3-a3*xo3
for i=0 to len-1+extrapolation
    array.set(dizi3,i,a3*i+b3)

// for ax+b
xo4=0.0
yo4=0.0
xyo4=0.0
xxo4=0.0
for i=0 to len-1
    xo4:= xo4 + i/(len)
    yo4:= yo4 + x[len-1-i+(ta.barssince(cr))]/(len)
    xyo4:= xyo4 + i*x[len-1-i+(ta.barssince(cr))]/(len)
    xxo4:= xxo4 + i*i/(len)

dizi4=array.new_float(len*2+1+extrapolation)
// linedizi4=array.new_line()
a4=(xo4*yo4-xyo4)/(xo4*xo4-xxo4)
b4=yo4-a4*xo4
for i=0 to len-1+extrapolation
    array.set(dizi4,i,a4*i+b4)

// line=line.new((last_bar_index-ta.barssince(cg)-len),
//  array.get(dizi3,0), 
//  last_bar_index-ta.barssince(cg),
//  array.get(dizi3,len-1), color=color.rgb(0,255,0), width=2)
// line2=line.new((last_bar_index-ta.barssince(cr)-len),
//  array.get(dizi4,0), 
//  last_bar_index-ta.barssince(cr),
//  array.get(dizi4,len-1), color=color.rgb(255, 0, 0, 0), width=2)
// line.delete(line[1])
// line.delete(line2[1])

alert=((array.get(dizi,0)<array.get(dizi,1)) and (array.get(dizi2,0)>array.get(dizi2,1)) and ta.highest(ttk[1],len/2)<1)
 or ((array.get(dizi,0)>array.get(dizi,1)) and (array.get(dizi2,0)<array.get(dizi2,1)) and ta.lowest(ttk[1],len/2)>-1)
alertcondition(alert)
hline(50)
rs=hline(30)
rss=hline(70)
fill(rs, rss, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

longCondition = cg and ta.highest(ttk[1],len/2)<1 
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("exit long", "Long", limit = close*(100+tpb)/100 , stop =close*(100-sb)/100 , trail_price = close , trail_offset = close*tsb)

shortCondition = cr and ta.lowest(ttk[1],len/2)>-1 
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("exit short", "Short", limit = close*(100-tps)/100, stop = close*(100+ss)/100, trail_price = close , trail_offset = close*tss)