RSI Strategi Perdagangan Divergensi Bullish dan Bearish

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

img

Ringkasan

Strategi ini menilai trend kenaikan dan penurunan pasaran dan membuat keputusan perdagangan dengan mengira perbezaan penunjuk RSI. Khususnya, ia akan menilai isyarat menaik tersembunyi apabila RSI membentuk tahap terendah yang lebih rendah tetapi harga membentuk tahap terendah yang lebih tinggi. Dan ia akan menilai isyarat menaik tersembunyi apabila RSI membentuk tahap tertinggi yang lebih tinggi tetapi harga membentuk tahap tertinggi yang lebih rendah. Kemudian ia menentukan potensi trend menaik atau penurunan pasaran berdasarkan isyarat ini dan membuat perdagangan.

Logika Strategi

Strategi ini terutamanya berdasarkan teori divergensi bullish dan bearish dari penunjuk RSI. Apabila RSI dan harga membentuk divergensi terbalik, ia menunjukkan potensi pembalikan pasaran. Terdapat empat situasi khusus:

  1. Isyarat Bullish Biasa: RSI membentuk rendah yang lebih tinggi sementara harga membentuk rendah yang lebih rendah. Ia menunjukkan kuasa beli mendorong RSI tetapi tidak sepenuhnya mencerminkan harga, yang menunjukkan kekuatan bullish yang lebih kuat.

  2. Isyarat Bullish tersembunyi: RSI membentuk rendah rendah sementara harga membentuk rendah tinggi. Ia menunjukkan kuasa jual mendorong RSI tetapi tidak harga, menunjukkan kekuatan bullish yang lebih kuat.

  3. Isyarat Bearish Biasa: RSI membentuk tinggi yang lebih rendah sementara harga membentuk tinggi yang lebih tinggi. Ia menunjukkan kuasa jual mendorong harga tetapi bukan RSI, menunjukkan kekuatan bearish yang lebih kuat.

  4. Isyarat Berkurangan Tersembunyi: RSI membentuk tinggi yang lebih tinggi sementara harga membentuk tinggi yang lebih rendah. Ia menunjukkan kuasa beli mendorong RSI tetapi tidak harga, yang menunjukkan kekuatan penurunan yang lebih kuat.

Berdasarkan perbezaan di atas, ia menilai potensi tren menaik atau menurun pasaran dan penguatan kuasa beli/penjualan untuk merumuskan strategi perdagangan.

Kelebihan

  1. Menggunakan teori divergensi bullish dan bearish RSI untuk menentukan trend pasaran yang berpotensi.
  2. Juga menggabungkan tindakan harga untuk mengesahkan, mengelakkan isyarat bising.
  3. Mampu menangkap isyarat kritikal sebelum perubahan pasaran yang cepat.
  4. Melaksanakan petunjuk visual untuk isyarat menaik dan menurun, mudah dan intuitif untuk beroperasi.
  5. Parameter yang boleh disesuaikan sesuai dengan persekitaran pasaran yang berbeza.

Risiko

  1. Perbezaan antara RSI dan harga mungkin tidak semestinya menunjukkan pembalikan, hanya boleh menjadi tindakan terikat julat.
  2. Isyarat tersembunyi mempunyai kebisingan yang lebih besar, risiko salah penilaian.
  3. Perlu memasukkan lebih banyak penunjuk atau kaedah analisis teknikal untuk mengesahkan isyarat.
  4. Tetapan parameter yang tidak betul juga boleh menjejaskan penilaian.

Arahan Peningkatan

  1. Menggabungkan MACD, KDJ dan penunjuk lain dengan RSI untuk menentukan isyarat kemasukan.
  2. Tambah strategi stop loss untuk mengurangkan kerugian setiap perdagangan.
  3. Mengoptimumkan tetapan parameter seperti mencari tempoh RSI yang lebih sesuai.
  4. Memperkenalkan algoritma pembelajaran mesin untuk melatih ketepatan menangkap isyarat masuk.
  5. Melaksanakan websocket untuk kutipan masa nyata untuk mengurangkan latensi pengesahan isyarat.

Ringkasan

Strategi ini terutamanya memanfaatkan perbezaan bullish dan bearish RSI untuk menentukan potensi tren bullish atau bearish pasaran dengan menangkap perubahan kekuatan relatif antara kuasa membeli dan menjual di belakang tindakan harga. Ia mempunyai keupayaan ramalan tertentu pembalikan. Tetapi ia juga mempunyai risiko isyarat bising. Cara seperti pengoptimuman parameter, kombinasi penunjuk, pembelajaran mesin dapat membantu meningkatkan lagi kestabilan dan keuntungan 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 lanjut