Skip to main content

Trigger Order

Trigger Order

A trigger order is an order type where the system automatically places an order when the market price reaches a preset trigger price.

Rate limit: 1 request per second

Request URL

POST /deepcoin/trade/trigger-order

Request Parameters

FieldRequiredTypeDescription
instIdYesstringProduct ID
productGroupYesstringTrading type
Spot: Spot
Perpetual: Swap
szYesstringOrder quantity
sideYesstringOrder side
Buy: buy
Sell: sell
posSideNostringPosition side
Required when product type is SWAP
Long: long
Short: short
priceNostringLimit order price
Required for limit orders, not needed for market orders
isCrossMarginYesstringCross margin mode
Isolated: 0
Cross: 1
orderTypeYesstringOrder price type
Limit: limit
Market: market
triggerPriceYesstringTrigger price
The order will be triggered when the market price reaches this price
triggerPxTypeNostringTrigger price type
Last price: last
Index price: index
Mark price: mark
Default: last
mrgPositionNostringMerge position
Required when product type is SWAP
Merge: merge
Split: split
closePosIdNostringPosition ID for closing position. Supports cross and isolated margin modes
tdModeYesstringTrading mode
Non-margin: cash
Cross margin: cross
Isolated margin: isolated
tpTriggerPxNonumberTake profit trigger price
Automatically sets TP order after position is opened
tpTriggerPxTypeNostringTake profit trigger price type
Last price: last
Index price: index
Mark price: mark
Default: last
tpOrdPxNonumberTake profit order price
-1 means market price
slTriggerPxNonumberStop loss trigger price
Automatically sets SL order after position is opened
slTriggerPxTypeNostringStop loss trigger price type
Last price: last
Index price: index
Mark price: mark
Default: last
slOrdPxNonumberStop loss order price
-1 means market price

Request Examples

// Scenario 1: Cross margin merge position, open position trigger market order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "1",
OrderType: "market", // Market order
TriggerPrice: "150000",
MrgPosition: "merge",
TdMode: "cross",
}

// Scenario 2: Cross margin merge position, open position trigger limit order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
Price: "140000",
IsCrossMargin: "1",
OrderType: "limit", // Limit order
TriggerPrice: "150000",
MrgPosition: "merge",
TdMode: "cross",
}

// Scenario 3: Cross margin split position, open position trigger market order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "1",
OrderType: "market", // Market order
TriggerPrice: "150000",
MrgPosition: "split",
TdMode: "cross",
}

// Scenario 4: Cross margin split position, open position trigger limit order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
Price: "140000",
IsCrossMargin: "1",
OrderType: "limit", // Limit order
TriggerPrice: "150000",
MrgPosition: "split",
TdMode: "cross",
}

// Scenario 5: Isolated margin merge position, open position trigger market order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "0",
OrderType: "market", // Market order
TriggerPrice: "150000",
MrgPosition: "merge",
TdMode: "isolated",
}

// Scenario 6: Isolated margin merge position, open position trigger limit order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
Price: "140000",
IsCrossMargin: "0",
OrderType: "limit", // Limit order
TriggerPrice: "150000",
MrgPosition: "merge",
TdMode: "isolated",
}

// Scenario 7: Isolated margin split position, open position trigger market order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "0",
OrderType: "market", // Market order
TriggerPrice: "150000",
MrgPosition: "split",
TdMode: "isolated",
}

// Scenario 8: Isolated margin split position, open position trigger limit order
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
Price: "140000",
IsCrossMargin: "0",
OrderType: "limit", // Limit order
TriggerPrice: "150000",
MrgPosition: "split",
TdMode: "isolated",
}

// Scenario 9: Trigger order with take profit and stop loss (SWAP)
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "1",
OrderType: "market",
TriggerPrice: "95000",
TriggerPxType: "last",
MrgPosition: "merge",
TdMode: "cross",
TpTriggerPx: 100000, // Take profit trigger price
TpTriggerPxType: "last", // Take profit trigger price type
TpOrdPx: -1, // Take profit order price (market)
SlTriggerPx: 90000, // Stop loss trigger price
SlTriggerPxType: "last", // Stop loss trigger price type
SlOrdPx: -1, // Stop loss order price (market)
}

// Scenario 10: Trigger order with take profit and stop loss (SPOT)
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT",
ProductGroup: "Spot",
Sz: "0.001",
Side: "buy",
IsCrossMargin: "1",
OrderType: "market",
TriggerPrice: "95000",
TriggerPxType: "last",
TdMode: "cash",
TpTriggerPx: 100000,
TpTriggerPxType: "last",
TpOrdPx: -1,
SlTriggerPx: 90000,
SlTriggerPxType: "last",
SlOrdPx: -1,
}

// Scenario 11: Trigger order with take profit only
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "buy",
PosSide: "long",
IsCrossMargin: "1",
OrderType: "market",
TriggerPrice: "95000",
MrgPosition: "merge",
TdMode: "cross",
TpTriggerPx: 100000,
TpTriggerPxType: "last",
TpOrdPx: -1,
}

// Scenario 12: Trigger order with stop loss only
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "sell",
PosSide: "short",
IsCrossMargin: "1",
OrderType: "market",
TriggerPrice: "95000",
MrgPosition: "merge",
TdMode: "cross",
SlTriggerPx: 100000,
SlTriggerPxType: "last",
SlOrdPx: -1,
}

// Scenario 13: Close specific position with trigger order (split position mode)
triggerOrder = &triggerOrderRequest{
InstId: "BTC-USDT-SWAP",
ProductGroup: "Swap",
Sz: "1",
Side: "sell",
PosSide: "long",
IsCrossMargin: "1",
OrderType: "market",
TriggerPrice: "105000",
MrgPosition: "split",
TdMode: "cross",
ClosePosId: "1001063717138767", // Specify position ID to close
}

Response Parameters

FieldTypeDescription
ordIdstringOrder ID
clOrdIdstringClient-defined order ID
tagstringOrder tag
sCodestringEvent execution result status code 0: Success
sMsgstringMessage when event execution fails

Response Example

{
"code": "0",
"msg": "",
"data": {
"ordId": "1000595855275418",
"clOrdId": "",
"tag": "",
"sCode": "0",
"sMsg": "Success"
}
}

Take Profit and Stop Loss Feature

Overview

When placing a trigger order, you can optionally set take profit (TP) and/or stop loss (SL) parameters. After the trigger order is executed and a position is opened, the system will automatically create TP/SL orders for that position.

Workflow

1. User places trigger order with TP/SL parameters

2. Market price reaches trigger price

3. Trigger order executes and opens position

4. System automatically creates TP/SL orders for the new position

TP/SL Parameters

Take Profit Parameters:

  • tpTriggerPx: Take profit trigger price (required if setting TP)
  • tpTriggerPxType: Trigger price type (last, index, or mark). Default: last
  • tpOrdPx: Order price when TP is triggered. -1 means market order

Stop Loss Parameters:

  • slTriggerPx: Stop loss trigger price (required if setting SL)
  • slTriggerPxType: Trigger price type (last, index, or mark). Default: last
  • slOrdPx: Order price when SL is triggered. -1 means market order

Usage Notes

  1. Optional Feature: TP/SL parameters are optional. You can:

    • Set both TP and SL
    • Set only TP
    • Set only SL
    • Set neither (standard trigger order)
  2. Price Relationships:

    • For long positions: TP trigger price > trigger price > SL trigger price
    • For short positions: SL trigger price > trigger price > TP trigger price
  3. Trigger Timing: TP/SL orders are created AFTER the trigger order executes and opens a position, not immediately when placing the trigger order

  4. Market vs Limit Orders:

    • Set tpOrdPx or slOrdPx to -1 for market orders
    • Set specific price for limit orders
  5. Trigger Price Types:

    • last: Latest traded price (default)
    • index: Index price
    • mark: Mark price
  6. Supported Markets: Both SPOT and SWAP markets support TP/SL on trigger orders

Examples

Example 1: Long position with full TP/SL protection

{
"instId": "BTC-USDT-SWAP",
"productGroup": "Swap",
"sz": "1",
"side": "buy",
"posSide": "long",
"orderType": "market",
"triggerPrice": "95000",
"mrgPosition": "merge",
"tdMode": "cross",
"tpTriggerPx": 100000,
"tpTriggerPxType": "last",
"tpOrdPx": -1,
"slTriggerPx": 90000,
"slTriggerPxType": "last",
"slOrdPx": -1
}

Example 2: Spot buy with TP only

{
"instId": "BTC-USDT",
"productGroup": "Spot",
"sz": "0.001",
"side": "buy",
"orderType": "market",
"triggerPrice": "95000",
"tdMode": "cash",
"tpTriggerPx": 100000,
"tpTriggerPxType": "last",
"tpOrdPx": -1
}

Example 3: Short position with SL only

{
"instId": "BTC-USDT-SWAP",
"productGroup": "Swap",
"sz": "1",
"side": "sell",
"posSide": "short",
"orderType": "market",
"triggerPrice": "95000",
"mrgPosition": "merge",
"tdMode": "cross",
"slTriggerPx": 100000,
"slTriggerPxType": "last",
"slOrdPx": -1
}
  • Set Position TP/SL: /deepcoin/trade/set-position-sltp - Set TP/SL for existing positions
  • Modify Position TP/SL: /deepcoin/trade/modify-position-sltp - Modify existing TP/SL orders
  • Cancel Position TP/SL: /deepcoin/trade/cancel-position-sltp - Cancel TP/SL orders
  • Query Pending Trigger Orders: /deepcoin/trade/trigger-orders-pending - Query existing trigger orders