NinjaTrader 8 indicator, NinjaScript

An EMA crossover with the whole plan drawn, and two panels to read it against

An eight-EMA ribbon, a BUY or SELL when EMA 2 crosses EMA 8 on a closed bar, and an entry, an ATR stop, up to four targets and two shaded zones drawn at once. A screener reads nine instruments by the same rule, and a trend panel reads five timeframes of your chart's instrument. The zones in the name are the shaded target and risk areas of the current trade, not supply and demand areas found from price structure.

  • BUY and SELL plates from one rule: EMA 2 crossing EMA 8 on a closed bar
  • An entry, an ATR stop and up to four targets, 1R to 4R by default
  • A screener of up to nine instruments on the chart's own period
  • A trend panel of five timeframes with a majority-vote Status row

$77one payment, lifetime licence

Get the lifetime licence
Read the user guide (PDF)
Supply Demand Quadra Zones on an NQ 15-minute chart in NinjaTrader 8: the EMA ribbon turning from grey to blue, a BUY plate, the entry, stop and four target tags, the green and red zones, the screener and the trend panel
  1. BUY plateEMA 2 crossed above EMA 8 on this closed bar. There is no filter and no score: the signal is the cross.
  2. RibbonEight EMAs: grey here, shades of blue once EMA 8 is below EMA 2. The purple line is the Extra EMA, a reference that feeds no signal.
  3. Stop 27995.09Below ENTRY 28203.25 by two ATRs at the default. The red zone is the risk area of this trade, from the entry to the stop.
  4. Four targets1R to 4R from the entry, over the green zone. Price has passed TP 3 at 28827.72 and has not reached TP 4. Nothing marks a target as reached.
  5. Screener and trend panelNine instruments on this chart's own period, then five timeframes of NQ with a majority-vote Status row. Here Status reads Bullish.

Why a plain EMA cross leaves the hard part to you

A moving-average cross is one of the simplest signals there is, and the cross itself is the easy part. The moment it prints you still have to decide where the stop goes, where the targets go, whether the bigger timeframes agree and what the rest of the market is doing.

On a chart with two EMAs, none of that is on the screen. You reach for a drawing tool, an ATR reading and a second and third chart, on every cross.

Supply Demand Quadra Zones does not make the cross any smarter. There is no filter, no score and no confirmation, so it whipsaws when a crossover whipsaws. What it adds is the plan and the context: a stop and targets from the ATR, drawn at the signal, with the screener and the trend panel on the same chart. One trade is on the chart at a time, and the next signal replaces it.

PlatformNinjaTrader 8.1 Desktop, tested on 8.1.9.0
TypeChart indicator, compiled NinjaScript Add-On
SignalsOn closed bars by default; per-tick modes also preview the forming bar
BarsTime-based bars handled; tick, volume, range and Renko not yet exercised on a chart
AlertsAlerts Log, Output line and sound, email optional; BUY, SELL and Any
SeriesEma1 to Ema8, EmaExtra, Signal, TradeDirection, EntryLevel, StopLevel, Tp1Level to Tp4Level
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 adds to a plain EMA cross

One indicator in the price panel: the ribbon, the signal, the plan and both panels together.

Eight-EMA ribbon

Eight EMAs, in shades of blue while EMA 8 is below EMA 2 and grey otherwise. EMA 1 and EMA 3 to 7 are visual only, and the purple Extra EMA is a reference line that feeds no signal.

One signal rule

A BUY prints on a closed bar where EMA 2 is above EMA 8 and was at or below it on the bar before. A SELL is the same with the two swapped. You set both lengths; 11 and 34 are the defaults.

An ATR stop

The entry is the signal bar's close, and the stop sits 2 ATRs away by default, on a 14-bar ATR. ATR Multiplier for SL changes the stop distance, and through it every target.

Up to four targets

Target n sits at the stop distance times TP Multiplier times n, so the defaults give 1R, 2R, 3R and 4R, where R is the stop distance. You can have one to four.

Two shaded zones

A green zone from the entry to the fourth target and a red zone from the entry to the stop. They are the target and risk areas of the current trade, not areas found in price structure.

A nine-row screener

ES, NQ, YM, RTY, CL, GC, 6E, 6B and 6J by default, on the chart's own period: Long, Short, Bullish, Bearish or No data. You can type your own instruments. It raises no alert.

A trend panel

Five timeframes of the chart's instrument, 5, 15, 30 and 60 minutes and Daily, and a Status row that reads Bullish when at least two of its three chosen timeframes do.

Three alerts

BUY, SELL and Any, under a master switch. The message carries the entry, the stop and every enabled target. A target or a stop being reached has no alert, and neither has a panel.

Seventeen series

The nine EMAs, Signal, TradeDirection, the entry, the stop and four targets are public. Hosting from a strategy or a Market Analyzer column has not been exercised yet, so test it on your own setup.

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 Supply Demand Quadra Zones: a SELL plate, the stop above the entry, four targets below it all traded through, a grey ribbon and both panels
  1. SELL plateEMA 8 crossed above EMA 2 on this closed bar. The ribbon is grey from here on, while EMA 8 is not below EMA 2.
  2. Stop 96.53Above ENTRY 95.91 by two ATRs at the default. The red zone runs from the entry to the stop. Price did not reach it on this trade.
  3. TP 4 at 93.44All four targets were traded through, which ended the trade. The lines stop ten bars past that bar, and nothing else marks it.
  4. RTY reads ShortEMA 8 crossed above EMA 2 on RTY at this chart's last closed bar. The cell shows for that one bar.
  5. Status reads BearishA majority vote of three chosen timeframes. Here 5, 15 and 30 minutes all read Bearish, and so does Status.
The short side

A SELL draws the same plan, upside down

A SELL prints when EMA 8 crosses above EMA 2 on a closed bar. The entry is the close, the stop sits above it and the four targets below it. One trade is on the chart at a time, so the next signal replaces it and every object it drew, whether or not it has ended.

On this chart all four targets were traded through. A trade ends at the stop or when every enabled target has been reached, and its lines stop ten bars after that. Nothing else marks it: no label names the target that was reached, and outcomes are not counted.

  • Stop distance and target spacing are settings, and they set the ladder
  • A far stop or target can lie outside the panel, because the price axis follows the bars
  • Show TP/SL Lines and Boxes is not only a display switch: off, the stop and targets are never tested, and a trade stays open until the next signal
  • Compatibility at its default, Reference, draws the green zone only with four targets; Corrected draws it at any count
The two Supply Demand Quadra Zones panels in NinjaTrader 8 on an ES 5-minute chart: a screener of nine instruments with RTY reading Short, and a trend panel with Status and five timeframes
Screener and trend panel

Nine instruments and five timeframes, by the same EMA rule

The screener classes nine instruments on the chart's own period: Long or Short for the one bar where a fresh crossing happened, otherwise Bullish or Bearish. In this ES 5-minute capture RTY reads Short. Each instrument is an extra data series your connection has to serve.

The trend panel reads 5, 15, 30 and 60 minutes and Daily for the chart's instrument, on bars that have finished. Status is a majority vote of three timeframes you choose, 5, 15 and 30 minutes by default. Both panels change once per chart bar. A daily bar counts as finished at the midnight after its date, so the Daily row can lag the session's end.

  • Screener: a future root such as ES takes the contract NinjaTrader calls current when the chart loads
  • Status: on Compatibility Reference the M240 choice never evaluates and counts against Bullish; Corrected makes it read
  • Loading: what you switch off is not loaded, which helps if a chart loads slowly
  • Signals: the chart's signals and levels do not read either panel
GC 15-minute chart in NinjaTrader 8 with Supply Demand Quadra Zones: a BUY plate, the stop reached three bars later, the lines ending ten bars after that, and price rising past the target prices afterwards
  1. BUY plateEMA 2 crossed above EMA 8. ENTRY 3947.2 is this bar's close, and the stop and targets are drawn from it.
  2. Stop reachedThree bars after the signal this wick went below SL 3934.7, which ended the trade. The bar carries no mark.
  3. Ten bars laterThe lines and zones stop ten bars past the bar that ended the trade. Nothing else on the chart says it is over.
  4. Not reached before the stopTP 1 3959.7 to TP 4 3997.2 stay drawn until the next signal. Price passed TP 1 and TP 2 inside the shaded area, but only after the trade had ended.
  5. The rise afterwardsPrice went on past all four target prices after the trade had ended. That move is not part of this trade.
A stop that was hit

When the stop is reached, the lines stop and the plan stays

This BUY at 3947.2 had its stop at 3934.7. Three bars after the signal a wick went below the stop, and that ended the trade. The lines and zones ran on for ten bars and stopped there. A chart that only shows the trades that reached their targets would tell you nothing.

The rise that followed went past all four target prices, and it is not part of this trade. That is the plain cost of a stop on a crossover. Nothing here tells you which cross to skip, so position sizing and a risk limit stay with you.

  • A trade ends at the stop or when every enabled target has been reached
  • The test starts on the signal bar itself
  • A stop or a target being reached raises no alert
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.

The calculation does not read volume: the EMAs, the ATR, the signals, the levels and both panels come from prices alone, so the volume pane under these charts plays no part. At the defaults the indicator loads 14 more data series, five timeframes of your instrument and nine screener instruments, and a row your connection cannot serve reads No data. That is never a reading, and it does not count as Bearish.

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

How a closed bar becomes a plan

The same steps on every closed bar at the default OnBarClose. Nothing hidden and nothing exotic.

  1. The EMAs update

    The eight ribbon EMAs and the Extra EMA are written on the closed bar. EMA 8 needs 34 bars before it exists, and the Extra EMA needs 200.

  2. The cross decides

    EMA 2 above EMA 8 now, and at or below it on the bar before, is a BUY. The same with the two swapped is a SELL. Nothing else is checked.

  3. The plan is drawn

    The entry at the close, the stop an ATR multiple away, the targets at multiples of the stop distance, then the plate, the lines, the price tags and both zones.

  4. The trade is tested

    From the signal bar itself, a low reaching the stop of a BUY or a high reaching the stop of a SELL ends it, and so does reaching every enabled target. Its lines stop ten bars later.

  5. The next signal replaces it

    A new signal removes the old plate, lines and zones, whether or not that trade had ended. The panels update once per chart bar, and alerts fire in realtime only.

What it does

  • Prints BUY and SELL on closed bars at the default OnBarClose
  • Draws an entry, a stop and up to four targets you can size a position from
  • Reads up to nine instruments by the same EMA rule
  • Reads five timeframes of the chart's instrument into one panel

What it does not do

  • It does not place orders. It is an indicator, and it never touches your account
  • It does not detect supply and demand areas from price structure: the zones are the shaded target and risk areas of the current trade
  • It does not filter or score the cross, and it does not forecast price
  • It does not mark which target or stop was reached, and it does not count outcomes
Side by side

A plain EMA cross compared with Supply Demand Quadra Zones

Plain EMA crossSupply Demand Quadra Zones
LinesTwo EMAsAn eight-EMA ribbon and an Extra EMA
SignalYou read the crossA BUY or SELL plate on the closed bar
Filter or scoreNoneNone: the signal is the cross
Stop and targetsYou work them outAn ATR stop and up to four targets, drawn at the signal
Risk and target areasNothingRed and green zones for the current trade
Other instrumentsOne chart at a timeA screener of up to nine
Bigger timeframesOne chart at a timeFive timeframes and a Status vote

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 112 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,213 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,213 across the live switch
Series compared112
Cells compared551,376 and 471,856
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.

Supply Demand Quadra ZonesNinjaTrader 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 Supply Demand Quadra Zones repaint?

With the default OnBarClose everything is decided on closed bars, and a BUY or SELL on a closed bar does not change once drawn. The next signal replaces it and every object of its trade, because one trade is on the chart at a time. OnEachTick and OnPriceChange also preview the forming bar: a crossing draws its plate, lines and zones while it holds, and they go if it no longer holds a moment later. A preview raises no alert and writes no series. A chart loaded while the market is closed can already show the last bar's plate, as a preview. If you want nothing on the chart until a bar has closed, stay on the default OnBarClose.

Does it find supply and demand zones?

No. The zones in the name are the shaded target and risk areas of the current trade: green from the entry to the fourth target, red from the entry to the stop. The indicator does not detect supply and demand areas from price structure, and the signal is an EMA crossover with no filter or score.

How much history does it need?

EMA 8 needs 34 bars before it exists and the Extra EMA needs 200. The trade on screen comes from the bars before it, and the chart's bars come from Days to load in the Data Series dialog. The panels have their own fixed counts and do not follow Days to load: 2,000 bars of 5-minute data down to 500 daily bars, and 1,000 bars for each screener instrument. Your connection can deliver fewer, and a row reads No data until enough bars have closed to start EMA 8.

Are the stop and target tags on a tick?

Not always. The tag prints the instrument's decimals, but the stop and targets come from an ATR multiple and are not rounded to the tick, so on the NQ chart above the stop reads 27995.09 on a market that moves in quarters. Round them to the tick yourself before you place an order.

Why did a trade's lines end right after its signal?

The stop and targets are tested from the signal bar itself, so a signal bar wider than the stop distance can end its own trade at once, and its lines stop ten bars later. The SI 30-minute chart in the gallery shows one: the bar's low is below the stop printed for it. Price later traded through TP 1 on that chart, and that is not part of the trade.

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 an EMA crossover with a stop and targets drawn at the signal, and two panels to read it against. 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

Smart Liquidity Matrix

Order blocks, fair value gaps, equal highs and lows, liquidity sweeps and previous-period levels, with BUY and SELL plates on closed bars, an entry, a stop, two targets, a dashboard and a scanner.

$77 one payment, lifetime licence

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

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.