$$$ VSA DIGGA $$$

$$$ VSA DIGGA $$$ ver1.0
A narrow bar on low volume is the market saying "nobody here". VSA DIGGA draws the supply and demand bases those bars reveal, names each one with the VSA, Wyckoff and Crabel events that describe it, keeps only the ones that are still alive — and keeps score of itself, per event, on your symbol.
Tom Williams built Volume Spread Analysis on one observation: the professional money shows itself not in the bars that move, but in the bars that refuse to. A quiet down-bar in an uptrend pull-back that nobody sells into is No Supply. A quiet up-bar in a downtrend rally that nobody buys is No Demand. Where those bars cluster is where the next leg is being prepared.
VSA DIGGA finds those bases, draws them as zones, and does three things most zone indicators do not.
1. Every threshold is a percentile of your own chart
There is no "spread below 0.5 × average" here. A bar is narrow when its high-low spread ranks in the quietest fifth of the last 200 bars, low-volume when its volume does. Wide, high and ultra-high are the 80th, 80th and 95th percentiles. One setting serves gold, an index CFD, a coin and a currency pair, because each symbol defines its own normal.
2. A base is confirmed by its departure — and only live zones stay on the chart
A base bar starts a zone in a FORMING state: faint, dotted, unscored, unalerted. Narrow bars come in clusters, and a cluster that overlaps a forming zone widens it and adds its events instead of stacking a second box. The zone becomes a zone when price leaves it the right way — a close above a demand base, below a supply base. Williams: the following bar's close in the expected direction is the trigger. A close the wrong way while forming, or no departure within 20 bars, cancels it quietly.
This rule was measured before it was written. Without it, on XAUUSD, 60-70% of bases were "broken" while price was still building them, and the chart held two zones at a time.
A confirmed zone then lives until a close beyond its far side breaks it, or until nobody has touched it for 300 bars. Every zone is widened around its bar to at least one median spread, because a base is an area and the bar that revealed it is by definition tiny.
3. Theory as tags, not as a score
Each zone carries the events that describe it, as text on its label and in full on its tooltip. No weights, no 0-100. You read the events; the scoreboard reads them back to you.
On the base bar itself:
In the bars just before it (context, 5-bar window):
A zone with at least one of NS, ND, TEST, NR7, SV, BC, UT or SPR is drawn strong — solid border, fuller fill. NR4 and ID alone do not promote it. Every tag has its own switch, and every switch carries the full definition.
The scoreboard
Per kind and per tag: zones confirmed, zones tested, and how often a tested zone held — travelled at least one zone height in its direction after its first test — before a close broke it. A zone price never came back to proves nothing and is not scored; neither is one that expired, or a base that never departed. The status line counts all of them so the table can be checked against itself, and the last 50 scored zones stay on the chart, frozen where they died, marked ✓ or ✗, so the number can be checked against the picture.
What it measured during development — XAUUSD, volume ignored (pure price rules), default settings:
Read those for what they are: the tool describing a chart, with a modest bar ("one zone height") and no control row yet. A held rate without a baseline is a description, not an edge. The point is that the same table runs on your symbol, your timeframe, your settings, and will tell you which events carry anything there.
Alerts
One alert() call per event — a zone confirmed, a strong zone confirmed, a zone tested, its midline touched, a zone held then broken, a zone broken — so a single "Any alert() function call" alert per chart catches everything, with the zone's kind and tags in the message. Six alertconditions for anyone who wants them separately.
Honest limits
Settings worth touching
Narrow spread / Low volume percentile are the sensitivity. Min zone height (× median spread) and Departure within shape what counts as a base. Held = travel × height is the scoreboard's bar — raise it and watch the held rates fall; where they fall slowest is where the zones on your chart actually work. Show zone history keeps the last N scored zones. The palette follows a bright or dark chart on its own.
Release notes :
Successor to the "NSF/NBF Boxes" script. What changed from that draft, and why:
A narrow bar on low volume is the market saying "nobody here". VSA DIGGA draws the supply and demand bases those bars reveal, names each one with the VSA, Wyckoff and Crabel events that describe it, keeps only the ones that are still alive — and keeps score of itself, per event, on your symbol.
Tom Williams built Volume Spread Analysis on one observation: the professional money shows itself not in the bars that move, but in the bars that refuse to. A quiet down-bar in an uptrend pull-back that nobody sells into is No Supply. A quiet up-bar in a downtrend rally that nobody buys is No Demand. Where those bars cluster is where the next leg is being prepared.
VSA DIGGA finds those bases, draws them as zones, and does three things most zone indicators do not.
1. Every threshold is a percentile of your own chart
There is no "spread below 0.5 × average" here. A bar is narrow when its high-low spread ranks in the quietest fifth of the last 200 bars, low-volume when its volume does. Wide, high and ultra-high are the 80th, 80th and 95th percentiles. One setting serves gold, an index CFD, a coin and a currency pair, because each symbol defines its own normal.
2. A base is confirmed by its departure — and only live zones stay on the chart
A base bar starts a zone in a FORMING state: faint, dotted, unscored, unalerted. Narrow bars come in clusters, and a cluster that overlaps a forming zone widens it and adds its events instead of stacking a second box. The zone becomes a zone when price leaves it the right way — a close above a demand base, below a supply base. Williams: the following bar's close in the expected direction is the trigger. A close the wrong way while forming, or no departure within 20 bars, cancels it quietly.
This rule was measured before it was written. Without it, on XAUUSD, 60-70% of bases were "broken" while price was still building them, and the chart held two zones at a time.
A confirmed zone then lives until a close beyond its far side breaks it, or until nobody has touched it for 300 bars. Every zone is widened around its bar to at least one median spread, because a base is an area and the bar that revealed it is by definition tiny.
3. Theory as tags, not as a score
Each zone carries the events that describe it, as text on its label and in full on its tooltip. No weights, no 0-100. You read the events; the scoreboard reads them back to you.
On the base bar itself:
- NS — No Supply. Down-bar, narrow, volume below each of the previous two bars. Demand.
- ND — No Demand. Up-bar, narrow, volume below each of the previous two bars. Supply.
- TEST — a low under the prior low, close in the upper half, low volume — and a Stopping Volume or Spring within the last 5 bars. The bar only asks the question; without the climax before it, there is nothing to test.
- NR7 / NR4 — Crabel's narrowest range of the last 7 or 4 bars. Contraction before expansion. NR7 is shown alone when both hold.
- ID — inside bar.
In the bars just before it (context, 5-bar window):
- SV — Stopping Volume / Selling Climax. Wide down-bar, high volume, closing off its lows.
- BC — Buying Climax. Wide up-bar, ultra-high volume, above the swing high.
- UT — Upthrust. Above the swing high, closes in its lower third, high volume.
- SPR — Spring. Under the swing low, closes back above it in its upper half. No volume rule: a spring on low volume is the strongest kind.
A zone with at least one of NS, ND, TEST, NR7, SV, BC, UT or SPR is drawn strong — solid border, fuller fill. NR4 and ID alone do not promote it. Every tag has its own switch, and every switch carries the full definition.
The scoreboard
Per kind and per tag: zones confirmed, zones tested, and how often a tested zone held — travelled at least one zone height in its direction after its first test — before a close broke it. A zone price never came back to proves nothing and is not scored; neither is one that expired, or a base that never departed. The status line counts all of them so the table can be checked against itself, and the last 50 scored zones stay on the chart, frozen where they died, marked ✓ or ✗, so the number can be checked against the picture.
What it measured during development — XAUUSD, volume ignored (pure price rules), default settings:
- 15m: 704 zones confirmed, 68% tested, 54% of tested zones held one height. 765 forming bases cancelled before departure.
- 1H: 900 zones, 70% tested, 65% of demand and 55% of supply zones held.
- Spring was the best-scoring tag on both (62-68%), on 31 and 46 tested zones — too few to call.
Read those for what they are: the tool describing a chart, with a modest bar ("one zone height") and no control row yet. A held rate without a baseline is a description, not an edge. The point is that the same table runs on your symbol, your timeframe, your settings, and will tell you which events carry anything there.
Alerts
One alert() call per event — a zone confirmed, a strong zone confirmed, a zone tested, its midline touched, a zone held then broken, a zone broken — so a single "Any alert() function call" alert per chart catches everything, with the zone's kind and tags in the message. Six alertconditions for anyone who wants them separately.
Honest limits
- Tick volume is not volume. On forex and CFD feeds the volume is a tick count; the status line says so. "Ignore volume" turns every volume rule off and keeps NR7, NR4, ID and Spring, which are pure price.
- Nothing repaints. Every state change happens on a closed bar. The forming box is visible while it forms; no verdict flickers.
- A zone is one bar's area, widened. On a noisy symbol and a low timeframe most zones live a few dozen bars. That is the finding, not a bug — the history layer is there so you can see it.
Settings worth touching
Narrow spread / Low volume percentile are the sensitivity. Min zone height (× median spread) and Departure within shape what counts as a base. Held = travel × height is the scoreboard's bar — raise it and watch the held rates fall; where they fall slowest is where the zones on your chart actually work. Show zone history keeps the last N scored zones. The palette follows a bright or dark chart on its own.
Release notes :
Successor to the "NSF/NBF Boxes" script. What changed from that draft, and why:
- Percentile thresholds replace the spread-SMA and volume-SMA multipliers. Narrow = 20th percentile of the last 200 bars, wide = 80th, ultra volume = 95th. One setting for every symbol.
- Only live zones on the chart. A zone dies on a close beyond its far side or after 300 untouched bars. The last 50 scored zones stay frozen with ✓ / ✗ so the picture matches the table.
- A base is confirmed by its departure. Measured on XAUUSD: without this rule 60-70% of bases were "broken" while still forming. Forming zones are faint and unscored; a close the wrong way or 20 bars without departure cancels them.
- Ten VSA / Wyckoff / Crabel tags — NS, ND, TEST, NR7, NR4, ID, SV, BC, UT, SPR — each with its full definition on its switch and on the zone's tooltip. The Williams bar-direction rule (down-bar for No Supply, up-bar for No Demand) is now part of the definition; the old close-bias filter stays as an optional stricter base.
- A scoreboard per kind and per tag: zones, tested, held %. Untested, expired and never-departed bases are counted but never scored.
- One alert() per event so a single "Any alert() function call" covers a chart.
- Gone: Test mode, fixed box extension, body-only boxes, auto-extend (zones always follow the chart now).
PINE DIGGA · Measured indicators for gold, crypto and the Nasdaq · pinedigga.com
Haftungsausschluss
Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.
PINE DIGGA · Measured indicators for gold, crypto and the Nasdaq · pinedigga.com
Haftungsausschluss
Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.