A volume spike on its own tells you little. Also, volume Spike Accumulation, a volume spike indicator TradingView traders can add in seconds, asks where that spike closed. The script flags any bar trading at least 1.8 times its 20-bar volume average. Then it reads the close position inside that bar’s own range. A close in the top third reads as accumulation. Indeed, a close in the bottom third reads as distribution.
It is free and open source. Still, you can add it to any chart from the Volume Spike Accumulation script page on TradingView, and the full Pine source is published there for you to read.
What Volume Spike Accumulation plots on the price chart
The chart carries a 9-bar EMA that changes colour with the active bias: green while accumulation holds, red while distribution holds, grey when flat. Thus, a faint background tint carries the same bias. Classified spike bars get painted directly, so you spot them without a volume pane. Hence, entries print a three-layer label marked VSA below or above the bar. An eight-row dashboard reports state, relative volume, close position as a percentage, bias, spike count, position and bars since the last signal. Next, the script plots no volume histogram.

How Volume Spike Accumulation is built
Classifying the spike
The baseline is a 20-bar simple moving average of volume. Then, a bar counts as a spike when its volume reaches 1.8 times that average. You can push the multiplier from 1.0 up to 6.0. Yet, the dashboard shows the live figure as relative volume, so 2.4x means the bar traded 2.4 times the 20-bar norm.
Classification then uses close minus low, divided by high minus low. Truly, that returns 0 at the low and 1 at the high. A spike closing at 0.66 or higher counts as accumulation, since demand absorbed the supply that arrived. Plainly, a spike closing at 0.34 or lower counts as distribution. One input sets both edges, because the distribution side mirrors your value. Also, spikes landing between the two get no label. The dashboard calls them a neutral spike.
From bias to entry
A classified spike does not fire a trade. It latches a bias instead. Accumulation sets the bias long, distribution sets it short, and the bias holds until the opposite spike appears. Indeed, that latch is why the background tint can run for dozens of bars after a single spike.
Entries then time off a 9-bar EMA. In a long bias, the script waits for a close crossing above that EMA. In a short bias, it waits for a close crossing below. Still, turn on Spike-Only Mode and the entry moves back to the classified spike bar itself, which produces far fewer signals.
Three gates finish the job. Thus, the position state must sit flat or opposite, so the script never stacks two longs in a row. Five bars must have passed since the last signal. Hence, and the bar must close, because every signal checks the confirmed-bar flag. An optional session window can restrict signals to hours you set. Next, it defaults to 0000-2400, which lets everything through.
How to read the signals
Start with the state row. Then, ACCUMULATION with relative volume near 3x and a close position above 80 percent describes a bar where demand met heavy supply and won. The same 3x spike closing at 20 percent says the opposite.
The EMA colour tells you what the script waits for next. Yet, green means it wants a close above the line. Red means it wants a close below. Truly, grey means no classified spike has fired yet in the loaded history.
Signals arrive one bar after the cross completes. Plainly, that delay is the cost of not repainting. Size positions with the next bar’s range in mind, since your fill sits at that open rather than at the cross itself.

Every Volume Spike Accumulation setting explained
The script exposes 15 inputs, grouped in the settings panel exactly as shown below. Defaults are the published values.
Volume
| Setting | What it does | Default | Range |
|---|---|---|---|
| Volume MA Length | Baseline the spike is measured against. | 20 | 5 to 100 |
| Spike x Volume-MA | Volume must exceed k x its MA to count as a spike. | 1.8 | 1.0 to 6.0 |
| Close Position Thresh | Spike close in top (1-x) of range = accumulation; bottom = distribution. | 0.66 | 0.5 to 0.95 |
| ATR Length | Sets the atr length used in the calculation. | 14 | 5 to 50 |
Signal Logic
| Setting | What it does | Default | Range |
|---|---|---|---|
| Entry Reclaim EMA | After a spike sets a bias, a close-cross of this EMA in that direction times the entry. | 9 | 2 to 50 |
| Spike-Only Mode | On = fire strictly on the classified spike bar. Off = EMA reclaim inside the active spike bias (more signals). | off | on / off |
| Cooldown Bars | Sets the cooldown bars used in the calculation. | 5 | 1 to 40 |
Filters
| Setting | What it does | Default | Range |
|---|---|---|---|
| Restrict to Session | Toggles restrict to session on the chart. | off | on / off |
| Session Window | Controls session window. | 0000-2400 |
Visual
| Setting | What it does | Default | Range |
|---|---|---|---|
| Show Dashboard | Toggles show dashboard on the chart. | on | on / off |
| Show 3-Layer Glow | Toggles show 3-layer glow on the chart. | on | on / off |
| Show Reclaim EMA | Toggles show reclaim ema on the chart. | on | on / off |
| Buy Color | Colour used for buy color. | #34e89e | |
| Sell Color | Colour used for sell color. | #ff5f7e | |
| Dashboard BG | Colour used for dashboard bg. | color.new(#04140f, 14) |

Alerts built into Volume Spike Accumulation
The script ships 15 alert conditions. Also, open the alert dialog on the chart, pick the indicator as the condition source, then choose the event you want. Alerts fire on the close of the bar, so they follow the same confirmed-bar rule the on-chart signals use.
- VSA Buy
- VSA Sell
- VSA Any Signal
- VSA Accumulation
- VSA Distribution
- VSA Volume Spike
- VSA Classified
- VSA EMA Up
- VSA EMA Down
- VSA Bias Bull
- VSA Bias Bear
- VSA Spike Tick
Other markets and timeframes
The two core tests both stay relative. Indeed, volume gets compared to its own 20-bar average, and the close gets measured inside the bar’s own range. Neither uses pip values or lot sizes, so the defaults carry to gold, indices, crypto and stocks. Still, the catch is the volume feed. Spot forex reports broker tick volume, not exchange volume, so a spike there means many price updates rather than many contracts. On futures and equities the same code reads real traded size.

Limitations worth knowing
This tool classifies bars. Thus, it is not a trade plan. The script sets no stop, no target and no risk model, and it never closes a position. Hence, it also carries no view on higher-timeframe trend.
The bias latch has no expiry. Next, one accumulation spike can hold the bias long after the move it described has finished. Only an opposite spike clears it, so on quiet stretches the EMA colour may describe stale information.
The ATR Length input sits in the panel, yet the signal path never uses it. Then, volume drives everything else, so charts without a volume feed produce no spikes at all. And a spike closing in the middle of its range gets no classification, even when it clearly mattered.
Get Volume Spike Accumulation on TradingView
Open Volume Spike Accumulation on TradingView
If you also trade MetaTrader, the MT4 and MT5 indicator library is available below.
Get the complete indicator library
One email unlocks the full MT4 and MT5 indicator library. Yet, this TradingView script stays free on TradingView – the button above adds it to your chart.
Using it alongside MetaTrader
Adding a script on TradingView takes one click, so there is no install step here. Truly, if you want the same idea on MetaTrader, the MT4 and MT5 indicator installation guide walks through copying files into the data folder and attaching them to a chart. You can also browse the full MetaTrader indicator library, the MT4 indicators section, or the other free TradingView scripts published on this profile. For related chart tools see the MT5 indicators section and the forex trading strategies guides.
External references
- Money flow index on Wikipedia
- On-Balance Volume at Investopedia
- CandleVolume at StockCharts ChartSchool
Frequently asked questions
Does Volume Spike Accumulation repaint?
The arrows do not. Plainly, every buy and sell checks barstate.isconfirmed, so they print after the bar closes and then stay put. The bar painting and the background bias tint read the forming bar, so those two can still change until it closes.
What counts as a volume spike here?
Volume at or above 1.8 times its 20-bar simple moving average, using the default. Also, raise the multiplier toward 6.0 for rarer, larger events. Lower it toward 1.0 and the script classifies far more bars.
Why did an obvious accumulation spike produce no arrow?
Default mode waits for the EMA reclaim, not the spike. Indeed, the bar must also clear the 5-bar cooldown, the position state must not already sit long, and the bar must close. Switch on Spike-Only Mode to fire on the spike bar itself.
Does it work on spot forex?
Yes, with one caveat. Still, your broker reports tick volume rather than exchange volume, so relative volume measures update activity. The ratio still serves as a proxy, though the same chart on two brokers can classify slightly different bars.
How much should I rely on this indicator?
Treat it as one input, not a decision. Thus, it is a chart analysis tool, not trading advice. Test it on your own markets and timeframes before relying on it. Results are not guaranteed; past performance is not indicative of future results.
