Skip to main content

private/advanced/create-oco

POST 

/private/advanced/create-oco

Creates a One-cancels-the-Other (OCO) execution strategy on the Exchange.

OCO execution strategy allows users to place a two-order strategy where one order automatically cancels the other when one of the orders is partially/fully executed. Users are able to place 2 orders - one LIMIT and one trigger order. Only one of the orders will be executed. The trigger order can either be a stop loss or take profit order. The OCO order type is only available for Spot trading pairs for now.

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, the other order must be STOP_LOSS, STOP_LIMIT, TAKE_PROFIT_LIMIT or TAKE_PROFIT. For ref_price_type of the trigger order, only MARK_PRICE is supported for now.

Request

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-oco"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 2, <= 2
    Exactly 2 orders. One must be LIMIT, the other STOP_LOSS, STOP_LIMIT, TAKE_PROFIT_LIMIT or TAKE_PROFIT. For ref_price_type of the trigger order only MARK_PRICE is supported.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    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_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    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.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ 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).
    type OrderType (string)required

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    price decimal

    Limit price (required for LIMIT, STOP_LIMIT, TAKE_PROFIT_LIMIT)

    notional decimal

    Amount to spend; for MARKET/STOP_LOSS/TAKE_PROFIT BUY only

    ref_price decimal

    Trigger price for STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

    attach_order_id int64

    Order ID to attach this trigger order to. Used for SpotAttach / DerivAttach.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Contains list_id.
    list_id int64

    List ID.

    message string

    Present when code !== 0.

    original string

    Present when code !== 0.