ATAS/X Indicator · Order Flow · Delta

PND Rolling Bucket CVD

Cumulative delta split by the size of the order behind it. Four configurable buckets, each accumulating its own CVD over a rolling window or the session — so you can see the one-lot crowd and the size players as separate lines instead of one number that averages them together.

PlatformATAS/X
CategoryOrder Flow · Delta
Buckets4 · fully configurable
NeedsYour feed only · no key
FilePNDRollingBucketCVD.dll
PriceFree · Community
Running on ATAS/X — NQ 5-minute
PND Rolling Bucket CVD running in its own sub-panel beneath an NQ 5-minute chart. Two buckets are enabled: 1-only in red and 10+ in lime. The on-panel legend reads 1 only -393 and 10+ 1445, and the two lines sit on opposite sides of zero at the right-hand edge.

Two buckets on NQ. The legend top-left is the readout — 1 only −393, 10+  1445. They cross repeatedly through the middle of the session and finish on opposite sides of zero: the one-lot crowd net sellers, size net buyers. A single CVD line would have shown you one number somewhere between the two.

The idea

One CVD line hides who is doing the trading

Ordinary cumulative delta adds up every aggressive buy and subtracts every aggressive sell. A thousand one-lot orders and a single thousand-lot order move it by exactly the same amount. But they are not the same event, and they rarely mean the same thing.

This indicator runs that same calculation several times in parallel, each time counting only the orders inside a size range you define. The result is one line per bucket, so a session where retail sold into institutional buying looks completely different from one where everybody sold together — even though a single CVD line would show you a similar number in both cases.

Buckets

Four size filters, and they may overlap on purpose

Each bucket has a min lots and a max lots, where a max of 0 means no upper limit. An order counts toward a bucket when its size falls inside that range. Buckets are evaluated independently, so the same order can land in more than one — and the default set relies on that.

125102040ORDER SIZE (LOTS, LOG SCALE)1 onlyretail / algo noise2+→everything but single lots10+→size with intent

The default set. 10+ is deliberately a subset of 2+: 2+ answers “is anything other than single lots happening?” while 10+ answers “is real size happening?” Comparing a bucket against a superset of itself is the whole point, not a double-count.

1 only
min 1, max 1 — exactly single-lot orders. On NQ these are roughly three-quarters of all orders but under half the volume, so they dominate the count and not the money.
2+
min 2, max 0 — everything that is not a single lot. Useful as a confirmation line: if 2+ and 10+ disagree, the mid-sized orders are doing something different from the big ones.
10+
min 10, max 0 — size with intent. On NQ the 99th percentile order is about 10 lots, so this bucket is genuinely the tail rather than an arbitrary round number.
Bucket 4 — yours
Off by default. Set it to whatever your instrument justifies: a 50+ line on NQ, or a much lower threshold on a thinner contract where 10 lots is already enormous.
Where these defaults come from
They are not guesses. Every NQ trade across 249 sessions was split into 18 size groups and tested against forward price: one-lots move against price, 10–19 contracts is the strongest single group, and a plain 2+ filter beat every big-trade-only cut. That is why the default set is 1-only / 2+ / 10+ rather than something rounder. Read the study ›
Thresholds do not transfer between instruments
10 lots is the tail on NQ. On ES it is ordinary, and on a thin contract it is a major order. Before trusting a bucket on a new instrument, look at what sizes actually print there and set the boundaries from that rather than copying the defaults across.
The setting that matters most

Why “Cumulative Trades” has to stay on

A large order rarely reaches the tape as one print. It is filled against whatever resting liquidity is there, so it arrives as a burst of smaller prints sharing a timestamp. If you size those fragments as they arrive, a 60-lot sweep is recorded as a dozen unrelated small orders — and it never reaches the 10+ bucket at all.

ONE 60-LOT SWEEP, AS IT REACHES THE TAPE11235789685512 prints, one timestampSIZED RAW → the sweep never reaches the big bucket1 ONLY2 lots2+58 lots10+0 lotsMERGED FIRST → sized as the order it actually was1 ONLY0 lots2+60 lots10+60 lots

The same 60 lots, read two ways. Note what happens to 10+: read raw it sees nothing at all, because no single fragment was big enough to qualify. With Cumulative Trades ON (the default) ATAS merges them first and the order is sized as the sweep it actually was. 2+ barely moves — it is the buckets at the edges that are destroyed.

This is not a cosmetic preference. Testing this against the NQ tape, turning the setting off inverted which bucket looked dominant — the large-order line went quiet and the small-order line absorbed its volume. That is why it is exposed as a visible option rather than hidden: if your numbers ever look strange, this is the first thing to check.

If you turn it off
The indicator switches to raw prints and every bucket boundary changes meaning. There are legitimate reasons to look at the unmerged tape, but do not compare those numbers against merged ones — they are measuring different things.
Accumulation

Rolling window, or cumulative session

Rolling (default, 15 bars)
Each line is the delta over the last N bars only, so it decays as bars age. Good for reading current pressure without the whole session's history dragging on it. Short windows are responsive and noisy; long ones are steadier and slower.
Session cumulative
Each line accumulates from the session reset and does not decay. This is the mode that answers “who has been buying all day?” — and the one where divergence between buckets proved more meaningful in testing than the rolling read.

By default the session resets on your chart's own session boundary. Turn on use custom session reset time to reset at a time you choose instead — 08:30 exchange time is the usual choice on NQ, because it starts the count at the pre-market economic releases rather than at the cash open. The time is entered in exchange time, not your local clock.

Readout

Each bucket says its own number

Every enabled bucket prints its name and current value on the panel — names on the left, values right-aligned in their own column, so the whole thing scans vertically instead of as ragged runs of text. Each bucket has its own label text colour, set separately from its line colour: on a busy chart the colour that makes a line readable is often not the one that makes small text readable against the same background.

The legend sits below the platform's own indicator caption by default. That clearance is a setting rather than a fixed number, because the caption's height moves with your platform font — if they ever touch, raise Legend clearance from top. You can also move it to any corner, change its text size, and switch off the dark backing panel.

Separately, the platform prints each bucket's current value in a marker on the right-hand axis, and that marker's background is the bucket's line colour. The value text defaults to white, which is unreadable on a bright lime or yellow bucket — so every bucket has its own Axis text color, set here to black by default rather than the platform's white. You can also switch the axis markers off altogether.

Divergence

When the small and big buckets disagree

Pick one bucket as small and one as big. Any bar where the two have opposite signs gets a marker — a dot, arrow, cross or block, placed on the big bucket's line so it reads against the series it describes. Optionally it can raise an ATAS alert, which fires once when a divergence begins rather than on every bar it persists.

Diagram of a session where the one-lot and ten-plus buckets agree early, then separate as the one-lot line turns down while ten-plus keeps rising. The stretch where they disagree is shaded and the bars are marked.

The shape to recognise. Everyone agrees into the middle of the session; then the small line rolls over while the big one keeps going. The shaded stretch is the divergence, and those bars carry the marker.

What testing actually found — and it is not intuitive
The obvious reading of “small sells while big buys” is that size is absorbing retail and price should go up. Across NQ from 2022 to 2026, these states resolved the opposite way more often than not — closer to “failed pressure continues” than to “size wins.” The effect was present in the session-cumulative read and much weaker in the rolling one. Treat a marker as a flag that the tape is unresolved, not as a direction to trade, and test it on your own instrument before acting on it. Read the full study ›

Divergence needs two different buckets, both enabled. If you point small and big at the same bucket, or at one that is switched off, it can never fire — and the panel will tell you so rather than silently showing nothing.

The research behind it

Two studies and a walkthrough

This indicator is not a hunch rendered as lines. Both of the claims the page makes — that the default buckets are the ones worth watching, and that divergence resolves the opposite way to the obvious reading — come from studies you can read in full.

On the chart

Four things worth recognising

1
All buckets on the same side of zero
Everyone is leaning the same way. There is no internal disagreement to read here — the panel is simply confirming the obvious, and you should be getting your edge from price and structure rather than from this.
2
Big bucket leads, small bucket lags
Size is committing before the crowd notices. The 10+ line pulls away from zero while 1 only is still flat or drifting the other way. This is the configuration most people are hoping to find when they install a tool like this.
3
The two disagree outright — a marked bar
One group is buying while the other sells. Read this as unresolved, not as a direction. The note above says which way these actually resolved in testing, because it is not the way most people assume.
4
A bucket is flat while the others move
That size simply is not participating. On a thin contract or outside RTH this is normal and means little; during the cash session a flat 10+ through an impulsive move is worth noticing, because it means the move is not being funded by size.
Data

What it needs, and how far back it sees

Nothing but your own broker feed in ATAS. There is no account, no API key and no PND server in the path — the indicator asks ATAS for the current session's cumulative trades, then accumulates live from there. Attaching mid-session still gives you the whole day so far.

History depth is whatever your feed serves for the current session, which on most futures feeds is the full session from its open. It does not load prior days: an order flow panel is a read on today's participants, and stitching a month of history behind it would imply a continuity that the underlying data does not have.

If a feed will not serve session history at all, the panel says so in plain language rather than drawing an empty chart — an empty panel and a quiet market look identical, and that is exactly the failure that should never be silent.

Reference

Every setting

1. Window
Accumulation mode
Rolling
Rolling window of N bars, or cumulative from the session reset.
Rolling window (bars)
15
Length of the moving window. Ignored in session mode.
Use custom session reset
off
Off uses the chart's own session boundary; on uses the time below.
Session reset time
08:30
In exchange time, not your local clock.
Cumulative Trades
ON
Merges same-instant fragments of one order before sizing it. Leave on.
2. Display
Visual style
Line
Line, or a zero-anchored histogram per bucket.
Show legend
on
Print each enabled bucket's name and current value on the panel.
Histogram layout
Overlaid
Overlaid draws every bucket at the same x; side by side splits each bar into one slot per enabled bucket so nothing hides behind anything else.
Legend position
Top left
Which corner the readout sits in.
Legend clearance from top
20
Space left for the platform's own caption above the readout. Raise it if they overlap on your chart font.
Legend text size
12
7–28.
Legend backing panel
on
Dark panel behind the readout so it stays legible over the lines.
Show values on the axis
on
The current-value markers on the right-hand axis, for every bucket and the zero line.
Show zero line
on
The zero reference across the panel.
Zero line color / width / style
—
Colour, thickness 1–10, and solid / dash / dot / dash-dot / dash-dot-dot.
Zero line axis text color
black
Value text inside the zero marker on the axis.
Show diagnostics overlay
off
Troubleshooting only — prints trade counts and bar mapping over the panel.
3–6. Bucket 1–4
Enabled
1-3 on
A disabled bucket is hidden rather than drawn flat.
Min lots
1 / 2 / 10
Smallest order size counted toward this bucket.
Max lots
1 / 0 / 0
Largest order size counted. 0 means no upper cap.
Line color
—
Line or histogram colour for this bucket.
Legend text color
—
Colour of this bucket's entry in the on-panel legend. Set independently of the line, because a line colour that reads well against the chart is not always a text colour that does.
Axis text color
black
Value text inside this bucket's marker on the right-hand axis. The marker's background is the line colour, so the platform's default white is unreadable on a bright one.
7. Divergence
Show divergence
on
Mark bars where the small and big buckets disagree in sign.
Small bucket
1
Which bucket counts as “small”. Must differ from the big one and be enabled.
Big bucket
3
Which bucket counts as “big”.
Marker style
Dot
Dot, arrow, cross or block.
Use alerts
off
Raise an ATAS alert when a divergence begins — once per state, not once per bar.
Alert file
alert1
Which ATAS alert sound to use.
Install

Three steps

Download PNDRollingBucketCVD.dll — this build targets ATAS X. Open ATAS → Help → About to check; if the title says ATAS X you are in the right place.
Put PNDRollingBucketCVD.dll in the indicators folder:
Windows: %AppData%\ATAS\Indicators\
macOS: ~/Library/Application Support/ATAS/Indicators/
Fully restart ATAS, then add PND Rolling Bucket CVD from the indicators panel (the file isPNDRollingBucketCVD.dll; the indicator inside it is listed under ProfitNotionDaily). It opens in its own sub-panel. .NET caches assemblies until the app closes, so a full quit is required — not just closing the chart.
Before you use it

What this is not

This indicator reports what has already traded. It does not predict price, it does not generate entries, and no configuration of it constitutes a strategy. The divergence marker in particular is a context flag — and as the note above explains, it resolved opposite to the intuitive reading in our own testing.

Free to use, not to resell. Trading futures carries substantial risk of loss. Nothing here is financial advice.

Questions about the indicator?
Email us — install help, settings, bug reports and feature requests.