
This strategy is a trend-following trading system based on the Relative Strength Index (RSI) and Stochastic RSI indicators. The strategy monitors overbought and oversold levels of both RSI and Stochastic RSI to execute trades when market signals appear. It supports both daily and weekly timeframes, providing traders with flexible trading options.
The strategy primarily relies on two technical indicators: RSI and Stochastic RSI. RSI measures the speed and magnitude of price movements, while Stochastic RSI applies stochastic calculations to RSI values to provide more sensitive overbought and oversold signals. Buy signals are triggered when RSI falls below 35 and Stochastic RSI K-value drops below 20, indicating oversold conditions. Sell signals are triggered when RSI rises above 70 and Stochastic RSI K-value exceeds 80, indicating overbought conditions. The strategy employs Simple Moving Averages (SMA) to smooth the Stochastic RSI K-line and D-line, reducing false signals.
This strategy builds a relatively reliable trading system by combining the advantages of RSI and Stochastic RSI. While it has certain limitations, the strategy holds practical value through proper risk management and continuous optimization. Traders are advised to thoroughly test different parameter combinations and make appropriate adjustments based on market conditions and personal risk preferences before live trading.
/*backtest
start: 2023-12-20 00:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC Buy & Sell Strategy (RSI & Stoch RSI)", overlay=true)
// Input Parameters
rsi_length = input.int(14, title="RSI Length")
stoch_length = input.int(14, title="Stochastic Length")
stoch_smooth_k = input.int(3, title="Stochastic %K Smoothing")
stoch_smooth_d = input.int(3, title="Stochastic %D Smoothing")
// Threshold Inputs
rsi_buy_threshold = input.float(35, title="RSI Buy Threshold")
stoch_buy_threshold = input.float(20, title="Stochastic RSI Buy Threshold")
rsi_sell_threshold = input.float(70, title="RSI Sell Threshold")
stoch_sell_threshold = input.float(80, title="Stochastic RSI Sell Threshold")
use_weekly_data = input.bool(false, title="Use Weekly Data", tooltip="Enable to use weekly timeframe for calculations.")
// Timeframe Configuration
timeframe = use_weekly_data ? "W" : timeframe.period
// Calculate RSI and Stochastic RSI
rsi_value = request.security(syminfo.tickerid, timeframe, ta.rsi(close, rsi_length))
stoch_rsi_k_raw = request.security(syminfo.tickerid, timeframe, ta.stoch(close, high, low, stoch_length))
stoch_rsi_k = ta.sma(stoch_rsi_k_raw, stoch_smooth_k)
stoch_rsi_d = ta.sma(stoch_rsi_k, stoch_smooth_d)
// Define Buy and Sell Conditions
buy_signal = (rsi_value < rsi_buy_threshold) and (stoch_rsi_k < stoch_buy_threshold)
sell_signal = (rsi_value > rsi_sell_threshold) and (stoch_rsi_k > stoch_sell_threshold)
// Strategy Execution
if buy_signal
strategy.entry("Long", strategy.long, comment="Buy Signal")
if sell_signal
strategy.close("Long", comment="Sell Signal")
// Plot Buy and Sell Signals
plotshape(buy_signal, style=shape.labelup, location=location.belowbar, color=color.green, title="Buy Signal", size=size.small, text="BUY")
plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, color=color.red, title="Sell Signal", size=size.small, text="SELL")
// Plot RSI and Stochastic RSI for Visualization
hline(rsi_buy_threshold, "RSI Buy Threshold", color=color.green)
hline(rsi_sell_threshold, "RSI Sell Threshold", color=color.red)
plot(rsi_value, color=color.blue, linewidth=2, title="RSI Value")
plot(stoch_rsi_k, color=color.purple, linewidth=2, title="Stochastic RSI K")
plot(stoch_rsi_d, color=color.orange, linewidth=1, title="Stochastic RSI D")