Advanced Multi-Indicator Trend-Following and Momentum Quantitative Trading Strategy

VWAP EMA RSI ATR MACD ADX PSAR BB
Created on: 2025-02-10 15:13:07 Modified on: 2025-02-10 15:13:07
Copy: 0 Number of hits: 500
avatar of ChaoZhang ChaoZhang
1
Follow
1617
Followers

 Advanced Multi-Indicator Trend-Following and Momentum Quantitative Trading Strategy

Overview

This strategy is a sophisticated quantitative trading system that combines multiple technical indicators, integrating trend following and momentum analysis. The strategy incorporates various indicators including Volume Weighted Average Price (VWAP), Exponential Moving Average (EMA), Relative Strength Index (RSI), and others to create a comprehensive trading decision framework. It focuses on trend confirmation and momentum persistence while implementing strict risk control measures.

Strategy Principles

The strategy employs a multi-layer filtering mechanism to confirm trading signals. Buy signals are generated when price is above both VWAP and EMA20, and SuperTrend indicates an uptrend. It uses RSI for momentum confirmation and Bollinger Bands to identify volatility expansion. The strategy also integrates MACD for trend continuation confirmation and ADX to measure trend strength. Stop-loss is set at 1.5 times ATR, with profit targets at 1.5 times the stop-loss distance.

Strategy Advantages

  1. Multi-dimensional Analysis: Provides a more comprehensive market perspective by integrating multiple technical indicators
  2. Robust Risk Control: Uses ATR for dynamic stop-loss adjustment, better adapting to market volatility
  3. Reliable Trend Confirmation: Employs multiple indicator cross-validation to significantly reduce false breakouts
  4. Strong Adaptability: Stop-loss and profit targets automatically adjust based on market volatility
  5. Rigorous Strategy Logic: Entry conditions undergo multiple filters, reducing the probability of false signals

Strategy Risks

  1. Signal Lag: Multiple confirmation mechanisms may lead to slightly delayed entries
  2. Poor Performance in Ranging Markets: May generate frequent false signals in sideways markets
  3. Parameter Optimization Risk: Multiple indicators may lead to over-optimization
  4. High Execution Costs: Frequent trading may result in significant transaction costs
  5. Market Environment Dependency: Strategy performance may vary significantly across different market cycles

Strategy Optimization Directions

  1. Implement Volatility Filtering: Reduce trading frequency in low volatility environments
  2. Optimize Indicator Weights: Dynamically adjust the importance of different indicators based on market conditions
  3. Incorporate Volume Analysis: Strengthen signal reliability by integrating volume changes
  4. Develop Smart Stop-Loss: Dynamically adjust stop-loss positions based on market structure
  5. Time Filtering: Increase entry condition stringency during specific time periods

Summary

The strategy constructs a comprehensive trading system through the integrated use of multiple technical indicators. While it has certain inherent lag and parameter optimization risks, the strategy demonstrates good stability and adaptability through strict risk control and multiple signal confirmations. Through continuous optimization and improvement, the strategy shows promise in maintaining stable performance across various market environments.

Strategy source code
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nifty 1-Min Advanced Scalping", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Indicators
vwap = ta.vwap(close)
ema20 = ta.ema(close, 20)
supertrendFactor = 2
supertrendLength = 10
[superTrend, superTrendDirection] = ta.supertrend(supertrendFactor, supertrendLength)
atr = ta.atr(14)
psar = ta.sar(0.02, 0.2, 0.2)
rsi = ta.rsi(close, 14)
[bbMid, bbUpper, bbLower] = ta.bb(close, 20, 2)
[macdLine, macdSignal, _] = ta.macd(close, 12, 26, 9)
[adx, _, _] = ta.dmi(14, 14)
stochRsi = ta.stoch(close, 14, 3, 3)

// Buy Condition
buyCondition = close > vwap and close > ema20 and superTrendDirection == 1 and rsi > 50 and close > bbMid and close > psar and macdLine > macdSignal and adx > 25 and stochRsi > 20

// Sell Condition
sellCondition = close < vwap and close < ema20 and superTrendDirection == -1 and rsi < 50 and close < bbMid and close < psar and macdLine < macdSignal and adx > 25 and stochRsi < 80

// Stop Loss & Take Profit
sl = atr * 1.5
long_sl = close - sl
short_sl = close + sl
tp = sl * 1.5
long_tp = close + tp
short_tp = close - tp

// Execute Trades
if buyCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)

if sellCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)

// Plot indicators
plot(vwap, title="VWAP", color=color.blue)
plot(ema20, title="EMA 20", color=color.orange)
plot(superTrend, title="SuperTrend", color=color.green)
plot(psar, title="Parabolic SAR", color=color.red, style=plot.style_cross)
plot(bbMid, title="Bollinger Mid", color=color.purple)
plot(macdLine, title="MACD Line", color=color.blue)
plot(macdSignal, title="MACD Signal", color=color.red)
plot(adx, title="ADX", color=color.green)
plot(stochRsi, title="Stochastic RSI", color=color.orange)

// Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal Triggered")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal Triggered")