0bps

Strategy vault / Momentum

Quantitative Momentum Trading VWAP MACD Dual Indicator Trend Following Strategy

This strategy combines Volume Weighted Average Price (VWAP) and Moving Average Convergence Divergence (MACD) for quantitative trading. It seeks optimal entry and exit points in market trends by combining price…

Author
ChaoZhang
Complexity
Starter · 52 lines
Parameters
0
Backtest bar
2h · intraday
Tested on
BTC/USDT · futures

IMG

Overview

This strategy combines Volume Weighted Average Price (VWAP) and Moving Average Convergence Divergence (MACD) for quantitative trading. It seeks optimal entry and exit points in market trends by combining price momentum indicators with volume weighting. The strategy uses VWAP as a crucial price reference level while utilizing MACD to capture market momentum changes, enabling more precise trading position timing.

Strategy Principles

The core logic is based on the following key elements:

  1. VWAP calculates the volume-considered average price level to determine if current price is favorably positioned
  2. MACD consists of fast EMA (12 periods) and slow EMA (26 periods) to capture price momentum
  3. Long condition: MACD line crosses above signal line and price is above VWAP
  4. Short condition: MACD line crosses below signal line and price is below VWAP
  5. Exit logic: Close positions when MACD shows reverse crossover signals or price breaks VWAP

Strategy Advantages

  1. Multi-dimensional analysis: Combines price, volume, and momentum for trading decisions
  2. Robust risk control: Reduces false signals through dual confirmation of VWAP and MACD
  3. High adaptability: Strategy parameters can be adjusted for different market conditions and timeframes
  4. Clear execution: Entry and exit conditions are well-defined for programmatic implementation
  5. Good scalability: Simple core logic allows easy addition of auxiliary indicators or filters

Strategy Risks

  1. Choppy market risk: May generate frequent false breakout signals in sideways markets
  2. Lag risk: MACD as a lagging indicator may cause slightly delayed entries or exits
  3. Parameter sensitivity: Strategy performance heavily depends on MACD parameter settings
  4. Market environment dependency: Strategy performs better in trending markets
  5. Cost consideration: Frequent trading may incur high transaction costs

Strategy Optimization Directions

  1. Introduce volatility filters to adjust position sizes in high volatility environments
  2. Add trend strength indicators to improve strategy adaptation in different market conditions
  3. Optimize MACD parameters, consider dynamic parameter adjustment based on market characteristics
  4. Enhance stop-loss mechanisms, suggest adding trailing stops or fixed stops
  5. Consider adding volume filters to improve signal reliability

Summary

The VWAP-MACD dual indicator strategy provides reliable technical support for trading decisions by combining volume-weighted and momentum analysis. The strategy design is reasonable, logic is clear, and it has good practicality and scalability. Through continuous optimization and risk management improvements, this strategy has the potential to achieve stable returns in actual trading. Traders are advised to conduct thorough backtesting before live implementation and adjust parameters according to specific market characteristics.

Source Pine Script

/*backtest
start: 2025-01-08 00:00:00
end: 2025-02-06 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("VWAP + MACD Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// VWAP Calculation
vwapValue = ta.vwap(close)

// MACD Settings
fastLength = input.int(12, title="MACD Fast Length")
slowLength = input.int(26, title="MACD Slow Length")
signalSmoothing = input.int(9, title="MACD Signal Smoothing")

// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
macdHistogram = macdLine - signalLine

// Plot VWAP
plot(vwapValue, color=color.orange, title="VWAP")

// Plot MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
plot(macdHistogram, color=(macdHistogram >= 0 ? color.green : color.red), style=plot.style_histogram, title="MACD Histogram")

// Long Condition: MACD crosses above Signal and price is above VWAP
longCondition = ta.crossover(macdLine, signalLine) and close > vwapValue
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short Condition: MACD crosses below Signal and price is below VWAP
shortCondition = ta.crossunder(macdLine, signalLine) and close < vwapValue
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Long: MACD crosses below Signal or price crosses below VWAP
exitLong = ta.crossunder(macdLine, signalLine) or close < vwapValue
if (exitLong)
    strategy.close("Long")

// Exit Short: MACD crosses above Signal or price crosses above VWAP
exitShort = ta.crossover(macdLine, signalLine) or close > vwapValue
if (exitShort)
    strategy.close("Short")

Published by ChaoZhang on the FMZ strategy square · last modified 2025-02-08. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Quantitative-Momentum-Trading-VWAP-MACD-Dual-Indicator-Trend-Following-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open