# Cival Manipulation & Pressure Toolkit — Guide

Release 1.0.0-atas · archive SHA-256 `004046ed5d59a4bbc376fbd47c80ec3a2402c99c7e71b9edd0f998b78902c6cd` · 303,024 bytes

Contents: install guide · reading the indicator · trading playbook · settings reference · platform compatibility

## Cival Manipulation & Pressure Toolkit v1.0.0 - Install Guide

Two indicators for ATAS Platform, installed together:

| Indicator (display name in ATAS) | File | Category |
|---|---|---|
| **Cival Manipulation** | Cival.Manipulation.dll | Cival |
| **Cival Pressure Toolkit** | Cival.PressureToolkit.dll | Cival |

Support: support@civalsystems.com.

## 1. Requirements

| Need | Cival Manipulation | Cival Pressure Toolkit |
|---|---|---|
| Platform | ATAS Platform **8.0.15 or newer**, Windows. Both DLLs target the .NET 10 runtime that ATAS ships; you install nothing extra. | Same |
| Candle data | Required | Required |
| Footprint / cluster data (bid and ask volume at each price) | **Optional but recommended.** Used for the recorded-flow evidence. Required only if you set *Orderflow confirmation* to RequireCompleteDelta. | **Required** for pressure bubbles and wick absorption candidates. Without it the panel says Missing bid/ask footprint: check feed and history. |
| Individual trade history (ticks) | Not used | Needed for **big prints**. ATAS provides up to 7 days; live prints are collected as they arrive. Without it, prints stay off and the panel says so. |
| Market depth (live) | Not used | Needed for the **live resting depth** bars, only during a live session. It is never reconstructed for history. |
| History | About 15 completed bars to warm up; by default the newest 3,000 bars are analysed | 21 completed bars with footprint for the first pressure reading; by default the newest 10,000 bars |
| Chart | Start on a regular time-based chart. The worked examples use 5-minute bars. | Same |

Both indicators need the instrument's real tick size from ATAS.

## 2. Install with the included script (recommended)

**Step 1.** **Close ATAS completely** (every ATAS window; check Task Manager for leftover ATAS processes).

**Step 2.** Extract the ZIP to an ordinary folder, for example `Downloads\Cival-Manipulation-Pressure-Toolkit-v1.0.0`.

**Step 3 (optional).** Integrity check, in PowerShell from the extracted folder. This compares every file with `SHA256SUMS.txt`:

```powershell
Get-Content .\SHA256SUMS.txt | ForEach-Object {
  $hash, $path = $_ -split '  ', 2
  $actual = (Get-FileHash -LiteralPath ($path -replace '/', '\') -Algorithm SHA256).Hash
  '{0}  {1}' -f $(if ($actual -eq $hash) { 'OK      ' } else { 'MISMATCH' }), $path
}
```

Every line should start with `OK` (letter case of the hashes does not matter).

**Step 4.** Run the installer from the extracted folder:

```powershell
.\ATAS\Install.ps1
```

It installs **both** DLLs into `%APPDATA%\ATAS\Indicators`, backs up any DLL of the same name already there, and verifies the SHA-256 of each copy. If Windows blocks the script because it came from the internet, run `Unblock-File .\ATAS\Install.ps1` once (or `powershell -ExecutionPolicy Bypass -File .\ATAS\Install.ps1`) and try again.

**Step 5.** Start ATAS.

## 3. Manual install

1. Close ATAS.
2. Copy `ATAS\Cival.Manipulation.dll` and `ATAS\Cival.PressureToolkit.dll` into `%APPDATA%\ATAS\Indicators` (paste that path into Explorer's address bar). You may install just one of them.
3. If a file with the same name is already there, move it **out of** the Indicators folder first (keep backups elsewhere; do not leave two copies in the folder).
4. If Windows marked the files as downloaded, right-click each, choose Properties and tick Unblock, or run `Unblock-File` on them.
5. Start ATAS.

## 4. First load

Open a chart, open its Indicators window (right-click the chart, then Indicators) and search the exact names below. Leave every setting at its default for the first session.

### 4A. Cival Manipulation

1. Add **Cival Manipulation**. A panel titled **CIVAL MANIPULATION** appears in the top-right of the price pane (it needs a pane of at least 200 x 100 pixels).
2. Allow about 15 completed bars to warm up (14 prior true ranges for the ATR baseline, then a 12-bar window).
3. What the panel text means at first:

| Panel text | Meaning |
|---|---|
| WARMUP / SCANNING and Waiting for a qualifying closed-bar range | Nothing qualifying yet. Normal: the indicator only reports a range after the 12-bar window is compressed (see 03-Reading-the-Indicator). |
| Waiting for instrument tick size | ATAS has not supplied a tick size. |
| Study unavailable: `<error>` | An unexpected error; the study is cleared until the next recalculation. |
| Invalid manipulation settings | A combination was rejected; nothing is calculated until fixed (for example *Range timeout (bars)* must not be below *Range bars*, and *Maximum sweep / ATR* must not be below *Minimum sweep / ATR*). |
| A phase name (RANGE, SWEPT, RECLAIMED, EXPANSION, COMPLETE, INVALIDATED, EXPIRED) with Evidence N/100 · M observable | A cycle exists and is selected. Recorded flow F/C bars tells you how many closed bars had usable bid/ask data. |

### 4B. Cival Pressure Toolkit

1. Add **Cival Pressure Toolkit**. An information panel titled **Cival Pressure Toolkit** appears at the top-left of the price pane, with a readiness line and a tape status line.
2. Switch the chart temporarily to a cluster/footprint view if you want to confirm bid x ask numbers exist in each candle, then switch back.
3. What the panel text means at first:

| Panel text | Meaning |
|---|---|
| Waiting for closed candles / historical calculation | History is still loading. |
| Missing bid/ask footprint: check feed and history / Footprint bid/ask history unavailable | The newest closed bar has no footprint rows. Pressure bubbles and absorption candidates cannot be produced. |
| Partial bid/ask footprint; some tools suppress signals | Bid + ask volume does not add up to the candle volume within 1%. This indicator still evaluates the rows it receives, so treat that bar with caution. |
| Active • N bars • no qualifying setup yet / Active • N signals • M untouched levels | Running normally; the second form counts retained markers and the absorption lines that price has not touched. |
| Waiting for individual prints | The tape layer has not received prints yet. |
| Loading individual historical prints (up to 7 days) | A history request is in flight. |
| No individual print history; live prints only | The feed returned no historical trades; big prints will build up from live trades. |
| Print history unavailable: `<message>` | The history request failed; live prints are still collected. |
| Tape warmup/coverage X% (required 80%) | Too few of the previous 100 bars have prints yet. |
| Tape X% coverage \| N prior prints \| threshold T | Tape is ready; T is the current big-print size threshold in feed units. |

4. Set the volume floor for your instrument. *Minimum aggressive row volume* is in the feed's units and defaults to **10**. That is a very different size on a coin-denominated perpetual than on an index future. Adjust it before judging the output.

## 5. Verify it works

Tick every line:

- [ ] **Cival Manipulation** and **Cival Pressure Toolkit** both appear in the indicator list and add without an error.
- [ ] The CIVAL MANIPULATION panel is visible, and its text is not `Waiting for instrument tick size`.
- [ ] After about 15 completed bars, scrolling back through history shows at least one blue range box in an instrument that has compressed ranges (not every chart will in a short window; this is normal).
- [ ] The Pressure Toolkit panel's readiness line begins `Active`, not `Missing bid/ask footprint`.
- [ ] After 21 completed bars with footprint, bubbles with a number in the centre and labels beginning `Strong pressure` or `Pressure` appear (they need rows of at least the *Minimum aggressive row volume* with a 3 to 1 ratio, so quiet instruments may show none until you lower the floor).
- [ ] The tape status line shows a real status (`Individual print history loaded; live tape active`, a `Tape ... coverage` line, or an explicit `No individual print history; live prints only`). `Waiting for individual prints` should change after history loads.
- [ ] Faint grey `Round <price>` lines appear around the current price (switch *Round-number levels* off if you do not want them).
- [ ] During a live session with a depth feed, the line `LIVE resting depth (updated levels only)` replaces `Depth stale/awaiting fresh feed`.

## 6. Updating

1. Save your chart template first (indicator settings live in your ATAS workspace and chart templates, not in the DLLs).
2. Close ATAS and run the new version's `.\ATAS\Install.ps1`. It backs up the DLLs it replaces.
3. Start ATAS and reopen your chart. If ATAS was left running, it may offer *Reload indicators* in the main window's status bar; reopening ATAS is the safe alternative.

## 7. Uninstalling

Close ATAS, then run `.\ATAS\Uninstall.ps1` from the extracted folder (it removes both DLLs), **or** delete `Cival.Manipulation.dll` and/or `Cival.PressureToolkit.dll` from `%APPDATA%\ATAS\Indicators` by hand. Charts that used the indicators will no longer show them. Exports stay in `%APPDATA%\ATAS\CivalManipulation` and in any CSV folder you chose until you delete them.

## 8. Troubleshooting

| Symptom | Likely cause and fix |
|---|---|
| Neither indicator is in the list | ATAS was not restarted after copying; the DLLs are not directly in %APPDATA%\ATAS\Indicators; Windows blocked the files (Properties, Unblock); ATAS is older than 8.0.15; or you searched a partial name. Search Cival Manipulation and Cival Pressure Toolkit exactly. |
| Pressure Toolkit: Missing bid/ask footprint: check feed and history (or "waiting for footprint") | Your data connection supplies candles without bid/ask volume per price, or the footprint for the newest bars is not loaded. Load tick/cluster history or use a connection that provides it. |
| Manipulation panel stays at WARMUP / SCANNING | Normal until a 12-bar compressed range exists. Check at least 15 completed bars are loaded; if the chart has gaps in time, the study restarts its warm-up after each one. |
| Manipulation draws nothing and the panel reads Invalid manipulation settings | Fix the combination: *Range timeout (bars)* must be at least *Range bars*; *Maximum sweep / ATR* at least *Minimum sweep / ATR*. |
| Manipulation shows ranges but cycles end without an expansion | Normal. Each phase has a deadline (sweep within 40 bars of the range, reclaim within 3 bars of the sweep, expansion within 8 bars of the reclaim) and a depth limit (1.75 ATR). 03-Reading-the-Indicator lists every ending reason; do not loosen settings only to force a pattern. |
| Pressure bubble number looks too small | The number is the aggressive-side volume summed over the qualifying rows only, not the candle's volume. See section 13 of the Pressure Toolkit part of 03-Reading-the-Indicator. |
| No Pressure Toolkit bubbles | The row floor is too high for the instrument (default 10 feed units), the 3 to 1 *Pressure ratio* is not met on any row, fewer than 21 footprint bars are loaded, or *Pressure bubbles* is off. |
| No big prints | Tape status shows why: no print history from your provider, tape coverage below 80% of the previous 100 bars (lowering *Minimum populated lookback coverage (%)* accepts thinner statistics; *Allow incomplete history* only overrides a "partial history" flag), or fewer than 30 prior prints. Big prints can only appear on roughly the newest 20 closed bars right after a fresh load. |
| Depth stale/awaiting fresh feed | Depth is live only. Your feed must supply market depth and the chart must be live. Rows older than *Depth row expiry (seconds)* are dropped; no update within *Depth stale timeout (seconds)* hides the bars. |
| Message N panels need space: hide unused panels | Several Cival panels share the chart. Turn off *Show readiness/status panel* on some, or switch *Automatic panel placement* off and enlarge the pane. |
| Copy fails: file in use / DLL locked | ATAS is still running. Close every ATAS window and process, then run Install.ps1 again. |
| Settings reset after an update | ATAS stores settings by name in the chart template. Restore your saved template or re-enter the settings; keep a template copy before each update. |
| No alerts | Both indicators keep alerts **off** until you enable them (*Local alert on NEW confirmed expansion*; *Alerts on closed signal / level touch*). They stay silent during history loading and recalculation. |



## Reading the Indicators - Cival Manipulation & Pressure Toolkit

This page explains every element each indicator draws, every state it can be in, every panel line and how each number is computed. Defaults are the values a fresh instance loads with; the full list is in `02-Settings-Reference`. Setting names appear in *italics* exactly as ATAS shows them.

Both indicators describe **what already happened** in candles and executed order flow. The vocabulary is deliberate: *pattern*, *candidate*, *evidence points* (a checklist, not a probability), *reference prices* (not orders or targets). Footprint volume shows executed aggression; it does not show who holds positions or where stops are.

**Demo data used for the worked examples.** The store demo was produced by the shipped plugins (Cival.Manipulation 1.1.1.0 and Cival.PressureToolkit 1.0.0.0, default settings) on Hyperliquid BTC-PERP five-minute bars built from trades recorded by the Cival order-flow recorder, 17 to 21 October 2026, 1,380 closed bars, tick size 1. Times are UTC bar open times. Examples illustrate mechanics on one sample; they say nothing about future results. The demo carries no individual-print or live-depth feed, so those two Pressure Toolkit layers are explained from their rules only.

**Layout note (both indicators).** Group *00 Chart clarity* holds *Compact display (full detail must be off)* (on) and *Full analysis detail* (on). With the defaults you get the full layouts described below, and a small text layer spells out abbreviations (RVOL is shown as `Relative volume`) and rewrites a few labels, noted where it matters. Turning *Full analysis detail* off and *Compact display* on gives a reduced layout: Manipulation shows only its newest cycle, Pressure Toolkit shows at most 8 recent markers (roughly the last 20 bars) with plain-language labels and at most 3 levels, and both hand their summary to a small shared panel titled `CIVAL / CURRENT CHART READ`.

---

## Cival Manipulation

### 1. What it measures

Cival Manipulation maps one sequence on closed candles: a **compressed range**, a **one-sided sweep** of one boundary, a **closed-price reclaim** back inside, and a later **directional expansion** through the opposite boundary. "Manipulation" is the name of the pattern, not a claim about anyone's intent, hidden stops or conduct. It is described in the product as research: it draws reference prices, it does not place orders.

Only one cycle is active at a time. When a cycle ends (for any reason) there is a cooldown of 4 bars before a new range can be recognised. The indicator keeps at most 64 cycles and 512 events.

### 2. The phases

| Phase (panel name) | What triggers it (defaults) | On the chart |
|---|---|---|
| **Range** (RANGE) | After at least 14 prior true ranges (with an ATR above one tick), the last **12** closed bars form a window whose high-low width is at least 2 ticks and at most **3.2 x ATR**, and whose **price efficiency** is at most **0.30**. Efficiency is the net move from the window's first open to the latest close divided by the sum of the window's true ranges. The window's high and low are frozen at that bar ("range known"). | Blue box, label, vertical line at the known bar |
| **Swept** (SWEPT) | While the range is active, a closed bar trades beyond one boundary by at least max(1 tick, **0.15 ATR**). A break below the low is a **sell-side sweep** (long bias, side +1); a break above the high is a **buy-side sweep** (short bias, side -1). The excursion must not exceed **1.75 ATR** beyond the boundary. | Purple band between the sweep extreme and the swept boundary |
| **Reclaimed** (RECLAIMED) | A completed bar closes back inside: at or above low + 0.05 ATR (long bias) or at or below high - 0.05 ATR (short bias). This can be the sweep bar itself or any of the next **3** bars (*Reclaim window (bars)*). The sweep extreme keeps updating until the reclaim. The **invalidation** is then fixed at the extreme minus (long) or plus (short) max(1 tick, 0.15 ATR), rounded outward to a whole tick. | Label SWEEP / RECLAIM; invalidation line begins |
| **Expansion** (EXPANSION) | A **later** closed bar (never the reclaim bar), within **8** bars of the reclaim (*Expansion window (bars)*), closes beyond the opposite boundary by at least **0.10 ATR**, with a body of at least **0.80 ATR** in the cycle's direction, body / range of at least **0.55**, and a close in the directional 32% of the range (closing location at least **0.68**). With *Orderflow confirmation* = RequireCompleteDelta it also needs directional delta of at least 8%. The bar's close becomes the **reference price**. | Tinted column from that bar, label with the evidence score, a dot at the reference, 1R/2R guides |
| **Complete** (COMPLETE) | After expansion, a later bar reaches the **2R reference** price. | Cycle ends |
| **Invalidated** (INVALIDATED) | Checked on every bar after the reclaim, before anything else: the bar's low touches the invalidation (long) or its high touches it (short), **wicks included**. Also: both boundaries swept in one candle (path unknown); a sweep deeper than 1.75 ATR (treated as an accepted breakout); a sweep that grows past that depth before reclaim; after expansion, a close back through the range **midpoint**; a malformed candle; or a coverage break. | Cycle ends |
| **Expired** (EXPIRED) | The range ages past **40** bars with no sweep; no reclaim within 3 bars of the sweep; no expansion within 8 bars of the reclaim; or the expansion has run **32** bars (*Expansion timeout (bars)*). | Cycle ends |

Other events recorded in the report: `retest` (first later bar within 0.1 ATR of the broken boundary that closes back on the expansion side) and `target1` (1R reference observed). They are not drawn as markers.

**Reference prices.** At expansion the indicator sets: **Reference** = the expansion bar's close; **risk** = the distance from Reference to the invalidation; **1R** and **2R** = Reference moved in the cycle's direction by one and two times that risk. These are analytical distances: not entries, orders, targets or profit and loss. If a later bar crosses both the invalidation and a target, the invalidation takes priority.

### 3. Fixed rules (not settings)

| Rule | Value |
|---|---|
| Reclaim buffer | 0.05 ATR |
| Invalidation buffer | max(1 tick, 0.15 ATR) |
| Expansion close location | at least 0.68 |
| Relative-volume evidence threshold | 1.25 x the mean volume of the previous 20 candles |
| Retest tolerance | 0.1 ATR |
| Evidence lookbacks | VWAP anchored at the range's first bar; trend uses the previous 20 closes; CVD uses 5 candles |

**ATR** here is the simple mean of the previous 14 true ranges (*ATR baseline bars*), excluding the current bar (a plain average, not Wilder smoothing), and is frozen into each cycle when its range is recognised.

### 4. Evidence points (a checklist, not a probability)

Evidence is recomputed at each phase event on the bar that produced it, and frozen after expansion. The panel shows `Evidence N/100 · M observable`: N is the points met, M is the points available (items that could not be evaluated, such as flow items without footprint, are not scored).

| Item (id) | Points | Met when |
|---|---|---|
| Range compression (compression) | 10 | Efficiency at most 0.30 (always true for a recognised range) |
| One-sided sweep (sequence) | 15 | A sweep has occurred |
| Closed-price reclaim (reclaim) | 10 | The reclaim has occurred |
| Directional displacement (displacement) | 15 | The evaluating candle has body at least 0.80 ATR in the cycle's direction, body / range at least 0.55 and closing location at least 0.68 |
| Relative volume (volume) | 10 | The candle's volume is at least 1.25 x the previous 20 candles' mean |
| Anchored candle VWAP (vwap) | 8 | The close is on the cycle's side of a VWAP built from (high + low + close) / 3 x volume, anchored at the range's first bar (candle VWAP, not execution VWAP) |
| Prior 20-bar mean (trend) | 7 | The close is on the cycle's side of the mean of the previous 20 closes (needs 20 prior bars) |
| Directional delta (delta) | 8 | Recorded flow is available and direction-adjusted delta / volume is at least 8% (*Minimum directional delta %*) |
| Five-bar CVD response (cvd) | 5 | This and the previous 4 candles all have recorded flow and their summed delta points in the cycle's direction |
| Counterflow reclaim (counterflow) | 7 | The sweep candle had recorded flow whose delta pushed **through** the swept boundary (against the cycle's direction) by at least 8% of that candle's volume, and the reclaim has happened. It is a proxy for aggression that failed, not proof of absorption |
| Recorded stacked imbalance (stacks) | 5 | The evaluating candle has at least one run of 3 or more consecutive diagonal imbalance rows (3x or more) on the cycle's side |

### 5. Recorded order flow

A candle has **recorded flow** only if its bid + ask volume adds up to its candle volume within 1%, with consistent totals. Anything else is treated as unavailable, never as zero. *Orderflow confirmation* chooses how flow is used:

| Mode | Behaviour |
|---|---|
| **UseWhenAvailable** (default) | Flow evidence is scored when available. Price-only detection still works; unavailable evidence is shown as such |
| **RequireCompleteDelta** | Expansion also needs directional delta of at least *Minimum directional delta %* on a candle with recorded flow |
| **PriceOnly** | Flow evidence is not used at all |

### 6. What is drawn

| Element | Setting | Meaning |
|---|---|---|
| Range box | (always) | Blue (#38BDF8) box from the **first** bar of the 12-bar window to the sweep bar (or the latest bar), between the frozen low and high. Label 01 CONSOLIDATION low — high, shown as Consolidation range low — high in the default detail mode |
| Range-known line | *Show phase labels* | Thin vertical line with Range known · bar N (shown as Range confirmed at bar N). The box reaches back for context, but the range was **not known** until that bar |
| Sweep band | (always) | Purple (#C084FC) band between the sweep extreme and the swept boundary. Label 02 SWEEP, or 02 SWEEP / RECLAIM (shown as Sweep rejected / range reclaimed) once reclaimed |
| Expansion column | (always) | Faint full-height tint from the expansion bar, green (#34D399) for long and rose (#FB7185) for short, a dot at the reference, and the label 03 LONG EXPANSION · score/100 (shown as Bullish expansion · score/100; short is Bearish expansion) |
| Risk guides | *Show reference risk guides* (on) | For the **selected** cycle: dashed lines from the reclaim bar to the right edge. INVALIDATION `<price>` always uses the Short colour and 1R GUIDE / 2R GUIDE the Long colour, whichever way the cycle points. In the default detail mode the first reads Count invalid below/above `<price>`. Same price either way |
| Panel | *Show evidence dashboard* (on) | Section 7 |

The newest *Maximum visible cycles* (8) that overlap the visible bars are drawn. Labels move to a free spot nearby or are dropped if crowded. There are no markers for retests or targets; read those in the exported report.

### 7. The panel, line by line

Hover a candle to select the cycle spanning it; otherwise the newest cycle is shown, even if it has finished. The panel sits in *Dashboard corner* (TopRight) with *Dashboard width* 370 (240 to 520).

| Line | Meaning |
|---|---|
| CIVAL MANIPULATION | Title |
| Phase in capitals | RANGE, SWEPT, RECLAIMED, EXPANSION, COMPLETE, INVALIDATED, EXPIRED; WARMUP / SCANNING when no cycle exists. Rose when the cycle's side is short, blue otherwise |
| Evidence N/100 · M observable | Points met / points available |
| Range low — high | The frozen boundaries |
| Invalidation `<price>` \| Reference `<price>` | — while not yet defined |
| 1R `<price>` \| 2R `<price>` | — until expansion |
| Delta `<n>`% \| Relative volume `<n>`x | Direction-adjusted delta and relative volume of the evaluating candle, or unavailable. Numbers show up to 8 decimals. Delta is meaningful only after a sweep has given the cycle a direction |
| Met item ids | The first five met evidence ids, e.g. compression · sequence · reclaim |
| Recorded flow F/C bars | F closed bars had usable bid/ask flow out of C closed bars processed |
| Status | Section 9; with no status, Closed-bar evidence · no execution / probability claim |

### 8. Timing, history and gaps

- **Closed bars only.** The newest candle is always treated as forming and excluded, even on a static chart. A phase appears when the candle that completes it has closed. There is **no live preview** layer. Alerts (if on) fire when the next candle begins.
- **Ranges are drawn back, known late.** A range is recognised at the end of its 12-bar window. The early part of the box is context, not an earlier signal.
- **Revisions.** If ATAS delivers a corrected candle or you change a setting, the study rebuilds from the loaded history, and earlier cycles can change.
- **History window.** *Maximum bars back* (3000, 100 to 10000) bounds the analysed bars; each warm-up needs about 15 bars.
- **Coverage breaks.** On a time-based chart, a gap between consecutive candle times of more than 1.5 x the chart's timeframe (a session break, a weekend, or an interval with no candle) invalidates any active cycle, clears the baselines and restarts the warm-up. A malformed candle does the same.

### 9. Status messages

| Message | Meaning |
|---|---|
| Waiting for instrument tick size | ATAS has not supplied a tick size |
| Waiting for a qualifying closed-bar range | No cycle yet |
| Invalid manipulation settings | A combination was rejected (for example *Range timeout (bars)* below *Range bars*, or *Maximum sweep / ATR* below *Minimum sweep / ATR*). Nothing is calculated until fixed |
| Study unavailable: `<error type>` | An unexpected error |
| Diagnostic report exported to ATAS / CivalManipulation / Export failed: `<error type>` | Result of the export action |

### 10. Alerts and export

- **Alert.** *Local alert on NEW confirmed expansion* (off) notifies once for each new expansion on the candle that just closed: `Cival Manipulation: long expansion confirmed, 100/100 evidence points.` (or short, with the actual score). Nothing fires while history loads, during recalculation or after a rebuild. *Alert sound* defaults to `alert1`.
- **Export.** *Export current diagnostic report* (an action) writes `manipulation-report.json` to `%APPDATA%\ATAS\CivalManipulation`, overwriting the previous file. It holds the instrument, provider, a note that timestamps are the ATAS chart clock (milliseconds since 1970, no timezone inferred), a flag that reference guides are not trades, and the full report: settings used, every retained cycle with its evidence items, and the retained events (`range`, `swept`, `reclaimed`, `expansion`, `retest`, `target1`, `complete`, `invalidated`, `expired`).

### 11. Where every setting acts (32)

| Group and setting | Default | Range / effect |
|---|---|---|
| 00 Chart clarity: *Compact display (full detail must be off)* | on | Reduced layout only when full detail is off |
| 00 Chart clarity: *Full analysis detail* | on | Full layout; expands abbreviations |
| 01 Consolidation: *Range bars* | 12 | 4 to 80; window length |
| 01: *ATR baseline bars* | 14 | 4 to 100 |
| 01: *Maximum range / ATR* | 3.2 | 0.5 to 12; widest allowed range |
| 01: *Maximum price efficiency* | 0.30 | 0.01 to 0.9; how directionless the window must be |
| 02 Sweep and reclaim: *Minimum sweep / ATR* | 0.15 | 0.01 to 2; also sets the break size |
| 02: *Maximum sweep / ATR* | 1.75 | 0.1 to 8; not below the minimum |
| 02: *Reclaim window (bars)* | 3 | 1 to 20 |
| 03 Directional expansion: *Expansion window (bars)* | 8 | 1 to 40, counted from the reclaim |
| 03: *Minimum body / ATR* | 0.8 | 0.1 to 4 |
| 03: *Minimum body / candle range* | 0.55 | 0.1 to 0.95 |
| 03: *Opposite boundary clearance / ATR* | 0.1 | 0.01 to 2 |
| 04 Recorded orderflow: *Orderflow confirmation* | UseWhenAvailable | UseWhenAvailable / RequireCompleteDelta / PriceOnly |
| 04: *Minimum directional delta %* | 8 | 0 to 90; used by the delta, counterflow and (in require mode) expansion tests |
| 05 Lifecycle: *Range timeout (bars)* | 40 | 4 to 200; not below *Range bars* |
| 05: *Expansion timeout (bars)* | 32 | 2 to 200 |
| 05: *Cooldown bars* | 4 | 0 to 40 |
| Performance: *Maximum bars back* | 3000 | 100 to 10000 |
| Appearance: *Show phase labels* | on | Labels and the range-known line |
| Appearance: *Show reference risk guides* | on | Invalidation, 1R, 2R lines for the selected cycle |
| Appearance: *Show evidence dashboard* | on | The panel |
| Appearance: *Dashboard corner* | TopRight | TopRight / TopLeft / BottomRight / BottomLeft |
| Appearance: *Dashboard width* | 370 | 240 to 520 |
| Appearance: *Maximum visible cycles* | 8 | 1 to 32 |
| Appearance: *Range color* | #38BDF8 | Sky blue |
| Appearance: *Sweep color* | #C084FC | Purple |
| Appearance: *Long expansion color* | #34D399 | Green (also the 1R/2R lines) |
| Appearance: *Short expansion color* | #FB7185 | Rose (also the invalidation line) |
| Alerts: *Local alert on NEW confirmed expansion* | off | Section 10 |
| Alerts: *Alert sound* | alert1 | ATAS sound identifier |
| Export: *Export current diagnostic report* | off | Action; section 10 |

Out-of-range numbers are clamped to the range shown.

### 12. Worked example from the demo data

**Range (known at bar 246, 20:30).** Bars 235 to 246 (19:35 to 20:30) formed a window with high **81,622** and low **81,514**: width 108, against an ATR of **36.36** (limit 3.2 x 36.36 = 116.3), and a price efficiency of **0.195** (limit 0.30). Evidence at this point: 10 points (compression).

**Sweep (bar 252, 21:00).** The bar traded up to **81,639**, past the high by more than max(1, 0.15 x 36.36 = 5.45). A buy-side sweep, so the cycle leans short. Evidence 30.

**Reclaim (bar 253, 21:05).** The next bar pushed the extreme to **81,662** (40 beyond the high, 1.10 ATR, within the 1.75 limit) and then closed at **81,604**, below 81,622 - 0.05 x 36.36 = 81,620.2. Invalidation: 81,662 + max(1, 5.45) = 81,667.45, rounded outward to **81,668**. Evidence 85.

**Expansion (bar 256, 21:20).** Bars 254 and 255 did not qualify. Bar 256 opened at 81,592 and closed at **81,480**: body 112 = 3.08 ATR (needs 0.8), body / range 0.97 (needs 0.55), closing location 0.97 (needs 0.68), and a close below 81,514 - 0.1 x 36.36 = 81,510.4. Reference **81,480**; risk 81,668 - 81,480 = **188** (5.2 times the frozen ATR); 1R **81,292**; 2R **81,104**. Evidence **100/100**: relative volume 5.76x, direction-adjusted delta +95.4%, five-bar CVD response, counterflow +23.7%, a recorded stack.

**Afterwards.** Bar 257 (21:25) traded down to 81,120, observing the 1R reference. Bar 258 (21:30) traded down to 80,966, observing 2R: **complete**.

**The same run, in aggregate.** 56 ranges were recognised; 50 were swept; 34 were reclaimed; 5 reached expansion; 2 of those ran on to the 2R reference; 3 were invalidated by a close back through the midpoint, one of them with 100/100 evidence. The other cycles ended before expansion: 17 invalidations (touch of the invalidation), 12 expiries without qualified displacement, 8 expiries without a reclaim, 8 sweeps that went too deep before reclaim, 5 sweeps deeper than 1.75 ATR, and 1 range that aged out. These are lifecycle counts on one short sample, with no entries, costs or profit and loss modelled. They show how few recognised ranges run the whole sequence, and that a full evidence score is not a guarantee of anything.

### 13. If a reading looks wrong or stays empty

| Observation | Check |
|---|---|
| No ranges at all | Confirm about 15 completed bars are loaded (14 prior true ranges, then a 12-bar window), then check the range tests: width at most 3.2 ATR **and** efficiency at most 0.30. A trending market produces none, by design |
| Ranges appear but nothing is swept | The sweep must clear a boundary by max(1 tick, 0.15 ATR) within 40 bars of the range being known; otherwise it expires |
| INVALIDATED with a reason about both boundaries | One candle swept both sides, so the intrabar order is unknown and the cycle is discarded rather than guessed |
| INVALIDATED or accepted-breakout reasons | The excursion beyond the boundary exceeded 1.75 ATR (*Maximum sweep / ATR*) before a reclaim, so it was treated as a breakout, not a sweep |
| Swept but never reclaimed | A close back inside must arrive within 3 bars of the sweep (*Reclaim window (bars)*) |
| Reclaimed but no expansion | The later candle needs body, body-to-range, closing-location and clearance tests, and (in RequireCompleteDelta) directional delta. Check the 8-bar *Expansion window (bars)* |
| Recorded flow shows few bars, or flow items read unavailable | Bid + ask volume does not reconcile to candle volume within 1% on those bars. Fix the data; PriceOnly mode excludes flow but does not repair it |
| The study restarts unexpectedly | A time gap of more than 1.5 timeframes (session break, missing candle) or a malformed candle clears the baselines and invalidates the active cycle |
| Panel is blank or missing | The price pane is under 200 x 100 pixels, or *Show evidence dashboard* is off |

Do not loosen thresholds merely to force a pattern. Source corrections, a different amount of loaded history, a different timeframe or bar type, and settings changes can legitimately recalculate results; cursor movement only changes which cycle the panel shows.

### 14. What it cannot know

- Whether anything was "manipulated", who acted, or where anyone's stops were. A sweep is a price excursion beyond a boundary, and the evidence points are checklist items for a hypothesis, not exposure of hidden positions.
- Why a candle closed where it did, or what happens after it.
- Resting orders: it uses candles and executed volume only.
- Anything on a bar with no recorded flow: such evidence is unavailable, not zero. Flow coverage is an internal consistency check, not an audit of the feed.
- Session context: it resets on time gaps on time-based charts but has no concept of session open, news or liquidity.
- Anything before *Maximum bars back* or before a restarted warm-up.

---

## Cival Pressure Toolkit

### 1. What it draws

Five independent layers, each with its own switch and data needs:

| Layer | Setting | Needs | Timing |
|---|---|---|---|
| **Pressure bubbles** | *Pressure bubbles* | Footprint rows | Closed candle |
| **Wick absorption candidates** and **until-touch lines** | *Wick absorption candidates* | Footprint rows | Candidate on a closed candle; the line ends on the first touch, **including by the forming candle** |
| **Big individual prints** | *Individual big prints* | Individual trade history and live trades | Closed candle |
| **Live resting depth** | *Live resting depth* | A live depth feed | Live, never historical |
| **Round-number levels** | *Round-number levels* | Nothing | Follows the last price |

A **row** is one price level of a candle's footprint: **bid volume** (trades at the bid, aggressive selling), **ask volume** (trades at the ask, aggressive buying), and **row volume** = bid + ask. Volumes are in the feed's units, not dollars. The newest candle is always treated as forming; a candle counts as closed once the next one exists.

### 2. Pressure bubbles

For each closed candle and each side, a row **qualifies** when, at the **same price**, the aggressive side's volume is at least *Minimum aggressive row volume* (10, in feed units) **and** at least *Pressure ratio* (3) times the opposite side's volume. Buying qualifies on ask volume against bid; selling on bid volume against ask. If any row qualifies:

- **Position.** The bubble sits at the qualifying row with the largest row volume.
- **Number in the centre.** The aggressive-side volume **summed across all qualifying rows** of that side in the candle. It is not the candle's volume and not a single order, and it counts only the aggressive side even when the bid-plus-ask volume in those rows is larger.
- **Label.** `Pressure` or `Strong pressure`, then `B:` (sum of ask volume over the qualifying rows), `S:` (sum of bid volume) and `Δ:` (sum of ask minus bid), in compact form (K / M).
- **Strong.** The label says `Strong pressure` (and the fill is brighter) when the biggest qualifying row's row volume is at least max(the floor, mean + 2 standard deviations of row volumes over the previous 20 bars). Both signals need the previous *Row statistics lookback* (20) bars to have footprint and at least 30 rows in total, so the first reading comes on the 21st footprint bar. This statistic does **not** decide whether a row qualifies; it only sets "Strong" and the absorption threshold.
- **Colour.** Green (`#3CB371`, *Bull color*) = aggressive buying. Tomato (`#FF6347`, *Bear color*) = aggressive selling.
- **Size.** Radius 5 to 20 pixels: 5 + 15 x the square root of (this bubble's number / the largest bubble of the same kind in the previous 100 bars), so bubbles are relative to recent history and do not resize when you pan.
- **One of each side per candle**, so a candle can show both a buying and a selling bubble.

Numbers are drawn with a dark outline in *Bubble number color* (white), largest bubble first. Text stays anchored to its price and crowding hides text instead of moving it: with *Avoid overlapping labels* on, a number or label that would overlap one already drawn is skipped, and labels are also hidden when bars are too close together (*Minimum bar spacing for signal labels (pixels)*, 6). The bubbles themselves are always drawn.

### 3. Wick absorption candidates and lines

A candidate needs a row whose row volume is at least the same "Strong" threshold (the greater of *Minimum aggressive row volume* and mean + 2 standard deviations over the previous 20 bars) and that lies **outside the candle's body**:

- **Lower wick** (row price below the lower of open and close) where **bid volume exceeds ask volume**: aggressive selling into a lower wick, which may mean buyers absorbed it. Drawn **green**.
- **Upper wick** (above the higher of open and close) where **ask volume exceeds bid volume**: aggressive buying into an upper wick, which may mean sellers absorbed it. Drawn **tomato**.

The largest such row per side is marked with an `Absorption?` bubble (number = that row's bid + ask) and creates a **line**: a one-tick band centred on the row price (price +/- half a tick), beginning on the **next** bar and running to the right. The question mark is deliberate: footprint rows cannot show which passive participant took the other side. A candidate is **not** confirmed absorption: this toolkit applies no price-response confirmation to it.

A line ends at its **first touch**: the first bar, **including the still-forming one**, whose high-low range overlaps the band. Touched lines are hidden by default (*Show touched levels*, off). The *Maximum visible zones* (12) untouched lines nearest to the last price are drawn, each labelled `Wick absorption candidate New` (or `Tested` when shown after a touch). Fill and centre line are the side's colour; a touched line is grey. Because touches are checked on the forming candle, a line can disappear mid-candle.

### 4. Big individual prints

Each closed candle can show one **`Print <volume>`** bubble per side, at the price of that side's largest exceptional print, with a number equal to the **total** exceptional print volume for that side.

- **Source.** Individual trade ticks only. ATAS supplies historical trades for up to **7 days** (the request starts about *Print statistics lookback (bars)* + 2 bars back), and live trades are added as they arrive. Trades with no classified direction are ignored; aggregate cumulative volume is never used in place of individual prints.
- **Threshold**, computed from prints in the previous *Print statistics lookback (bars)* (100) bars, never the current one, and never below *Minimum individual print volume* (0):

| *Robust threshold* | Rule |
|---|---|
| StandardDeviation (default) | mean + *Standard deviation multiplier* (2) x population standard deviation |
| Percentile | the *Percentile threshold* (99th) percentile of print sizes |
| MedianMad | median + multiplier x 1.4826 x median absolute deviation |

- **Readiness.** At least *Minimum populated lookback coverage (%)* (80) of the previous 100 bars must contain prints; at least 30 prior prints must exist; the bar itself must have prints; and, unless *Allow incomplete history* is on, the print history must not have been flagged partial (trade groups without ticks, prints dropped by the retention limit, or ambiguous bar time stamps). The panel's tape line shows why a bar produced none.
- **What this means on a fresh load.** Only about the last 100 bars of prints are loaded, so the 80% coverage rule is met only for roughly the **newest 20 closed bars** right after loading. Older bars will not show print bubbles. After that, each new closed bar is evaluated as it closes.

### 5. Live resting depth

With a live depth feed, the **20** price levels nearest the last price in the indicator's depth book are drawn as short horizontal bars at the right edge of the price pane (up to 80 pixels wide, scaled to the largest displayed), green for bids and tomato for asks, under the label `LIVE resting depth (updated levels only)`. The book is built from the platform's depth updates and re-seeded from a snapshot of the platform's market depth about every 2 seconds while updates are flowing. Rows not refreshed for *Depth row expiry (seconds)* (60) are dropped. If no depth update has arrived for *Depth stale timeout (seconds)* (10), the bars disappear and the label reads `Depth stale/awaiting fresh feed`. Depth is never reconstructed for history, and a feed may not show every resting order.

### 6. Round numbers

Nine faint grey horizontal lines, labelled `Round <price>`, centred on the last price. The step is 1, 2 or 5 times a power of ten, the smallest such step at or above 0.5% of the price, and never below one tick; for a price near 82,000, 0.5% is about 410 so the step is 500. *Round-number step (0 = automatic)* overrides it. They are arithmetic guides, not claims about orders. *Alert on round-number cross* (off) sends `Cival round-number cross at <price>; step <step>` when the live price moves from one step interval to another; this alert has its own switch and is **not** gated by the master alert switch.

### 7. The information panel and statuses

A panel at the top-left (*Show readiness/status panel*, on) shows the title, a readiness line and a tape line. *Automatic panel placement* stacks it with other Cival panels (a gold `N panels need space: hide unused panels` message appears when there is not enough room); *Panel font size* (13, 10 to 22) and *Compact panel (title + two lines)* (on) adjust it.

| Readiness line | Meaning |
|---|---|
| Waiting for closed candles / historical calculation | Nothing processed yet |
| Missing bid/ask footprint: check feed and history | The newest closed bar has no rows |
| Partial bid/ask footprint; some tools suppress signals | Bid + ask is not within 1% of candle volume. This indicator still evaluates the rows it is given; treat that bar with caution |
| Active • N bars • no qualifying setup yet | Running, no markers or lines yet |
| Active • N signals • M untouched levels | Retained markers (the latest 500) and untouched absorption lines |
| Footprint bid/ask history unavailable | A processed bar had no footprint |

| Tape line | Meaning |
|---|---|
| Waiting for individual prints | No prints yet |
| Loading individual historical prints (up to 7 days) | Request in flight |
| Individual print history loaded; live tape active | History loaded |
| No individual print history; live prints only | Provider returned none |
| Partial print history: some trade groups lack ticks | Some history groups had no individual ticks |
| Print history unavailable: `<message>` | The request failed |
| Ambiguous bar timestamps: print allocation suppressed | Two candles share a time stamp, so prints cannot be assigned |
| Tape warmup/coverage X% (required Y%) | Not enough populated bars |
| Tape X% coverage \| N prior prints \| threshold T | Ready; T is the print-size threshold in feed units |

### 8. Alerts

Master switch *Alerts on closed signal / level touch* (off) must be on for the first four rows. Alerts are silent while history loads or recalculates.

| Setting | Default | Fires when |
|---|---|---|
| *Pressure bubble alerts* | on | A pressure bubble is created on the candle that just closed. Text Cival `<label>`: `<price>` |
| *Big print alerts* | on | A print bubble is created on the candle that just closed |
| *Absorption candidate alerts* | on | An Absorption? marker is created on the candle that just closed |
| *Absorption line touch alerts* | on | A line is touched. This is evaluated on the **forming** candle, so it can fire intrabar. Text Cival level touched: `<label>` `<low>`–`<high>` |
| *Alert on round-number cross* | off | Section 6; independent of the master switch |
| *Alert sound* | alert1 | ATAS sound identifier |

### 9. CSV export

If *CSV export folder (blank disables)* names a folder, the indicator writes two files there and updates them as markers arrive and after each recalculation: `PressureToolkit-signals.csv` (`time,available_time,bar,price,side,kind,label,volume`) and `PressureToolkit-zones.csv` (`available_bar,low,high,poc,side,label,state,touched_bar,invalidated_bar`). `available_time` is when the marker could first be known (the next candle). Use a different folder per chart or instrument so files do not overwrite each other. It keeps the latest 500 markers and 1,000 lines. A failure shows in the readiness line as `CSV export failed: <message>`.

### 10. What updates when

| Element | Updates |
|---|---|
| Pressure bubbles, absorption markers, print bubbles | When a candle closes (alerts at the next candle's first update) |
| Absorption line creation | When the source candle closes |
| Absorption line end (touch) | On any tick of the forming candle |
| Depth bars | Live updates, refreshed at most about every 2 seconds |
| Round-number lines | With the last price |
| History corrections or setting changes | Rebuild from loaded history (tape is re-requested) |

### 11. Where every setting acts (44)

| Group and setting | Default | Range / effect |
|---|---|---|
| 00 Chart clarity: *Compact display (full detail must be off)* | on | Reduced layout only when full detail is off |
| 00 Chart clarity: *Full analysis detail* | on | Full layout |
| Pressure: *Pressure ratio* | 3 | 1 to 100; aggressive / opposite at the same price |
| Pressure: *Minimum aggressive row volume* | 10 | Feed units; set for your instrument |
| Pressure: *Row statistics lookback* | 20 | 5 to 500 bars for the "Strong" and absorption threshold |
| Pressure: *Round-number step (0 = automatic)* | 0 | Overrides the automatic step |
| Features: *Pressure bubbles* | on | Layer switch |
| Features: *Wick absorption candidates* | on | Layer switch |
| Features: *Individual big prints* | on | Layer switch |
| Features: *Live resting depth* | on | Layer switch |
| Features: *Round-number levels* | on | Layer switch |
| Big prints: *Minimum populated lookback coverage (%)* | 80 | 0 to 100 |
| Big prints: *Allow incomplete history* | off | Accept thinner or partial print history |
| Big prints: *Robust threshold* | StandardDeviation | StandardDeviation / Percentile / MedianMad |
| Big prints: *Percentile threshold* | 99 | 50 to 100 |
| Big prints: *Print statistics lookback (bars)* | 100 | 5 to 500 |
| Big prints: *Standard deviation multiplier* | 2 | 0 to 10 (also the MedianMad multiplier) |
| Big prints: *Minimum individual print volume* | 0 | Absolute floor in feed units |
| Alerts: *Alerts on closed signal / level touch* | off | Master switch |
| Alerts: *Pressure bubble alerts* | on | Section 8 |
| Alerts: *Big print alerts* | on | Section 8 |
| Alerts: *Absorption candidate alerts* | on | Section 8 |
| Alerts: *Absorption line touch alerts* | on | Section 8 |
| Alerts: *Alert on round-number cross* | off | Section 6 |
| Alerts: *Alert sound* | alert1 | ATAS sound identifier |
| Information panel: *Automatic panel placement* | on | Stacks with other Cival panels |
| Information panel: *Panel font size* | 13 | 10 to 22 |
| Information panel: *Compact panel (title + two lines)* | on | Limits wrapped text |
| Information panel: *Show readiness/status panel* | on | The panel |
| Appearance: *Compact volume numbers* | on | K / M formatting in the bubble numbers |
| Appearance: *Avoid overlapping labels* | on | Hide a label rather than overlap another |
| Appearance: *Minimum bar spacing for signal labels (pixels)* | 6 | 0 to 30; below this, labels are hidden |
| Appearance: *Maximum visible zones* | 12 | 1 to 100 untouched lines, nearest first |
| Appearance: *Show touched levels* | off | Keep touched lines (grey) |
| Appearance: *Show labels* | on | Labels, including round-number labels |
| Appearance: *Show bubble volume numbers* | on | Numbers inside bubbles |
| Appearance: *Bubble number color* | #FFFFFF | White |
| Appearance: *Bull color* | #3CB371 | Green |
| Appearance: *Bear color* | #FF6347 | Tomato |
| Performance: *Depth stale timeout (seconds)* | 10 | 1 to 300 |
| Performance: *Depth row expiry (seconds)* | 60 | 1 to 3600 |
| Performance: *Maximum retained individual prints* | 100000 | 1000 to 1000000 |
| Performance: *Maximum bars back* | 10000 | 100 to 100000 |
| Export: *CSV export folder (blank disables)* | blank | Section 9 |

### 12. Worked example from the demo data

**Pressure bubbles (bar 867, 20 October 00:15).** The five-minute bar opened at 81,766, reached 81,786, fell to 81,562 and closed at **81,585** on 501.8 BTC with delta -228.08. The indicator drew a selling bubble at **81,631** labelled `Strong pressure B:10.6935 S:130.52075 Δ:-119.82725`: across the qualifying sell rows (bid volume at least 10 and at least 3 times the ask at the same price), 130.52 BTC sold into the bid against 10.69 BTC bought, and the number in the centre is 130.52. The largest pressure bubble (either side) in the previous 100 bars was 236.59, so its radius was 5 + 15 x square root(130.52 / 236.59), about **16 pixels**. The same bar also drew a buying bubble at 81,657 (`B:35.29434`, radius about 10). Bar 868 followed with a buying bubble of 119.34 at 81,586.

**Wick absorption candidate (bar 831, 19 October 21:15).** The bar opened at 82,164, reached **82,208** and closed at 82,064. At 82,208, in the upper wick, ask volume exceeded bid volume and the row's total of **16.192** BTC exceeded the "Strong" threshold, so an `Absorption?` marker was drawn there and a line (82,207.5 to 82,208.5) started on bar 832. Bar 843 (22:15) traded up to 82,275 and touched it: 11 bars, 55 minutes, after it began. The line then stopped being drawn.

**In aggregate.** The run created **285** absorption lines; **277** were touched later, and **158** of those by the very next candle. Being touched is the ordinary fate of a line, and says nothing about whether the level mattered. The indicator keeps the latest 500 markers; in the demo's retained set, 352 were pressure bubbles and 148 absorption markers. Big prints and live depth are not in the demo data.

### 13. If a reading looks wrong or stays empty

| Observation | Check |
|---|---|
| A bubble's number is smaller than the row volume you see in a footprint | The number is the aggressive-side volume summed over the **qualifying** rows only, not the candle's total and not bid + ask. Compare it with B: (or S:) in the label, and with the individual rows that meet the floor and the 3 to 1 ratio |
| No bubbles on a quiet instrument | *Minimum aggressive row volume* (10 feed units) is too high for it, or fewer than 21 footprint bars are loaded |
| Bubbles but no absorption candidates | A candidate needs a row above the "Strong" threshold that lies outside the candle body with the right side dominant. Many candles have none |
| An absorption line vanished | It ended at its first touch, possibly by the still-forming candle. Switch *Show touched levels* on to see it greyed |
| No big prints on older bars | Only about the newest 20 closed bars can pass the coverage rule after a fresh load (section 4). Check the tape line for the reason |
| Depth bars disappear although the feed is connected | The stale timeout (10 s) and the row expiry (60 s) are independent: no update for 10 seconds hides all bars, while individual rows older than 60 seconds are dropped. Raise *Depth stale timeout (seconds)* only if your feed is legitimately quiet |
| Labels vanish when you zoom out | Bars are closer than *Minimum bar spacing for signal labels (pixels)* or a label would overlap another. Zoom in; the bubbles are still there |
| N panels need space | Several Cival panels compete for the top-left corner; turn some off or disable *Automatic panel placement* |

Do not loosen thresholds merely to force output. Source corrections, a different amount of loaded history, a different timeframe or bar type, and settings changes can legitimately recalculate results; cursor movement does not change the closed-bar sequence.

### 14. What it cannot know

- **Absorption.** A large row in a wick with the opposite side dominant is a **candidate**. It cannot show that a specific passive participant absorbed anything.
- **Resting orders in history.** Depth is live-only and is not a record of the book over time; a different tool is needed for resting-liquidity history. No complete initial depth snapshot and no dollar liquidation amounts are implied.
- **Who or why.** Large executions are observed aggressive prints, not a trader's identity or a verified position opening. Executed volume does not identify participants, their size, or whether trades opened or closed positions.
- **Print quality.** Big prints depend on the provider's trade history, its caps and its classification of direction.
- **Units.** Row, print and bubble volumes are in the feed's units, not dollars; thresholds need setting per instrument.
- **No invalidation, no lifecycle.** Pressure Toolkit does not produce stops, targets or invalidation prices. Everything it draws is an observation on a closed candle (or live context).
- **Anything about the future.** None of the layers has been validated to predict price.




## Trading Playbook - Cival Manipulation & Pressure Toolkit

**What this page is.** A way to think about two indicators when you trade discretionary order flow. It describes what must be true on the chart before a reading deserves attention and where each indicator's own reference prices sit. It does not tell you to take any trade, and neither indicator places orders, sets targets or forecasts. Read `03-Reading-the-Indicator` first. No profit, win rate or accuracy is claimed for either indicator anywhere in this product.

Each of the two sections below stands alone and ends with its own risk statement. Both describe what already happened; neither describes what will happen.

---

## Cival Manipulation

### 1. Context first

- **Is this a range you care about?** The indicator recognises any compressed 12-bar window on the chart you loaded. Ask whether its boundaries line up with something meaningful on a larger timeframe, such as a prior session high or low, a value-area edge, or a level you were already watching. The indicator does not know.
- **Which order-flow mode are you in?** Choose *UseWhenAvailable*, *RequireCompleteDelta* or *PriceOnly* deliberately and **write it down**. The mode changes which candles can confirm an expansion and which evidence items are scored, so results from different modes are not comparable.
- **Is the flow data complete?** The panel's `Recorded flow F/C bars` line tells you how many closed bars had usable bid/ask data. Flow items on other bars are unavailable, not zero.
- **How big is the distance to the invalidation?** The frozen ATR sets the scale. Compare it with the move you are prepared to risk before you look at a pattern.
- **Is the market about to change character?** Scheduled news, a session open or close, or a thin period matter more than a 12-bar window does. The indicator restarts its warm-up after a time gap on time-based charts, so the first bars after a session break carry no cycles.

### 2. Reference prices and what they mean

| Price | What it is | What it is not |
|---|---|---|
| **Range boundaries** (blue box) | The high and low of the compressed 12-bar window, frozen when the range became known | Guaranteed support or resistance |
| **Sweep extreme** | The furthest the sweeping candles traded beyond a boundary before the reclaim | Where anyone's stops were |
| **Invalidation** (guide line) | The sweep extreme moved a further max(1 tick, 0.15 ATR) away, rounded outward. The study considers the idea wrong if a bar's wick touches it | A stop order |
| **Range midpoint** (not drawn) | Halfway between the frozen high and low. After expansion, a close back through it ends the cycle as invalidated | A target |
| **Reference** | The expansion candle's close | An entry price |
| **1R / 2R** (guide lines) | The reference moved by one and two times the distance to the invalidation | Profit targets or expected outcomes |

### 3. Playbook A - Watching a reclaim after a one-sided sweep

**Idea.** A compressed range is swept on one side, price closes back inside, and the study is now waiting to see whether the opposite boundary gives way. This is the stage before expansion, so the study has not confirmed anything yet.

**What must be true on the chart.**

1. The panel shows `RECLAIMED`, with a blue range box, a purple sweep band and the label `SWEEP / RECLAIM` (or `Sweep rejected / range reclaimed` in the default detail mode).
2. The sweep stayed within 1.75 ATR and the reclaim was a **close** back inside, not just a wick.
3. The `Evidence N/100 · M observable` line makes sense for your mode (check whether flow items are available or unavailable).
4. The invalidation line is visible and its distance fits your risk. Note that **1R and 2R do not exist yet**; they appear only at expansion.

**Where the indicator's prices sit.** The swept boundary is just behind price; the invalidation is beyond the sweep extreme on the far side; the opposite boundary is the level a later candle must clear by at least 0.10 ATR with a large body to qualify as expansion.

**How a trader might define a plan.** Some traders only watch at this stage and wait for the study's expansion. If you consider acting earlier, you are acting before the indicator's own confirmation, so the plan, the stop and the size are entirely yours; the invalidation line is one place a trader might judge the idea to be wrong, and your stop would sit beyond it with room for slippage. Size from that distance. In the demo run, 34 cycles were reclaimed and 5 of them reached expansion; most ended before it.

**When to stand aside.** The data feed has recently reconnected or flow coverage is poor and you are using *RequireCompleteDelta*; the reclaim candle is already a very large candle; the distance to the invalidation is wider than your limit; a scheduled release is near.

**What cancels it.** A bar whose wick touches the invalidation; 8 bars passing after the reclaim with no qualifying expansion; the cycle ending as invalidated or expired for any listed reason. If the panel says `INVALIDATED` or `EXPIRED`, the hypothesis is over.

### 4. Playbook B - A confirmed expansion and the size of R

**Idea.** A later closed candle clears the opposite boundary with a large directional body. The study marks `EXPANSION`, sets the reference at that candle's close, and draws 1R and 2R.

**What must be true on the chart.**

1. `EXPANSION` on a **closed** candle, with the label `03 LONG EXPANSION` or `03 SHORT EXPANSION` (or `Bullish expansion` / `Bearish expansion`) and the evidence score.
2. The invalidation, 1R and 2R lines are drawn for the cycle you are looking at (hover a candle in the cycle to select it).
3. You have worked out **R in ATR terms**. By the time the study confirms, the candle that confirmed it is large and price is already well beyond the range, while the invalidation sits beyond the *sweep* extreme on the other side. In the demo cycle, the reference was 81,480 and the invalidation 81,668: R = 188 points, about 5.2 times the frozen ATR of 36.36. A plan has to be sized for that distance, not for a typical candle.

**How a trader might define a plan.** Entry after the expansion candle has closed, or on a pullback toward the broken boundary; the study logs a retest in its report but draws no marker for it, so you would identify it yourself. A stop beyond the invalidation, sized from the real distance from your entry. Management: 1R and 2R are distances, not promises, and a trader might use them as places to reassess, reduce or ignore. The study ends a cycle on a close back through the range midpoint or after 32 bars, which are rules of the study and not necessarily yours. In the demo cycle the 1R and 2R references were observed on the first and second candles after the expansion; in the same run, 3 of the 5 expansions were later invalidated by a close back through the midpoint, one of them with 100/100 evidence.

**When to stand aside.** R exceeds your risk limit even at the smallest size you accept; the expansion has run straight into a higher-timeframe level that matters to you; the data feed is unreliable; you would be entering after several candles of pullback, where the distance to the invalidation has changed.

**What cancels it.** The invalidation is touched (wicks count); a candle closes back through the range midpoint; 32 bars pass; a coverage break or malformed candle restarts the study.

### 5. Playbook C - Review every cycle, especially the ones that did not complete

**Idea.** The most useful lesson in this indicator's own data is how many recognised ranges end before expansion. In the demo run: 56 ranges, 50 swept, 34 reclaimed, 5 expanded, 2 ran to 2R. Treat the 51 cycles that ended before expansion as information, not misses.

**Routine.**

1. Scroll back and read every cycle's final panel text. The ending reason (`Sweep invalidation touched`, `Reclaim did not produce qualified displacement in time`, `Break exceeds maximum sweep depth`, and so on) tells you which rule did the work.
2. Use *Export current diagnostic report* and keep the JSON with your notes; it contains every retained cycle, its evidence items and the retained events, including retests and 1R observations that are not drawn.
3. Record your order-flow mode and settings for the session. Change one setting at a time and note the date.
4. Remember that a range box starts earlier than the bar where it became known. Judge a cycle by its known bar (`Range known · bar N`), not by where the box begins, or you will fool yourself in hindsight.
5. Judge outcomes in your own terms: your entries, your costs, your risk. The indicator does not model them.

### 6. Mistakes to avoid

- Treating the word "manipulation" as proof of intent, hidden stops or wrongdoing. It names a price pattern.
- Acting on the sweep alone. A sweep without a closed-price reclaim is incomplete.
- Using the 1R and 2R lines as targets.
- Reading 100/100 as "safe". Evidence is a checklist of the study's conditions, and a 100/100 cycle was invalidated in the demo run.
- Ignoring the size of R and sizing for a normal candle.
- Loosening thresholds until the chart is full of cycles, then judging the indicator by the noise.
- Changing the order-flow mode after seeing the outcome.
- Ignoring expired and invalidated cycles because they are less exciting.
- Trusting readings across a reconnect, history reload or data correction without checking that the study has rebuilt.

### 7. Risk

Trading futures and cryptocurrency involves substantial risk of loss, including, on some leveraged products, losses beyond your initial deposit. Cival Manipulation describes what has already happened in closed candles and recorded flow; it does not describe what will happen. Test on replay or a simulated account first, with the settings you intend to use. Size positions so that a stop-out is affordable, from the stop distance rather than from the evidence score. Past observations, including the demonstration run quoted here, do not predict future results. Slippage, fees, funding and spread are not modelled. You are responsible for every order you place, and the indicator is not certified for automated execution.

---

## Cival Pressure Toolkit

### 1. Context first

- **Set the floor for your instrument.** *Minimum aggressive row volume* is 10 in **feed units**. That is a very different size on a coin-denominated perpetual than on an index future. Before judging any output, make the floor mean something for what you trade.
- **Check which layers have data.** Bubbles and absorption candidates need footprint. Big prints need individual trade history. Depth needs a live depth feed. The panel's readiness and tape lines say which are working.
- **Where are you?** A bubble in the middle of nowhere is a description of one candle. A bubble at a level you already had a reason to care about is a different conversation; the toolkit cannot tell you which level matters.
- **What time is it?** Thin hours and scheduled releases change how much one burst of aggression means.

### 2. The prices this toolkit gives you

| Price | What it is | What it is not |
|---|---|---|
| **Bubble price** | The qualifying row with the largest row volume in that candle for that side | A level where anyone is positioned |
| **Absorption line** | A one-tick band at the wick row's price, from the next bar until first touch | Confirmed absorption, support or resistance |
| **Big-print price** | The price of the largest exceptional print on that side in that candle | An order book level |
| **Round-number lines** | Arithmetic multiples of a 1/2/5 step | Anything about orders |
| **Depth bars** | The nearest 20 levels of the live book | A record of resting liquidity over time |

**There is no invalidation price, stop or target in this toolkit.** It has no lifecycle. Any stop you use comes from your own structure, so decide it before you act.

### 3. Playbook A - A pressure bubble at a level you already care about

**Idea.** One candle shows a row (or several) where one side executed at least 3 times the other, at a size that clears your floor. The "Strong" label means the biggest qualifying row was large relative to the previous 20 bars' rows.

**What must be true on the chart.**

1. The bubble belongs to a **closed** candle, and the readiness line begins `Active`.
2. The number in the centre and the `B:` / `S:` / `Δ:` text make sense for your instrument (check the units).
3. The bubble sits at or near a level you identified independently. If it does not, you are reading a candle, not a level.
4. You have looked at how that candle **closed** relative to the bubble's price, and what the next candles did. The bubble describes the aggression; it does not say whether it held.

**Where the prices sit.** The bubble's price is the strongest qualifying row. Everything else (a stop, an entry, a target) is yours to define.

**How a trader might use it.** Some traders note the bubble price as a level to watch for a return, some read it as context for how aggressive one side was before a rejection or continuation, and some ignore it unless another tool agrees. If you plan a trade around it, the invalidation has to come from your structure (for example beyond the candle's extreme if that is where your idea is wrong), and size must come from that distance.

**When to stand aside.** The footprint is partial (`Partial bid/ask footprint` in the panel); the bubble is mid-range with no reference you trust; the floor is so low that every candle has one; you are reading a bubble from a candle that is not yet closed.

**What cancels it.** Whatever you wrote down as the invalidation before you acted. The indicator supplies no cancel condition; write yours first.

### 4. Playbook B - A wick absorption candidate as a watch level

**Idea.** A wick row with unusually large volume, dominated by one side, leaves a one-tick line that runs until price first touches it. The indicator asks a question (`Absorption?`); it does not answer it.

**What must be true on the chart.**

1. An `Absorption?` marker on a closed candle, and an untouched line from the following bar.
2. A lower-wick candidate (green) means aggressive selling dominated that row; an upper-wick candidate (tomato) means aggressive buying dominated it.
3. You know the line ends at the **first touch, even by the forming candle**, so it can vanish before the next close.

**How a trader might use it.** As a watch level for the next visit, not as an entry in itself. The first touch is the thing to observe: how price behaves there, on closed candles, is your information. A stop would come from your own structure, for example beyond the wick extreme if that is where your idea fails.

**What the demo data says about touches.** In the demo run, the toolkit created 285 lines; 277 were touched later, and 158 of those by the very next candle. Being touched is the ordinary fate of a line. It says nothing about whether the level mattered.

**When to stand aside.** The line was touched before you could assess it; the candidate is in the middle of a large range; nothing independent supports the level.

**What cancels it.** A closed candle through the row against your idea, or whatever you defined in advance. The candidate itself is never "confirmed" by the toolkit.

### 5. Playbook C - Big prints, depth and round numbers as execution context

**Idea.** These three layers are better suited to judging *how* to act than *whether* to.

- **Big prints** mark unusually large single executions relative to the previous 100 bars of prints. They are observed aggressive prints, not identities. On a fresh load they can appear only on roughly the newest 20 closed bars.
- **Live depth** shows the nearest 20 levels of the current book. It is live-only, can change at any moment, and is hidden when stale. It is not evidence that resting orders will remain.
- **Round numbers** are arithmetic. Price often reacts to them only because people look at them; the toolkit makes no claim.

**What a trader might do.** Use them to judge slippage, to avoid placing an order into an obvious round-number cluster, or to see whether a print arrived with a pressure bubble on the same candle. Treat none as a setup.

**When to stand aside.** The tape line shows low coverage or `No individual print history`; depth reads `Depth stale/awaiting fresh feed`; you are replaying history (depth does not exist for history).

**What cancels it.** These layers do not generate ideas to cancel. If you are treating one as a trade trigger, the idea has no basis in the indicator.

### 6. Using it with Cival Manipulation

If you run both, check whether Pressure Toolkit bubbles or absorption candidates coincide with a Manipulation sweep or reclaim candle. They calculate independently from their own settings and neither reads the other's output, but both read the same footprint, so agreement is context for your discretion, not independent evidence.

### 7. Journaling and mistakes

**Journal.** Set *CSV export folder* to a folder per chart or instrument so files do not overwrite each other. Record the floor, the ratio and the threshold mode alongside each session. Screenshot the decision candle with the panel visible so you can see later whether the tape and footprint were complete. Review lines by what price did on closed candles after the first touch, in your own terms.

**Mistakes to avoid.**

- Reading the bubble's number as the candle's volume or as a single order. It is the aggressive side's volume summed over the qualifying rows.
- Treating `Absorption?` as confirmed absorption or as support or resistance.
- Ignoring units: a row floor of 10 means different things on different instruments.
- Trading a line you saw only because the forming candle has not touched it yet.
- Expecting print bubbles on old bars after a fresh load, or reading depth bars as history.
- Reading round numbers as barriers.
- Lowering the floor and ratio until every candle has a bubble, then judging the indicator by the noise.
- Using the toolkit's output as a stop or target. It provides none.

### 8. Risk

Trading futures and cryptocurrency involves substantial risk of loss, including, on some leveraged products, losses beyond your initial deposit. Cival Pressure Toolkit describes executed order flow and live context; it does not describe what will happen. Test on replay or a simulated account first, with your own volume floor and settings. Size positions so that a stop-out is affordable, from your own stop distance. Past observations, including the demonstration run quoted here, do not predict future results. Slippage, fees, funding and spread are not modelled, and live depth can change or disappear at any moment. You are responsible for every order you place, and the toolkit is not certified for automated execution.



## Cival Manipulation & Pressure Toolkit — Settings Reference

Version 1.0.0. Generated from the compiled ATAS plugin: every value below is the default a fresh instance loads with.

## Cival Manipulation

Closed-bar consolidation, one-sided sweep/reclaim and directional expansion, with recorded footprint evidence. Research only.

### 00 Chart clarity

| Setting | Default | Allowed |
|---|---|---|
| Compact display (full detail must be off) | on | on / off |
| Full analysis detail | on | on / off |

### 01 Consolidation

| Setting | Default | Allowed |
|---|---|---|
| Range bars | 12 | 4 – 80 |
| ATR baseline bars | 14 | 4 – 100 |
| Maximum range / ATR | 3.2 | 0.5 – 12 |
| Maximum price efficiency | 0.3 | 0.01 – 0.9 |

### 02 Sweep and reclaim

| Setting | Default | Allowed |
|---|---|---|
| Minimum sweep / ATR | 0.15 | 0.01 – 2 |
| Maximum sweep / ATR | 1.75 | 0.1 – 8 |
| Reclaim window (bars) | 3 | 1 – 20 |

### 03 Directional expansion

| Setting | Default | Allowed |
|---|---|---|
| Expansion window (bars) | 8 | 1 – 40 |
| Minimum body / ATR | 0.8 | 0.1 – 4 |
| Minimum body / candle range | 0.55 | 0.1 – 0.95 |
| Opposite boundary clearance / ATR | 0.1 | 0.01 – 2 |

### 04 Recorded orderflow

| Setting | Default | Allowed |
|---|---|---|
| Orderflow confirmation | UseWhenAvailable | UseWhenAvailable, RequireCompleteDelta, PriceOnly |
| Minimum directional delta % | 8 | 0 – 90 |

### 05 Lifecycle

| Setting | Default | Allowed |
|---|---|---|
| Range timeout (bars) | 40 | 4 – 200 |
| Expansion timeout (bars) | 32 | 2 – 200 |
| Cooldown bars | 4 | 0 – 40 |

### Alerts

| Setting | Default | Allowed |
|---|---|---|
| Local alert on NEW confirmed expansion | off | on / off |
| Alert sound | alert1 | String |

### Appearance

| Setting | Default | Allowed |
|---|---|---|
| Show phase labels | on | on / off |
| Show reference risk guides | on | on / off |
| Show evidence dashboard | on | on / off |
| Dashboard corner | TopRight | TopRight, TopLeft, BottomRight, BottomLeft |
| Dashboard width | 370 | 240 – 520 |
| Maximum visible cycles | 8 | 1 – 32 |
| Range color | #38BDF8 | Color |
| Sweep color | #C084FC | Color |
| Long expansion color | #34D399 | Color |
| Short expansion color | #FB7185 | Color |

### Export

| Setting | Default | Allowed |
|---|---|---|
| Export current diagnostic report | off | on / off |

### Performance

| Setting | Default | Allowed |
|---|---|---|
| Maximum bars back | 3000 | 100 – 10000 |

## Cival Pressure Toolkit

### 00 Chart clarity

| Setting | Default | Allowed |
|---|---|---|
| Compact display (full detail must be off) | on | on / off |
| Full analysis detail | on | on / off |

### Alerts

| Setting | Default | Allowed |
|---|---|---|
| Alert on round-number cross | off | on / off |
| Pressure bubble alerts | on | on / off |
| Big print alerts | on | on / off |
| Absorption candidate alerts | on | on / off |
| Absorption line touch alerts | on | on / off |
| Alerts on closed signal / level touch | off | on / off |
| Alert sound | alert1 | String |

### Appearance

| Setting | Default | Allowed |
|---|---|---|
| Compact volume numbers | on | on / off |
| Avoid overlapping labels | on | on / off |
| Minimum bar spacing for signal labels (pixels) | 6 | 0 – 30 |
| Maximum visible zones | 12 | 1 – 100 |
| Show touched levels | off | on / off |
| Show labels | on | on / off |
| Show bubble volume numbers | on | on / off |
| Bubble number color | #FFFFFF | Color |
| Bull color | #3CB371 | Color |
| Bear color | #FF6347 | Color |

### Big prints

| Setting | Default | Allowed |
|---|---|---|
| Minimum populated lookback coverage (%) | 80 | 0 – 100 |
| Allow incomplete history | off | on / off |
| Robust threshold | StandardDeviation | StandardDeviation, Percentile, MedianMad |
| Percentile threshold | 99 | 50 – 100 |
| Print statistics lookback (bars) | 100 | 5 – 500 |
| Standard deviation multiplier | 2 | 0 – 10 |
| Minimum individual print volume | 0 | 0 – 100000000 |

### Export

| Setting | Default | Allowed |
|---|---|---|
| CSV export folder (blank disables) | (blank) | String |

### Features

| Setting | Default | Allowed |
|---|---|---|
| Pressure bubbles | on | on / off |
| Wick absorption candidates | on | on / off |
| Individual big prints | on | on / off |
| Live resting depth | on | on / off |
| Round-number levels | on | on / off |

### Information panel

| Setting | Default | Allowed |
|---|---|---|
| Automatic panel placement | on | on / off |
| Panel font size | 13 | 10 – 22 |
| Compact panel (title + two lines) | on | on / off |
| Show readiness/status panel | on | on / off |

### Performance

| Setting | Default | Allowed |
|---|---|---|
| Depth stale timeout (seconds) | 10 | 1 – 300 |
| Depth row expiry (seconds) | 60 | 1 – 3600 |
| Maximum retained individual prints | 100000 | 1000 – 1000000 |
| Maximum bars back | 10000 | 100 – 100000 |

### Pressure

| Setting | Default | Allowed |
|---|---|---|
| Pressure ratio | 3 | 1 – 100 |
| Minimum aggressive row volume | 10 | 0 – 100000000 |
| Row statistics lookback | 20 | 5 – 500 |
| Round-number step (0 = automatic) | 0 | 0 – 100000000 |



## Cival Manipulation & Pressure Toolkit — Platform Compatibility

The ATAS plugin is the reference implementation. Each port computes what its platform's data allows and labels
anything approximate or unavailable inside the indicator itself. The sections below are the READMEs that ship next
to each port's source file (`ports/<platform>/README.md`).

## TradingView (Pine Script v6)

## Cival Manipulation and Cival Pressure Toolkit for TradingView (Pine Script v6)

Two overlay indicators ported from the ATAS originals **Cival Manipulation v1.1.1** and **Cival Pressure Toolkit v1.0.0**. Neither trades, sends orders or makes network calls. Evidence points are a checklist, not a probability, and nothing here claims profit, win rate or accuracy.

| File | What it does | Data it needs |
|---|---|---|
| `CivalManipulation.pine` | Closed-bar consolidation, then a one-sided sweep and reclaim, then a directional expansion, with optional recorded-orderflow evidence. "Manipulation" names a price/flow pattern, not proof of intent. | Price and volume only. Orderflow evidence uses `request.footprint()` (Premium/Ultimate) when available, otherwise an optional, labelled lower-timeframe approximation. |
| `CivalPressureToolkit.pine` | Footprint pressure bubbles, wick-absorption candidates with until-touch lines, and adaptive round numbers. | Footprint rows (Premium/Ultimate) for bubbles and absorption lines. Round numbers need no footprint. |

**Not available on TradingView:** individual big prints (including the print-statistics settings and print alerts) and live resting depth / DOM bars. Pine has no tape and no order-book data, so these Pressure Toolkit features cannot be built, and nothing is simulated in their place. The indicator's panel states this.

### Install

1. In the TradingView Pine Editor choose *Open > New blank indicator*, paste one file, *Save*, *Add to chart*. Repeat for the second file.
2. Use standard candles/bars on a symbol and timeframe where TradingView can build a footprint.
3. Alerts are off by default. Enable the alert input you want, then create a TradingView alert on the indicator with condition **Any alert() function call**. Alerts fire only on live bar closes, never for history.
4. If TradingView reports a runtime/time-limit error, raise **Footprint ticks per row** or lower **Maximum bars back** (group `98 TradingView data` and `Performance`).

### Cival Manipulation

#### Feature matrix

Values: Full / Approximate / Not available / Not ported.

| Feature | ATAS original | This port | Notes |
|---|---|---|---|
| Consolidation detection (range bars, ATR baseline, max range/ATR, max efficiency) | Yes | Full | Boundaries freeze at the confirmation close; ATR is the mean of the prior true ranges. |
| One-sided sweep, ambiguous double sweep, maximum sweep depth | Yes | Full | Both boundaries in one candle invalidates the cycle. |
| Closed-price reclaim within a window | Yes | Full | |
| Expansion confirmation (opposite-boundary clearance, body/ATR, body/range, close location) | Yes | Full | A later closed candle is required; no same-bar expansion. |
| Phases: range, swept, reclaimed, expansion, complete, invalidated, expired | Yes | Full | Range, expansion and cooldown timeouts as in ATAS. |
| Invalidation (outward-rounded), 1R/2R reference guides, retest, midpoint failure | Yes | Full | Invalidation wins over targets; guides are reference prices, not trades. |
| Coverage-break handling (clears state across gaps) | Yes | Full | Same rule: a bar more than 1.5x the chart timeframe after the previous one resets state. This means weekend/overnight gaps reset it on equity charts, exactly as in ATAS. |
| Evidence points /100, price-based items (compression, sweep, reclaim, displacement, relative volume, anchored candle VWAP, 20-bar mean) | Yes | Full | Observable score shown as points / available points. |
| Evidence points, flow items (directional delta, 5-bar CVD, counterflow reclaim) | Yes | Approximate | From the reconciled footprint when available. If not, from the labelled lower-timeframe up/down-volume approximation (counted up if the lower bar closed above its open, down if below). The dashboard says which source is active. |
| Evidence point, recorded stacked imbalance | Yes | Approximate | Footprint only, never approximated. Counts runs of 3 or more adjacent rows with an aggressor at least 3x the opposite side one row away. Depends on ticks per row. |
| Orderflow modes UseWhenAvailable / RequireCompleteDelta / PriceOnly | Yes | Approximate | RequireCompleteDelta accepts footprint delta only; the lower-timeframe approximation is never accepted for it. |
| Range, sweep and expansion regions, labels, "range known" line | Yes | Approximate | Time-anchored boxes and labels; no collision avoidance. |
| Reference risk guides for the selected cycle | Yes | Approximate | Selected cycle = most recent one (no mouse pick). |
| Evidence dashboard | Yes | Approximate | Pine table, four corners, no width control. Adds a `Flow data:` row naming the active source. |
| Expansion tint | Yes | Full | Per closed bar from trigger to the cycle's last bar. |
| Hidden outputs: phase code and evidence points | Yes | Full | Data-window plots. |
| Opt-in alert on a NEW confirmed expansion | Yes | Approximate | `alert()` at bar close; alert sound is chosen in the alert dialog. |
| Compact display / full analysis detail | Yes | Approximate | Compact shows the newest cycle only. The ATAS read-out badge is not ported. |
| Event ledger and diagnostic JSON export | Yes | Not available | Pine cannot write files; the event ledger existed only for the report. |
| Cycle and history limits (64 cycles, 300-bar history) | Yes | Full | |

#### Settings

All ATAS inputs keep their names, groups and defaults, including `Orderflow confirmation` (`UseWhenAvailable`, `RequireCompleteDelta`, `PriceOnly`).

TradingView-only inputs, group `98 TradingView data`: **Footprint ticks per row** (1), **Lower-timeframe delta approximation when footprint is unavailable** (on), **Lower timeframe for the approximation** (1 minute; must be lower than the chart timeframe, otherwise the approximation is off).

| Not ported | Reason |
|---|---|
| Dashboard width | Pine tables size to their text. |
| Alert sound | Chosen in TradingView's alert dialog. |
| Export current diagnostic report | No file I/O in Pine. |

#### Known differences from ATAS

1. Flow evidence can come from a lower-timeframe approximation on plans without footprint, which ATAS does not have. It is labelled and never feeds RequireCompleteDelta.
2. Footprint totals must match chart volume within 1% (the ATAS rule); symbols whose TradingView chart volume differs from their footprint total therefore get no flow evidence on those bars.
3. "Maximum visible cycles" keeps the newest N overall; Pine cannot read the scrolled viewport.
4. Bar indices in labels are Pine `bar_index` values, not ATAS ordinals.

### Cival Pressure Toolkit

#### Feature matrix

| Feature | ATAS original | This port | Notes |
|---|---|---|---|
| Pressure bubbles (rows where aggressive volume is at least ratio x opposite and above the floor) | Yes | Approximate | Same rule on TradingView footprint rows (1 tick per row by default). Bubble area is bucketed into five label sizes instead of a continuous 5-20 px radius, and has no outline. |
| "Strong pressure" shading and B/S/delta text | Yes | Full | Strong when the largest qualifying row is at or above the significant-row threshold. |
| Significant-row threshold (greater of the floor and mean + 2 population std. dev. of the prior bars' rows) | Yes | Full | Needs every one of the prior lookback bars to have footprint rows, and at least 30 rows in total. |
| Bubble volume numbers, compact numbers, number colour | Yes | Approximate | Number sits inside the circle label. |
| Wick-absorption candidates | Yes | Approximate | Heavy row with aggressive selling in a lower wick (or buying in an upper wick). Candidates do not establish that any participant absorbed anything. |
| Until-touch lines/zones, touched-level toggle, nearest-first visible limit | Yes | Approximate | Touches are detected on closed bars only. ATAS also marks a touch while the forming candle trades through the level. |
| Round-number levels (adaptive 1/2/5 step, explicit step) | Yes | Full | Nine levels around the last price; labels sit at the last bar. |
| Round-number cross alert | Yes | Approximate | Fires on realtime updates as TradingView delivers them; never on history. |
| Individual big prints, print statistics, thresholds, print alerts | Yes | Not available | No tape in Pine. |
| Live resting depth / DOM bars, depth stale and expiry timeouts | Yes | Not available | No order book in Pine. |
| Alerts: pressure bubble, absorption candidate, line touch | Yes | Approximate | `alert()` at bar close under the master switch. |
| Information panel with readiness text | Yes | Approximate | One table; font size mapped to five sizes; no automatic multi-panel arrangement. Always states that prints and DOM are unavailable. |
| Compact display / full analysis detail | Yes | Approximate | Compact: newest 8 signals within 21 bars, 3 nearest zones, plain-language labels. Read-out badge not ported. |
| Label overlap avoidance, minimum bar spacing for labels | Yes | Not ported | Pine cannot measure pixels. A drawing cap (default 120 signals) protects the 500-label limit. |
| CSV export | Yes | Not available | No file I/O in Pine. |

#### Settings

Present with ATAS names, groups and defaults: `Pressure ratio`, `Minimum aggressive row volume`, `Row statistics lookback`, `Round-number step (0 = automatic)`, `Pressure bubbles`, `Wick absorption candidates`, `Round-number levels`, `Alerts on closed signal / level touch`, `Pressure bubble alerts`, `Absorption candidate alerts`, `Absorption line touch alerts`, `Alert on round-number cross`, `Maximum bars back`, `Panel font size`, `Compact panel`, `Show readiness/status panel`, `Compact volume numbers`, `Maximum visible zones`, `Show touched levels`, `Show labels`, `Show bubble volume numbers`, `Bubble number color`, `Bull color`, `Bear color`, and the two chart-clarity switches.

TradingView-only inputs, group `98 TradingView data`: **Footprint ticks per row** (1), **Maximum footprint rows per bar** (5000; a bar needing more is treated as having no footprint), **Maximum drawn signals** (120), **Panel position**.

| Not ported | Reason |
|---|---|
| Individual big prints, Live resting depth | Not available on TradingView. |
| Big-print settings (robust threshold, percentile, standard-deviation multiplier, lookback, floor, coverage, partial history), Maximum retained individual prints, Big print alerts | Depend on individual prints. |
| Depth stale timeout, Depth row expiry | Depend on live depth. |
| Automatic panel placement | One table; use Panel position. |
| Avoid overlapping labels, Minimum bar spacing for signal labels | Pixel measurement unavailable. |
| CSV export folder | No file I/O in Pine. |
| Alert sound | Chosen in TradingView's alert dialog. |

#### Known differences from ATAS

1. Row prices use the row's lowest tradable tick (`down_price + max(0, up_price - down_price - mintick) / 2`). This is an assumption about TradingView's row edges, unverified on live data, and equals the ATAS price at 1 tick per row.
2. Zones are drawn from the bar after the source, with a half-row either side of the row price.
3. Footprint availability, history depth and chart-volume agreement differ from an ATAS feed; a bar with no reconcilable footprint breaks the row-statistics window.
4. Wide-range bars at 1 tick per row can be slow; raise ticks per row if TradingView reports a time limit.

### Verification status

Both scripts compiled with TradingView's Pine compiler (`pine_check`) on 2026-10-26: `compiled: true`, 0 errors, 0 warnings. **Neither has been run on a live chart or in replay.** Footprint row conventions, history depth, runtime on real symbols, alert delivery and drawing appearance are unverified.

## NinjaTrader 8 (NinjaScript)

## Cival Manipulation and Cival Pressure Toolkit - NinjaTrader 8

Two NinjaScript indicators ported from the ATAS originals:

- **Cival Manipulation** (`CivalManipulation.cs`, port of ATAS v1.1.1): closed-bar consolidation -> one-sided sweep -> reclaim -> directional expansion, with recorded footprint evidence. "Manipulation" names a price/flow pattern. It is not evidence of anyone's intent, hidden stops or misconduct.
- **Cival Pressure Toolkit** (`CivalPressureToolkit.cs`, port of ATAS v1.0.0): footprint pressure bubbles, wick-absorption candidates with until-touch lines, adaptive round numbers and a live resting-depth view. Individual big prints are **not** part of the NinjaTrader 8 port (see below). Absorption candidates cannot establish that any specific passive participant absorbed the trades.

Evidence points in Cival Manipulation are a rule checklist out of 100, not a probability. Guides are reference prices only, not orders, fills or P&L. Neither indicator places orders, touches an account or uses the network.

### Requirements

| Item | Requirement |
|---|---|
| Platform | NinjaTrader 8 (NinjaScript, .NET Framework 4.8). |
| Bar type | Order Flow+ **Volumetric** bars with **Ticks per level = 1** and delta type **Bid/Ask** for footprint evidence (Manipulation flow evidence; all of Pressure Toolkit's bubbles and absorption). |
| License / data | An Order Flow+ entitlement and a feed that supplies tick-level bid/ask history and real-time data. The depth view additionally needs Level 2 market depth from your feed. |
| Calculation | `Calculate` must stay **On bar close**. Any other setting is refused and the study says so. |
| Other bar types | Cival Manipulation still runs on price alone: with Orderflow confirmation = "Use when available" flow evidence is shown as unavailable; with "Require complete delta" no expansion can confirm. Pressure Toolkit shows "footprint features off" and draws no bubbles or candidates; round numbers and depth still work. Nothing is estimated or filled in. |
| **Compile status** | **Not compiled.** NinjaTrader is not installed on the machine where these ports were written, so neither file has been through the NinjaScript compiler. Compile on import: **NinjaScript Editor -> F5**. Please report any compiler message verbatim. |

### Install

1. Close any open NinjaScript Editor windows.
2. Copy `CivalManipulation.cs` and/or `CivalPressureToolkit.cs` to `Documents\NinjaTrader 8\bin\Custom\Indicators\`.
3. In NinjaTrader choose **New -> NinjaScript Editor** and press **F5** to compile. If the compiler reports an error, keep the exact message.
4. Open a chart with an Order Flow+ Volumetric series (Ticks per level 1), right-click -> **Indicators** and add **Cival Manipulation** and/or **Cival Pressure Toolkit**.
5. Allow enough completed bars for the warm-up (Manipulation: 14 prior true ranges and 12 range candles; Pressure Toolkit: 20 prior bars that all have footprint rows).

Values used below: **Full** = same rules and thresholds; **Approximate** = same idea, platform difference described; **Not available** = the platform cannot supply it; **Not ported** = not implemented.

---

### Cival Manipulation

#### Feature matrix

| Feature | ATAS original | This port | Notes |
|---|---|---|---|
| Consolidation detection (12 bars, ATR 14, width <= 3.2 ATR, efficiency <= 0.30, frozen boundaries) | Yes | Full | |
| One-sided sweep (0.15 to 1.75 ATR), both-sided sweep invalidates | Yes | Full | |
| Closed-price reclaim within the window | Yes | Full | |
| Directional expansion (later bar, opposite boundary +0.10 ATR, body, body/range, close location) | Yes | Full | |
| Orderflow mode (price only / use when available / require) | Yes | Full | Needs Volumetric bars for any flow evidence. |
| Invalidation, retest, midpoint failure, 1R / 2R guide observation, timeouts, cooldown | Yes | Full | Adverse invalidation wins over targets, as in the original. |
| Evidence points /100 (11 checks) | Yes | Full | Not a probability. Frozen at each phase confirmation. |
| Recorded flow from price rows (whole-bar delta, 5-bar CVD, stacked-imbalance runs of 3 at 3x) | Yes | Full | Rows come from Volumetric bars. Flow counts only when classified volume is within 1 percent of candle volume. |
| Coverage / ordering break quarantine | Yes | Approximate | Time gaps (more than 1.5x the bar duration) are detected for Second, Minute and Day bars and for Volumetric bars built on them, as in the original. Other bar types have no fixed duration, so only malformed bars and out-of-order timestamps interrupt. |
| Range, sweep and expansion regions with phase labels | Yes | Approximate | `Draw.Rectangle`, `Draw.Text`, `Draw.VerticalLine`, `Draw.Dot` in bar/price units. No label collision handling; the full-height expansion band is not drawn. |
| Reference guides (invalidation, 1R, 2R) | Mouse-selected cycle | Approximate | Dashed `Draw.Line` for the newest cycle; no crosshair selection. |
| Evidence dashboard | Floating panel, width setting | Approximate | One `Draw.TextFixed` block. Corner supported, width not ported. |
| Local alert on new confirmed expansion | Yes, off by default | Full | Real-time only; history never alerts. `Alert sound` is a file name under `<NinjaTrader install>\sounds` (default `alert1` -> `alert1.wav`); a missing file is silent. |
| Diagnostic JSON export | Action button | Approximate | Switch `Export current diagnostic report`: when on, `Documents\NinjaTrader 8\CivalManipulation\manipulation-report.json` is rewritten once after history loads and again whenever a phase event is added in real time. |
| Hidden outputs (phase code, evidence points) | Hidden series | Full | Public non-plotted `Series<double>`: `ManipulationPhase` (0 none, 1 range, 2 swept, 3 reclaimed, 4 expansion, 5 complete) and `ManipulationEvidencePoints`. |
| Bounded retention (64 cycles, 512 events, 300 bars) and `Maximum bars back` | Yes | Full | |
| Chart clarity compact display | Yes | Approximate | Only the compact/full switch (shows the newest cycle only). The clarity banner is not ported. |
| Select cycle by mouse position | Yes | Not ported | Closed-bar study; the newest cycle is always the selected one. |

#### Settings

31 of 32 ATAS inputs are ported with the same display names, group names and defaults: `00 Chart clarity`, `01 Consolidation`, `02 Sweep and reclaim`, `03 Directional expansion`, `04 Recorded orderflow`, `05 Lifecycle`, `Performance`, `Appearance`, `Alerts`, `Export`. Values are clamped to the documented ranges, then validated; invalid combinations (for example a range timeout shorter than the range bars) stop the study and the HUD shows "Invalid manipulation settings".

| Not ported | Reason |
|---|---|
| Dashboard width | `Draw.TextFixed` has no width control. |

#### Known differences from ATAS

- **Different data.** Same rules, but price rows come from NinjaTrader Volumetric bars. Feed, history and bid/ask classification differ, so delta, CVD and stack evidence can differ from ATAS on the same market.
- **Timestamps.** NinjaTrader bar timestamps are used (bar close time for time bars); ATAS used bar open and next-open times. Cycle ids contain the bar timestamp in milliseconds since 1970 of the NinjaTrader clock, with no time-zone conversion.
- **Reloading.** Any input change reloads the indicator and recomputes from the bounded window (`Maximum bars back`, default 3000).

---

### Cival Pressure Toolkit

#### Feature matrix

| Feature | ATAS original | This port | Notes |
|---|---|---|---|
| Footprint pressure bubbles (row ratio 3, minimum aggressive row volume 10) | Yes | Full | Rows come from Volumetric bars. Needs 20 prior bars that all have rows and at least 30 prior rows, as in the original. |
| "Strong pressure" (row volume >= mean + 2 standard deviations of the prior 20 bars' rows) | Yes | Full | |
| Bubble size (square-root scale, 5 to 20 px), bubble volume numbers | Yes | Full | Drawn in `OnRender` with SharpDX. |
| Signal labels (compact K/M numbers, minimum bar spacing, overlap avoidance) | Yes | Approximate | Same rules; text widths come from DirectWrite so label placement differs slightly. |
| Wick absorption candidates | Yes | Full | Large-volume row in a lower wick with sell-side dominance, or upper wick with buy-side dominance. |
| Until-touch absorption lines | Yes | Approximate | Touch is evaluated when a bar closes (the original also checked the forming bar), so a line ends one close later than on ATAS. |
| Round-number levels (automatic 1/2/5 step near 0.5 percent of price, or manual step) | Yes | Full | Based on the last closed price. |
| Alerts: pressure, absorption, line touch | Yes, off by default | Approximate | Real-time `Alert()` only; touch alerts fire at bar close. |
| Alert on round-number cross | Yes, off by default | Approximate | Checked between consecutive closes, not every tick. |
| Live resting depth bars (nearest 20 levels) | Updated levels only, with stale and row-expiry timeouts | Approximate | Built from the NinjaTrader level-two book via `OnMarketDepth` (live only, no history, needs Level 2 from your feed). Shown only while updates are arriving: after `Depth stale timeout` seconds without an update the view says "Depth stale/awaiting fresh feed". Per-row expiry is not ported because the full book is maintained. |
| Individual big prints (statistical thresholds, circles, print alerts) | Yes (cumulative trades + live prints) | Not ported | See "Big prints" below. |
| Information panel (title, readiness, data source) | Auto-arranged panels | Approximate | One panel, word-wrapped, compact (3 lines) or full. Automatic placement among several Cival panels is not ported. |
| CSV export of signals and levels | Yes, folder-gated | Approximate | Written when `CSV export folder` is set: after history loads and again when signals or levels change in real time. Timestamps are NinjaTrader bar timestamps; `available_time` equals `time` because the port only acts on closed bars. |
| Chart clarity compact display | Yes | Approximate | Compact mode keeps the last 8 signals from roughly the last 20 bars and 3 levels, with short descriptive labels. The clarity banner is not ported. |
| Share with Cival Decision Panel | Hidden | Not ported | No Decision Panel on this platform. |

#### Big prints (not ported)

The ATAS original reads individual executions, side-classified by the platform, and builds a statistical population from the previous 100 bars. NinjaTrader's help guide states that `OnMarketData` is not called on historical data by default, that Tick Replay replays only Last events, and that historical bid/ask events do not work with Tick Replay. That means the aggressor side of a historical print cannot be established, and it also states only that `OnMarketData` is *expected* to run after `OnBarUpdate`, which is not a guarantee when prints must be assigned to closed bars. A live-only version with a long warm-up would be a different tool, so the feature, its statistics inputs, and its alerts are left out instead of being faked. The panel says so.

#### Settings

32 of 44 ATAS inputs are ported with the same display names, group names and defaults: `Performance`, `Pressure`, `Features`, `Alerts`, `Information panel`, `Appearance`, `Export`, `00 Chart clarity`.

| Not ported | Reason |
|---|---|
| Individual big prints (feature switch) | See above. |
| Maximum retained individual prints | Big prints. |
| Minimum populated lookback coverage (%) | Big prints. |
| Allow incomplete history | Big prints. |
| Robust threshold | Big prints. |
| Percentile threshold | Big prints. |
| Print statistics lookback (bars) | Big prints. |
| Standard deviation multiplier | Big prints. |
| Minimum individual print volume | Big prints. |
| Big print alerts | Big prints. |
| Depth row expiry (seconds) | The NinjaTrader level-two book is complete, so rows do not need to expire. |
| Automatic panel placement | Single panel; no panel registry. |

#### Known differences from ATAS

- **Different data.** Rows come from NinjaTrader Volumetric bars; row volume is bid + ask as in the original. If the row total exceeds the candle volume by more than 1 percent (typical of Ticks per level above 1), the bar is treated as having no footprint rather than drawing inflated bubbles.
- **Closed-bar evaluation.** Touch detection, round-number cross alerts and the status panel update when a bar closes.
- **Rendering.** Bubbles, levels, labels and depth bars are drawn with SharpDX in `OnRender`; colours, fonts and pixel spacing will not be identical to ATAS.
- **Depth subscription.** While the indicator is loaded NinjaTrader delivers level-two updates to it; switch off `Live resting depth` and the updates are ignored.
- **Reloading.** Any input change reloads the indicator; history is limited to `Maximum bars back` (default 10000).

---

### Verification status

Done offline against stand-ins for the NinjaTrader API, because NinjaTrader is not installed here:

- **Cival Manipulation:** the engine reproduced all 56 shared ATAS fixture cases plus the live fixture exactly (more than 34,000 compared values, including every phase, evidence value and event).
- **Cival Pressure Toolkit:** signals and levels were compared with an independent re-implementation of the ATAS rules on three seeded synthetic scenarios with no differences.
- All three indicators (including the Trapped Traders port in its own folder) were driven through load, history and real-time bars, `OnRender` and the exports against the API stand-ins, and checked as C# 7.3 against .NET Framework reference assemblies.

Not verified: compilation against the real NinjaTrader and SharpDX assemblies, behaviour on a live chart, Volumetric and market-depth behaviour on real data, and how the drawings look. The fixtures and scenarios are synthetic; they say nothing about market behaviour, and neither indicator makes any claim of profitability or accuracy.
