private/advanced/create-otoco
REQUESTCreates a One-Triggers-a-One-Cancels-the-Other (OTOCO) execution strategy on the Exchange.wss://stream.crypto.com/exchange/v1/user
private/advanced/create-otocoPrivate
OTOCO execution strategy allows users to place a three-order strategy where one order automatically triggers the other two when the first order is fully executed. Users are able to place a limit or market order with two trigger orders, and only when the primary order is fully executed, the two trigger orders will take effect. The two trigger orders must be one stop loss and one take profit orders.
SpotAttach / DerivAttach: This API creates SpotAttach (for spot instruments) or DerivAttach (for derivative instruments) order types. The contingency type is automatically resolved from the instrument type. With 3 legs (1 limit/market + 2 triggers), it follows OTOCO behavior.
- SpotAttach: When either one of the two trigger orders is executed, the other is automatically canceled (OCO behavior). SpotAttach orders are flexible - you can cancel one of the TP/SL legs using
private/advanced/cancel-order, effectively converting it to OTO behavior. You can also reattach new TP/SL usingprivate/advanced/create-orderwithattach_order_id. - DerivAttach: For derivatives, the two trigger legs are independent - one firing does NOT cancel the other (unlike SpotAttach). The primary leg may specify
isolation_id,leverage,isolated_margin_amount, andexec_instmay include ISOLATED_MARGIN. Trigger legs inherit the isolation mode from the parent leg.
This call is asynchronous, so the response is simply a confirmation of the request. The user.advanced.order subscription can be used to check if the orders are successfully created.
For the content of each order in order_list, please refer to private/create-order for details. One order must be LIMIT or MARKET, and for the two trigger orders, one must be STOP_LOSS or STOP_LIMIT, and the other one must be TAKE_PROFIT or TAKE_PROFIT_LIMIT. The ref_price_type for the trigger orders supports MARK_PRICE (default), INDEX_PRICE, and LAST_PRICE.
Request
Body
required
- Array [
- ➖ M: Cancel Maker
- ➖ T: Cancel Taker
- ➖ B: Cancel Both Maker and Taker
- ➖ M: Matches Master or Sub a/c
- ➖ S: Matches Sub a/c only
- ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
- ➖ LIMIT, MARKET
- ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
- ]
Request id (echoed in response)
Must be "private/advanced/create-otoco"
Current timestamp in milliseconds, e.g. "1771761038000".
params objectrequired
order_list object[]required
>= 3, <= 3 Instrument symbol, e.g. BTCUSD-PERP
Possible values: [BUY, SELL]
BUY or SELL
Order quantity. For MARKET BUY can use notional instead.
Client order ID (max 36 chars). Recommended for correlation.
Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]
Time in force
Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]
Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.
Fee instrument (e.g. CRO) for fee deduction
Self-trade prevention ID (0 to 32767)
Possible values: [M, T, B]
Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.
Possible values: [M, S, D]
Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).
Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]
Order type:
Limit price (required for LIMIT, STOP_LIMIT, TAKE_PROFIT_LIMIT)
Amount to spend; for MARKET/STOP_LOSS/TAKE_PROFIT BUY only
Trigger price for STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT
Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]
Reference price type for trigger orders
Possible values: [SPOT, MARGIN]
SPOT or MARGIN (spot/margin mode).
Isolated margin amount
Isolation ID for isolated margin
Leverage for margin/derivatives
Order ID to attach this trigger order to. Used for SpotAttach / DerivAttach.
Schema
Echoed request id
Method invoked
0 = success; non-zero indicates error (reason code).
result object
List ID.
Present when code !== 0.
Present when code !== 0.