Strategi Reversal Indikator RSI Dual Moving Average Kombinasi

Penulis:ChaoZhang, Tanggal: 2023-11-10 18:01:09
Tag:

img

Gambaran umum

Strategi ini menggabungkan rata-rata bergerak ganda, indeks kekuatan relatif (RSI) dan SAR parabolik (PSAR) untuk mengidentifikasi titik pembalikan harga dan membuat keputusan beli dan jual sesuai.

Prinsip-prinsip

Strategi ini terutama menggunakan indikator teknis berikut untuk menentukan titik pembalikan harga:

  1. Dual Moving Average: Menghitung rata-rata bergerak cepat (MA fast line) dan rata-rata bergerak lambat (MA slow line). Ketika garis cepat melintasi di atas garis lambat, itu menunjukkan pasar bull dan pergi panjang. Ketika garis cepat melintasi di bawah garis lambat, itu menunjukkan pasar bear dan pergi pendek.

  2. Indikator RSI: Indikator RSI menilai kondisi overbought dan oversold dengan menghitung rata-rata keuntungan penutupan dan kerugian penutupan rata-rata selama periode waktu.

  3. Indikator PSAR: SAR parabolik menunjukkan arah tren. Titik SAR di bawah harga menunjukkan pasar bull dan di atas harga menunjukkan pasar bear.

  4. Indikator ADX: ADX mengukur kekuatan tren dengan menghitung pergerakan arah. ADX di atas 20 sinyal pasar tren dan di bawah 20 sinyal konsolidasi.

Logika untuk sinyal beli dan jual adalah sebagai berikut:

Buy Signal: MA cepat melintasi di atas MA lambat, RSI di bawah 30 (terlalu laris), poin SAR di atas harga, ADX di atas 20.

Sinyal Jual: MA cepat melintasi di bawah MA lambat, RSI di atas 70 (overbought), poin SAR di bawah harga, ADX di atas 20.

Ketika sinyal beli atau jual terjadi, ambil posisi dengan 10% ekuitas masing-masing. Tutup posisi tepat waktu ketika sinyal pembalikan gagal.

Keuntungan

  • MAs ganda menentukan arah tren utama, dengan RSI dan SAR menyaring sinyal palsu, yang dapat secara akurat mengidentifikasi titik pembalikan.

  • Menggabungkan beberapa indikator mencegah sinyal yang salah dari satu indikator.

  • Stop loss menghindari risiko yang berlebihan.

  • Logika yang sederhana dan jelas membuatnya mudah diterapkan.

  • Ini bekerja baik untuk uptrend dan downtrend.

Risiko dan Solusi

  • Pertimbangkan periode MA yang lebih lama atau menambahkan Bollinger Bands untuk mengkonfirmasi breakout yang benar.

  • RSI dapat menghasilkan sinyal yang salah jika tidak diatur dengan benar. fine tune parameter RSI dan menambahkan indikator lain untuk mengkonfirmasi sinyal RSI.

  • Hentikan perdagangan ketika ADX di bawah 20 untuk menghindari pembalikan perdagangan di pasar tanpa arah atau memperpendek periode ADX.

  • SetStringry stop loss dapat menyebabkan kerugian yang tidak perlu. Set stop loss yang wajar berdasarkan volatilitas pasar.

  • Tingkat frekuensi perdagangan yang tinggi.

Peningkatan

  • Uji periode MA yang berbeda untuk menemukan kombinasi yang optimal.

  • Uji parameter RSI yang berbeda untuk penilaian overbought/oversold yang lebih baik.

  • Tambahkan indikator lain seperti Bollinger Bands, KDJ untuk memperkaya logika.

  • Atur stop loss dinamis berdasarkan produk dan pasar yang berbeda.

  • Tambahkan ukuran posisi untuk lebih mengikuti tren.

  • Uji parameter ADX yang berbeda untuk menemukan nilai terbaik untuk menentukan kekuatan tren.

  • Tambahkan fungsi stop loss otomatis.

Kesimpulan

Strategi ini mengidentifikasi arah tren utama menggunakan MAs ganda, dan menggunakan RSI, SAR untuk penyaringan sinyal tambahan. Ini dapat secara efektif menentukan titik pembalikan setelah optimasi parameter, dan menangkap tren di sekitar pembalikan. Dalam prakteknya, manajemen risiko dengan stop loss yang tepat, dan optimasi parameter yang berkelanjutan adalah penting. Secara keseluruhan, strategi ini menggabungkan indikator dengan logika yang jelas dan operasi yang mudah, menjadikannya strategi perdagangan pembalikan yang dapat diandalkan.


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

//@version=2
//Based on Senpai BO 3
strategy(title="Senpai_Strat_3", shorttitle="Senpai_Strat_3", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = close

//psar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
psar = sar(start, increment, maximum)


//ADX Init
adxlen = input(30, title="ADX Smoothing")	
dilen = input(30, title="DI Length")	
dirmov(len) =>	
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 	
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]
	
[sig, up, down] = adx(dilen, adxlen)	


// BB Init
source = close
length = input(50, minval=1)
mult = input(0.5, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)


//RSI CODE
up1 = rma(max(change(src), 0), 14)
down1 = rma(-min(change(src), 0), 14)
rsi = down1 == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up1 / down1))


//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 

//////////////////// Algo

//if (rsi>50 and n1>n2)
   //strategy.exit("Close", "Short")
  // strategy.entry("Long", strategy.long)
//if (rsi<50 and n2>n1)
   //strategy.exit("Close", "Long")
//   strategy.entry("Short", strategy.short)

//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200  and rsi >= 60?red : silver
//short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close = 100%
//long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close = 100%
short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close
long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close

//Entry

long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
strategy.entry("short", strategy.short,qty = 10, when=short)
strategy.entry("long", strategy.long,qty=10, when=long)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)



/////////////////////
///PLOT

plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)


//plot(short,"short",color=red,linewidth=1)
//

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)

//strategy.exit(id="Stop", profit = 20, loss = 100)

Lebih banyak