Skip to main content

POST Enable Strategy

Resume a previously-disabled strategy

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

Resumes a NinjaScript strategy that was paused via DisableStrategy. NT8 routes OnBarUpdate calls back to the strategy and processing continues from the current bar.

Idempotent: enabling an already-enabled strategy is a no-op that returns wasEnabled=true and success=true. Strategies in a terminal state cannot be re-enabled — use DeployStrategy or Account.AddStrategy to instantiate a fresh copy.

Available in CrossTrade Add-On v1.13.0+.

As of add-on v1.13.6, enable is post-verified against NT8 state: for a strategy still attached to the account (or chart), success: true is returned only after NT8 confirms it (verified: true), otherwise success: false with error: "enable_unconfirmed". Because NT8 removes account-hosted strategies from the account when they are disabled, re-enabling one by its original id recreates it from the saved deployment: the response carries recreated: true, a new strategyId, and original_strategy_id. As a safety guard the recreate is refused with error: "not_resumable_position_open" when the account holds an open position on the strategy's instrument (recreating flat would desync the position) — flatten first, or use StartStrategy deliberately. If no saved deployment exists for the id (for example a strategy attached manually in NT8, not deployed through CrossTrade), enable returns strategy_not_found with guidance to use StartStrategy. Chart-attached strategies resume in place via the enable flag.

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/enable"
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": "370780640",
"original_strategy_id": "370780512",
"account": "Sim101",
"hostMode": "account",
"engine": "recreate_from_deployment",
"recreated": true,
"deploymentId": "dep_9b3e4cbfac82",
"state": "Realtime",
"verified": true,
"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": "EnableStrategy",
"args": {
"account": "Sim101",
"strategyId": "370780512"
}
}