summary: what to do when your algo trade shows "rejected" in the trade 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 trade 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.
common rejection reasons and what to do
edgeful will only tell you that the trade was rejected by the broker — the specific reason is only visible inside Tradovate, so you'll need to log in there to see it. the rows below are common causes, not a list of exact messages. once you've found the reason in Tradovate, match it to the closest row — the wording can vary, so look for the key phrase.
what the rejection reason says | what it means | how to fix it |
"Liquidation Only. Contract is about to be expired. Please contact the Trade Desk." | your alert is on a contract that's expiring or has already rolled. Tradovate won't open new positions on it. | switch your TradingView chart to the current front-month contract, delete the old alert, and recreate it. full steps are in how to fix it below. |
it mentions a daily loss limit or another risk rule on the account | the account hit a loss limit set at the broker or prop firm. new orders get blocked, and a broker risk rule can also close an open trade before your algo's own exit fires. | there's no fix inside edgeful — you're locked out until the broker resets the limit. check your account's risk settings in Tradovate (or your prop firm's rules). you can keep a Tradovate daily loss limit on while you run algos — it's a safety net that makes sure your daily limit is followed. when it's hit, Tradovate rejects new orders for the rest of the day. that's the limit doing its job, not an edgeful error. |
it mentions margin or buying power | your account doesn't have enough buying power for the contract size the algo tried to trade. | check your account balance and buying power in Tradovate, confirm the contract size on your algo, and check whether the account has hit a loss lockout. |
it mentions a position or contract size limit | the algo tried to trade more contracts than the account allows. this is especially common on prop firm accounts. | check the position limits on your account in Tradovate, then lower the algo's contracts per trade so it fits inside them. |
not seeing a rejection in Tradovate at all? if your broker shows disconnected on the algo dashboard, the order never reached Tradovate. brokers invalidate login sessions on a schedule (often every 24-72 hours), and orders can't be sent until you reconnect. click reconnect next to the broker — and if that doesn't work, use + add broker to sign in again. your strategies stay intact. checking that your broker shows connected before each session is good practice, but it isn't required — you'll get an email about any broker disconnection. more in broker connection troubleshooting.
for other algo errors, see the algo error message decoder.
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 your edgeful trade log regularly (the rejected filter shows them all at once) — 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 on Tradovate or NinjaTrader, you always want the current front-month contract. (ProjectX accounts are the exception — they use the continuous contract for live trading.)
for more detail on how contract rollovers affect your algos, check the dedicated rollover article linked below.


