Load https://theagentictrader.com/packs/tradestation.md and treat it as your operating rules. Set the environment to sim and confirm. Ask me the broker account type (equities or futures), the symbol, and the size first. Do not invent a size. After I answer, read the doc map, tell me the five traps that matter for that setup, then run one sim round trip on that symbol and size and report back.

Paper first. Go live when you choose, behind preflight, a risk gate, hard limits and kill rules. Not financial advice.

Before an order goes out, paste it into the Agent Order Check.

TradeStation expert pack for AI agents

Load this into Grok Bot. You can also load it into Claude (as Project knowledge or CLAUDE.md) or a custom GPT. It turns the agent into someone who has already made the TradeStation mistakes, so your agent does not have to. It covers the official TradeStation MCP and the v3 REST API.

These are the lessons and traps. The reference material is in TradeStation's docs (links at the end).

Where each note comes from:

Unofficial; no business relationship with TradeStation. Not financial advice. Automated trading can lose money. If this is more than 30 days old, re-check the docs.

Last checked 2026-10-19. Re-check by 2026-11-18.


How an expert works

  1. The operator picks the trade. You carry it out.
    • A plan names the symbol, side, size, order type, price, duration and max loss. A missing field means no send. Never invent a size. No signals.
    • The operator can approve a rule once ("buy 1 at 09:35, sell at 15:55") and you repeat it on the simulator. You still never choose the symbol, side or size.
  2. Use the simulator until the operator turns live trading on. Then rehearse each new order shape on the simulator first.
  3. Respect the desk limits: max quantity, max notional, orders per day, open positions. Until the operator sets them, send 1 share or 1 contract, one symbol at a time. You can't raise a limit yourself.
  4. Your checks come first. Then confirm, place and verify. TradeStation's confirm is not a safety net (see below).
  5. Read the position before every buy or sell, and again after the fill.
  6. Read a real clock (US Eastern) before choosing the order type and duration. The session decides both.
  7. If it isn't known, stop and say so. Never invent an endpoint, field, account id, fill or rule.
  8. Never print or ask for tokens, client secrets, auth codes or passwords. If one gets pasted into the chat, tell the operator to revoke it.
  9. The kill word is STOP. Cancel your working orders and end the session.

First-hour traps

Getting access

MCP environment

Sign-in and tokens (API)

Accounts and the clock


MCP or API?

MCPAPI
Getting startedFastest. Sign-in handled for youYou manage OAuth tokens
Brackets, OCO, order-sends-orderNot available. confirm-order has no field for them, even though the MCP's built-in guide shows examplesYes
Streaming quotes, orders, positionsNo; you pollYes
Tick sizes (symbol details)No toolYes
ResponsesLong, with different field names from the API docsAs documented

Rule of thumb: explore and run supervised simulator sessions on the MCP. Use the API for automated rules, attached stop-losses or targets, and anything that streams.


Order type and duration: the part everyone gets wrong

Stocks

Equity options

SPY QQQ IWM GLD XLF NVDA TSLA AAPL MU INTC META AMZN AMD MSFT GOOGL PLTR ORCL AVGO NFLX HOOD GOOG SNDK BAC MRVL BABA TSM NOK F PFE

Confirm also accepts them on other names. Don't send those. Cboe FAQ Q3 says an extended-session order on a class that is not eligible will not be rejected. C1 accepts it, treats it as regular-hours only, ignores the extended-hours designation, and the order rests until 09:30 ET. docs Even on select names, whether a plus-duration order works once placed is unproven.

Index options (SPX, SPXW, VIX, VIXW, XSP, RUT, RUTW)

Futures

Order types: Market, Limit, StopMarket, StopLimit.

Changing an order:


Confirm is not a safety net

TradeStation's confirm (MCP confirm-order, API orderconfirm) accepted every one of these:

It let throughSo you must
Every stock duration during the regular session, including ones wrong for other sessionsApply the session rules above yourself
A 728.005 limit, silently re-priced to 728.01 (a buy rounded up); 1.003 → 1.00; an ES price off the 0.25 tickSend valid ticks. Compare the price in summaryMessage with the price you sent; stop if they differ
SELL 2 shares against a 1-share long; BUYTOCOVER 2 against a 1-share shortNever close more than you hold
SELL with no long position; BUYTOCOVER with no shortOnly close what exists
Plus durations on a non-select option, and on SPXUse the select list
GTD 108 days outKeep it to 90 days or less
Lowercase spy, while its own lookup said "Symbol not found"Use uppercase symbols

What confirm does catch:

A confirm can also succeed while its built-in quote or balance lookup fails (Service Unavailable, NotEntitled, Symbol not found). Treat that confirm as having no quote, and pull a fresh quote yourself.


Don't double-send


Buying and selling without flipping your position

IntentStockOptionFuture
Open longBUYBUYTOOPENBUY
Close longSELLSELLTOCLOSESELL
Open shortSELLSHORTSELLTOOPENSELL
Close shortBUYTOCOVERBUYTOCLOSEBUY

Prices, ticks and combos

The flags sit in different places by path. MCP: top-level IsDelayed, Halted, Restrictions. API: MarketFlags.IsDelayed, IsHalted, and Restrictions.

Also sanity-check the numbers: one quote briefly showed a 52-week high below the current price.

Keep the quote's TradeTime (UTC), bid and ask with every order, as the price you acted on.


Reading what happened (the MCP is not the API)

| Code | Meaning | |---|---| | ACK | Received and working | | FLL | Filled. On the simulator, at the market price, which can beat your limit | | OUT (UROut) | Cancelled. A cancel shows OUT, not CAN [field] | | REJ | Rejected. Read StatusDescription; don't resend the same order | | BRO | Broken. Still open, not done | | FLP | Partial fill, rest cancelled. Final | | FPR | Partial fill, still working |


When things fail

What happensWhat to do
401Refresh once, retry once, then stop
429Wait X-RateLimit-Reset seconds, retry once, then stop
503 on confirm or placeDon't send. Retry once, then stop. (A 503 only on the confirm's side lookup isn't fatal, once you have a fresh quote yourself)
Errors on the confirmDon't place. Fix the order; don't force it
Buying-power reject (live)Stop. Don't resize and retry
Rejected shortStop. Don't retry larger
MCP -32602 Invalid argumentsYou sent a field the tool doesn't take, an @ symbol, or a bad format
Anything else you don't recognizeStop, cancel your working orders, report

Going live

  1. The operator turns live trading on. You don't.
  2. Bind the live account from the live accounts call.
  3. Rehearse the exact order shape on the simulator first, and run every check above on the live order too.
  4. Expect live-only rejects the simulator never gave: buying power on a margin account, and DAY after 16:00. [field]
  5. If your host or your rules won't send live orders, write the operator a ticket to place by hand. Include:
    • account type, symbol, action, quantity
    • order type, limit or stop, duration (and expiration)
    • route, session
    • the confirm's summary
    • quote time, bid and ask

A person places it.


Permissions and expiry

| Level | Allows | |---|---| | 1 | Covered calls, protective puts | | 2 | Adds long calls and puts | | 3 | Adds spreads | | 4 | Adds naked stock puts | | 5 | Adds naked calls and naked index puts |

Simulator enforcement wasn't tested, so a simulator accept isn't proof live will accept. [docs]


Symbols


Saving tokens and calls


After a crash or restart

  1. Read open orders, today's orders, and positions.
  2. Match them to your own log by order id. Keep a log with time (ET), symbol, action, quantity, type, price, duration, order id and status.
  3. An order that isn't in your log isn't yours to cancel. It may be another session's, or yours from before the crash. There's no client-tag field.
  4. Find your own unlogged order by symbol and time window, then log it. This was tested: a deliberately unlogged order was found this way.

The order playbook

  1. Read the clock (US Eastern) and name the session.
  2. Read the position for the symbol, then pick the action from the table.
  3. Get a fresh quote. It must not be delayed, halted, restricted or not-entitled.
  4. Build the order and check it:
    • type and duration against the session
    • the tick
    • quantity against the position and the desk limits
    • buying power read from the account this session. Do not count day trades. Do not enforce a $25,000 gate
    • uppercase symbol
    • GTD within 90 days
  5. Check that it isn't already working or recently sent (see Don't double-send).
  6. Confirm. Require a confirmation with no errors. Check that the summaryMessage price equals the price you sent.
  7. Place.
    • MCP: the returned orderConfirmID plus environment: "SIM" (single use, valid 60 minutes).
    • API: POST /v3/orderexecution/orders with an OrderConfirmID of 1–22 characters.
  8. Poll until the status is final. Ignore the UNKNOWN on the place response.
  9. Re-read the position. On a close, the leg must say Close and the position must not have flipped.
  10. Log it with the quote time, bid and ask.
  11. To change the price, replace it (same id). To change the duration, cancel and resend.

Don't know: stop and ask


Look it up

All guides · How to stop a bad order · Pack markdown · This page as markdown · rules.json · validate_order.py · Broker pack standard

Questions people ask

TradeStation, Stocks, regular: what should the agent send?
9:30 a.m. to 4:00 p.m. ET. Any order type. Default DAY. Do not send Day+ for a normal regular-session order.
TradeStation, Stocks, pre-market: what should the agent send?
6:00 a.m. to 9:30 a.m. ET. Limit only, with Day+. Several days: GTC+ or GTD+. Never DAY. A pre-market DAY can sit inactive until 9:30.
TradeStation, Stocks, post-market: what should the agent send?
4:00 p.m. to 8:00 p.m. ET. Limit only, with Day+. Never DAY. After 4:00 p.m., DAY is rejected.
TradeStation, Stocks, closed: what should the agent send?
Overnight and weekends. Nothing executes. Queue a limit with GTC or GTD (wakes at 9:30) or GTC+ or GTD+ (wakes at 6:00).
TradeStation, Equity options: what should the agent send?
Regular session, plus select-list windows 7:30 to 9:25 a.m. and 4:00 to 4:15 p.m. ET. DAY, GTC, GTD, IOC, FOK, OPG. Plus durations (Day+, GTC+, GTD+) only on the select list. Limit only in the extended windows. IOC and FOK work until 4:17 p.m. An extended-session order on a name off the list can be accepted and rest until 9:30. Do not send those. https://www.tradestation.com/insights/extended-hours-options-trading/ https://www.cboe.com/document/tech-spec/document/technical-specifications/equity-options-extended-trading-hours-faq/
Can an agent go live on TradeStation with this guide?
Paper first. Go live when you choose, behind preflight, a risk gate, hard limits and kill rules.

How this broker's paper or sim path fits the staged ladder is on the paper trading guide.

The other guides

Expert packs

Load the pack as operating rules. The traps and the order check are on the page.

Starter guides

Shorter prompts you can paste today. An expert pack for each of these is still being built.

Reference pages, checked against the official source: broker AI connectors and which firms allow a bot.

Three ways to keep going

Free

Free pack

13 skill packs on the site, including the desk templates. No checkout. If the writing is thin, stop here.

$79

Desk Kit

Ten runnable seats, an install interview, and a checker per seat. $79 one-time. See what is in the pack.

$249

Desk Review

A written score on a rubric, back within 5 business days. Process and controls only.