Skip to main content

POST Disable Strategy

Pause a running strategy without closing positions

POST /v1/api/accounts/{account}/strategies/{strategyId}/disable

Pauses a NinjaScript strategy. NT8 stops routing OnBarUpdate calls; any open position remains in place; pending orders may be cancelled by NT8's lifecycle rules. The strategy stays attached to its account or chart and can be resumed with EnableStrategy.

Use this when you want a strategy to stop generating new entries but want to keep its existing position open. To also flatten the position and remove the strategy entirely, use CloseStrategy instead.

Available in CrossTrade Add-On v1.13.0+.

As of add-on v1.13.6, Control Panel (account-hosted) strategies are disabled through NT8's own Strategies grid pipeline, and success: true is returned only after NT8 confirms the change (verified: true); if NT8 does not confirm it, the call returns success: false with error: "disable_unconfirmed" (re-check with GetStrategyState). Note that NT8 does not pause a headless strategy: disabling it terminates the strategy (its state goes to Finalized) and removes it from the account, so the response includes terminated: true and resumable_in_place: false. Any open position it held remains on the account. To run it again, use EnableStrategy (which recreates it from the saved deployment) or StartStrategy. Chart-attached strategies, by contrast, are a true in-place pause via the strategy's enable flag and report verified: false.

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Path Parameters

NameTypeRequiredDescription
accountstringRequiredName of the NT8 account that owns the strategy.
strategyIdstringRequiredID of the strategy as returned by ListStrategies or ListAllStrategies.

Code Examples

import requests

token = 'my-secret-token'

url = "https://dev.crosstrade.io/v1/api/accounts/Sim101/strategies/370780512/disable"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

try:
response = requests.post(url, headers=headers, json={})
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")

Response

{
"strategyId": "370780512",
"account": "Sim101",
"hostMode": "account",
"wasEnabled": true,
"isEnabled": false,
"state": "Finalized",
"engine": "StrategiesGrid.StrategyDisable",
"verified": true,
"terminated": true,
"resumable_in_place": false,
"success": true
}

WebSocket API

This request can also be made over the WebSocket API. The account and strategyId path parameters are passed inside args.

{
"action": "rpc",
"id": "my-request-id",
"api": "DisableStrategy",
"args": {
"account": "Sim101",
"strategyId": "370780512"
}
}