PlaceOrder
Places an order on a CrossTrade-connected NinjaTrader account.
Write Action
PlaceOrder mutates an account. The agent's prompt must require explicit human confirmation before this is called. Treat it like signing a check.
| Property | Value |
|---|---|
| Required scope | mcp:trade |
| Risk | High. Can produce real fills on a live account. |
| Side effects | Creates a new order in NT8. |
When an agent should use it
- Only after a state check (accounts, positions, orders) and an explicit user confirmation.
- When the user has stated account, instrument, side, quantity, and order type.
- Never autonomously based on natural-language intuition alone.
When an agent should not use it
- During journal review or research workflows.
- When the user has not confirmed.
- On a funded account if the firm rules forbid automation. Check the prop firm learn pages.
- On the account that holds your primary trading capital during agent experimentation.
Parameters
{
"account": "Sim101",
"instrument": "MES 06-26",
"side": "Buy",
"type": "Limit",
"quantity": 1,
"limit_price": 5230.00,
"tif": "Day"
}
type accepts Market, Limit, Stop, StopLimit. tif accepts Day, Gtc, Ioc, Fok per NT8 conventions.
Response shape
{
"order_id": "abc-123",
"status": "Submitted",
"account": "Sim101",
"instrument": "MES 06-26",
"side": "Buy",
"type": "Limit",
"quantity": 1,
"limit_price": 5230.00
}
Example user prompt
On Sim101, place a buy limit for 1 MES 06-26 at 5230.00, day order.
Confirm the order_id and status afterward.
The agent should restate the action and wait for confirmation before submitting.
Example tool call
{
"name": "PlaceOrder",
"arguments": {
"account": "Sim101",
"instrument": "MES 06-26",
"side": "Buy",
"type": "Limit",
"quantity": 1,
"limit_price": 5230.00,
"tif": "Day"
}
}
Common errors
| Symptom | Likely cause | Fix |
|---|---|---|
Rejected: max contracts | Account is at or above the configured limit. | Reduce quantity. Do not retry blindly. |
Rejected: daily loss lockout | Firm-level lockout fired. | Stop trading. Do not retry. |
Rejected: instrument not subscribed | Subscription or expiration issue. | Verify with MarketInfo. |
account_not_found | Typo or disconnected account. | Call ListAccounts. |
Safe workflow placement
ListAccounts → GetConnections → GetAccountSummary → GetWatermarks
→ ListPositions → ListOrders → explicit user confirm → PlaceOrder
→ GetOrder / GetOrderStatus
After PlaceOrder, call GetOrder to verify the order_id and status. Do not assume submission means filled.