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
| Field | Required | Type | Description |
|---|---|---|---|
| instId | Yes | string | Product ID |
| productGroup | Yes | string | Trading type Spot: SpotPerpetual: Swap |
| sz | Yes | string | Order quantity |
| side | Yes | string | Order side Buy: buySell: sell |
| posSide | No | string | Position side Required when product type is SWAPLong: longShort: short |
| price | No | string | Limit order price Required for limit orders, not needed for market orders |
| isCrossMargin | Yes | string | Cross margin mode Isolated: 0Cross: 1 |
| orderType | Yes | string | Order price type Limit: limitMarket: market |
| triggerPrice | Yes | string | Trigger price The order will be triggered when the market price reaches this price |
| triggerPxType | No | string | Trigger price type Last price: lastIndex price: indexMark price: markDefault: last |
| mrgPosition | No | string | Merge position Required when product type is SWAPMerge: mergeSplit: split |
| closePosId | No | string | Position ID for closing position. Supports cross and isolated margin modes |
| tdMode | Yes | string | Trading mode Non-margin: cashCross margin: crossIsolated margin: isolated |
| tpTriggerPx | No | number | Take profit trigger price Automatically sets TP order after position is opened |
| tpTriggerPxType | No | string | Take profit trigger price type Last price: lastIndex price: indexMark price: markDefault: last |
| tpOrdPx | No | number | Take profit order price-1 means market price |
| slTriggerPx | No | number | Stop loss trigger price Automatically sets SL order after position is opened |
| slTriggerPxType | No | string | Stop loss trigger price type Last price: lastIndex price: indexMark price: markDefault: last |
| slOrdPx | No | number | Stop 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
| Field | Type | Description |
|---|---|---|
| ordId | string | Order ID |
| clOrdId | string | Client-defined order ID |
| tag | string | Order tag |
| sCode | string | Event execution result status code 0: Success |
| sMsg | string | Message 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, ormark). Default:lasttpOrdPx: Order price when TP is triggered.-1means market order
Stop Loss Parameters:
slTriggerPx: Stop loss trigger price (required if setting SL)slTriggerPxType: Trigger price type (last,index, ormark). Default:lastslOrdPx: Order price when SL is triggered.-1means market order
Usage Notes
-
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)
-
Price Relationships:
- For long positions: TP trigger price > trigger price > SL trigger price
- For short positions: SL trigger price > trigger price > TP trigger price
-
Trigger Timing: TP/SL orders are created AFTER the trigger order executes and opens a position, not immediately when placing the trigger order
-
Market vs Limit Orders:
- Set
tpOrdPxorslOrdPxto-1for market orders - Set specific price for limit orders
- Set
-
Trigger Price Types:
last: Latest traded price (default)index: Index pricemark: Mark price
-
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
}
Related APIs
- 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