Tradovate

Tradovate 'Liquidation Only, Contract About to Expire'

New orders bounce with "Liquidation Only. Contract is about to be expired." You don't need the Trade Desk, you need to roll to the current front-month contract.

Vérifié par l'équipe Trading Systems de PickMyTrade Dernière mise à jour
· 7 min read
Tradovate Orders module showing a rejected order with the liquidation-only contract-expired rejection reason

You line up an entry on NQ or ES, hit send, and Tradovate throws it back at you: “Liquidation Only. Contract is about to be expired. Please contact the Trade Desk.” You can still close whatever you're holding, but every new order dies the moment it hits submit. Here's the good news the wording hides, you almost never need to call anybody. The contract you're pointing at has slipped into its expiration window, so Tradovate has flipped it to liquidation-only, meaning close-only. Automated traders get burned by this the most, because a TradingView alert built on a continuous symbol like NQ1! or ES1! will happily keep firing into an expiring contract long after the volume has rolled to the next month. Below we'll walk through what the message actually means, why it shows up, and how to roll forward to the live front-month contract so your orders fill again, plus how PickMyTrade stops an expiring contract from quietly killing your automation.

Quick Checklist for the Liquidation-Only Expiring-Contract Rejection

  • Roll to the active front-month contract, swap out the expiring month (say an H March contract during roll week) for the current one before you re-enter.
  • Stop trading continuous symbols, NQ1!, ES1!, and GC1! auto-roll on TradingView charts, but the order that lands at the broker can still hit an expiring contract.
  • Recreate any TradingView alert on the new contract, editing the ticker alone often isn't enough. Delete the old alert and re-add it on the current contract chart.
  • Confirm you're only being allowed to close, liquidation-only lets you flatten an open position but blocks every new entry.
  • Check the roll calendar, equity index futures expire the third Friday of March, June, September and December; energy and metals roll on their own schedules.
  • You usually don't need the Trade Desk, despite the message, switching to the current contract clears the rejection by itself.

What "Liquidation Only. Contract Is About to Be Expired" Means

Every futures contract has a hard expiration date, and it stops trading like a normal instrument as that date closes in. To keep traders from getting caught holding a contract into settlement or delivery, Tradovate restricts any contract inside its expiration window to liquidation only, you can reduce or close an existing position, but you can't open a new one. Submit a fresh entry on that contract and it bounces with “Liquidation Only. Contract is about to be expired. Please contact the Trade Desk.”

The part to lock in your head: this is a per-contract state, not an account-wide lock. Your account is fine. The one contract month you're aimed at, a June contract living out its last days, for instance, is the thing that's closed to new business. Point your order at the next live month and it fills like normal. That's what makes this rejection completely different from a Risk-Settings liquidation-only lock, which flattens your whole account after a loss limit, or a prop-firm drawdown breach.

The “contact the Trade Desk” line scares people into thinking their account is broken. In reality the trade desk would just tell you the contract has rolled and you need to trade the current front month, something you can do yourself in about ten seconds. The one exception: if you're already holding a position in the expiring contract and can't get flat, reaching out to Tradovate (or your prop firm) to be flattened is a fair move.

Top Causes of the Expiring-Contract Rejection in 2026

1. You're Trading a Contract That Has Entered Its Expiration Window

The most literal cause: the contract month you picked is at or near its last trading day. Equity index futures (ES, NQ, YM, RTY) expire on the third Friday of March, June, September and December, and liquidity jumps to the next month roughly a week before that, the informal “rollover Thursday” you'll hear traders talk about. Trade the old month inside that window and you'll hit liquidation-only even though the symbol technically still exists.

2. A Continuous Symbol (NQ1! / ES1!) Routed to an Expiring Contract

TradingView shows you a continuous or “front-month” symbol, NQ1!, ES1!, GC1!, that stitches contracts together so the chart never gaps. Great for analysis, but that continuous symbol isn't itself a tradable contract at the broker. When an order or alert built on NQ1! routes to Tradovate, it has to resolve to a real dated contract. If the platform's roll logic and your chart's roll logic disagree by even a day or two, the resolved contract can be the expiring one, and Tradovate rejects it as liquidation-only.

3. A TradingView Alert Still Points at the Old Contract Month

Automated setups are the worst repeat offenders. You built an alert weeks ago on a dated contract (or a continuous symbol), the market rolled, and the alert kept firing into the now-expiring month. Alerts run server-side on TradingView and have no idea the contract rolled, so they keep pumping entries into a dead contract until you update them. That's exactly why this rejection so often blindsides a strategy that ran flawlessly the week before.

4. You Rolled the Chart but Not the Open Order or Position

Rolling a chart module forward changes what you're looking at, it does not move an open position or a resting order to the new contract. Roll the chart, assume everything followed, and you get caught when a fresh entry works but an older working order still sits on the expiring month and gets rejected against it.

5. Prop-Firm or Session Rules Tighten Things Near Expiry

On evaluation and funded accounts, the prop firm, not you, controls a lot of the account's behavior around roll and session close. Some firms force positions flat before the daily close and around expiration, which stacks right on top of Tradovate's own liquidation-only state. The exact rules vary by firm and account size, so check your firm's current rulebook rather than assuming Tradovate's defaults apply.

How to Fix the Liquidation-Only Expiring-Contract Rejection: Step-by-Step

Fixing the Contract: Roll Forward to the Front Month in Tradovate

The core fix is to stop trading the expiring month and switch to the current front-month contract.

1

Identify the current front month

Tradovate's symbol format is the instrument code + month code + year digit(s), for example, ESZ4 is the December 2024 E-mini S&P. The quarterly month codes for equity indexes are H (March), M (June), U (September), Z (December).

2

Change the symbol to the current contract

In the Chart, SuperDOM, or watchlist module, change the symbol to the current contract. You can right-click the quote or symbol to roll it forward or backward to a different month, or use the module's view settings to Roll Forward to the next contract.

3

Close the old position first

If you're holding a position in the expiring contract, close it first (liquidation-only still allows closing), then re-enter on the new contract, rolling the chart won't move your position for you.

4

Adjust stops and targets

There's usually a small price gap (“basis”) between the old and new contract, so levels that were valid on the expiring month need to be re-set on the new one.

5

Submit a fresh order

Submit on the current contract. It should now go through instead of getting rejected as liquidation-only.

Tradovate chart symbol right-click menu with the Roll Forward option to switch to the current front-month contract

Fixing the TradingView Alert (Automation Users)

If the rejection is coming from a TradingView alert or webhook, updating the chart alone won't stop it, the alert keeps its own symbol.

1

Read the alert's current ticker

Open the chart the alert is attached to and read its current ticker. If it's a continuous symbol like NQ1! or a stale dated contract, that's your culprit.

2

Switch to the current dated contract

Switch the chart to the current dated contract (the live front month) instead of the continuous symbol, so what fires matches what Tradovate can actually trade.

3

Delete and recreate the alert

Delete the old alert and create a new one on the updated contract chart. Editing the ticker in place is unreliable, so a clean delete-and-recreate is the safe route.

4

Confirm the new alert is active

Confirm the new alert is active and that its message or webhook payload references the current contract, not the expired one.

5

Test the alert

Fire a test alert (or wait for the next signal) and check Tradovate's Orders module to confirm the order is now accepted.

TradingView alert being recreated on the current front-month contract chart instead of a continuous NQ1 symbol

If You're Still Holding the Expiring Contract

Liquidation-only never blocks you from closing. If you can't get flat, a frozen order, a data drop, close with a manual opposite market order, and only if that fails contact Tradovate (self-funded) or your prop firm (evaluation/funded) to be flattened. Don't sit there hammering rejected new entries; they won't go through, and all they do is clutter your order log.

Tradovate DOM used to close the remaining expiring-contract position before re-entering on the new contract

Troubleshooting Table

Message / State Meaning Fix
“Liquidation Only. Contract is about to be expired. Please contact the Trade Desk.”The contract you're trading has entered its expiration window and only allows closingRoll to the current front-month contract and re-enter there
New orders rejected but you can still closePer-contract liquidation-only, not an account lockSwitch the order to the live front month; the account itself is fine
Alert kept firing after a working weekTradingView alert still points at the rolled/continuous symbolDelete and recreate the alert on the current dated contract
NQ1! / ES1! order rejected on TradovateContinuous symbol resolved to an expiring contract at the brokerTrade the dated front-month contract (e.g. the current M/U/Z month) instead
New chart works, old order still rejectsYou rolled the chart but not the resting order/positionCancel/close on the old contract, re-place on the new one
Can't flatten the expiring positionFrozen order or data drop during rollSend a manual opposite market order; contact support/prop firm if it won't close
Prop account flat-forced near expiryFirm rules override around roll and session closeCheck your firm's current rollover/flat rules, they vary by firm

Prevent This with PickMyTrade

Expiring-contract rejections are almost always a symbol-hygiene problem: your automation is aimed at a continuous or stale contract while the live front month has already moved on. PickMyTrade links your TradingView alerts straight to Tradovate and adds a validation layer so a rolled contract doesn't quietly break your strategy:

  • Symbol & Contract Validation, checks the routed symbol before the order goes out, so alerts on a continuous or expiring contract get caught instead of bounced by the broker.
  • Rejection-Safe Routing, when a contract is in liquidation-only, PickMyTrade isn't blindly retrying dead entries into your order log; you route cleanly once you're on the valid month.
  • Entitlement & Risk Filters, respects prop-firm limits and data-agreement state, so orders that would fail for account reasons don't pile up alongside the roll problem.
  • Multi-Account Sync, when you roll to the new front month, the corrected order mirrors across every connected Tradovate account at once, so no single account is left trading the expired month.

The goal is simple: never lose a session to a contract that rolled while you weren't looking.

Trade Rejection-Free

Start your free 5-day trial, link your alerts today and trade rejection-free.

Start Your Free 5-Day Trial

Frequently Asked Questions

It means the specific futures contract you're trying to trade has entered its expiration window, so Tradovate restricts it to closing only. You can reduce or exit a position, but new entries on that contract are rejected until you switch to the current front-month contract.

Usually no. The practical fix is to roll to the active contract yourself. The only time contacting Tradovate (or your prop firm) makes sense is if you're stuck holding the expiring contract and can't get flat.

NQ1! and ES1! are continuous symbols for charting, they aren't a single tradable contract. When the order routes to Tradovate it resolves to a dated contract, and if that resolves to the expiring month you get the liquidation-only rejection. Trade the current dated contract instead.

The front month is the nearest active, highest-volume contract. Equity index futures roll to the next month about a week before the third-Friday expiration of March, June, September and December. In Tradovate you can right-click a quote to roll it forward to the correct month, or check a roll calendar for your instrument.

No. Rolling a chart only changes what you're viewing. An open position and any resting orders stay on the original contract, you must close them on the old month and re-enter on the new one.

There's a small price difference (basis) between the expiring and new contract, so levels set on the old month won't line up on the new one. Re-set your stops, targets, and any price-based indicators after you roll.

It depends on the product. Equity index futures expire on the third Friday of the quarterly months (March, June, September, December), with volume rolling about a week earlier; energy and metals follow their own schedules. Confirm against a current roll calendar rather than assuming.

PickMyTrade validates the routed symbol before sending the order, so alerts pointed at a continuous or expiring contract are flagged rather than silently bounced by Tradovate, and once you roll, the corrected order syncs across your connected accounts.

This guide is for educational and informational purposes only and is not financial, investment, or trading advice. Trading futures and other leveraged products carries a substantial risk of loss and is not suitable for every investor. PickMyTrade is an independent third-party automation platform and is not affiliated with, endorsed by, or sponsored by Tradovate, Inc. All related names, logos, and trademarks are the property of their respective owners. Platform features and steps change over time, so always confirm the current process in the official platform documentation before acting.