Skip to main content

"Tradovate rejected your trade" — how to find the rejection reason and fix it

what to do when your algo trade shows "rejected" in the notification log and the detail says to check your Tradovate dashboard for the order rejection reason.

Written by Brad
Updated over a week ago

summary: what to do when your algo trade shows "rejected" in the notification log and the detail says to check your Tradovate dashboard for the order rejection reason.

what this error looks like

you open your edgeful algo notification log and see a trade with a status of rejected. the detail reads:

"Tradovate rejected your trade. Please go into your Tradovate dashboard and check the order rejection reason."

you might also see a second failed trade — the flatten/exit — with a message like:

"Cannot sell when position is 0 (must be > 0 to flatten long)"

that second error is a downstream effect. the buy/entry was rejected, so the automation won't close a position you were never in. makes sense — it's protecting you from accidentally entering on the wrong side.

the real question is: why was the entry rejected?

how to find the rejection reason in Tradovate

edgeful sends the trade to your broker, but when Tradovate rejects it, the specific reason lives inside your Tradovate account — not in edgeful. here's how to pull it up:

1. log in to your Tradovate account at trader.tradovate.com

2. navigate to the orders or order history section in your dashboard

3. find the rejected order — it'll show a status of rejected or failed

4. click into the order detail to see the rejection reason

the rejection reason is the key. once you know why Tradovate turned it down, the fix is usually straightforward.

the most common cause: continuous vs. current contract

the most frequent rejection reason you'll see here is something like:

"Liquidation Only. Contract is about to be expired. Please contact the Trade Desk."

this means your TradingView alert is set on the continuous contract (like GC1!, NQ1!, ES1!) instead of the current contract (like GCM2026, NQM2026, ESM2026).

here's what's happening behind the scenes — TradingView fires the alert from the continuous chart, but when the trade hits Tradovate, your broker is trying to route it to the actual contract. if that contract is near expiration or has already rolled, Tradovate rejects the order because you can't open new positions on an expiring contract.

how to fix it

1. open TradingView and go to the chart where your algo alert is set

2. change the ticker from the continuous contract (e.g., GC1!) to the current active contract (e.g., GCM2026)

3. delete the old alert on the continuous contract

4. re-apply your edgeful algo alert on the new current contract chart

5. confirm the alert is active and properly configured

that's it. your next trade will route to the correct contract and Tradovate will accept it.

keeping this from happening again

futures contracts expire on a regular cycle — quarterly for indices (ES, NQ, YM, RTY), and on varying schedules for commodities and other products. every time a contract rolls, you'll need to update your TradingView chart to the new current contract.

a few tips to stay ahead of it:

set a calendar reminder a few days before contract expiration so you can update your charts

check the edgeful algo notification log regularly — a rejected trade is the first sign something's off

use the current contract from the start rather than the continuous contract when setting up your algo alerts — continuous charts are great for research and backtesting, but for live trade execution, you always want the current contract

for more detail on how contract rollovers affect your algos, check the dedicated rollover article linked below.

related articles

Did this answer your question?