Skip to content
MERIDIAN

Docs

Install, pair, send a signal

The whole path from an empty NinjaTrader install to a routed trade, plus the payload contract and what to do when something looks wrong.

1 · Install the AddOn

Meridian is a NinjaTrader 8 AddOn — a DLL in a folder, plus one file you can read. There is no installer, no service and no server to rent.

  1. Close NinjaTrader. A loaded AddOn's assembly is locked, so copying over it while NT is open fails halfway.
  2. Copy the DLL into your NinjaTrader custom AddOns folder: Documents\NinjaTrader Data\NinjaTrader\bin\Custom\AddOns\ (the path is printed by Settings → General → NinjaTrader Data if yours differs).
  3. Start NinjaTracker and wait for it to finish loading, then open the window from the AddOns menu. It shows as Meridian Signal Desk.

The window appearing is the whole install. You can close and reopen it freely — settings live in a JSON file next to the DLL, not in NinjaTrader's own configuration.

Nothing to compile and no SDK required: the DLL you copy is already built. If the window never appears, the file is in the wrong folder — check you used Custom\AddOns\ and not a parent directory, and confirm you extracted the archive rather than opening it inside it.

2 · Pair the PC to your account

The copier runs on the PC that holds the accounts, so that PC has to prove which dashboard account it belongs to. In the AddOn window, find the Sign in & pair row and enter your dashboard user id and password.

That writes a small LinkConfig.json next to the DLL and the PC connects on its own — over an outbound secure websocket, so you do not open any inbound port on your router or Windows firewall.

One PC per account. Signing in on a second PC rotates the account's device key and signs the first one out, which is deliberate: two machines must never be able to submit orders for the same account at once.

Need to move? Sign in on the new PC. The row on the old one greys out and offers Sign out. There is nothing to reinstall.

3 · Get your signal endpoint

Your endpoint is on your dashboard Profile page, and it is the only per-account address that matters:

https://www.meridiansignaldesk.com/webhook/u/<your-id>/<your-secret>

The u/<your-id> part pins every signal to your own copier, and the tail is a secret minted for your account alone, shown only to you and fixed for the account's life. A wrong secret and an unknown account are refused identically, so an address cannot be probed to discover who exists.

You also need the listener secret from the dashboard's Copier Setup → Webhook listener card. It is a second, separate value: the URL proves whose signal it is, the listener secret proves it came from something you control. Add it to every alert body as "secret": "…".

4 · TradingView alerts

In a TradingView alert, set the webhook URL to your endpoint and put this in the message body:

{"secret":"YOUR_LISTENER_SECRET","account":"YOUR_LEADER_ACCOUNT","instrument":"MES","side":"long","qty":1,"strategy":"orb"}

The fields Meridian reads:

Field Required Meaning
secret yes Listener secret. A post without it is refused.
account yes Which connected account is the leader.
instrument yes Symbol, root or contract. Fuzzy-matched to what is connected.
side yes long, short, flat — or use action.
qty yes Contracts. Followers scale this by their multiplier.
strategy no Picks a per-strategy secret, or kill-switches that one strategy.
id no Alert id. With the duplicate guard on, a repeat inside the window is dropped.

Not sure of the payload? The dashboard's Signal Console builds and sends one for you, with a live log of what the copier did with it — the fastest way to prove a wiring before it matters.

5 · Prove it on a sim account first

Before pointing this at a live account, connect a NinjaTrader sim account as a follower and leave the leader on sim too. Send one alert. Then watch the journal: you should see the webhook accepted, the leader's position read, the follower routed, and the fill recorded.

To watch behaviour without sending orders, set the follower to shadow mode. The journal records what it would have done and nothing reaches the account.

Once the journal reads the way you expect, add your real accounts one at a time. Each row has its own leader, multiplier and outage policy, so you can bring a second account up with different rules while the first is already running.

When something looks wrong

The dashboard says no copier is linked

The PC is signed in as a different dashboard id, or the AddOn is closed. Every account sees only its own link, so if another account's PC is the one connected, this one correctly reports nothing. Open the AddOn window and use its Sign in & pair row.

My alert is being refused

Almost always the listener secret in the body. A refused post answers 403 with the same shape for a wrong secret and an unknown account, by design. Copy the secret again from Copier Setup → Webhook listener, and check the alert is not URL-encoding it.

A follower is drifting and not correcting

Check the reconciliation state on its row: held means a guard stopped it (daily trade cap, loss cap, paused reconciliation) and the journal names which. flat means the position is closed, so there is nothing to correct toward. off means the engine is stopped.

The journal warns about a frozen leader

That is the zombie-leader check: a leader marked connected whose unrealized P&L has not moved for a suspiciously long stretch is probably a dead link. It warns once and keeps working — it will not act on the position for you. Check the PC's connection, then decide whether the outage policy should be Flatten instead of Hold.

Nothing is delivering but the copier looks connected

Signals are held while there is no copier to take them (the hold window is 20 seconds by default) and answered 503 afterwards rather than dropped. If the copier is running and the link is up, the next thing to check is the listener port actually bound in the AddOn window.

Still stuck?

Send the journal lines around the problem — they are designed to be read.

Get help