Skip to main content

POST Close Position

Close a specific position by instrument

POST /v1/api/accounts/{account}/positions/close

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Path Parameters

NameTypeRequiredDescription
accountstringRequiredName of account in NT8

Body

NameTypeRequiredDescription
instrumentstringRequiredName of underlying instrument
quantityintegerOptionalNumber of contracts to close. If omitted, the full position is closed. Capped at the current open quantity.
percentfloatOptionalFraction of the position to close, between 0 and 1 (e.g., 0.5 for 50%). Rounds up — closing 10% of a 1-contract position closes 1 contract. Takes effect only if quantity is not provided.
info

Partial close behavior — When quantity or percent closes less than the full position, the add-on places a market order for the specified size rather than calling NT8's flatten. Working orders (stops, targets) are not automatically cancelled on a partial close. Use POST /cancel-orders with the instrument filter if you need to clean those up separately.

Code Examples

import requests

url = "https://app.crosstrade.io/v1/api/accounts/Sim101/positions/close"
headers = {
"Authorization": "Bearer frvO0lK6cXe9ML5ITNlEduwP5J1oNzLT0XTBRjR_OZ0",
"Content-Type": "application/json"
}
data = {
"instrument": "MES 12-25",
"quantity": 4,
# "percent": 0.25
}
try:
response = requests.post(url, headers=headers, json=data)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")

Response

{
"closedPositions": [
{
"type": "NinjaTrader.Cbi.Position",
"account": "Sim101",
"instrument": "ES 12-25",
"instrumentType": "Future",
"marketPosition": "Long",
"quantity": 4,
"averagePrice": 5779.8125,
"marketPrice": 5797.0,
"unrealizedProfitLoss": 3437.5
}
],
"success": true
}

WebSocket API

This request can also be made over the WebSocket API. The account path parameter and request body fields are all passed inside args.

{
"action": "rpc",
"id": "my-request-id",
"api": "ClosePosition",
"args": {
"account": "Sim101",
"instrument": "ES 09-26"
}
}