
This trading strategy is based on the divergence between the Relative Strength Index (RSI) and price movements, aiming to capture potential trend reversal opportunities. The strategy detects both bullish and bearish divergences and generates buy and sell signals accordingly. When a divergence occurs between RSI and price, it indicates that the current trend may be about to reverse, providing traders with potential trading opportunities.
The trend reversal trading strategy based on RSI divergence aims to capture potential trend reversal opportunities by identifying divergences between the RSI indicator and price movements. The strategy is simple to use and applicable to multiple financial markets. However, traders need to be aware of risks such as false signals, lagging nature, and parameter sensitivity. By combining with other indicators, dynamically adjusting parameters, incorporating risk management, and conducting multi-timeframe analysis, the strategy’s robustness and profit potential can be further enhanced.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI Divergence Strategy", overlay=true)
// Input parameters
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
lookback = input.int(5, title="Lookback Period for Divergence")
// Calculate RSI
rsi = ta.rsi(close, rsiLength)
// Function to detect bullish divergence
bullishDivergence(price, rsi, lookback) =>
var bool bullDiv = false
for i = 1 to lookback
if (low[i] < low and rsi[i] > rsi)
bullDiv := true
bullDiv
// Function to detect bearish divergence
bearishDivergence(price, rsi, lookback) =>
var bool bearDiv = false
for i = 1 to lookback
if (high[i] > high and rsi[i] < rsi)
bearDiv := true
bearDiv
// Detect bullish and bearish divergence
bullDiv = bullishDivergence(close, rsi, lookback)
bearDiv = bearishDivergence(close, rsi, lookback)
// Plot RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.blue)
// Generate buy signal on bullish divergence
if (bullDiv and ta.crossover(rsi, rsiOversold))
strategy.entry("Buy", strategy.long)
// Generate sell signal on bearish divergence
if (bearDiv and ta.crossunder(rsi, rsiOverbought))
strategy.entry("Sell", strategy.short)
// Plot buy/sell signals on chart
plotshape(series=bullDiv, location=location.belowbar, color=color.green, style=shape.labelup, text="Bull Div")
plotshape(series=bearDiv, location=location.abovebar, color=color.red, style=shape.labeldown, text="Bear Div")