CustomDOM Handbook

Levels, order flow and risk tooling on a NinjaTrader 8 ladder. This covers installing it, trading by clicking price rows, the guardrails that can flatten you, and the one section that answers most “these levels don’t match my chart” questions.

Written against CustomDOM v1.13 for NinjaTrader 8. Version-specific changes are in CHANGELOG.txt inside your download, and on the product page.

SectionCovers
01 — InstallThe two zips, the New-menu name, activating your license
02 — Trading from the ladderClick to order, quantity, the toolbar
03 — BracketsTick, ATR, dollar and custom modes; breakeven offset
04 — Risk guardrailsDaily loss, per-trade loss, size caps, lockouts
05 — Levels on the ladderRead this one. Why the ladder and your chart can disagree
06 — Audio order flowHearing the tape, and the settings that matter
07 — Reading order flowColumns, Time & Sales, ATR shading
08 — Settings referenceWhat lives in each of the six tabs
09 — ControlsWhat each mouse gesture places, and what can be bound to a key
10 — TroubleshootingIn the order that has actually resolved reports

01 — Install

CustomDOM installs as a NinjaScript Add-On. It appears under Control Center → New → CustomDOM.

Import the inner file, not the download. The file you download is a package, not the import file. CustomDOM-v<version>.zip — with a hyphen — holds the documentation plus CustomDOMv<version>.zip, no hyphen, which is what NinjaTrader imports. The hyphen is the only difference in the name. If NinjaTrader says the file is incompatible, that is this and nothing else — the package was handed to the importer instead of the file inside it.
  1. Unzip the download — the outer file, with the hyphen.
  2. In NinjaTrader: Tools → Import → NinjaScript Add-On…
  3. Select the inner zip, from inside the folder you just unzipped.
  4. Restart NinjaTrader.
  5. Open it from Control Center → New → CustomDOM.

Activating

On first run a License Required overlay appears with a key field and an Activate button. Paste your key there.

After that, the key lives in Settings → Account → License Key, which is where you change it. When you replace a computer, release the old one from your account page so its place is free for the new one.

Flatten and Cancel All stay live behind the overlay, so an open position is never trapped by the license screen.

Using CustomDOM on more than one computer

A license is registered on one computer — the first computer that opens CustomDOM with your key. If you need a second, for example a desktop at home and a laptop when you travel, contact support.

A license runs on only one computer at a time. Even with more than one computer registered, CustomDOM can be open on only one of them at once.

Several CustomDOM windows on the same computer are fine — they share one license check and never take over from each other.

On a license registered to one computer, a different computer is told the license is already in use on another machine, with a link to release it from your account — release the old computer first (below), and the new one takes its place.

If your license has more than one computer registered and you open CustomDOM on one while it is still running on another, it shows In Use on Another Computer and asks before doing anything:

CustomDOM is already running on DESKTOP-HOME. Take over here? CustomDOM on DESKTOP-HOME will stop accepting new orders within about 2 minutes; closing positions there will still work.

Choose Take over to move to this computer, or Cancel to leave it where it is. Nothing changes until you choose. After Cancel it says “CustomDOM stays off on this computer. To use it here, reopen it and choose Take over.”

If you take over, the first computer shows Taken Over by Another Computer within about two minutes and stops accepting new orders: “New orders are off on this computer — you can still close positions here.” To use CustomDOM there again, reopen it and choose Take over.

Closing a position always works. A computer that has been taken over, or released from your account, stops taking new orders only. Flatten, Cancel and closing a position are never blocked, so an open trade is never trapped.

If CustomDOM or NinjaTrader closes unexpectedly, the next computer may show the notice for a few minutes afterwards — choose Take over. A brief loss of internet does not stop CustomDOM; only another computer taking over does.

Releasing a computer from your TradersForge dashboard frees its place for a different computer. If it was the one running CustomDOM, it shows Computer Released and stops accepting new orders within about two minutes.

02 — Trading from the ladder

Every order is placed by clicking a price row. There is no order ticket.

ActionResult
Left-click the Bid columnBuy limit at that price
Left-click the Ask columnSell limit at that price
Right-click any rowStop order at that price
Right-click and drag an orderMove it to a new price
Double-click the Bid or Ask columnMarket order — buy on the Bid side, sell on the Ask side
EnterBuy limit at the selected row — there is no sell-side keyboard equivalent
Left-click the Price columnCancel the working orders at that price

Those are the defaults for placing orders. From v1.10 each gesture is a setting — you can make left-click place stops, have it decide from the market the way a Tradovate DOM does, or switch a gesture off entirely. See section 09.

The Price column cancels — and it cancels the whole price level. Clicking a row in the Price column cancels every working order you have at that price on this instrument, limits and stops alike. It is “cancel at this level”, not “cancel that one order” — if you are scaled in with two orders resting on the same price, one click removes both. It is the alternative to Cancel All, which clears the instrument entirely. Setting a gesture to Off in Settings → Controls does not disable it — those dropdowns govern only the Bid and Ask columns. So if you set all three gestures to Off expecting a read-only ladder, the Price-column cancel is still live. Lock is what disables the whole surface, and it gates orders at the point of submission — so it stops a double-click market order too, not just the clicks it looks like it covers.
Right-click does not open a menu. Right-click is an order action on the ladder, not a context menu. The menu is suppressed deliberately so a stop can be placed with one click. If you right-click expecting a menu, you will place a stop. If that is not how you want to work, set right-click to Off in Settings → Controls — the click then places nothing.

The pending-orders banner

The banner above the ladder reports working orders across every connected account, not just this DOM’s. Right-click it for a menu that can cancel one order, cancel a whole group, cancel everything it lists, or switch this DOM to that account and instrument — which is how you get to an order you left somewhere else without hunting for it.

Quantity

The 1 2 3 4 5 buttons set the working quantity, and the dropdown beside them holds larger sizes. Whatever is selected is what every click sends.

Toolbar

Buy Mkt / Sell MktMarket order, current quantity
Buy Bid / Sell AskLimit order joining the near side
FlattenClose the position on this instrument
Cancel AllCancel working orders on this instrument
ReverseFlip long to short, or short to long. From v1.12 it first cancels every order on the closing side — not only CustomDOM’s own — so a leftover stop cannot add to the new position
BreakevenMove every stop protecting the position to entry, plus the configured offset
Trail StopStart trailing the stop
CenterRe-center the ladder on the last price
LockDisables click-trading, so the ladder can be read without risk of an accidental order
Flatten + CXL — ALL Accounts. The red button on the Trader panel is not scoped to the instrument or the account in front of you. It flattens every position and cancels every order on every connected account. It is a panic button, and it behaves like one.

03 — Brackets

A bracket attaches a stop and a target to a filled position. The mode dropdown sits under the button row.

ModeStop and target measured in
NoneNo bracket
TicksFixed tick distance
ATRA multiple of current ATR, so the bracket widens in fast markets
$ PnLDollar risk and dollar target
CustomPer-instrument values you set yourself

Bracket is off by default on a new DOM. Turn it on with the Bracket checkbox, or set Settings → Brackets → Default Bracket On if you want every new DOM to start with it armed. A saved workspace keeps whatever state it was saved with.

Breakeven Offset controls how far beyond entry the stop lands when you press Breakeven — set it to cover commission rather than exactly zero.

From v1.12, Breakeven moves every stop protecting your position — including stops you placed yourself — and never moves a stop that is already better. The breakeven price rounds in your favor. Pressing Trail Stop with Breakeven armed, or Breakeven with a trail running, hands over from one to the other instead of leaving two stops.

04 — Risk guardrails

Per-account limits enforced by the DOM itself, independently of your broker or prop firm. Configured in Settings → Risk.

GuardrailWhat happens when it trips
Daily loss ($)Flattens, cancels working orders — even with Lock on — and locks the account against new entries until the 17:00 session rollover. Exits stay allowed.
Loss per trade ($)Flattens that one position. No lockout.
Max Minis / Max MicrosBlocks entries that would exceed the cap — and flattens a position that is already over it.
Max Order QtyRejects any single order larger than this.
Market Safety / Market LockGuards against accidental market orders.
Size caps also flatten an existing breach. The mini and micro caps are not entry-only. If you are already holding more than the cap when you enable it — or you add to a position elsewhere — the guardrail flattens the excess rather than merely blocking the next entry. That is deliberate: a cap that only watches new orders lets an open breach sit there indefinitely.

A cap of 0 blocks that contract class entirely.

When an account is locked you will see RISK LOCKOUT on the DOM and orders will be refused with the reason. Clear it manually in Settings → Risk → Active lockouts, or let it clear itself at the 17:00 rollover.

A per-account daily-loss guard overrides the global Max Daily Loss for that account, so the two never double-enforce.

Smart Breakeven

New in v1.12 and on by default: Settings → Risk → Smart Breakeven (“Keep stops sized to the position”). When you take contracts off, your stops and targets shrink to match what is left. When you go flat, any stop still working is canceled, so a stray order can’t open a position in the other direction. It covers stops from any source on this account and instrument, not only CustomDOM’s.

Using stop-and-reverse orders? Turn Smart Breakeven off. It resizes every stop protecting a position to the size of that position, so a stop deliberately sized larger to flip you into the other direction would be cut back to a plain stop.

05 — Levels on the ladder

Pivots, VWAP, volume profile, EMA and SMA can all be drawn on price rows. This section exists because “these levels don’t match my chart” is the most common question about CustomDOM — and it usually has one of three specific answers.

What can be shown

In Settings → Display → Overlay indicators: Pivot Points (with a Pivot Type of Traditional, Fibonacci, Woodie, Classic, DeMark or Camarilla), Globex VWAP, RTH VWAP with standard-deviation bands, Volume Profile (POC, VAH, VAL), and EMA / SMA levels.

On a micro, you are seeing the mini’s levels. Trading MNQ, MES or MGC? Every level — pivots, VWAP, volume profile, ATR, EMA and SMA — is calculated from the mini contract (NQ, ES, GC), and the tape and audio play the mini’s flow too. This is intentional: the micro is a separate, thinner book whose own daily high, low and close differ from the mini’s by a tick or two. Since your chart is almost certainly the mini, sourcing the mini is what makes the ladder and the chart agree.
The pivot session template decides the close. Pivots use the prior session’s open, high, low and close from daily bars, so the close is the settlement print rather than the last trade before the session ends. That distinction was worth 28.75 points on NQ — it shifts every level. Which daily bars you get depends on Settings → Display → Pivot Session Template. Leave it blank for the instrument default, or type the same session template your chart uses. An RTH-only template silently produces RTH daily bars and every pivot moves.

Volume profile will not match exactly — by design

The ladder’s POC, VAH and VAL are computed at tick granularity: every traded price is its own bucket. A chart’s volume profile typically buckets the session range into a few dozen rows instead. Both are correct; they answer slightly different questions. Expect the ladder’s POC to sit within a few ticks of the chart’s rather than exactly on it — a ladder row is a discrete tradable price, so precision there is worth more than matching.

When a level looks wrong, compare inputs — not outputs

New in v1.11: Settings → Display → “Why is a level here?” Open the report and it shows the inputs behind every level — which instrument the data came from, the session windows used, and the running totals. A level that looks wrong can be checked against your chart in one step instead of guessed at.

CustomDOM Settings on the Display tab, showing the "Why is a level here?" row with a Diagnostics button and its description of the inputs it reports
Settings → Display. The report sits under “Why is a level here?” — shown here on a light NinjaTrader skin.

For pivots specifically, turning on Settings → Display → Diagnostics also logs the numbers the loader actually used:

Pivots (Traditional): prior session O… H… L… C… (settlement) → P…

Compare the inputs against your chart before comparing the levels — that is what tells apart “wrong maths” from “right maths, wrong data”. Check those four inputs before looking at anything else. If the high and low match but the close does not, it is the session template. If the spacing between R and S levels is wrong too, it is the session boundary. Solving a level back to its inputs settles in one step what comparing levels can take an afternoon to guess at.

VWAP price source is selectable from v1.11 in Settings → Display: OHLC4, HLC3, HLCC4, HL2 or Close. Upgrading changes nothing — an existing install keeps the behavior it had, and only a fresh install defaults to OHLC4.

From v1.12, jumping around in Market Replay reloads the DOM’s levels for the new time, so they match the chart.

Levels stay hidden until their historical data has loaded, so nothing shows a half-seeded value at the open. A level that sits outside the ladder’s visible price range simply is not drawn — absence is not evidence it is wrong.

06 — Audio order flow

CustomDOM can play the tape, so you can follow order flow with your eyes somewhere else. Settings → Audio.

PitchSide — buys sound high, sells sound low
LoudnessSize — three tiers, under 6 / 6–24 / 25 and up
AccentA distinct mark on unusually large prints
RateTape speed, for free — a busy tape simply sounds busy

Audio is off by default. Turn it on in the Audio tab, or with the speaker button on the toolbar next to T&S — a red diagonal slash across the speaker means muted. No sound files are installed; the tones are generated in memory, so there is nothing extra to ship or go missing.

The settings that matter

The large-print threshold lives in Settings → Display → Large-print size, not in the Audio tab — one number drives both the visual highlight and the audible accent.

07 — Reading order flow

Beyond the resting book, CustomDOM shows what has actually traded.

Columns

Choose which appear with Settings → Display → Visible Columns: Bid, Price, Ask, Vol, Delta, ePnL, Ticks, Pts.

Time & Sales

The T&S button opens the tape beside the ladder: prints colored by aggressor, with large prints highlighted. It uses the data the ladder already receives — no extra subscription.

Where the numbers come from

Everything on the ladder is built from the trade and quote stream the DOM already subscribes to. There is no second data feed and nothing extra to pay for.

What you seeBuilt from
Bid / Ask sizesLevel 2 depth, as your provider sends it
Vol, Delta, Volume ProfileEvery trade that prints, accumulated per price for the session — or, live, NinjaTrader’s own Order Flow data when your license includes Order Flow+ (below)
Time & Sales, audio order flowThe same print stream — each trade’s price and size, with the side taken from whether it hit the bid or lifted the ask
VWAP, pivots, EMA / SMA, ATRHistorical bars requested once at startup, then kept current from the live stream
On a micro, every row above comes from the mini. Trading MNQ, MES or MGC? Not just the levels — the Time & Sales tape and the audio are the mini’s flow too (NQ, ES, GC). A micro’s own tape is sparse, and sourcing the mini is what makes the ladder agree with your chart; see section 05. The Vol column header names the contract actually in use — it reads Vol(NQ) while you trade MNQ.

With NinjaTrader Order Flow+ (v1.12). If your NinjaTrader license includes Order Flow+, live Delta, VWAP and Volume Profile come from NinjaTrader’s own Order Flow data, so they match its numbers minute by minute. NinjaTrader can hand add-ons the same live trade more than once, which inflated live volume before this version. Without Order Flow+, CustomDOM builds them from the trade stream as before — nothing to configure either way.

“Δ: loading order flow…” and “Δ: order flow stalled · reloading…” (new in v1.13) can replace the Delta readout in the status panel. When a second connection comes up in NinjaTrader — for example a prop-firm account connecting after your data account — NinjaTrader can stop sending CustomDOM its order flow data. CustomDOM notices and reloads it by itself; while it does, Delta shows the caption instead of a frozen number, and VWAP and Volume Profile catch up afterwards. Loading shows while a DOM opens. It only reloads while trades are still printing, so a quiet market is never mistaken for a stall. Each reload is noted in the event log: “Order flow stalled (…): reloading Δ. Next restart allowed in … s.”

Is the price feed current?

New in v1.12. A red strip across the top of the DOM tells you when the prices on screen may be out of date:

The strip saysMeaning
PRICE FEED LOST (…) — prices may be staleNinjaTrader lost its price connection
NO DATA for 12s — prices may be staleNo prices have arrived for several seconds
DATA DELAYED 4s — prices are behind the marketPrices are arriving, but late

It clears on its own when prices are current again, and it is not shown in Playback.

The status panel under the toolbar now has two rows — Bid / Ask / Last, then ATR / Delta / Feed. Feed: OK in green means prices are current; otherwise it shows the delay in seconds, amber from 1 s and red from 3 s. It is on by default; turn it off in Settings → Data → Feed delay (“Show feed delay (how far live prices lag the exchange)”). The red DATA DELAYED warning appears either way. It allows for your computer’s clock being a little off, so a clock a few seconds fast or slow does not cause false warnings.

A delayed feed is the dangerous kind. The ladder keeps moving, just behind the market, and NinjaTrader itself does not warn about it. The warning tells you prices are late — it cannot make a slow connection fast — so treat a red strip as a reason not to place an order from what you see.
The top of a CustomDOM window with a red strip reading NO DATA for 37s — prices may be stale, and the status panel showing Feed: —
Stale. No prices for 37 seconds: the red strip, and Feed: — in the status panel.
The same CustomDOM window with prices current: no strip, and a green Feed: OK badge on the second status row beside ATR and Delta
Current. The same window a few minutes later: no strip, and a green Feed: OK beside ATR and Δ.

ATR shading

ATR Level Shading tints the ladder by distance from price in ATR terms, so a move’s size registers relative to current volatility rather than as a raw tick count.

08 — Settings reference

Seven tabs, reached from the Settings button.

TabHolds
AccountLicense key, default account, routing colors that tint the DOM by account so a live account never looks like a sim one, and an optional color for this window only
BracketsDefault bracket on/off, tick / ATR / dollar bracket values, breakeven offset, trail stop
RiskOrder-quantity and daily-loss limits, market-order safety, Smart Breakeven, per-account guardrails, active lockouts
DisplayTheme, auto-center, ATR shading, visible columns, diagnostics, Time & Sales, CustomChart sync, every overlay level, delta reset
AudioAudio order flow — enable, volume, minimum print size, large-print accent, rate cap
ControlsMouse order entry — what each click places — and keyboard bindings. Called Hotkeys before v1.10.
DataFeed delay — the Feed status beside ATR and Delta. New in v1.12

Skins and colors

New in v1.11: CustomDOM follows your NinjaTrader skin. Pick any of NinjaTrader’s skins and the ladder, the settings window and the Time & Sales panel follow it — light skins give you a light DOM, dark skins look exactly as they always have. From v1.12 you can also override it: Settings → Display → Theme is Match NinjaTrader skin (the default), Light or Dark. CustomChart does the same from its v1.17, using the same palette, so the two windows match your platform and each other.

Your account colors are not changed. A live account looks exactly as you set it on every skin — that color is a safety signal, so the theme deliberately never touches it.

The skin is NinjaTrader’s setting, and it needs a restart. (This is about Match NinjaTrader skin; a forced Light or Dark theme does not depend on it.) Change it in NinjaTrader under Tools → Settings → General → Skin — the seven choices are Dark, Light, NinjaTrader, NinjaTrader Dark, Slate Dark, Slate Gray and Slate Light. Restart NinjaTrader for the change to take effect, here and everywhere else. If you switch skin and nothing looks different, that is why — nothing is broken and there is no setting of ours to hunt for.
The NinjaTrader Settings dialog on the General category, with the Skin dropdown open showing Dark, Light, NinjaTrader, NinjaTrader Dark, Slate Dark, Slate Gray and Slate Light
NinjaTrader’s own Settings dialog — Tools → Settings → General → Skin. Restart NinjaTrader after changing it.

Anywhere you pick a color, v1.11 uses a picker matching NinjaTrader’s: choose from the palette, paste a hex code, or use Custom for exact RGB and opacity.

The CustomDOM Custom Color dialog with Red, Green, Blue and Alpha sliders and their numeric values, over the Account tab's per-account routing color overrides
Custom opens RGB and Alpha sliders with the numbers alongside — the Alpha channel is how you get a tint that colors the ladder without hiding what is under it. Behind it, the per-account overrides each show their hex value.

Several windows, and a color for each

From v1.12, New → CustomDOM opens another window every time, titled CustomDOM #1, #2, #3… Each keeps its own instrument, account, link and settings, and all of them come back with your NinjaTrader workspace. CustomDOM #2 pairs with CustomChart #2, and so on. When several are open, keyboard shortcuts go to the one with the highlighted frame.

To tell windows apart at a glance, give one its own color: Settings → Account → This window (“Use my own color for THIS window”), then pick This window’s color. It is saved with that window in your workspace; other windows keep theirs.

A window color replaces the live/sim signal. While a window uses its own color, it no longer shows by color whether its account is live or sim. That is why the default stays your account colors — check the account name before trading from a window you have recolored.
Three CustomDOM windows side by side, titled CustomDOM #3, #2 and #1, colored purple, yellow and blue, on MES, MGC and MNQ
Three windows, three colors — CustomDOM #3 on MES, #2 on MGC and #1 on MNQ, each with its own window color.

Update notices

From v1.11 CustomDOM tells you when a new version is available, with a link to the download page. Decline and it will not ask again for that version — but it will let you know when the next one arrives.

Update to v1.13 by October 31, 2026. From v1.13 CustomDOM connects to the license server with a new key. Older versions keep working until October 31, 2026, then stop validating. Your license key and settings carry over — nothing else changes.
Account routing colors are worth setting on day one. Give live accounts one color and sim accounts another, and the DOM tells you at a glance which you are about to trade.

09 — Controls

One tab, two halves: what each mouse gesture places, and what each key does. Reached from Settings → Controls.

Mouse order entry

New in v1.10. Each gesture is its own dropdown, so what a click will do is something you can read rather than something you have to remember.

GestureDefault
Left-clickLimit
Shift + left-clickStop
Right-clickStop

Each of the three can be set to Limit, Stop, Auto (by market) or Off.

Buy or sell is decided separately from limit or stop. Left-click and shift + left-click take their side from the column you click — Bid buys, Ask sells. Right-click takes its side from the market — above price buys, below price sells. Changing what a gesture places does not change how it picks a side, so a right-click set to Limit still reads the market rather than the column under the cursor.

Keyboard shortcuts

Bind any of these in the same tab. When several DOMs are open, they act on the one with the highlighted frame.

10 — Troubleshooting

Ordered by what has actually resolved real reports, not by what sounds most likely.

NinjaTrader says the file is incompatible

You imported the package instead of the file inside it. See §01 — import the inner zip, the one with no hyphen. This is the single most common install report and it has no other cause.

A level doesn’t match my chart

  1. Are you on a micro? Then you are correctly seeing the mini’s levels — see §05.
  2. Turn on Diagnostics and compare the logged prior-session inputs against your chart, not the levels themselves.
  3. High and low match but close doesn’t → set Pivot Session Template to your chart’s template.
  4. Is it the volume profile POC? A few ticks of difference is by design.

The ladder is live but no levels are drawn

Levels are seeded from historical bars, and they stay hidden until that data has loaded (see §05) — so if none of your pivots, VWAP or volume profile ever appear while prices tick normally, the question is whether NinjaTrader is delivering history, not whether CustomDOM is working.

Open a standard NinjaTrader chart on the same instrument. If it has no bars either, it is NinjaTrader’s data. Disconnecting and reconnecting in Control Center → Connections reassigns the historical-data server, which is the usual fix.

A ticking ladder does not mean your historical data is working. Streaming quotes and historical bars travel different paths and fail independently, so prices can update in the header, the tape can run and the connection lights can be green while historical data is completely unavailable. That combination is exactly what an empty set of levels looks like — and nothing in NinjaTrader will report an error, because it does not treat a bad historical-data server as a failure.

How do I cancel one order without canceling everything?

Left-click the row in the Price column. That cancels the working orders sitting at that price — you do not need Cancel All, which clears every order on the instrument.

One thing to be clear about: it works on the price level, not on an individual order. Every working order you have at that price goes, limits and stops together. If you want to remove one of two orders resting on the same price, drag the one you are keeping to a different price first — right-click and drag moves an order — then cancel the level.

My order was rejected, or the DOM says LOCKED

Check Settings → Risk → Active lockouts first. A daily-loss guardrail blocks new entries while still allowing exits, which reads like a broken DOM if you have forgotten it is set. The rejection message names the guardrail that fired.

A red strip says NO DATA, DATA DELAYED or PRICE FEED LOST

CustomDOM is telling you the prices on screen may not be current — see §07. Check the connection in Control Center → Connections first; PRICE FEED LOST and a long NO DATA usually mean NinjaTrader’s connection dropped. DATA DELAYED means prices are arriving late, which is the connection or the computer falling behind, not CustomDOM. The strip clears by itself once prices are current.

Delta says “order flow stalled · reloading…”

Nothing to fix — v1.13 noticed NinjaTrader stopped sending order flow while trades were still printing, usually after a connection came up, and is reloading it by itself. See §07. Before v1.13 Delta kept showing the last number as if it were live, so if you are on an older version, update.

The license check says it can’t connect

v1.13 says, when the license server no longer accepts its version:

This version of CustomDOM can no longer connect to the license server. Download the latest version from tradersforge.net/members/download.html and install it.

Do exactly that: download the latest version and import it (see §01). Your license key and settings carry over. Any other license error ends “Try again, or contact support. If it keeps happening, install the latest version…” — try again first. Older versions show their old license error text after October 31, 2026; the fix is the same: install the latest version.

Quotes look stale, or the DOM feels sluggish

Turn on Diagnostics — CustomDOM writes a performance log to your NinjaTrader Documents folder. An inactive DOM repaints more slowly on purpose, and only on-screen rows are recalculated, so a large layout stays responsive. If a DOM genuinely lags, that log is what to send.

The Add-On doesn’t appear after importing

Restart NinjaTrader — NinjaScript Add-Ons are loaded at startup. Then check the New menu for CustomDOM.

Still stuck? Open a support ticket from your members area, or see the Setup Guide for the install steps on their own.