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.
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:
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.
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.
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.
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.
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 )