This is an intraday trading strategy that combines Volume Weighted Average Price (VWAP), Average True Range (ATR), and price action analysis. The strategy determines market trends by observing price crossovers with VWAP while using ATR to set dynamic stop-loss and profit targets. The core concept is to identify trading opportunities when price pulls back to VWAP, with risk management controlled by ATR.
The strategy is based on several core principles:
This is a quantitative trading strategy combining technical analysis and dynamic risk management. The combination of VWAP and ATR ensures objective trading signals while maintaining effective risk control. The strategy design aligns with modern quantitative trading requirements, offering good practicality and scalability. Through the suggested optimizations, there is room for further performance improvement.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Price Action + VWAP + ATR Intraday Strategy", overlay=true) // VWAP Calculation vwapValue = ta.vwap(close) // ATR Calculation (14-period) atr = ta.atr(14) // Price Action Setup for Bullish and Bearish Trades bullishCondition = close > vwapValue and close[1] < vwapValue // Price above VWAP (Bullish bias) and Price action pullback to VWAP bearishCondition = close < vwapValue and close[1] > vwapValue // Price below VWAP (Bearish bias) and Price action rally to VWAP // Set stop loss and take profit based on ATR atrMultiplier = 1.5 longStopLoss = low - atr shortStopLoss = high + atr longTakeProfit = close + (atr * atrMultiplier) shortTakeProfit = close - (atr * atrMultiplier) // Entry and Exit Rules // Bullish Trade: Price pullback to VWAP and a bounce with ATR confirmation if (bullishCondition and ta.crossover(close, vwapValue)) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfit, stop=longStopLoss) // Bearish Trade: Price rally to VWAP and a rejection with ATR confirmation if (bearishCondition and ta.crossunder(close, vwapValue)) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss) // Plot VWAP on the chart plot(vwapValue, color=color.blue, linewidth=2, title="VWAP") // Plot ATR on the chart for reference (Optional) plot(atr, title="ATR", color=color.orange, linewidth=1)