Cival Liquidity Map — 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 Liquidity Map for TradingView

Port of the ATAS original Cival Liquidity Map v1.0.0.0 to Pine Script v6 (CivalLiquidityMap.pine).

Maps price structure from closed candles: confirmed swing pivots, equal highs / equal lows (EQH / EQL), structural sweep markers, displacement-confirmed structure breaks with a structural block (order-block style zone), and broken blocks that flip to the opposite side. Levels remain on the chart until a candle closes through them. The original is price-only (it does not read footprint, volume or the order book), so this is a near-complete port: it works on every TradingView plan and every symbol with ordinary candles.

Sweeps here are price patterns (a pivot's extreme is exceeded and the bar closes back inside). Neither the original nor this port identifies stop orders or resting liquidity; "liquidity" is a description of where unmitigated highs/lows sit.

Requirements

Item Requirement
Platform TradingView, Pine Script v6
Plan Any. No footprint or lower-timeframe data is used.
Chart type Standard candles / bars. Heikin Ashi and other synthetic types change the structure being measured.
Symbol Any with a defined tick size (syminfo.mintick).

Install

  1. Open the Pine Editor, paste the full contents of CivalLiquidityMap.pine, Save, then Add to chart.
  2. Adjust Pivot confirmation bars, Equal high/low tolerance (ticks) and Displacement / prior ATR to the instrument and timeframe.
  3. Optional alerts: Create alert > Condition: Cival Liquidity Map > Any alert() function call. Off by default.

Verification note: the script was compiled on TradingView's servers (0 errors, 0 warnings). It has not been observed running on a live chart in the build environment.

Feature matrix

Values: Full / Approximate / Not available / Not ported.

Feature ATAS original This port Notes
Confirmed pivots (strict: every other bar in the 2n+1 window is lower/higher), n-bar confirmation delay Yes Full Marks and levels appear only after the confirmation bars close; nothing is backdated.
Equal highs / lows (EQH / EQL) within a tick tolerance Yes Full Level strength 2; band is one tick wide centred on the pivot price.
Sweep markers (SWP high/low (price pattern)) Yes Full High exceeded and close back below, or low exceeded and close back above, against the latest unbroken pivot.
Displacement structure break (BOS displacement) Yes Full Close beyond the latest pivot with body >= multiple x average true range of the previous 20 closed bars.
Structural block (OB structural) Yes Full Range of the most recent opposite-colour candle among the previous 10 closed bars; strength 2.
Broken-block flip (BRK structural) Yes Full When a close passes through a structural block it is invalidated and a flipped zone starts on the next bar.
Close-through invalidation of all levels Yes Full Bull-side levels die on a close below, bear-side on a close above.
Touch state (New / Tested / Invalidated) Yes Full on closed bars Touched levels stay drawn (grey) until invalidated. The original also marks touches on the forming candle; this port updates at bar close.
Zone fill, level line and state label Yes Full Fill opacity scales with strength like the original; labels use the original's expanded wording (Structure zone, Broken structure, Liquidity sweep, Structure break).
Zone ranking and Maximum visible zones Yes Full Same rank formula (distance / strength x age factor). Viewport culling is Not available (Pine cannot see the scrolled window); ranking is across all stored zones.
Show touched levels Yes Full Also shows invalidated levels, ending at the invalidating bar.
Information panel Yes Full content Table; default Compact panel shows title + two lines, as in the original.
Alerts on closed signal / level touch Yes (off) Full alert() per bar close; off by default. Alert sound is Not ported.
Chart-clarity compact mode Yes Approximate Plain-language labels, 3 zones, last 8 marks. The cross-indicator "current chart read" board is Not available.
CSV export (signals / zones) Yes Not available Pine cannot write files.
Share with Cival Decision Panel Yes Not ported No cross-indicator bridge.
Panel pixel layout (offset, width, automatic placement) Yes Not ported Replaced by Panel position.
Label overlap avoidance / minimum bar spacing Yes Not ported Pixel geometry is not readable in Pine.
Presets / review mode None in this indicator n/a

No row in the matrix is Approximate for data reasons: the price logic is identical. The only Approximate row concerns the presentation-only compact display mode.

Settings mapping

Names and groups mirror the ATAS display names. Defaults come from Cival.LiquidityMap.settings.json.

Group Input Default Notes
Structure Pivot confirmation bars 3 (1-50)
Structure Equal high/low tolerance (ticks) 2 (0-100) A 1e-6 tick allowance absorbs floating-point error.
Structure Displacement / prior ATR 1.5 (0.1-10)
Appearance Show information panel on
Appearance Maximum visible zones 12 (1-100) 3 in compact display.
Appearance Show touched levels off
Appearance Show labels on Off = arrows only.
Appearance Bull color / Bear color #3CB371 / #FF6347
Information panel Panel font size 13 (10-22) Approximate mapping to text sizes.
Information panel Compact panel (title + two lines) on
Performance Maximum bars back 10000
Alerts Alerts on closed signal / level touch off
00 Chart clarity Compact display (full detail must be off) / Full analysis detail on / on

Port-only input (group Port (TradingView only)): Panel position.

Not ported: Session start / Session timezone / Initial balance minutes (inherited; Liquidity Map does not use them), Panel top offset / width / automatic placement, Show readiness/status panel (no effect in the original), Compact volume numbers, Show bubble volume numbers, Bubble number color (no bubbles drawn), Avoid overlapping labels, Minimum bar spacing for signal labels, CSV export folder, Alert sound, Share with Cival Decision Panel.

Known differences from ATAS

  1. Bar-close evaluation. Touch and invalidation are evaluated when a bar closes. ATAS marks a touch as soon as the forming candle trades into a level, which can show Tested earlier on a live chart. Historical results are the same.
  2. Floating point. Pine uses floats where ATAS uses decimal. Equal-high/low tolerance comparisons carry a 1e-6 tick allowance; a tolerance hit that differs by one float ulp could classify differently.
  3. Rendering. Zones are boxes plus a centre line extended to the right; a one-tick-high band can look thin at low zoom. Only the highest-ranked zones are drawn (TradingView caps boxes, lines and labels at 500 each).
  4. No viewport awareness. The original culls zones outside the visible window; Pine cannot read the scroll position, so the ranking runs over every stored zone (capped at 1000, oldest dropped, as in the original).
  5. Zone and marker retention. Marker labels beyond TradingView's 500-label limit are dropped oldest-first.
  6. History depth. Only the bars your plan loads are processed; Maximum bars back limits it further.
  7. ATR window. Computed from the 20 closed bars before the signal bar, with the first bar of the window using high-low only (exactly as FlowMath.Atr), which is slightly different from ta.atr.

NinjaTrader 8 (NinjaScript)

Cival Liquidity Map — NinjaTrader 8

Compile on import: NinjaScript Editor → F5. This file has not been compiled against NinjaTrader 8 (NT8 was not available where the port was written). It was type-checked at C# 7.3 against hand-written stand-ins for the NinjaScript / SharpDX types, and every NT8 API name was checked against the NinjaTrader 8 help guide, but only your F5 compile proves it against the real platform.

Summary and requirements

Cival Liquidity Map marks price structure from closed candles only: confirmed swing pivots (available only after their right-hand confirmation bars close), equal highs / lows (EQH / EQL), price sweeps (SWP), displacement-confirmed breaks of structure (BOS) with structural order-block zones (OB), broken-block flips (BRK) and close-through invalidation. It is a price-pattern map: it does not identify stop orders or resting liquidity, and it makes no profit or accuracy claim. Indicator only: no orders, no network.

Requirements: any NinjaTrader 8 chart (no Order Flow+ needed, no Volumetric bars, no tick replay). Calculate = OnBarClose; nothing repaints.

Install

  1. Copy CivalLiquidityMap.cs to Documents\NinjaTrader 8\bin\Custom\Indicators\.
  2. New → NinjaScript Editor, press F5 (Compile).
  3. Chart → right-click → Indicators → Cival Liquidity Map.

How the levels behave

Feature matrix

Feature ATAS original This port Notes
Confirmed pivots (2n+1 window, strict extremes, n-bar delay) Yes Full Pivots exist only after confirmation.
Equal highs / lows with tick tolerance Yes Full
Price sweeps (SWP high / low) Yes Full Price pattern only; stops are not identified.
BOS displacement vs prior ATR Yes Full Simple average of true ranges of the previous (up to) 20 bars.
Structural order-block zones Yes Full Last opposite-colour candle of the previous 10 bars.
Broken-block (BRK) flips Yes Full
Close-through invalidation Yes Full
Touch ("Tested") status Yes Approximate Original also tests on the forming candle; this port tests on closed bars only.
Zone ranking, Maximum visible zones, Show touched levels Yes Full Same rank formula (distance ÷ strength × age factor).
Markers + labels with overlap avoidance Yes Full
Compact display / Full analysis detail Yes Approximate Full detail expands abbreviations as the original does; compact shows ≤ 3 zones, ≤ 8 recent marks and a one-line read in place of the shared "current chart read" board.
Information panel Yes Approximate Drawn by the indicator; no cross-indicator auto-arrange.
CSV export (LiquidityMap-signals.csv, LiquidityMap-zones.csv) Yes Full Same columns.
Alerts (off by default) Yes Approximate NT Alert(), real-time only; sound name maps to <NT install>\sounds\<name>.wav.
Rebuild when provider revises processed history Yes Not available Reload the data to recalculate.
Share with Cival Decision Panel Yes (ATAS-only bridge) Not ported Not part of the shipped settings reference.
Review mode / presets None in the original — —

Settings mapping

ATAS group / name NT8 property Default Notes
Structure / Pivot confirmation bars PivotStrength 3 (1–50)
Structure / Equal high/low tolerance (ticks) EqualToleranceTicks 2 (0–100)
Structure / Displacement / prior ATR ImpulseAtr 1.5 (0.1–10) double
Appearance / Show information panel, Panel top offset, Panel width ShowPanel, PanelTop, PanelWidth true, 50, 380
Appearance / Avoid overlapping labels, Minimum bar spacing, Maximum visible zones, Show touched levels, Show labels AvoidLabelOverlap, MinimumLabelBarSpacing, MaxVisibleZones, ShowTouched, ShowLabels true, 6, 12, false, true
Appearance / Bull color, Bear color BullColor, BearColor MediumSeaGreen, Tomato WPF Brush
Information panel / Panel font size, Compact panel PanelFontSize, CompactPanel 13, true
Export / CSV export folder (blank disables) ExportFolder blank
Performance / Maximum bars back MaxBarsBack 10000
Alerts / Alerts on closed signal / level touch, Alert sound EnableAlerts, AlertSound false, alert1
00 Chart clarity / Compact display, Full analysis detail CleanChart, FullAnalysisDetail true, true

Not ported (and why)

ATAS setting Reason
Session start / Session timezone / Initial balance minutes Have no effect in the ATAS Liquidity Map (the session value is stored and never read); omitted rather than shown as dead controls.
Automatic panel placement Needs ATAS's shared panel registry. Give each Cival panel a different Panel top offset in NT8.
Show readiness/status panel Has no effect in the ATAS analytics indicators.
Compact volume numbers, Show bubble volume numbers, Bubble number color This indicator draws no volume bubbles.

Known differences from the ATAS original

  1. Closed-bar touch tests. ATAS also evaluates "touched" on the forming candle; NinjaTrader's OnBarClose model only sees closed bars, so "Tested" (and the touch alert) appears when the touching bar closes. Invalidation and all structure logic were already closed-bar in the original.
  2. Panels. Drawn with SharpDX at the Panel top offset; there is no cross-indicator auto-arrangement.
  3. Numeric type. Prices are doubles with a 1e-6 tick tolerance on equality-sensitive comparisons; ATAS uses decimals. A close exactly on a level's edge can differ in rare cases.
  4. Maximum bars back. Only the latest N bars are processed, the same intent as the original; the retained working set is the last 1000 closed bars.
  5. Time columns in CSV. time is the derived bar open (exact for Minute / Second bars, otherwise the previous bar's stamp) and available_time is the bar's close stamp, both in NinjaTrader chart time.

SWP, BOS, OB and BRK are descriptions of observed price behaviour, not identification of stop orders, and not calibrated probabilities. No profitability is claimed.