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
- In the TradingView Pine Editor choose Open > New blank indicator, paste one file, Save, Add to chart. Repeat for the second file.
- Use standard candles/bars on a symbol and timeframe where TradingView can build a footprint.
- 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.
- If TradingView reports a runtime/time-limit error, raise Footprint ticks per row or lower Maximum bars back (group
98 TradingView dataandPerformance).
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
- 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.
- 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.
- "Maximum visible cycles" keeps the newest N overall; Pine cannot read the scrolled viewport.
- Bar indices in labels are Pine
bar_indexvalues, 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
- 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. - Zones are drawn from the bar after the source, with a half-row either side of the row price.
- Footprint availability, history depth and chart-volume agreement differ from an ATAS feed; a bar with no reconcilable footprint breaks the row-statistics window.
- 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
- Close any open NinjaScript Editor windows.
- Copy
CivalManipulation.csand/orCivalPressureToolkit.cstoDocuments\NinjaTrader 8\bin\Custom\Indicators\. - In NinjaTrader choose New -> NinjaScript Editor and press F5 to compile. If the compiler reports an error, keep the exact message.
- 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.
- 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 depthand 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,
OnRenderand 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.