NinjaTrader 8 indicator, NinjaScript

The range filter that scores each turn before it marks one

A plain range filter marks every turn the same way. FXB Confluence Engine scores each turn on the closed bar across ten layers, from the EMAs and the 5 to 240 minute timeframes to RSI and volume, and prints BUY or SELL only when the anti-chop gate, the confirmations you have on and your Minimum Signal Strength all pass. The dashboard shows what each layer gave and which gate is holding. It draws pivot levels, and it draws no stop or targets.

  • Ten scoring layers, shown one by one in the dashboard, 16 points at the defaults
  • An anti-chop gate: ADX, Choppiness Index and a cooldown, each with its own switch
  • Pivot levels in Classic, Fibonacci or Camarilla, from the previous period
  • BUY and SELL on closed bars only, and six series for your strategies and the Market Analyzer

$77one payment, lifetime licence

Get the lifetime licence
Read the user guide (PDF)
FXB Confluence Engine on an ES 5-minute chart in NinjaTrader 8: a BUY marker, the purple filter line and its band, two EMAs, pivot levels with price tags, the dashboard in the top right corner and the timeframe strip at the bottom
  1. BUY, 8/16A filter turn on a closed bar that passed every gate. LAST SIGNAL reads 5 bars ago and a score of 8/16, the default minimum.
  2. Filter line and bandThe purple line moves only when price gets further from it than its range. The bars and the band take its trend colour.
  3. Pivot levelsThe pivot, R1, R2, S1 and S2 from the previous period. A resistance with the close above it changes colour, as R1 and R2 have here.
  4. DashboardThe score now, 11/16 and MED, each layer's points, the state of every gate, market data, the session and the last signal.
  5. Timeframe stripThe trend on 1, 5, 15, 60 and 240 minutes from each one's last closed bar, and the same filter at five sensitivities. Here the 16 cell disagrees.

Why a plain range filter leaves the hard part to you

A range filter gives you a line and its turns. It says nothing about whether the higher timeframe agrees, whether the market is trending or chopping, or whether the volume was there. A turn in a flat hour looks the same as a turn in a clean trend, and you do the weighing on every bar.

Sensitivity alone does not solve it. Lower it and the line turns more often, raise it and the line turns less often, but either way every turn still looks the same.

FXB Confluence Engine does the weighing on the closed bar and prints it as a score, with each layer's points in the dashboard. A turn becomes a marker only if it also clears the anti-chop gate, the confirmations you have on and your Minimum Signal Strength. So expect stretches with no marker at all: the GC chart below holds none on its loaded bars.

PlatformNinjaTrader 8.1 Desktop, tested on 8.1.9.0
TypeChart indicator, compiled NinjaScript Add-On
SignalsOn closed bars only
BarsAny interval; the defaults were designed on minute charts from 5 minutes to 4 hours
AlertsOff by default; Alerts Log, Output window, sound and email, ten families
SeriesEmaFast, EmaSlow, RangeFilter, SignalStrength, Signal, Trend
HistoryAt least 300 bars of the chart's interval
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 does that a plain range filter cannot

One indicator in the price panel: the line, the score, the gates, the levels and the dashboard together.

A score on every turn

EMA and momentum, the timeframes, a cross-check at sensitivity 12 and 16, higher-timeframe bias, volatility, RSI, volume, VWAP and candle, less a chop penalty. 16 points at the defaults, 18 at most.

Anti-chop gate

By default a signal needs the ADX at or above 20, the Choppiness Index at or below 61.8 and a cooldown of 5 bars. Each one has its own switch and its own level.

Confirmations you choose

RSI side and volume are on by default. VWAP, candle pattern and EMA distance are off until you switch them on. Only show signals when EMA aligned is a real gate, not a display option.

Minimum Signal Strength

Turns scoring below it are suppressed. The default is 8, so a marker can print at 8/16. Score at Signal in the dashboard tells you which one you are looking at.

A strip of timeframes

The trend on 1, 5, 15, 60 and 240 minutes from each one's last closed bar, and the same filter at five sensitivities. The dimmed 1-minute cell does not enter the score.

A full dashboard

The score breakdown, the state of every gate, both EMAs, the nearest pivots, VWAP, the session, the last signal and whether it still agrees with the trend. Corner and text size are settings.

Pivot levels that change colour

The pivot, R1 to R4 and S1 to S4 from the previous period, in three formulas. A resistance with the close above it and a support with the close below it change colour.

Alerts by family

Signals, strong signals, EMA-confirmed signals, trend change, chop gate, HTF bias, RSI extremes, volume spike, score threshold and trade invalidated. In realtime only, on closed bars. There is no webhook.

Six series for your strategies

EmaFast, EmaSlow, RangeFilter, SignalStrength, Signal and Trend can be read by a NinjaScript strategy and shown as Market Analyzer columns. A strategy has to add the same seven data series itself.

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.

GC 15-minute chart in NinjaTrader 8 with FXB Confluence Engine: price climbing through two pivot levels, no BUY or SELL marker on the chart, and a dashboard reading 13 of 16, Chop Gate BLOCKED and LAST SIGNAL None
  1. No marker on this climbNo filter turn on these bars passed every gate, so nothing was marked. The gates can hold back a move as well as a chop.
  2. 13/16, HIGHThe score of the newest bar. It describes that bar. It is not a signal and not a probability.
  3. Chop Gate BLOCKEDChop Idx 66.8 is over the default maximum of 61.8 and prints in red, so the dashboard names what holds the gate. ADX 55.8 is clear.
  4. R2 changed colourA resistance with the close above it changes colour. R3, still above the close, stays red.
  5. LAST SIGNAL: NoneTRADE STATUS reads No Signal Yet. On the bars this chart has loaded, nothing passed.
The gates at work

A strong chart can still hold no signal

This GC chart climbed through R1 and R2 and the dashboard reads 13/16, HIGH, yet there is no BUY on it. The score describes the newest bar. A marker needs a filter turn on a closed bar that passed every gate at that moment, and on these loaded bars none did.

Chop Gate reads BLOCKED here, and Chop Idx 66.8 is over the default 61.8, so the dashboard names what is holding it. Gates remove turns you might have wanted as well as turns you would not. That is a real cost, and you should weigh it before you buy.

  • ADX at or above 20, Choppiness Index at or below 61.8 and 5 bars of cooldown by default
  • Each gate has its own switch and level
  • LAST SIGNAL and TRADE STATUS read None and No Signal Yet until one passes
The FXB Confluence Engine dashboard in NinjaTrader 8: trend and higher-timeframe bias, a score of 11 of 16, the score breakdown, confirmations, market data, session, last signal and trade status
Dashboard

Which layer gave what, and which gate is holding

SCORE BREAKDOWN lists each layer's points and CONFIRMATIONS the state of each gate. If Chop Gate reads BLOCKED, the ADX and Chop Idx rows name the filter that holds it and Cooldown shows the bars left. On this ES chart the score is 11/16: EMA and momentum, the timeframes, sensitivity, RSI and volume gave points, volatility and the higher-timeframe bias gave none, and VWAP and candle are off.

The score, the HIGH, MED, LOW and WEAK bands and the TRADE STATUS lines describe the state of the indicator on the bars of this chart. They are descriptions, not probabilities, forecasts or instructions. TRADE STATUS says only whether the last signal still agrees with the confirmed trend, and the short phrase in the last row is chosen from the score alone.

  • SIGNAL QUALITY: score out of the maximum; HIGH from 80 %, MED from 57 %, LOW from 43 %, WEAK below
  • CONFIRMATIONS: EMA alignment, volume, VWAP, Chop Gate, ADX, Chop Idx and cooldown
  • MARKET DATA: both EMAs, nearest pivot support and resistance, VWAP, the last closed day's range
  • LAST SIGNAL and TRADE STATUS: direction, bars ago, the score it had, ALIGNED or REVERSED
NG 15-minute chart in NinjaTrader 8 with FXB Confluence Engine: a BUY marker, and a dashboard three bars later reading a bearish trend, a score of 4 of 16 and TRADE STATUS REVERSED
  1. BUY, 8/16A filter turn that passed every gate at the default minimum score. LAST SIGNAL reads 3 bars ago.
  2. Trend turned downTREND now reads BEARISH. The filter line and the closed bars have turned, and the marker stays where it printed.
  3. 4/16, WEAKThe score of the newest bar, well under the 8 the BUY had. The band describes the bar; it is not a forecast.
  4. Chop Gate BLOCKEDADX 26.5 and Chop Idx 60.7 are inside their default limits. Cooldown shows 2 bars left, and that is what holds the gate.
  5. REVERSEDTRADE STATUS says the last signal no longer agrees with the confirmed trend, and the line under it reads Trend now BEARISH.
When the trend turns against the signal

A signal that goes the other way is shown as one

On this NG chart a BUY printed at 8/16, the default minimum. Three bars on the confirmed trend is bearish, TRADE STATUS reads REVERSED and the line under it reads Trend now BEARISH, and the score of the newest bar is 4/16, WEAK. A chart that showed only the signals that worked would tell you nothing.

This indicator draws no stop and no target, so no level on the chart marks a signal as failed. The status row is all it gives you there, and what you do about it is up to you. Alert: Trade Invalidated can tell you when the trend reverses against the last signal; like every family but Alert: Signals, it starts off.

  • ALIGNED or REVERSED shows whether the last signal still agrees with the confirmed trend
  • The marker stays where it printed: markers never repaint
  • No stop or target lines: the levels on the chart are pivot levels
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 15-minute bars, with the indicator at its default settings on every one.

On a futures chart the Volume layer, the volume-spike alert and VWAP read real contract volume, and VWAP is an estimate from bars, not from ticks. The SESSION row reads fixed London, New York and Tokyo windows, so on a CME future it still names the FX sessions; it is information only and does not enter the score. The SI and 6E captures at 30 minutes show a chart with too little history: EMA 200 reads NaN, there is no slow EMA line and LAST SIGNAL reads None, because the slow EMA needs 200 bars before a signal can pass the EMA gate.

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

How a closed bar becomes a marker

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

  1. The filter moves

    The line moves only when the price gets further from it than its range, ATR x multiplier x sensitivity / 8. A change of direction on a closed bar is a candidate signal.

  2. The other timeframes are read

    Each one counts from its last closed bar. A higher-timeframe value reaches a chart bar only after the higher-timeframe bar has ended.

  3. The layers are scored

    EMA and momentum, the timeframes, the cross-check at sensitivity 12 and 16, HTF bias, volatility, RSI, volume, and VWAP and candle if they are on, less a chop penalty of 0 to 2.

  4. The gates decide

    ADX, Choppiness Index and the cooldown, then the confirmations that are on and the EMA alignment. The score must also reach your Minimum Signal Strength.

  5. The marker and the dashboard update

    BUY or SELL appears at the first tick of the next bar, the Signal series reads +1 or -1, and any alerts you have on fire once.

What it does

  • Marks signals on closed bars, and leaves them where they were
  • Shows how many points each layer gave, in the dashboard
  • Names the gate that is holding a signal back
  • Draws pivot levels from the previous period

What it does not do

  • It does not place orders. It never touches orders, positions or accounts
  • It does not forecast where price goes next, and the score is not a probability of profit
  • It draws no stop and no targets. The levels on the chart are pivot levels
  • It does not pass a signal on a short chart: load at least 300 bars for the slow EMA and the volatility rank
Side by side

Plain range filter compared with FXB Confluence Engine

Plain range filterFXB Confluence Engine
SignalsEvery turn of the lineA turn on a closed bar that passed every gate
Signal strengthNoneA score with each layer's points shown
Choppy marketsIt keeps turningADX, Choppiness Index and cooldown gates
Bigger pictureOne chart at a timeHTF bias in the score, five timeframes in the strip
LevelsYou draw themPivots in three formulas, from the previous period
Stop and targetsYou work them outYou still work them out: none are drawn
For your strategiesThe lineSix series including Signal and Trend

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 138 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 compared138
Cells compared679,374 and 581,394
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.

FXB Confluence EngineNinjaTrader 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 FXB Confluence Engine repaint?

Signals, alerts and the Signal series exist on closed bars only and do not repaint. The filter line, the band and the bar colour of a forming bar follow its price until it closes, by design. A higher-timeframe value reaches a chart bar only after the higher-timeframe bar has ended, and pivot levels come from the previous period's high, low and close and stay fixed for the period.

How much history does it need?

At least 300 bars of the chart's interval. The slow EMA needs 200 bars before a signal can pass the EMA gate, and the volatility rank needs 60. A 5-day chart of 60-minute bars has too few: raise Days to load in the Data Series dialog. Seven more data series load with the indicator, so the first load takes longer while they download.

Why are there no BUY or SELL markers on my chart?

Usually the gates at work. Read the dashboard's CONFIRMATIONS block: if Chop Gate reads BLOCKED, the ADX and Chop Idx rows name the filter. A signal also needs at least 300 bars on the chart and a score of at least Minimum Signal Strength. On a closed market the session's last bar waits for the reopen.

What is the short phrase in the last row of the dashboard?

A phrase chosen from the score alone, in four steps from High conviction down to Weak signal. It adds nothing the score does not say, and it can read High conviction on a bar with no signal, as on the GC chart above with Chop Gate BLOCKED. Treat it as a label for the score, not as advice.

Can my strategy use its signals?

Yes. A strategy can read the plots, and SignalStrength, Signal and Trend are the useful ones. It has to add the same seven secondary series itself in State.Configure. A Market Analyzer column loads the seven series as well, and the indicator is not advertised as a scanner.

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 a score for each filter turn, the state of every gate and pivot levels 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

Voidbreak Buy Sell Pro

A range filter whose regime flips on closed bars print BUY and SELL plates, with a stop in one of three modes, three targets at multiples of the risk, an EMA cloud and a dashboard.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Momentum Tidebreaker

A fast and a slow EMA with a trend band, three signal families on closed bars, swing support and resistance rays, and an entry, a stop and two ATR targets for each signal.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Reverse RSI Phantom

The closes that would print your RSI levels, drawn as bands with a midline, a trend regime, signals scored in five layers, 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.