Article

Fine-Tuning WickFlow PRO: Using the Stats Window to Calibrate Every Engine

A
Alex
Fine-Tuning WickFlow PRO: Using the Stats Window to Calibrate Every Engine

Fine-Tuning WickFlow PRO: Using the Stats Window to Calibrate Every Engine

Why this guide exists

The question I get most from users is some version of "what should I actually set this to on my chart?". It is a fair question and for a long time the only honest answer was "it depends on your instrument, your range size, your session, and what the market is doing today", which is true, but unhelpful.

Recommending absolute thresholds for a chart I cannot see has always felt wrong. A 40-Range NQ bar in a dead Asian session and a 40-Range NQ bar during the NY open are not the same animal. A 10-Range ES bar on FOMC day and the same bar on a quiet Friday afternoon carry completely different amounts of flow. The right threshold depends on what your chart is currently printing, not on what mine was printing when I sat down to write.

WickFlow PRO now ships a Stats tab (version 1.1.1) inside the toolbar settings window that closes this gap. It reads the last 100 completed bars on your chart, summarizes what they actually look like, and shows exactly what your current thresholds are asking for versus what the market is printing. Every number in it comes from your data. There are no presets to copy.

This guide walks through that window, engine by engine, and explains which stat to look at when you are tuning each one. The workflow is the same every time: open the tab, read the relevant section, decide if your current setting is asking for too much or too little, adjust, reopen the tab.

The window in one paragraph

The Stats tab is split into six sections. Market context tells you what chart you are on (instrument, tick size, typical bar height, typical bar duration). Volume & delta baseline shows the per-bar contract and delta numbers you should anchor any volume-based threshold against. Surge baseline exposes the rolling μ (mean) and σ (std-dev) the Surge engine is computing internally. Surge triggers at your current settings takes that baseline plus your current Surge inputs and tells you the concrete values a bar has to hit. Signal fires in the last 100 bars counts how often each engine has actually printed. Active zones right now shows what is currently drawn forward on your chart.

A healthy engine does not fire on every bar. Zero fires means the engine is too strict for this chart. Dozens means the signals stop meaning anything. The Signal fires section is the single fastest sanity check in the whole window.

The general workflow

Before touching any individual engine, read the three numbers at the top of the window:

  • Avg bar range (ticks): how tall a typical bar is.
  • Avg bar duration: how long a typical bar takes to form.
  • Avg bar volume: how many contracts a typical bar carries.

These three numbers are the ones every other threshold has to respect. If the Avg bar volume is 400 and you have a "minimum volume" setting at 500, the engine will almost never fire. If the Avg bar range is 10 ticks and you have a "zone ticks" setting at 20, the zone will cover the entire bar and lose its spatial meaning. Most bad tuning reduces to a single threshold being disconnected from one of these three numbers.

A second thing worth knowing: the toolbar settings window lets WickFlow recompute signals from its cached tick ladder without reloading the chart. Changes applied through that window are near-instant. Changes applied through the standard NinjaTrader indicator properties dialog force a full reload. Use the toolbar window while tuning, and you will be iterating in seconds instead of minutes.

Now, engine by engine.

Trapped Traders

The engine walks inward from the bar extreme on the losing side and accumulates aggressor volume until it has captured a configured percentage of that side's total flow. That pocket becomes the trapped zone. The signal fires only if two conditions pass: the zone holds enough volume, and the close is far enough away from it.

Which stats to read

  • Avg bar volume: sets the ceiling for Min Trapped Volume.
  • Avg bar |delta|: a rough indicator of how one-sided a bar typically is on this chart.
  • Signal fires → Trapped Traders: the feedback loop.

How to tune

Min Trapped Volume is the setting that actually scales with the instrument. A sensible starting point is somewhere between 20% and 40% of Avg bar volume. Lower is more permissive and will catch weaker rejections; higher filters for bars where a substantial chunk of one side genuinely got caught at the extreme. If the Signal fires count for Trapped Traders is zero across 100 bars but you can visually see rejection wicks on the chart, your Min Trapped Volume is above what the bars actually carry on the losing side. Drop it toward 20% of Avg bar volume and reopen the tab.

Concentration % and Min Zone Separation are both frame-invariant ratios: A 0.80 concentration means "80% of the losing side's volume must be packed at the extreme" regardless of instrument, and Min Zone Separation is expressed as a fraction of bar range, so 0.60 means the same thing on a 10-tick bar as on a 40-tick bar. You do not scale these between instruments. You adjust them because you personally want cleaner or looser signals.

Absorption

Absorption scans a band near the bar high and a band near the bar low, looking for bars where the dominant aggressive flow failed to move price. When several same-direction absorption signals appear at the same price area within a lookback window, they get promoted into a projected zone.

Which stats to read

  • Avg bar |delta|: the floor for "enough aggressive flow to call it absorbed".
  • Avg bar range (ticks): sets the ceiling for Absorption Zone Ticks.
  • Signal fires → Absorption: frequency check.
  • Active zones → Absorption zones: are zones accumulating without retiring?

How to tune

Absorption Min Delta is tested against the whole-bar net delta (not a per-level number). A reasonable starting point is somewhere around Avg bar |delta|, which means you are filtering for bars whose flow was at least typical for this instrument. Raise it if you want only bars that carried heavier-than-average one-sided flow.

Absorption Zone Ticks is the setting most likely to be silently broken when you move between chart configurations. It is an absolute distance in ticks from the bar extreme. If your Avg bar range is 10 ticks and you leave this at 20, the band wraps the entire bar and the engine loses its ability to distinguish "absorbed at the edge" from "absorbed in the middle". A safer default is somewhere between one-third and half of Avg bar range. Check this explicitly every time you change timeframe or range size.

If the Absorption zones counter in the Active zones section keeps growing across a session without shrinking, your retirement mode is too loose. Switch to Touch, or reduce the zone lifespan.

Stacked Imbalances

Stacked Imbalances compares ask volume at each price level against bid volume one tick below (bullish) and vice versa (bearish), flagging consecutive levels where the diagonal ratio exceeds the configured threshold.

Which stats to read

  • Avg volume / price level: the single most important stat for this engine.
  • Avg bar range (ticks): tells you how many levels a bar is made of.
  • Signal fires → Stacked Imbalances: frequency check.

How to tune

Imbalance Min Volume (the per-level floor) has to sit below Avg volume / price level, otherwise no level can ever participate in the diagonal test. Start at roughly the value shown in the stats window or slightly above it, which is the point where "enough contracts traded at this level to take the ratio seriously". If you set it well above the average, most levels are disqualified and Stacked Imbalances will go quiet.

Imbalance Ratio (default 3.0) is frame-invariant in principle, but in practice smaller bars with fewer contracts per level make strict 3.0 ratios statistically harder to clear. If Signal fires → Stacked Imbalances is zero on a chart where you can see obviously lopsided prints, the first thing to try is lowering the ratio by half a point before touching anything else.

Stacked Min Levels is usually left at 3 (the standard footprint definition). Raising to 4 makes the filter much stricter and is a valid choice for traders who only want the cleanest stacks.

Surge (Magnitude, Intensity, Speed)

Surge is the engine where the Stats window pays for itself on its own. Surge internally tracks rolling μ and σ of several distributions (bar delta, aggressor size per print, volume per second) and fires when a live bar exceeds μ + (your configured sigma) × σ. The Stats window exposes both the raw distributions and the derived triggers, so you can see exactly what threshold a bar needs to beat.

Which stats to read

Surge baseline section:

  • Lookback / filled: stats are unreliable until "filled" approaches your Lookback.
  • Delta μ ± σ: how large and how noisy bar delta is on this chart.
  • Buy size / print μ ± σ and Sell size / print μ ± σ: avg aggressor size per market-data print. On liquid futures this often sits around 1.0–1.5 contracts per tick. That is normal, not a bug.
  • Volume rate μ ± σ: contracts per second, feeds the Intensity surge path.

Surge triggers section (the important one):

  • Bull delta ≥ and Bear delta ≤: the actual bar-delta values a Magnitude surge requires right now.
  • Buy size / print ≥ and Sell size / print ≥: the aggressor-size triggers.
  • Volume rate ≥: the Intensity trigger.
  • Min dominant trades and Min dominant volume: static gates, not sigma-derived.

How to tune

The classic mistake is raising Delta Expansion "because NQ delta is big" or lowering it "because ES is small". You do not need to do that. Delta Expansion is a sigma multiplier, and σ is recomputed from the live chart, so the scaling is already handled. Changing Delta Expansion is a preference decision about whether you want surges to be common (1.0) or rare (1.5+), not a scaling correction between instruments.

What you should actually do:

  1. Look at Bull delta ≥ in the triggers section. Is that value something your bars can realistically print? Compare it against Avg bar |delta| in the Volume & delta baseline section. If the trigger is 3× the avg, you will almost never see a Magnitude surge fire. Lower Delta Expansion by 0.2.
  2. Look at Volume rate ≥: If it is wildly above what a typical bar prints (which you can sanity-check because a bar is roughly Avg bar volume ÷ Avg bar duration contracts per second), lower Intensity Expansion.
  3. Min dominant volume is the static gate and is the one setting in this engine that should scale with Avg bar volume. A starting point around 30–50% of Avg bar volume keeps thin bars out without nuking the engine.
  4. Check Signal fires → Surge: If it is zero across 100 bars, one of the triggers above is unreachable. If it is in the 20+ range, your sigmas are too low or your static gates are too lenient.

The advantage of the Stats window here is that you do not have to guess. Every derived trigger is printed as a concrete number.

Delta Participation

Delta Participation confirms price swings and compares cumulative delta across same-side swings. It fires when price keeps making new highs (or lows) but each leg carries less delta than the previous one.

Which stats to read

  • Avg bar range (ticks): to calibrate Swing Deviation against.
  • Avg bar |delta|: to calibrate Swing Absorption Min Delta.
  • Signal fires → Delta Participation: frequency check.

How to tune

Swing Deviation is the most instrument-sensitive setting in the whole indicator because it is expressed in raw ticks. A reasonable way to set it is: decide how many bars of reversal you want to count as "a real swing", then multiply that by Avg bar range. Two to three bars of reversal is a common choice. If you set Swing Deviation much smaller than Avg bar range, every minor zigzag qualifies and the engine fires constantly. If you set it much larger, pivots rarely confirm and the engine goes silent.

Swing Absorption Min Delta (for the [ABS] qualifier tag) should live somewhere around Avg bar |delta| so it flags pivot bars with heavier-than-average opposing pressure.

If Signal fires → Delta Participation is zero but you can visually see lower-conviction higher highs, Swing Deviation is almost always the culprit. Drop it by one Avg-bar-range worth of ticks and reopen the tab.

Delta Flip

Delta Flip looks for two consecutive bars that both have delta diverging from their candle direction, in opposite directions, with the second bar reversing the first.

Which stats to read

  • Avg bar |delta|: the single number this engine cares about.
  • Signal fires → Delta Flip.

How to tune

There is only one setting: Flip Min Delta: The Stats description for Avg bar |delta| explicitly suggests ~1.0–1.5× that value as a starting point, and that is a pretty good heuristic. Setting it at exactly Avg bar |delta| means both bars in the pair had at least average divergence. Setting it at 1.5× Avg bar |delta| means you only want pairs where both bars had clearly above-average hidden conviction.

If you are getting too many flips, raise it. If you never see flips on a chart where you can visually spot the two-bar pattern, lower it.

Unfinished Business

Unfinished Business checks whether the exact bar high (or low) had opposing volume remaining on the losing side of the book, which would mean the auction did not finish at that extreme.

Which stats to read

Barely any. This engine is almost parameter-free. The two things to watch are:

  • Signal fires → Unfinished Business: frequency check.
  • Active zones → Unfinished levels: are they piling up without retiring?

How to tune

Min Volume at Extreme is intentionally lenient (default 1) because even a small amount of residual volume at the exact extreme is meaningful. If you are getting too many unfinished levels and the chart is cluttered, raise the floor until the count drops to something you can actually use. If Active zones → Unfinished levels keeps climbing, shorten the zone lifespan or keep the Retest resolve mode so levels clear when price touches them.

Confluence

Confluence does not have its own numerical calibration. It aggregates same-direction signals from the other engines on the same bar and flags conflicts. The only prerequisite for it to be useful is that the other engines are themselves well-tuned. If you tune every engine so it fires 2–15 times per 100 bars, confluence will surface the actual high-conviction bars naturally. If some engines are silent and others are spamming, confluence inherits that imbalance.

A note on bar geometry (and why it matters more than the ticker symbol)

One of the more useful reframings you can make as a tuner is that the instrument is not really the variable. bar geometry is: A 40-tick NQ bar and a 10-tick NQ bar behave completely differently. A 10-tick NQ bar and a 10-tick ES bar behave more similarly than you might expect, because they contain a similar number of price levels and accumulate similar per-level contract counts given typical liquidity profiles.

This is why the Stats window reads your current chart: it does not care whether you are on NQ, ES, CL, GC, or something else. It just tells you what the bars in front of you are printing. If you switch from 40-Range to 10-Range on the same instrument, every absolute-contracts threshold in the indicator will need to come down, even though nothing about the instrument changed. The Stats window will show you by how much.

How to actually iterate

A full tuning pass on a new chart takes maybe 10 minutes with the Stats window open:

  1. Open the toolbar settings window → Stats tab. Wait until "Lookback / filled" in the Surge baseline section is filled.
  2. Look at Avg bar volume, Avg bar range, Avg bar duration. Internalize these three numbers.
  3. Walk through the Signal fires section. Any engine showing 0 is probably too strict for your chart. Any showing 20+ is probably too loose.
  4. For each engine that looks off, jump to its tab in the settings window, adjust the setting most likely to be out of scale (the volume floor, almost always), hit Apply, reopen the Stats tab. WickFlow recomputes from its cache, so this is near-instant.
  5. Repeat until every engine sits in a range you are comfortable with.

Do not try to tune every engine perfectly on the first pass. Pick the two or three signals you actually trade and get those right first. The Stats window lives inside the indicator, so you can always reopen it tomorrow on a different session and check whether your thresholds still fit.

Closing thought

Good tuning is not about finding someone else's magic numbers. It is about looking at what your chart is printing right now and making sure your thresholds are realistic against that. The WickFlow PRO Stats window puts those numbers directly in front of you. The job of this guide is just to tell you which one to look at for which engine, and what "too strict" versus "too loose" looks like in practice.

Change one parameter at a time. Reopen the tab. Keep what works.

Continue Reading

Ready to See Order Flow on Your Chart?

WickFlow PRO surfaces institutional footprints directly on your candles. Every engine calibrated against your live data, not someone else's defaults.

Explore WickFlow PRO