RSI Strategi Perdagangan Divergensi Bullish dan Bearish

Penulis:ChaoZhang, Tanggal: 2024-01-15 12:09:54
Tag:

img

Gambaran umum

Strategi ini menilai tren bullish dan bearish pasar dan membuat keputusan perdagangan dengan menghitung divergensi indikator RSI. Secara khusus, akan menilai sinyal bullish tersembunyi ketika RSI membentuk titik terendah yang lebih rendah tetapi harga membentuk titik terendah yang lebih tinggi. Dan akan menilai sinyal bearish tersembunyi ketika RSI membentuk titik tertinggi yang lebih tinggi tetapi harga membentuk titik tertinggi yang lebih rendah. Kemudian menentukan potensi tren bullish atau bearish pasar berdasarkan sinyal ini dan melakukan perdagangan.

Logika Strategi

Strategi ini terutama didasarkan pada teori divergensi bullish dan bearish dari indikator RSI. Ketika RSI dan harga membentuk divergensi terbalik, itu menunjukkan potensi pembalikan pasar. Ada empat situasi khusus:

  1. Sinyal Bullish Reguler: RSI membentuk tinggi rendah sementara harga membentuk rendah rendah. Ini menunjukkan daya beli mendorong RSI naik tetapi tidak sepenuhnya mencerminkan harga, yang menyiratkan kekuatan bullish yang diperkuat.

  2. Hidden Bullish Signal: RSI membentuk rendah rendah sementara harga membentuk rendah tinggi. Ini berarti kekuatan jual mendorong RSI ke bawah tetapi tidak harga, menunjukkan kekuatan bullish yang diperkuat.

  3. Sinyal Bearish Reguler: RSI membentuk rendah tinggi sementara harga membentuk tinggi tinggi. Ini menyiratkan kekuatan jual mendorong harga naik tetapi tidak RSI, menunjukkan kekuatan bearish yang diperkuat.

  4. Hidden Bearish Signal: RSI membentuk tinggi yang lebih tinggi sementara harga membentuk tinggi yang lebih rendah. Ini menunjukkan daya beli mendorong RSI naik tetapi tidak harga, menyiratkan kekuatan bearish yang lebih kuat.

Berdasarkan perbedaan di atas, ia menilai potensi tren bullish atau bearish pasar dan penguatan daya beli/penjualan untuk merumuskan strategi perdagangan.

Keuntungan

  1. Menggunakan teori divergensi bullish dan bearish dari RSI untuk menentukan potensi tren pasar.
  2. Juga menggabungkan tindakan harga untuk mengkonfirmasi, menghindari sinyal bising.
  3. Mampu menangkap sinyal kritis sebelum pembalikan pasar yang cepat.
  4. Mengimplementasikan indikasi visual untuk sinyal bullish dan bearish, mudah dan intuitif untuk dioperasikan.
  5. Parameter yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda.

Risiko

  1. Perbedaan antara RSI dan harga mungkin tidak selalu menyiratkan pembalikan, bisa saja tindakan yang terikat kisaran.
  2. Sinyal tersembunyi memiliki kebisingan yang relatif lebih besar, risiko penilaian yang salah.
  3. Perlu memasukkan lebih banyak indikator atau metode analisis teknis untuk mengkonfirmasi sinyal.
  4. Pengaturan parameter yang tidak benar juga dapat mempengaruhi penilaian.

Arah Peningkatan

  1. Menggabungkan MACD, KDJ dan indikator lainnya dengan RSI untuk menentukan sinyal masuk.
  2. Tambahkan strategi stop loss untuk mengurangi kerugian per perdagangan.
  3. Mengoptimalkan pengaturan parameter seperti mencari periode RSI yang lebih cocok.
  4. Memperkenalkan algoritma pembelajaran mesin untuk melatih akurasi menangkap sinyal masuk.
  5. Mengimplementasikan websocket untuk kutipan waktu nyata untuk mengurangi latensi konfirmasi sinyal.

Ringkasan

Strategi ini terutama memanfaatkan divergensi bullish dan bearish dari RSI untuk menentukan potensi tren bullish atau bearish pasar dengan menangkap perubahan kekuatan relatif antara daya beli dan jual di balik tindakan harga. Ini memiliki kemampuan prediktif tertentu dari pembalikan. Tapi juga memiliki risiko sinyal bising. Cara seperti optimasi parameter, kombinasi indikator, pembelajaran mesin dapat membantu meningkatkan stabilitas dan profitabilitas strategi.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Divergence Indicator")
len = input.int(title="RSI Period", minval=1, defval=20)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=true)
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)
osc = ta.rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#2962FF)
hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))

plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low

oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) 
// bull : 상승 Condition : 조건
bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스?
strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond)
// strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 70)) 
plot(
     plFound ? osc[lbR] : na,
     offset=-lbR,
     title="Regular Bullish",
     linewidth=2,
     color=(bullCond ? bullColor : noneColor)
     )

plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond)
// strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 70))
plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor)
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High

oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1)
// bear : 하락 
bearCond = plotBear and priceHH and oscLH and phFound
strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond)
// strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor)
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High

oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High

priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond)
// strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor)
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor
	 )

Lebih banyak