NinjaTrader 8 indicator, NinjaScript

Zones, sweeps, levels and signals on one closed-bar chart

Order blocks, fair value gaps, equal highs and lows, sweeps and yesterday's high and low usually mean several tools or a lot of marking up by hand. Smart Liquidity Matrix draws them all from closed bars, prints BUY and SELL plates from one fixed set of rules, and runs those rules on twenty-four timeframes of the chart's instrument. It draws and alerts, and that is all: the stars on its plates are fixed, so it does not grade signals, and it does not mark a line as reached.

  • Order blocks, fair value gaps, equal highs and lows, sweeps and previous-period levels
  • BUY and SELL plates from one set of rules, decided on closed bars
  • An entry, a stop and two targets drawn for the newest signal
  • A 30-row dashboard with a scanner on twenty-four timeframes

$77one payment, lifetime licence

Get the lifetime licence
Read the user guide (PDF)
Smart Liquidity Matrix on an NG 15-minute chart in NinjaTrader 8: two BUY plates, sweep plates, order blocks, a fair value gap, the previous-day high and low, the entry, stop and two targets of the newest signal, and the dashboard in the right margin
  1. BUY, the newest signalA green plate under the low of a closed bar, and the dashboard counts the bars since it. The three stars are on every plate and do not grade a signal.
  2. SweepsPurple plates over bars that went above a level and closed back below it. The 1D High line runs just under them here.
  3. TP1 2.916, TP2 2.933The targets of the newest signal. The newest bar, still forming, has traded above both, and nothing marks them as reached: the indicator does not mark a line as reached.
  4. Entry 2.898, stop 2.880The white line and the red dashed line, with the same prices in the dashboard. The drawn stop is a risk picture at your settings, not the level that closes the signal state.
  5. Dashboard30 rows, taller than this panel at the default Text Size Normal, so its last scanner row is cut off here. Small takes it from about 615 pixels to about 510.

Why marking zones by hand leaves the hard part to you

A liquidity chart done by hand means finding the swings, marking the candle behind each one, boxing the gaps, noting which zones a close has gone through and keeping yesterday's high and low in view. It goes stale as soon as the next swing confirms, and it has to be done again on every chart you watch.

Then comes the question of what to do with it. A zone on its own is not a signal, and a sweep on its own is not a plan. The rules for acting on them tend to stay in your head, where they can change from one day to the next.

Smart Liquidity Matrix does the marking on every closed bar with fixed rules, and adds one fixed signal rule with a stop and targets drawn at your settings. You still decide what to trade. The user guide writes the rules out, including what the indicator does not do: the three stars never change, and no break-of-structure line is ever drawn.

PlatformNinjaTrader 8.1 Desktop, tested on 8.1.9.0
TypeChart indicator, compiled NinjaScript Add-On
SignalsOn closed bars only; the forming bar is not calculated
BarsTime-based bars; tick, volume, range and Renko bars also run
AlertsAlerts Log, NinjaScript Output, sound and email, on live bars only
SeriesEight hidden series, among them Signal and Sweep; strategy use not tested yet
InstrumentsFutures, forex, stocks, indices: any NinjaTrader instrument
LicenceLifetime, one NinjaTrader login, all your PCs
Price77 USD, one payment

The user guide is public: every parameter and the verification are in it. Read it before you pay.

What you get

Nine things it puts on your chart

One indicator in the price panel: the zones, the sweeps, the levels, the signals and the dashboard together.

Order blocks

Each confirmed swing creates one: the high to low of the first opposite candle looking back from the swing. Three stay active per side by default, and the counts are settings.

Fair value gaps

A gap between a bar and the bar two back, green or red with a dashed border. Three stay active per side by default. A count of 0 creates none of that kind.

Liquidity sweeps

A purple plate and a small cross when a bar goes through a level and closes back. The level is an equal high or low on that bar, or the previous period's level.

Equal and previous-period levels

EQH and EQL when the last two swings lie within 0.1 ATR, 1D High and 1D Low from NinjaTrader's own daily series, and an EQ 50 % line between the current swings. Previous Period TF takes other timeframes.

BUY and SELL plates

One fixed rule using EMA 20 and 50, a bar closing in the signal's direction, a swing test and RSI 14. The stars are always three: the score is fixed and does not grade a signal.

Entry, stop and two targets

Drawn for the newest signal and removed when the signal state closes. They are a risk picture at your settings. The state keeps its own stop and target, so the two can differ.

Dashboard and scanner

30 rows: market, trend readings, active zones, the active signal and the scanner. About 615 pixels tall at Text Size Normal, about 510 at Small and about 780 at Large. Six positions.

Alerts

Signals by default, sweeps if you choose, on live bars only and once per kind and bar: the Alerts Log, the Output window, a sound or an email. There is no webhook, and it makes no network call of its own.

Eight series

Signal, ActiveDirection, ActiveStop, ActiveTp1, ActiveTp2, Sweep, PreviousHigh and PreviousLow are exposed. Calling the indicator from a strategy or the Market Analyzer has not been tested yet.

See it working

A closer look, on real NinjaTrader charts

Every picture below is a NinjaTrader 8 capture with numbered notes added. Nothing on the charts is drawn by hand. Click any image to enlarge it.

CL 5-minute chart in NinjaTrader 8 with Smart Liquidity Matrix: order blocks with their tags, dashed fair value gaps, sweep plates, the previous-day low, the EQ 50 percent line and grey boxes that a close has gone through
  1. Bear OBRed boxes from confirmed swing highs, each running to five bars past the last bar. Three stay active per side by default, and three are active here.
  2. Fair value gapsDashed borders. The two red ones are bearish gaps; a green one sits lower down, at the top of the cyan block.
  3. SweepA purple plate under a bar whose low went below the 1D Low line and which closed back above it.
  4. Bull OBA cyan box from a confirmed swing low, with its tag beside it. A close below it would turn it grey, like the old boxes further left.
  5. 1D Low and EQ 50 %The previous day's low as NinjaTrader's daily series delivers it, and the dotted line halfway between the current swing high and low.
Zones and sweeps

Order blocks, gaps and sweeps, drawn from closed bars

Each kind of zone has its own mark: solid boxes with a Bull OB or Bear OB tag for order blocks, dashed borders for fair value gaps, purple plates for sweeps. A zone that a close has gone through turns grey, stops at that bar, loses its tag and stays on the chart, taking no further part in anything. The faint boxes at the left of this chart are those.

The zones on screen are built from the bars before them, so the amount of history matters. Aim for at least 5,000 bars where your feed allows it. The indicator does not extend the chart's data: Days to load in the Data Series dialog decides, and two charts that loaded different amounts of history can differ for a while.

  • Order block and gap counts are settings per side, three by default
  • A swing is confirmed Swing Length bars after its own bar, 5 by default, so a zone appears after that delay
  • The previous-period levels are only as current as NinjaTrader's daily series: a gap in it leaves old levels, with no message
The Smart Liquidity Matrix dashboard in NinjaTrader 8: market, trend analysis, confluence map, the active signal and the scanner rows, with the last scanner row cut off by the panel
Dashboard and scanner

Thirty rows, and what the size setting does

At the default Text Size Normal the dashboard is about 615 pixels tall at 100 % display scaling, plus an 8-pixel margin. That is why its last scanner row is cut off in these pictures: this price panel is shorter than that. Text Size Small brings it to about 510 pixels and Large takes it to about 780, and the sizes grow with the Windows display scaling. The percentages under ACTIVE SIGNAL describe this one signal on this chart. They are not a probability of profit.

Each scanner cell runs the same signal state on that timeframe's own closed bars. A double dash means flat, or a row that has not delivered yet, which needs at least 50 closed bars of its timeframe. At the defaults the scanner adds 24 data series that every tick updates. Scanner Rows Off drops that to the series the levels need, one at the defaults, and leaves every row at a double dash.

  • MARKET and TREND ANALYSIS: price and daily change, HTF, RSI and ATR. Chart Trend always reads NEUTRAL
  • CONFLUENCE MAP: active order blocks and gaps per side, equal levels, volume against its 20-bar average
  • ACTIVE SIGNAL: direction and bars since, entry with its open result, the drawn stop and targets
  • SIGNAL SCANNER: BUY, SELL or a double dash per timeframe, from 1m to 1M
GC 15-minute chart in NinjaTrader 8 with Smart Liquidity Matrix: a BUY plate with its entry and drawn stop, two wicks below the stop line, and the dashboard still reading BUY with TP1 and TP2 printed
  1. BUY, 8 bars agoThe plate sits under the signal bar, and the dashboard counts the bars since it.
  2. Entry 4056.7The white line. Its tag is pinned left of the dashboard, so the line runs through it; the dashboard prints the same price.
  3. Stop line crossedTwo wicks went below the 4040.2 line and the dashboard still reads BUY. The line is the swing minus SL Padding x ATR; the state closes on its own stop, 0.5 x ATR beyond its own 5-bar swing.
  4. TP1 4073.2, TP2 4089.7Printed in the dashboard and above the top of this panel, because the price axis follows the bars, not the drawings. Drag the axis to see the lines.
  5. Scanner rowsThe same signal state on each timeframe's own closed bars. Here 6m to 15m read BUY and the others a double dash, which means flat or not delivered yet.
Stop and targets

The drawn lines are a risk picture, not the state's own exit

A signal draws a white entry line, a red dashed stop and two green dashed targets, each running 30 bars from the signal bar. Only the newest set exists, and it is removed when the signal state closes. On this chart two wicks went below the drawn stop and the dashboard still reads BUY. That is how it is built: the line sits at the swing minus SL Padding x ATR, and the state closes on its own stop, its 5-bar swing minus 0.5 x ATR.

So a drawn line can be crossed while the dashboard still shows the trade, or the trade can close with its line untouched. The indicator does not mark a line as reached and does not count outcomes, so there is no tally here. A closed state removes its lines, so no chart on this page can show a stop as hit.

  • Risk is the distance from the entry to the drawn stop, at least 10 ticks
  • TP1 sits at one risk and TP2 at Risk:Reward Ratio, 2.0 by default
  • The state's own target is its entry plus 2 x risk
  • The price axis follows the bars, so a far level can lie outside the panel: drag the axis to see it
Any market

The same rules on everything NinjaTrader charts

The calculations are not tied to an instrument. The captures below were taken in NinjaTrader 8 on the free simulation feed: index, energy, metal, currency and rate futures, from 1-minute to 30-minute bars, with the indicator at its default settings on every one.

Volume takes no part in the signals, zones, sweeps or levels at the defaults, which come from open, high, low and close alone. On a futures chart the dashboard's Volume row sets the newest bar's contract volume against its 20-bar average, and with the default OnBarClose it usually reads below average because that bar has only just started. A continuous contract that is not back-adjusted shows a price jump at the roll, which can produce false zones, a sweep and an oversized ATR for a while.

Smart Liquidity Matrix on a MNQ, Micro Nasdaq 100 chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
MNQ, Micro Nasdaq 100Index futures, 1 min
Smart Liquidity Matrix on a ES, E-mini S&P 500 chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
ES, E-mini S&P 500Index futures, 5 min
Smart Liquidity Matrix on a NQ, E-mini Nasdaq 100 chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
NQ, E-mini Nasdaq 100Index futures, 15 min
Smart Liquidity Matrix on a MES, Micro S&P 500 chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
MES, Micro S&P 500Index futures, 3 min
Smart Liquidity Matrix on a YM, E-mini Dow chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
YM, E-mini DowIndex futures, 5 min
Smart Liquidity Matrix on a RTY, E-mini Russell 2000 chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
RTY, E-mini Russell 2000Index futures, 15 min
Smart Liquidity Matrix on a CL, crude oil chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
CL, crude oilEnergy futures, 5 min
Smart Liquidity Matrix on a NG, natural gas chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
NG, natural gasEnergy futures, 15 min
Smart Liquidity Matrix on a GC, gold chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
GC, goldMetal futures, 15 min
Smart Liquidity Matrix on a SI, silver chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
SI, silverMetal futures, 30 min
Smart Liquidity Matrix on a 6E, euro FX chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
6E, euro FXCurrency futures, 30 min
Smart Liquidity Matrix on a ZB, 30-year T-bond chart in NinjaTrader 8, with its zones, sweep plates, signal plates and dashboard
ZB, 30-year T-bondRate futures, 15 min
Under the hood

How a closed bar becomes a signal

The same steps on every closed bar, in this order. Nothing hidden and nothing exotic.

  1. The bar closes

    Only a closed bar is calculated, in every Calculate mode. The per-tick modes refresh the zones' right edge, the level lines and the dashboard, and make no signal earlier.

  2. Swings and zones update

    A swing confirmed Swing Length bars back creates an order block, a gap between a bar and the bar two back creates a fair value gap, and a close through a zone turns it grey.

  3. Levels and sweeps are read

    Equal highs and lows, the previous-period high and low and the equilibrium are set. A bar that went through a level and closed back prints a sweep.

  4. The signal state is tested

    A BUY needs EMA 20 above EMA 50, a bar closing above its open, a low at or below the last 5-bar swing low plus 0.3 x ATR, a close above that swing low and RSI under 70. A SELL mirrors it, with RSI above 30. The exit is tested first.

  5. The plate and the lines are drawn

    A plate with its triangle, then the entry, the stop and two targets at your settings. The dashboard and the scanner refresh, and on a live bar the alert fires.

What it does

  • Marks BUY, SELL, sweeps and new zones on closed bars, and those do not change afterwards
  • Draws an entry, a stop and two targets for the newest signal
  • Runs the same signal state on twenty-four timeframes of the chart's instrument
  • Keeps grey zones on the chart, so you can see what a close went through

What it does not do

  • It does not place orders. It is an indicator, and it never touches your account
  • It does not grade signals: the three stars are fixed, and the working filters are in 13 Signal Filters, off by default
  • It does not draw BoS or CHoCH lines or tint candles: those events do not fire, and Chart Trend always reads NEUTRAL
  • It does not mark a line as reached, count outcomes or forecast where price goes next
Side by side

Plain zone indicator compared with Smart Liquidity Matrix

Plain zone indicatorSmart Liquidity Matrix
ZonesOften one kind per toolOrder blocks and fair value gaps together, with counts you set
Used zonesYou clear them yourselfTurn grey when a close goes through and stay on the chart
SweepsYou spot themA plate on the closed bar
LevelsYou draw themEqual highs and lows, previous-period high and low, EQ 50 %
SignalsNoneBUY and SELL on closed bars, from fixed rules
Stop and targetsYou work them outDrawn for the newest signal, at your settings
Other timeframesOne chart at a timeTwenty-four scanner rows of the same instrument

How this edition was verified

The engine that computes everything also runs outside NinjaTrader. With its diagnostic dump switched on, the NinjaTrader edition writes every committed bar with the values it drew; those bars are replayed through the engine outside the platform, and the two files are compared value by value.

On 4,923 MNQ 1-minute bars every one of the 70 series compared was equal on every bar. A second run, with Calculate set to each tick and the chart left live across the switch from history to live bars, gave the same result on 4,191 bars.

What that proves: the indicator receives exactly one closed bar per chart bar with the right open, high, low, close and volume, never double-feeds or skips a bar, and shows the values the engine produced. What it does not claim: it is a test of correct calculation, not of trading results, and it says nothing about future performance.

NinjaTrader bars compared4,923, then 4,191 across the live switch
Series compared70
Cells compared344,610 and 293,370
Mismatches0 and 0
ConditionsMNQ 1-minute, NinjaTrader 8.1.9.0, November 2026

The full method is in the user guide: User Guide (PDF) and Installation and Quick Start (PDF).

Get the licence

One payment. Lifetime licence.

No subscription and no renewal. Pay once and the indicator stays licensed to your NinjaTrader account, updates included.

Smart Liquidity MatrixNinjaTrader 8 indicator

$77one payment, lifetime licence

  • A lifetime licence on one NinjaTrader account login, valid on every PC you use it on
  • The compiled NinjaScript Add-On package and all future updates, at no extra cost
  • No machine ID and nothing to activate: log in to NinjaTrader and it runs
  • The two PDFs: installation and quick start, and the full user guide with every parameter
  • Direct support from me, the developer, by email
Pay by cardCard, Apple Pay or Google Pay, through Stripe
Pay with PayPalPayPal balance or card, through PayPal

The licence is issued to your NinjaTrader account through NinjaTrader's Vendor Licensing, by hand, normally within a few hours and always within 24 hours of your form arriving. You get an email with the download link when it is done.

Because a licence cannot be handed back once it is on your account, a sale is final once the licence has been issued. If you paid and the licence has not been issued yet, email me and I will refund you in full. The user guide is public, so you can read exactly what the indicator does before you pay.

The full terms of sale and the privacy notice for buyers are one page each, in plain language.

Trading carries risk of loss. This is an analysis tool, not financial advice, and no indicator can promise a profit.

Questions

Before you buy

Does Smart Liquidity Matrix repaint?

A BUY, a SELL, a sweep or a zone's creation is decided on a closed bar and does not change afterwards. What moves on the newest bars by design: an active zone's right edge, which sits five bars past the last bar; the equal-level, previous-period and equilibrium lines, which exist only for the newest state; the dashboard and the scanner. A swing is confirmed Swing Length bars after its own bar, and the signal state's own swing five bars after. That is a delay, and what it allows can only happen after the confirmation. The forming bar is not fed to the calculation in any Calculate mode, and a signal on a session's final bar appears after the reopen, at the next bar's first tick.

Why are there always three stars, and no BoS or CHoCH lines?

The score is fixed in the calculation, so every signal reads three stars and Score: 3/5. The structure-break events exist in the calculation and do not fire: 0 events on the 4,923 bars of the verification run. So Show Break of Structure, Show Change of Character and Max Structure Lines have no visible effect, no candle is tinted, Chart Trend always reads NEUTRAL and the HTF row reads Divergent beside its reading. The signals, zones, sweeps and levels do not depend on them. Minimum Confluence Score and Signal Cooldown do not filter a signal either. The working filters are in 13 Signal Filters, off by default: a cooldown, a higher-timeframe filter and a score filter.

Why can price cross the stop line while the dashboard still shows the trade?

The drawn levels are not the levels that close the signal state. The drawn stop uses Swing Length and SL Padding, 0.2 x ATR by default. The state always uses a 5-bar swing and 0.5 x ATR, and its target is its entry plus 2 x risk. So a drawn line can be crossed with the trade still open, or the trade can close with its line untouched. Treat the lines as a risk picture at your settings. The ActiveStop, ActiveTp1 and ActiveTp2 series carry the drawn levels too.

The dashboard is cut off on my chart. What do I change?

Set 10 Dashboard, Text Size to Small, about 510 pixels instead of about 615 at Normal, or give the price panel more height. Large is about 780. The sizes grow with the Windows display scaling, and a 590-pixel price panel at Normal cuts off the last scanner rows. Position offers six places on the chart.

How much history does it need, and does it slow the chart?

Aim for at least 5,000 chart bars where your feed allows it. Days to load in the Data Series dialog is where you raise them. Each scanner row loads its own bars, Scanner Warm-up Bars plus 50, which is 650 by default, with 1W at most 520 and 1M at most 240, and a row needs at least 50 closed bars before it delivers. At the defaults every tick updates 24 more data series: use Scanner Rows Off on a slow PC. The verification run used overnight hours. A chart on an RTH template has not been tested, so its levels and scanner rows may follow the instrument's default template.

Which NinjaTrader version do I need?

NinjaTrader 8.1 Desktop for Windows; the build is tested on 8.1.9.0. Any data connection that delivers bars works, including the free simulation connection.

Do I need a funded broker account?

No. NinjaTrader 8 is free to download and use for charting and simulation, with free real-time futures data for the simulator. A live account with a broker of your choice is a separate step that this indicator does not need. NinjaTrader is the platform it runs inside, not a broker.

Is there a machine ID or an activation step?

No. The licence is tied to your NinjaTrader account login through NinjaTrader's Vendor Licensing, not to a PC. Log in on any installation and the indicator runs; a new PC needs no transfer.

How fast do I get the licence?

I issue it by hand in the NinjaTrader Vendor Dashboard. It is normally done within a few hours and always within 24 hours of your form arriving, including weekends.

Is this a subscription?

No. It is one payment of 77 USD for a lifetime licence on one NinjaTrader account, with future updates included.

Can I get a refund?

Once the licence has been issued the sale is final, because a licence on your account cannot be handed back. That is why the user guide is public: read it first. If you paid and the licence has not been issued yet, email me and I will refund you in full.

Can I move the licence to another NinjaTrader account?

Yes. Email me from the address you bought with and I will move the licence to your new account login.

Will it make me money?

No indicator can promise that, and this one does not. It gives you zones, sweeps and levels drawn from closed bars, and a signal with a stop and targets to plan around. What you do with that, and how you size positions, decides the outcome.

More tools

Other NinjaTrader 8 indicators I publish

Each one is a compiled NinjaScript Add-On, 77 USD once, with its own page, charts and public user guide.

NinjaTrader 8 indicator

Sniper Ashfield Pro

EMA-cross signals scored on six layers and rated in stars, with an entry line, a stop and three targets for the latest signal, an EMA ribbon, a session VWAP, a dashboard and alerts.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Flux Gate Precision

Three lines from a rolling window of highs and lows, signals on closed bars, one tracked trade with a stop, up to four targets and a break-even ladder, and a dashboard.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Kumo Forge Pro

An Ichimoku cloud whose periods can scale with volatility, five signal families on closed bars, a confluence score, a stop, three targets and a dashboard.

$77 one payment, lifetime licence

See all NinjaTrader 8 indicators

Put it on your chart today

77 USD once. A lifetime licence on your NinjaTrader account, updates included, and the licence issued within 24 hours.