
This strategy is a composite trading system that combines Stochastic Relative Strength Index (Stochastic RSI) with candlestick pattern confirmation. The system generates automated trading signals by analyzing SRSI indicator’s overbought and oversold levels along with price action confirmation through candlestick patterns. The strategy employs advanced technical indicator combinations, incorporating both trend-following and reversal trading characteristics, demonstrating strong market adaptability.
The core logic of the strategy is built on several key elements: 1. Uses 14-period RSI as the foundation to calculate Stochastic RSI values as the primary signal source 2. Applies 3-period simple moving averages to Stochastic RSI’s K and D lines for signal smoothing 3. Sets 80 and 20 as overbought and oversold thresholds for market condition assessment 4. Incorporates current candlestick’s open and close price relationship for trend confirmation 5. Generates long signals when K line crosses above oversold level with bullish candlestick 6. Triggers short signals when K line crosses below overbought level with bearish candlestick 7. Implements corresponding stop-loss when K line crosses overbought/oversold levels
This strategy constructs a robust trading system by combining Stochastic RSI indicators with candlestick patterns. While maintaining operational simplicity, the system achieves effective risk control. Through appropriate parameter optimization and signal filtering, the strategy can adapt to various market environments. Traders are advised to conduct thorough historical data backtesting and adjust parameters according to specific market characteristics before live implementation.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Stochastic RSI Strategy with Candlestick Confirmation", overlay=true)
// Input parameters for Stochastic RSI
rsiPeriod = input.int(14, title="RSI Period")
stochRsiPeriod = input.int(14, title="Stochastic RSI Period")
kPeriod = input.int(3, title="K Period")
dPeriod = input.int(3, title="D Period")
// Overbought and Oversold levels
overboughtLevel = input.int(80, title="Overbought Level", minval=50, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=0, maxval=50)
// Calculate RSI
rsi = ta.rsi(close, rsiPeriod)
// Calculate Stochastic RSI
stochRSI = ta.stoch(rsi, rsi, rsi, stochRsiPeriod) // Stochastic RSI calculation using the RSI values
// Apply smoothing to StochRSI K and D lines
k = ta.sma(stochRSI, kPeriod)
d = ta.sma(k, dPeriod)
// Plot Stochastic RSI on separate panel
plot(k, title="StochRSI K", color=color.green, linewidth=2)
plot(d, title="StochRSI D", color=color.red, linewidth=2)
hline(overboughtLevel, "Overbought", color=color.red, linestyle=hline.style_dashed)
hline(oversoldLevel, "Oversold", color=color.green, linestyle=hline.style_dashed)
// Buy and Sell Signals based on both Stochastic RSI and Candlestick patterns
buySignal = ta.crossover(k, oversoldLevel) and close > open // Buy when K crosses above oversold level and close > open (bullish candle)
sellSignal = ta.crossunder(k, overboughtLevel) and close < open // Sell when K crosses below overbought level and close < open (bearish candle)
// Plot Buy/Sell signals as shapes on the chart
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Background color shading for overbought/oversold conditions
bgcolor(k > overboughtLevel ? color.new(color.red, 90) : na)
bgcolor(k < oversoldLevel ? color.new(color.green, 90) : na)
// Place actual orders with Stochastic RSI + candlestick pattern confirmation
if (buySignal)
strategy.entry("Long", strategy.long)
if (sellSignal)
strategy.entry("Short", strategy.short)
// Optionally, you can add exit conditions for closing long/short positions
// Close long if K crosses above the overbought level
if (ta.crossunder(k, overboughtLevel))
strategy.close("Long")
// Close short if K crosses below the oversold level
if (ta.crossover(k, oversoldLevel))
strategy.close("Short")