Why your futures alert fired on the wrong contract
If you've automated a futures strategy and had an order land on a contract you
weren't expecting, there's a good chance the cause is a continuous symbol — something
like MNQ1! or ES1! — rather than an explicit contract month.
What a continuous symbol actually is
Charting platforms stitch a sequence of individual contracts into one continuous line so you get an uninterrupted chart across expirations. It's genuinely useful for looking at history. The problem is that "which underlying contract is this symbol pointing at right now" is a judgment call, and different platforms make that call differently — some roll on volume, some on a fixed number of days before expiry.
Why that matters for automation
A chart alert doesn't send "the December contract" — it sends whatever symbol the platform currently maps the continuous ticker to. If your charting platform and your execution venue resolve that mapping on different schedules, they can briefly disagree about which contract is front-month, particularly in the days right around expiration. An order can land on the contract that's about to expire instead of the one you meant.
The fix is boring and reliable
Use the explicit contract symbol — MNQZ2026 rather than
MNQ1! — in the alert itself. It's slightly more maintenance, since you
update the symbol yourself a few times a year, but it removes the ambiguity entirely.
You always know exactly which contract an order was meant for, because you wrote it
down.
A rollover habit worth having
Put contract expirations on a calendar. A few days out, decide explicitly whether you're closing the position, rolling it manually to the new contract, or letting a scheduled alert handle it. Automation doesn't roll a contract for you — that decision stays yours either way, so it might as well be a deliberate one.