StopWarden is not open yet. Nothing here can be downloaded or bought today; these pages describe how StopWarden is planned to work when it opens. Get one email when it opens.
FAQ
Does StopWarden place trades?
No. It never opens a position and never places an entry order. Your strategy makes every trading decision.
In Watch mode (the default) it doesn't close or cancel anything either; it reads NinjaTrader's log and alerts you. The one exception is autopilot stop --flatten, which you run yourself.
In Protect mode (opt-in: "mode": "protect", an active licence and an accepted Learn report, see How do I turn Protect on?) StopWarden can close a position and cancel orders on your configured account: when a position is left without stop protection, at end of day, on the kill switch, or at the balance floor. Safety lists every case. It attempts these actions and confirms them from the log; it does not guarantee them, and you remain responsible for your account.
Does it work with my prop firm?
StopWarden reads NinjaTrader 8's own log and drives NinjaTrader 8 Desktop, not the broker, so it can be set up for an account that appears there and runs a NinjaScript strategy. Whether your firm allows that is the firm's call. Tradovate-based prop accounts usually connect through NinjaTrader's My NinjaTrader connection. Put that exact connection name in nt8.connections.
Two things to check yourself:
- Your firm's rules. Some firms restrict automated strategies, VPS use, or third-party software. Read the current rules before you use StopWarden on their accounts.
- The account name.
targets[0].accountmust match the account column in the Strategies tab exactly, for example"YOUR-PROP-ACCOUNT".
StopWarden doesn't know your firm's drawdown rules. The optional balance floor is a simple "below this number, stop everything" check.
My NinjaTrader account uses Google sign-in. Will that work?
There are three nt8.login.method choices:
| Method | What it does | Best for |
|---|---|---|
credential | Types a NinjaTrader username/password from Windows Credential Manager | VPS and home PC |
google | Clicks your saved Google account tile (login.google_account = text on the tile, e.g. your email) | Home PC only. Google often blocks sign-ins from data-center/VPS IP addresses. |
none | Touches nothing. You sign in yourself; StopWarden waits for the Control Center | Anywhere, if you can be there at launch time |
If your account only has Google sign-in and you run on a VPS, use none. Or ask NinjaTrader support whether your account can sign in with a username and password.
Should I use a VPS or my home PC?
Both work. Whichever you use needs:
- Windows, signed in as the user who runs NinjaTrader, with the desktop unlocked during trading hours;
- no sleep;
- automatic sign-in after a restart if you want it to recover from reboots on its own. The scheduled task starts StopWarden at sign-in, not at boot.
| Home PC | VPS | |
|---|---|---|
| Google sign-in | Usually works | Often blocked |
| Common risks | Sleep, Windows Update restarts, home internet or power | Disconnected Remote Desktop session (screen clicks pause), provider maintenance |
Can it run more than one account or strategy?
Not in v1. The config accepts exactly one target: one strategy on one account. doctor fails with v1 supports exactly one target if you list more. Running two copies on one PC isn't supported either: they would share the order-guard config and fight over the same NinjaTrader windows.
Other accounts in the same NinjaTrader are left alone by default: end of day, the kill switch and the balance floor cancel only the working orders StopWarden has seen on your account (cancel_scope: "account"). NinjaTrader's global cancel-all is sent only if you set cancel_scope: "global", and even then StopWarden refuses it while another account has working orders. See Safety.
How is it different from Ninja Watchdog or CrossTrade?
Both are established tools, and they solve related problems. Their features change, and this page does not compare them feature by feature: check their current feature lists before you decide.
StopWarden does recovery and, in Protect mode, acts on the account. It attempts to flatten positions left without stops, cancels orphan orders when no strategy is running, and runs an end-of-day disable + cancel + flatten, a kill switch and a balance floor. Watch mode (the default) does the detection and alerts without acting.
Don't run two tools that both relaunch NinjaTrader or click enable/disable at the same time. They will fight over the same windows.
What data leaves my PC?
Nothing about your trades is sent to us, unless you choose to send a diagnostics bundle to support. Your alert messages go only to the Telegram chat or Discord webhook you set up, and they contain your PC name, the strategy name, the account name, positions and error text. A paid licence is checked against our server with your licence key, a hashed machine id and the StopWarden version, and every copy asks our server once a day whether a newer version exists. StopWarden collects no usage telemetry.
Your NinjaTrader password and your bot token/webhook stay in Windows Credential Manager on this PC. NinjaTrader's own connection to your broker is unchanged.
Can I use it alongside my strategy's own safety features?
Yes, and you should. Keep your strategy's stop losses, its own daily limits and any broker-side limits. StopWarden is a backstop:
- The watchdog waits a short while before it acts. Protect turns on only for a strategy whose stop is normally working well inside the wait, and is not missing for long in total within any minute (the Learn report checks both), so your strategy gets the first chance to replace a stop.
- If your strategy protects positions with orders that aren't
Stop MarketorStop Limitorders, list their name prefixes inwatchdog.extra_stop_name_prefixes. Otherwise the watchdog treats those positions as unprotected.
Can I trade the configured account by hand?
Not while StopWarden runs in Protect mode. At any time of day, even with the strategy off:
- the watchdog closes any position on that account that isn't covered by working stops for longer than the wait;
- the order guard cancels working orders on that account whenever no strategy is running on it.
Trade by hand on a different account. StopWarden only watches the one in your config. In Watch mode (the default) neither of these acts; you get alerts instead. If you must trade the configured account by hand too, set protection.account_mode to "manual-allowed": StopWarden then never flattens or cancels on it by itself and the order guard stays off; you get alerts only.
Nothing happened when my position had no stop. Why?
Most likely you are in Watch mode, the default: StopWarden alerts (phone, Activity tab) and does not act. The alert says what Protect would have done. Protect also stays alert-only until its gate is open: autopilot doctor shows the reason on its Protect gate line (for example "Learn report not accepted yet" or "free tier"). Two more cases: a watchdog started on its own, without the supervisor, never acts; and while the kill switch (STOP) is set, the watchdog only alerts. To see what Protect would have done over the last 30 days, run autopilot learn (it counts the times it would have acted) or the free Safety Scan (autopilot scan --open, or the window's Scan tab).
How do I turn Protect on?
- Run in Watch while your strategy trades, until
autopilot learnsays the Learn report is complete (20 round trips over 5 sessions by default). - Read the report: how quickly your strategy's stop is in place, how it moves it, and how often Protect would have acted with its wait.
autopilot learn --accept.- Activate a paid licence (
autopilot license activate, or Licence in the window's Setup tab). - Choose Use Protect in the window's Setup tab, or set
"mode": "protect"inautopilot.json.
StopWarden refuses to save Protect without step 3. Protect's wait is fixed. Some strategies stay Watch-only in this version: one that exits without a resting stop (STOPLESS), UNSTABLE (its slowest 1% of stop placements take longer than the wait), SLOW (strategies whose own stop is not reliably working well inside the wait, or is missing for too long in total within a minute, for example because it cancels and re-places its stop often), ATM strategies, and an account holding two instruments at once. Details: Safety.
I use an ATM strategy. Does Protect work?
Not in this version: ATM strategies are Watch-only. The Learn report recognises them by NinjaTrader's ATM order names (Stop1, Target1, ...). ATM stops can be held inside NinjaTrader on your PC rather than at the broker, and this version is not calibrated for them, so StopWarden alerts and does not act. The watchdog still warns when a stop is held inside NinjaTrader (state Trigger pending), because nothing protects the position if NinjaTrader or the connection drops.
Why did I get a "Stop far from entry" warning?
Your stop counts as cover, but it sits farther from your average entry than protection.far_factor (3 by default) times the max loss per contract for that instrument (built-in: 40 points on NQ and MNQ, 10 on ES and MES; set your own in protection.max_loss_usd_per_contract). The warning shows the dollars at risk if that stop fills. StopWarden does not act on it; check that the stop is where your strategy meant to put it.
What is a reject storm?
Many orders rejected on your account in a short time (by default 20 within 5 minutes): usually a strategy retrying an order the broker or your prop firm keeps refusing. You get one CRITICAL alert, because a strategy stuck in that loop can run for hours unnoticed. StopWarden does not act on it; look at the rejection reason in NinjaTrader's log or Orders tab. Change the thresholds in protection.reject_storm.
What did StopWarden catch on real accounts?
StopWarden is not open yet, so there are no results from customers' accounts to report. It would not catch: trades placed by hand that NinjaTrader's log never recorded, an ordinary losing streak with every stop in place, and a stop that fills far past its price in a news release. A replay of history is evidence, not a promise about your account.
What if my PC sleeps, locks or restarts?
| Situation | What happens |
|---|---|
| Sleep | Nothing runs: no watchdog, no end of day, no alerts. Turn sleep off. |
| Screen locked | StopWarden sends WARN Windows desktop is LOCKED and pauses everything that clicks (sign-in, connect, enable, the balance check, end-of-day disable). In Protect mode the watchdog still flattens through ATI. |
| Disconnected Remote Desktop session | Clicks can fail, and sign-in refuses to type into it. Reconnect, or keep the session connected during trading hours. |
| Restart | StopWarden starts again when the user signs in (scheduled task). Without automatic sign-in, nothing runs until someone signs in. |
| StopWarden crashed | The keepalive task restarts it within 5 minutes. |
What about holidays and early closes?
Add full-day market holidays to schedule.holidays as "YYYY-MM-DD". StopWarden skips those days completely.
There is one disable_at for every day. For an early close, either add the day to holidays and trade it yourself, or temporarily change disable_at and restart StopWarden (config is read at start-up).
Does it trade overnight or 24 hours?
No. v1 enables within one daytime window per day (launch_at ≤ enable_at < disable_at, same day). The watchdog and order guard still watch the account overnight.
What about contract rollover?
StopWarden doesn't roll contracts. Your strategy row is set to a specific contract.
- On roll day, outside your trading window, change the instrument on your Strategies-tab row and save the workspace.
- If you filled in
targets[0].instrument, update it too, or leave it blank (recommended). Blank means the watchdog uses the instrument from NinjaTrader's own position line.
StopWarden closes NinjaTrader's "Auto Rollover Notification" pop-up so it doesn't block clicks.
Can I update NinjaTrader 8?
Yes. Do it outside your trading window. StopWarden only launches NinjaTrader between launch_at and disable_at. Afterwards:
- Check that both NinjaTrader settings are still on (cancel-on-disable, AT Interface).
- If NinjaTrader asks, recompile NinjaScript (NinjaScript Editor, F5).
- Run
autopilot doctor --uiwith NinjaTrader open. - Watch one Sim101 day. StopWarden clicks NinjaTrader's screens, so a NinjaTrader update that changes those screens can break it.
How do I update StopWarden?
- Outside your trading window, run the new release's
install\install.ps1as Administrator. It keeps yourautopilot.json,orderkill.jsonand state. - Recompile in NinjaTrader (F5) if the installer says the AddOn changed.
- Before installing, run
autopilot shutdown(stops StopWarden without the kill switch). After installing, runautopilot start. A running copy keeps running the old version until you do this. - Run
autopilot versionandautopilot doctor.
I changed autopilot.json. Do I need to restart?
Yes. StopWarden reads the config when it starts. Run autopilot doctor to check your edit, then autopilot shutdown and autopilot start. doctor and the one-off commands (status, enable, stop, ...) always read the current file.
How do I stop everything right now?
autopilot stop --reason "stepping away"
This disables the strategy. In Protect mode, if flatten_on_disable is true, it also closes your configured account's position and cancels the working orders it has seen on that account (other accounts are left alone by default, see Safety). In Watch mode it only disables; add --flatten to also close and cancel on your account. Nothing is enabled again until autopilot resume. If a position is open and the stop would not close it, the command refuses and changes nothing: disabling cancels the strategy's stop, so choose --flatten (close it) or --leave-open (you manage it by hand). If the command isn't available, create an empty file named STOP in C:\ProgramData\StopWarden\state\.
autopilot stop and the STOP file do not switch off the order guard. While it is switched on for your account, it keeps cancelling orphan orders (working orders left when no strategy is running), also after you stop StopWarden and overnight. To switch it off, set "mode": "watch" in autopilot.json and restart StopWarden: the guard is switched off whenever StopWarden starts in Watch (see section 4 of Safety).
How do I uninstall?
- Disable your strategy in NinjaTrader yourself and make sure you are flat. Uninstalling doesn't disable or flatten anything.
- From an Administrator PowerShell:
This removes the scheduled tasks, stops StopWarden's processes, removes the program folder and its PATH entry, and removes the AddOn from NinjaTrader (after backing it up).powershell -NoProfile -ExecutionPolicy Bypass -File "$env:ProgramFiles\StopWarden\uninstall.ps1" - In NinjaTrader, open the NinjaScript Editor and press F5 once (or restart NinjaTrader) so the AddOn unloads.
Your config and logs in C:\ProgramData\StopWarden are kept. Add -Purge to also delete them and the three stored credentials. -DryRun shows what would happen and changes nothing.
Optional: strategy heartbeat (detects a stalled data feed)
Sometimes a connection says Connected, but no data arrives and your strategy stops getting bars. If your strategy writes a small heartbeat file on every bar, StopWarden can notice the silence and reconnect.
How StopWarden uses it. While your strategy is on during the trading window, StopWarden reads:
<Documents>\NinjaTrader 8\bin\Custom\autopilot_heartbeat.<account>.json
The file contains {"time":"2026-09-23T10:15:00"}, written in this PC's local time. If that time is older than recovery.heartbeat_stale_minutes (default 8), StopWarden:
- sends
WARN Strategy heartbeat is N min old (data stalled?): reconnecting.; - disconnects and reconnects your configured connections;
- counts that as a recovery attempt, at most once per stale period.
If the file doesn't exist, this check is off.
Pick the stale time carefully. It must be longer than the longest normal gap between your bars. On 1-minute bars the default 8 is fine. On 15-minute bars, or on tick/range bars in a quiet market, raise it (up to 120), or you will get needless reconnects.
The snippet. Add this to your strategy. It writes only in real time, writes the file atomically (temp file, then replace), and never throws into your strategy.
// 1) With the other "using" lines at the top of your strategy file:
using System.IO;
// 2) Inside your strategy class:
private void WriteAutopilotHeartbeat()
{
if (State != State.Realtime || Account == null)
return;
try
{
string dir = Path.Combine(NinjaTrader.Core.Globals.UserDataDir, "bin", "Custom");
string path = Path.Combine(dir, "autopilot_heartbeat." + Account.Name + ".json");
string tmp = path + ".tmp";
// Local PC time, no "Z" and no UTC: StopWarden compares it with this PC's clock.
string now = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
File.WriteAllText(tmp, "{\"time\":\"" + now + "\"}");
if (File.Exists(path))
File.Replace(tmp, path, null);
else
File.Move(tmp, path);
}
catch (Exception)
{
// Never let the heartbeat break the strategy.
}
}
// 3) As the FIRST line of your existing OnBarUpdate():
protected override void OnBarUpdate()
{
WriteAutopilotHeartbeat();
// ... your existing code ...
}
Compile (F5), then check on Sim101 that the file appears and its time updates on every bar.
Don't write the time in UTC or with a trailing Z. StopWarden treats the time as local clock time, so a UTC time would look hours old or hours in the future.