
Strategi perdagangan RSI dan RSI berlawanan secara rawak adalah kaedah analisis berteknologi tinggi yang direka khusus untuk mengenal pasti titik-titik perubahan penting di pasaran. Strategi ini menggabungkan kekuatan RSI dan SRSI untuk meramalkan perubahan trend yang berpotensi dengan memantau harga dan pergerakan yang berlawanan antara kedua-dua indikator.
Prinsip-prinsip utama strategi ini adalah berdasarkan kepada konsep deviasi dalam analisis teknikal. Perpindahan berlaku apabila pergerakan harga tidak selaras dengan pergerakan petunjuk teknikal, yang biasanya menunjukkan bahawa trend semasa mungkin akan berbalik. Strategi ini memberi tumpuan kepada empat jenis deviasi:
Strategi ini menggunakan syarat penapisan yang ketat untuk memastikan kualiti isyarat yang menyimpang:
Apabila penyimpangan dikesan, strategi akan melukis label dan sambungan pada carta, yang membolehkan peniaga mengenal pasti isyarat-isyarat penting ini secara intuitif. Selain itu, strategi secara automatik menghasilkan isyarat masuk untuk melakukan lebih banyak dan lebih sedikit berdasarkan isyarat penyimpangan.
Untuk mengurangkan risiko ini, disyorkan untuk:
Strategi perdagangan RSI dan RSI Random deviation adalah alat analisis teknikal yang kompleks dan kuat yang dapat menangkap isyarat pembalikan pasaran dan trend lanjutan yang berpotensi dengan mengenal pasti ketidakselarasan antara harga dan indikator dinamik. Strategi ini menyediakan cara yang komprehensif untuk mengenal pasti peluang perdagangan berkemungkinan tinggi dengan menggabungkan pengesanan deviasi biasa dan tersembunyi, dan menggunakan penapis yang dirancang dengan teliti.
Walau bagaimanapun, seperti semua kaedah analisis teknikal, strategi ini juga mempunyai batasan dan risiko. Dengan melaksanakan optimasi yang disyorkan, seperti menambah mekanisme pengurusan risiko, meningkatkan pengesahan isyarat, dan menyelaraskan penyesuaian parameter dinamik, anda dapat meningkatkan kestabilan dan prestasi strategi dengan ketara.
Akhirnya, strategi ini paling sesuai untuk digunakan sebagai sebahagian daripada sistem perdagangan yang lebih luas, digabungkan dengan alat analisis lain dan prinsip pengurusan wang yang sesuai. Bagi peniaga yang memahami analisis teknikal dan struktur pasaran, strategi ini boleh menjadi alat yang berharga untuk mencari set perdagangan berkualiti tinggi.
/*backtest
start: 2024-06-26 00:00:00
end: 2025-06-24 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("RSI Divergence Strategy", overlay=true)
//strategy("RSI & SRSI Divergence Strategy with EMA & Min Swing Filter + Price Chart Lines", overlay=true)
rsiLength = input.int(14, title="RSI Length")
srsiLength = input.int(14, title="Stochastic RSI Length")
kLength = input.int(3, title="%K Length")
dLength = input.int(3, title="%D Length")
emaLength = input.int(200, title="EMA Length")
lookback = input.int(40, title="Lookback Period for Divergence")
minSwingDistPercent = input.float(1.5, title="Minimum Swing Distance (%)")
minPriceMovePercent = input.float(0.5, title="Minimum Price Move from Last Swing (%)")
rsi = ta.rsi(close, rsiLength)
srsi = ta.stoch(rsi, rsi, rsi, srsiLength)
k = ta.sma(srsi, kLength)
d = ta.sma(k, dLength)
ema200 = ta.ema(close, emaLength)
// === Bullish Regular Divergence ===
var float lastLowPrice = na
var float lastLowRsi = na
var float lastLowSrsi = na
var int lastLowIndex = na
bullishDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLow >= minSwingDistPercent and priceMoveLow >= minPriceMovePercent
if (low < lastLowPrice and rsi > lastLowRsi) or (low < lastLowPrice and k > lastLowSrsi)
bullishDiv := true
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
else
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
// === Bearish Regular Divergence ===
var float lastHighPrice = na
var float lastHighRsi = na
var float lastHighSrsi = na
var int lastHighIndex = na
bearishDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHigh >= minSwingDistPercent and priceMoveHigh >= minPriceMovePercent
if (high > lastHighPrice and rsi < lastHighRsi) or (high > lastHighPrice and k < lastHighSrsi)
bearishDiv := true
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
else
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
// === Bullish Hidden Divergence ===
bullishHiddenDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLowHidden >= minSwingDistPercent and priceMoveLowHidden >= minPriceMovePercent
if (low > lastLowPrice and rsi < lastLowRsi) or (low > lastLowPrice and k < lastLowSrsi)
bullishHiddenDiv := true
// === Bearish Hidden Divergence ===
bearishHiddenDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHighHidden >= minSwingDistPercent and priceMoveHighHidden >= minPriceMovePercent
if (high < lastHighPrice and rsi > lastHighRsi) or (high < lastHighPrice and k > lastHighSrsi)
bearishHiddenDiv := true
// === PLOTS ===
plot(ema200, title="EMA 200", color=color.purple, linewidth=2)
// === STRATEGY ENTRIES ===
if bullishDiv or bullishHiddenDiv
strategy.entry("Long", strategy.long)
if bearishDiv or bearishHiddenDiv
strategy.entry("Short", strategy.short)