
This strategy is a multi-indicator fusion quantitative trading system that combines Simple Moving Average (SMA), Relative Strength Index (RSI), and Support/Resistance levels to generate trading signals. The strategy also incorporates time filtering and volume filtering mechanisms to enhance trading effectiveness. The core concept is to buy when the price approaches support levels and RSI indicates oversold conditions, and to sell when the price approaches resistance levels and RSI indicates overbought conditions. Additionally, it only executes trades within a specified time range and can optionally operate only when volume is above average levels, which helps ensure liquidity and effectiveness of trades.
The strategy is based on several classic technical analysis concepts and indicators:
Simple Moving Average (SMA): Uses a 50-period SMA to identify the overall direction of market trends. SMA serves as a smoothing indicator for price, helping to reduce noise and display clearer trends.
Relative Strength Index (RSI): Uses a 14-period RSI to detect overbought and oversold market conditions. RSI below 30 is considered an oversold signal, while above 70 is considered overbought.
Support and Resistance Levels: Calculated through a 30-period window, taking the lowest price and highest price during this period respectively. These levels represent key areas where price may reverse.
Trading Logic:
Filtering Conditions:
This approach combines elements of trend following and reversal trading, attempting to capture trading opportunities when prices reach extreme levels and show potential reversal signals.
Multi-dimensional Signal Confirmation: By combining multiple indicators (SMA, RSI, Support/Resistance), the strategy reduces the risk of false signals, generating trading signals only when multiple conditions are simultaneously met.
Dynamic Support and Resistance: The strategy uses a rolling window to calculate support and resistance levels, allowing these key price levels to automatically adjust as market conditions change.
Flexible Filtering Mechanisms:
Clear Entry Conditions: The strategy has clear entry rules, combining price proximity to key levels and overbought/oversold conditions, which helps capture opportunities at potential reversal points.
Visual Assistance: The strategy includes plotting of SMA, support and resistance lines, and visualization of buy and sell signals, allowing traders to intuitively understand market conditions and strategy signals.
Alert Functionality: Built-in alert conditions enable traders to be notified when new signals are generated, facilitating real-time monitoring and trade execution.
False Breakout Risk: When price approaches support or resistance levels, false breakouts may occur, followed by quick reversals, leading to incorrect signals. Consider adding confirmation mechanisms, such as waiting for price to remain near support/resistance for a certain time or adding additional confirmation indicators.
Overtrading Risk: In ranging markets or highly volatile markets, RSI may frequently cross overbought and oversold levels, resulting in too many trading signals. This can be reduced by adjusting RSI thresholds or adding signal filtering conditions.
Parameter Sensitivity: Strategy performance is highly dependent on selected parameters (SMA period, RSI period, support/resistance window, etc.). Different markets and timeframes may require different parameter settings; robust backtesting and optimization are recommended.
Single Position Management: The current strategy lacks stop-loss and profit-taking strategies, which may lead to excessive losses during sharp market fluctuations. Adding stop-loss strategies and position sizing management is recommended.
Limitations of Time Filtering: Fixed date ranges may cause missed trading opportunities outside the date range. Consider using more dynamic time filtering methods, such as adaptive filtering based on market conditions.
Add Stop-Loss and Profit Targets:
Optimize Parameter Adaptability:
Enhance Filtering Mechanisms:
Add Position Management:
Integrate Market Sentiment Indicators:
The Multi-Indicator Fusion Support-Resistance Volume-Filtered Quantitative Trading Strategy is a comprehensive trading system that combines SMA, RSI, and dynamic support/resistance levels. By integrating multiple technical indicators and adding time and volume filtering, the strategy attempts to capture trading opportunities at potential market reversal points while reducing false signals and unnecessary trades.
The strategy’s greatest advantages lie in its multi-dimensional signal confirmation and flexible filtering mechanisms, which improve the quality of trading signals. However, it also faces challenges such as false breakout risks and parameter sensitivity. By adding stop-loss mechanisms, optimizing parameter adaptability, enhancing filters, and improving position management, the strategy can be further optimized to improve performance and stability.
For traders looking to build robust trading systems based on technical analysis, this strategy provides a solid starting point. By deeply understanding its principles and customizing it according to specific market needs, traders can develop systems that better suit their trading style and risk preferences.
/*backtest
start: 2024-04-08 00:00:00
end: 2025-04-07 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("SMA + RSI + S/R Strategy with Filters", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === Input Settings ===
smaPeriod = input.int(50, title="SMA Period")
rsiPeriod = input.int(14, title="RSI Period")
srWindow = input.int(30, title="Support/Resistance Window")
volumeFilter = input.bool(true, title="Enable Volume Filter")
tradeOnlyAboveVolume = input.bool(true, title="Only trade when volume > avg")
// === Indicators ===
sma = ta.sma(close, smaPeriod)
rsi = ta.rsi(close, rsiPeriod)
support = ta.lowest(low, srWindow)
resistance = ta.highest(high, srWindow)
avgVolume = ta.sma(volume, 20)
// === Volume Filter ===
volumeCondition = not volumeFilter or (volume > avgVolume)
// === Signals ===
buySignal = (close <= support * 1.02) and (rsi < 30) and volumeCondition
sellSignal = (close >= resistance * 0.98) and (rsi > 70) and volumeCondition
// === Strategy Backtest ===
if buySignal
strategy.entry("Buy", strategy.long)
if sellSignal
strategy.entry("Sell", strategy.short)
// === Plot Lines ===
plot(sma, title="SMA", color=color.orange)
plot(support, title="Support", color=color.green)
plot(resistance, title="Resistance", color=color.red)
// === Plot Signals ===
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === Alerts ===
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Triggered!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Triggered!")