Volume-Weighted MACD Indicator: Formula, Settings and How to Read It
Volume-Weighted MACD keeps the structure of Gerald Appel's MACD but replaces both moving-average legs with volume-weighted moving averages: the line is VWMA(fast) − VWMA(slow) of the close, the signal is an EMA of that line, and the histogram is the difference between the two. Bars that traded more size therefore weigh more in the calculation than quiet bars.
Senzoukria · Indicators · Updated September 2026
Volume-Weighted MACD ships with the Senzoukria desktop app, in the Volume group of the indicator catalogue. It is drawn in its own panel below the chart.
What Volume-Weighted MACD measures
Each leg is the sum of close × volume over N bars divided by the sum of volume over the same N bars, so the average follows the prices where trading actually took place rather than treating every bar alike. Subtracting the slow leg from the fast one gives a momentum value expressed in the instrument's price units. The signal stays an ordinary EMA of that value: the line is no longer a price, and weighting it by volume a second time would have no dimensional meaning. Defaults are Appel's 12, 26 and 9. On futures, where an overnight session and a cash session can carry very different volume, the reading separates clearly from a standard MACD, which is why the catalog ships both.
The formula, as implemented
This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
Volume-Weighted MACD — le MACD d'Appel dont les deux jambes sont des VWMA au lieu d'EMA : vwmacd = VWMA_fast(close) − VWMA_slow(close) signal = EMA_signal(vwmacd) (sur chaque segment défini de vwmacd) hist = vwmacd − signal (point seulement si les deux existent) avec VWMA_N = Σ_N(close·volume) / Σ_N(volume). POURQUOI : le MACD classique traite toutes les barres comme égales. En substituant le VWMA, les barres à gros volume pèsent davantage dans les deux moyennes — le croisement se déclenche sur la dynamique du prix RÉELLEMENT ÉCHANGÉ, pas sur celle des barres creuses de nuit. Sur des futures dont les sessions ont des profils de volume très différents, l'écart avec le `macd` (momentum.ts) est franc, ce qui justifie de livrer les deux. CONVENTION SIGNAL : la ligne signal reste une EMA du vwmacd (choix de TradingView et de la plupart des implémentations « VW-MACD ») — le vwmacd n'est plus un prix, le pondérer une seconde fois par le volume n'aurait pas de sens dimensionnel. Défauts 12/26/9 (Appel). Warm-up : vwmacd à partir de l'indice max(fast, slow) − 1, signal N_signal−1 barres plus tard. Σvolume = 0 sur une fenêtre VWMA → null (0/0). Le signal conserve son passé et réamorce une SMA de N_signal valeurs consécutives après chaque trou, puis reprend l'EMA. Les segments ne sont pas recollés. Sorties : [ligne VW-MACD, ligne signal, histogramme].
How to read it
- A crossing between the line and its signal marks a change in the balance between the fast and slow volume-weighted averages. Read it as a description of that balance, not as an instruction to trade.
- The histogram is the line minus the signal and is drawn only where both values exist. Its sign shows which side of the signal the line sits on; the change in its height shows whether the gap is widening or narrowing.
- Zero on this indicator is where the fast and slow VWMA are equal. Crossings of zero and crossings of the signal are distinct events and rarely fall on the same bar.
- Put it next to the standard MACD on the same instrument: where the two disagree, the difference comes from bars whose volume was unusually high or low compared with their neighbours.
- Values carry the instrument's price units, so 2.5 on one contract means nothing in relation to 2.5 on another. Judge extremes against the indicator's own recent range on that symbol.
Parameters and defaults
Fast VWMA defaults to 12 and accepts 1 to 200; Slow VWMA defaults to 26 and accepts 1 to 500. Bringing the two lengths closer produces more frequent crossings of the signal, spreading them apart produces fewer and later ones. Signal EMA defaults to 9 and accepts 1 to 200: a shorter signal follows the line more closely and flattens the histogram, a longer one lags and stretches it. Four color settings cover the line, the signal and the positive and negative histogram bars, and none of them change the calculation.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Fast VWMA | number | 12 | 1 – 200 |
| Slow VWMA | number | 26 | 1 – 500 |
| Signal EMA | number | 9 | 1 – 200 |
What it does not show
Both legs are moving averages, so every value trails the price that produced it. The warm-up alone consumes max(fast, slow) − 1 bars before the line begins, and the signal starts the signal period minus one bar after that. If the sum of volume over a VWMA window is zero the average is undefined and nothing is returned, which cuts the series into segments; when data resumes, the signal rebuilds from a simple average of the first N consecutive values before returning to its exponential formula. Segments on either side of a hole are not stitched together, so a level compared across one is not continuous. The indicator also sees closes and total volume only — never which side was the aggressor — so it can neither confirm nor contradict what a footprint or a delta series shows, and on instruments whose reported volume is partial or aggregated the weighting inherits that distortion.
Using it in Senzoukria
Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.
Related indicators
- Volume — Volume
- Buy/Sell Volume — Volume
- Average Trade Size — Volume
- Volume ROC % — Volume
- Relative Volume — Volume
- Trade Count — Volume
See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.
Frequently asked questions
- What is the difference between MACD and volume-weighted MACD?
- A standard MACD subtracts two exponential moving averages, which give every bar the same influence whatever traded on it. Volume-Weighted MACD substitutes volume-weighted moving averages, so bars that traded more size move both legs more. The two readings separate most on instruments whose sessions carry very uneven volume, such as futures with a quiet overnight session.
- Does the signal line of a VW-MACD use volume as well?
- No. The signal is an exponential moving average of the VW-MACD line, which is the convention followed by most volume-weighted MACD implementations. The line is a momentum value rather than a price, so applying a volume weighting to it a second time would have no dimensional meaning. Only the fast and slow legs are volume weighted.
- What happens to the indicator when a window has no volume at all?
- The volume-weighted average becomes a division by zero, so no value is produced for that window and the series stops instead of printing a substituted number. Once volume returns, the signal line re-seeds from a simple average of the first N consecutive values before switching back to its exponential formula. The stretches before and after are treated as separate segments, so the line is never drawn across the hole.