MACD Volume Reversal Trading Strategy

Author: ChaoZhang, Date: 2024-02-05 10:26:23



The MACD Volume Reversal Trading Strategy is a technique that combines the Moving Average Convergence Divergence (MACD) indicator with volume data to identify potential trend reversal or continuation points in financial markets. The name reflects how the strategy utilizes the combination of MACD and volume to detect reversal patterns. It can help traders increase profit opportunities while using volume to filter out false signals.

Strategy Logic

Core components:

  1. The MACD indicator is used to identify potential trend reversals. Bearish crossovers (MACD line crossing below signal line) are bullish signals, while bullish crossovers are bearish signals.

  2. Volume is used to confirm MACD signals. Trading signals are only triggered when there is a significant surge in volume. This helps to filter out false signals.

  3. A take profit mechanism exits positions once a predefined profit target is reached.

Implementation process:

  1. Compute MACD indicator and signal line with custom parameters.

  2. Identify MACD bearish crossover (bear signal) along with significant increase of volume compared to previous bar. Trigger short entry signal.

  3. Identify MACD bullish crossover (bull signal) with volume expansion. Trigger long entry.

  4. Set take profit levels at entry price multiplied by profit ratio preset. Auto exit when take profit reached.

Advantage Analysis

  • Combining MACD and volume filters out some false signals and avoids unnecessary losses.

  • MACD reflects overbought/oversold conditions well in short term. Volume confirmation allows capturing reversals.

  • Standardized MACD settings facilitate usage.

  • Adjustable parameters match different products and trading styles.

Risk Analysis

  1. MACD is a lagging indicator, with certain delays. Trend may have moved considerably once signal triggers.

  2. Volume surges could be misinterpreted. For example, gap openings with spikes in volume might be invalid moves.

  3. Difficult to predict strength and duration of mean reversions. Profits could be erased by new pushing highs/lows.


  1. Incorporate more technical indicators like Bollinger Bands, RSI to assess reliability of MACD signals.

  2. Optimize MACD parameters to better fit market conditions.

  3. Employ conservative stop loss to limit further losses.

Optimization Directions

  1. Optimize MACD combinations based on product and timeframe to improve accuracy.

  2. Add more technical indicators like KDJ, Bollinger Bands for combinational signals.

  3. Set dynamic volume multiplier to adapt to changing market conditions.

  4. Enhance profit ratio and drawdown ratios.


The MACD Volume Reversal Trading Strategy improves signal accuracy by requiring additional volume confirmation for MACD reversals. It helps capturing key reversal points while avoiding unnecessary losses from false signals. The strategy is simple and easy to implement, providing practical trade guidance. However, traders still need to incorporate more indicators for validation and risk control in live trading. With continuous optimization, testing and risk management, this strategy can achieve consistent excess returns.

start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]

strategy("MACD Anti-Pattern Detector with Volume", shorttitle="MACD-APD-Vol", overlay=true)

// MACD settings
fastLength = input(3, title="Fast Length")
slowLength = input(10, title="Slow Length")
signalSmoothing = input(16, title="Signal Smoothing")
takeProfitPct = input(10.0, title="Take Profit (%)") / 100
volumeMultiplier = input(1.0, title="Volume Multiplier")

[macd, signal, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// Detect anti-patterns with volume confirmation
bullishAntiPattern = ta.crossunder(macd, signal) and volume > volume[1] * volumeMultiplier
bearishAntiPattern = ta.crossover(macd, signal) and volume > volume[1] * volumeMultiplier

// Entry conditions
if (bullishAntiPattern)
    strategy.entry("Short", strategy.short)

if (bearishAntiPattern)
    strategy.entry("Long", strategy.long)

// Take profit conditions
strategy.exit("Take Profit Long", "Long", limit=strategy.position_avg_price * (1 + takeProfitPct))
strategy.exit("Take Profit Short", "Short", limit=strategy.position_avg_price * (1 - takeProfitPct))

// Highlight anti-patterns
plotshape(series=bullishAntiPattern, title="Bullish Anti-Pattern", style=shape.triangledown, location=location.abovebar,, size=size.small, text="PUT")
plotshape(series=bearishAntiPattern, title="Bearish Anti-Pattern", style=shape.triangleup, location=location.belowbar,, size=size.small, text="CALL")