summary: if your algo or TradingView alert suddenly stopped firing, a futures contract rollover is almost always the reason. this guide covers which symbol to use on Tradovate, NinjaTrader, and ProjectX, how to spot a stale contract, and how to fix it in under 5 minutes.
the silent failure
your algo was running. alerts were firing. then one morning — nothing.
no error. no warning. the chart still loads, the strategy still shows up in TradingView, your broker is still connected. everything looks fine. but no trades are going through.
9 times out of 10, this is a contract rollover.
and the worst part — TradingView doesn't tell you. your broker doesn't tell you. the alert just goes quiet, and you only notice when you check your P&L at the end of the day and realize you missed the setup entirely.
look — this is the single most common "my algo stopped working" ticket we get. it hits every futures trader on the platform, every single quarter. if you trade NQ, ES, YM, or RTY (or the micros — MNQ, MES, MYM, M2K), this will happen to you. the goal of this article is to make sure it only happens once.
quick context on rollovers
futures contracts expire quarterly. if your TradingView alert is on a specific front-month contract symbol (e.g., NQM2026), it's locked to that symbol. when the contract rolls, the alert keeps watching a dead symbol, price stops moving there, and the algo never fires.
edgeful itself rolls automatically on the platform side — based on volume, not calendar dates — so your reports always reflect the live contract. the breakage is strictly on your TradingView alert / broker path.
for the full explanation of continuous vs. front-month contracts, how edgeful's data rolls, and what to use for backtesting vs. live trading — see futures contract rollovers. this article is the troubleshooting companion for when something has already gone silent.
which contract symbol your alert should be on — by broker
first thing to check when an algo goes silent: is the alert on the correct symbol for the broker you're connected to? this is where most silent failures start.
Tradovate → current (front-month) contract symbol (e.g.,
NQM2026). not continuous. if your alert is onNQ1!, that's your problem — Tradovate won't route it correctly and orders get rejected silently.NinjaTrader → current (front-month) contract symbol (e.g.,
NQM2026). same rule as Tradovate.ProjectX (Topstep, TopstepX, and all ProjectX-based prop firms) → continuous contract symbol (e.g.,
NQ1!,ES1!). if your alert is on a specific front-month likeNQM2026, swap it toNQ1!. ProjectX requires continuous symbols.
rule of thumb for which symbol to use: Tradovate / NinjaTrader = front-month. ProjectX = continuous. this is the first thing to verify when something goes silent.
how to tell if you're on a stale contract (Tradovate / NinjaTrader)
if you're on Tradovate or NinjaTrader, you're on a specific front-month symbol — so a rollover can leave you stranded on a dead contract. you don't need a calendar to catch this. the data tells you.
the volume check. pull up your chart and look at the volume on the bottom. then open a new chart with the next-quarter contract (if you were on NQM, check NQU). whichever contract has dramatically higher volume is the front month. if that's not the one your alert is on — you've rolled.
the front month rule. the front month is always the contract with the most open interest and volume. on any given day, one contract is "it." everything else is either expired or too far out to matter for intraday trading.
the price check. if your chart has been flat or showing weird gaps while the broader market is clearly moving, you're probably looking at a contract nobody is trading anymore.
if you're on ProjectX (continuous), you don't get stuck on a dead contract — but you can still hit routing issues during a rollover window, so verify alerts are firing end-to-end.
when this is most likely to hit you
CME index futures (NQ, ES, YM, RTY, and all their micros) roll on the standard CME convention: 8 business days before the 3rd Friday of March, June, September, and December. that's when volume shifts. the contract itself doesn't expire until the 3rd Friday, but you don't want to be on the old one by then — volume dries up, spreads widen, and fills go bad.
rule of thumb: if we're within 2 weeks of a March/June/September/December 3rd Friday, check your front month. (this applies to Tradovate and NinjaTrader — ProjectX users on continuous symbols don't need to swap contracts, but should still verify alerts are firing through the window.)
the fix — step by step (Tradovate / NinjaTrader)
this takes about 5 minutes. do it the morning of or the day before the roll.
identify the new front month. compare volume between the current contract and the next quarterly expiry. go with whichever has the volume.
delete your old alerts. open TradingView → alerts panel → find every alert tied to the expiring contract. delete them. don't try to edit the symbol — the alert is bound to the old contract and TradingView will not cleanly swap it.
switch your chart to the new front month. e.g., from
NQM2026toNQU2026. your indicator settings carry over automatically.recreate the alert on the new contract. set up the exact same conditions you had before, now pointed at the new contract symbol, with your broker's webhook URL included.
verify both TradingView and your broker show the same contract before the old one expires. this is the step most people skip — and it's the one that catches Tradovate users every quarter (more on that below).
send yourself a test alert. create a dummy alert that fires immediately on the new contract to confirm the webhook path is live end-to-end. delete it once you see it fire.
the continuous contract will also indicate when contract switches are taking place.
on ProjectX, there's no quarterly swap to make — the continuous symbol handles the roll for you. just verify your alert is still firing with a test alert.
broker-specific gotchas
this is where most silent failures actually come from:
Tradovate (including Apex via Tradovate). use the current front-month contract, not continuous. Tradovate has a built-in auto-rollover setting — don't rely on it. Tradovate's internal roll often lags TradingView's by several days — during that window, TradingView is already referencing the new contract while Tradovate is still on the old one. alerts fire, orders hit Tradovate, Tradovate rejects them because the symbol doesn't match. nothing tells you this is happening. always verify both sides show the same contract symbol before you stop checking.
NinjaTrader. use the current front-month contract, not continuous. same routing logic as Tradovate — NinjaTrader executes on a specific contract, so your TradingView alert needs to be pointed at that exact same contract. swap the symbol manually each quarter.
ProjectX (Topstep, TopstepX, and all ProjectX-based prop firms). use the continuous contract (NQ1!, MGC1!, etc.), not a specific front-month. ProjectX requires continuous symbols for live trading. if you're seeing orders fail on Topstep/TopstepX and you're on a specific contract like NQM2026, that's your issue — switch to NQ1!.
the 2-week reminder
the best fix is the one you never have to make in a panic.
if you're on Tradovate or NinjaTrader, set a recurring calendar reminder: 2 weeks before the 3rd Friday of March, June, September, and December. title it "check futures rollover — NQ/ES/YM/RTY." give yourself 15 minutes that morning to run through the steps above.
this is the single highest-ROI 15 minutes you'll spend each quarter. one missed setup because of a silent rollover usually costs more than the time it takes to prevent it for the next 10 years.
contracts this affects on edgeful
if you're trading any of these on edgeful, this applies to you:
Nasdaq — NQ / MNQ — Mar / Jun / Sep / Dec
S&P 500 — ES / MES — Mar / Jun / Sep / Dec
Dow — YM / MYM — Mar / Jun / Sep / Dec
Russell — RTY / M2K — Mar / Jun / Sep / Dec
all four roll on the same CME schedule. if you trade multiple markets, you handle all of them in one session.
if you're still stuck
if you've done the steps above and your alert still isn't firing, open a support ticket from the chat widget inside edgeful. include: the contract symbol you're on, the alert message text, your broker, and a screenshot of the TradingView alerts panel. we'll get you sorted.

