According to technical analysis, an RSI above 70 should signal overbought conditions and thus a sell signal. Cryptocurrencies represent an entirely new asset class that is reshaping concepts of technical analysis. FOMO buying can be very powerful, and coins can remain in overbought territory long enough to provide excellent scalping opportunities on the upside.
Building a trend-following trading strategy based on the RSI, which is generally considered a contrarian indicator, may sound counterintuitive. However, over 200 backtests prove this is a very interesting long-term setup.
The strategy assumes each order to trade 30% of the available capital. A trading fee of 0.1% is taken into account, aligned with the base fee applied on Binance, the world’s largest cryptocurrency exchange.
This strategy identifies overbought conditions with RSI to determine trend direction and takes progressive profits trailing the uptrend. Compared to traditional RSI contrarian usage, this strategy offers a new perspective. Rigorous backtesting shows promising results, but we need to monitor risks and optimize parameters. Overall, it provides a simple, practical trend following approach for quantitative trading.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=1 strategy(shorttitle='Trend-following RSI Scalping Strategy (by Coinrule)',title='Trend-following RSI Strategy ', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month") fromDay = input(defval = 10, title = "From Day") fromYear = input(defval = 2020, title = "From Year") thruMonth = input(defval = 1, title = "Thru Month") thruDay = input(defval = 1, title = "Thru Day") thruYear = input(defval = 2112, title = "Thru Year") showDate = input(defval = true, title = "Show Date Range") start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // RSI inputs and calculations lengthRSI = input(14, title = 'RSI period', minval=1) RSI = rsi(close, lengthRSI) //Entry strategy.entry(id="long", long = true, when = RSI > 70 and window()) //Exit Take_profit= ((input (6))/100) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = RSI < 55 or close > longTakeProfit and window())