你到底用了什麼 API 下單?Binance USDS-M 期貨下單介面和 API 下單參數對比分析#
請求參數說明#
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
symbol | STRING | YES | 交易對 |
side | ENUM | YES | 買賣方向 SELL, BUY |
positionSide | ENUM | NO | 持倉方向,單向持倉模式下非必填,默認且僅可填 BOTH; 在雙向持倉模式下必填,且僅可選擇 LONG 或 SHORT |
type | ENUM | YES | 訂單類型 LIMIT, MARKET, STOP, TAKE_PROFIT, STOP_MARKET, TAKE_PROFIT_MARKET, TRAILING_STOP_MARKET |
reduceOnly | STRING | NO | true, false; 非雙開模式下默認 false;雙開模式下不接受此參數; 使用 closePosition 不支持此參數。 |
quantity | DECIMAL | NO | 下單數量,使用 closePosition 不支持此參數。 |
price | DECIMAL | NO | 委託價格 |
newClientOrderId | STRING | NO | 用戶自定義的訂單號,不可以重複出現在掛單中。如空缺系統會自動賦值。必須滿足正則規則 ^[.A-Z:/a-z0-9_-]{1,36}$ |
stopPrice | DECIMAL | NO | 觸發價,僅 STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET 需要此參數 |
closePosition | STRING | NO | true, false;觸發後全部平倉,僅支持 STOP_MARKET 和 TAKE_PROFIT_MARKET;不與 quantity 合用;自帶只平倉效果,不與 reduceOnly 合用 |
activationPrice | DECIMAL | NO | 追蹤止損激活價格,僅 TRAILING_STOP_MARKET 需要此參數,默認為下單當前市場價格 (支持不同 workingType) |
callbackRate | DECIMAL | NO | 追蹤止損回調比例,可取值範圍 [0.1, 10], 其中 1 代表 1% , 僅 TRAILING_STOP_MARKET 需要此參數 |
timeInForce | ENUM | NO | 有效方法 GTC/IOC/FOK/GTX/GTD,LIMIT 訂單必填 |
workingType | ENUM | NO | stopPrice 觸發類型: MARK_PRICE (標記價格), CONTRACT_PRICE (合約最新價). 默認 CONTRACT_PRICE |
priceProtect | STRING | NO | 條件單觸發保護:"TRUE","FALSE", 默認 "FALSE". 僅 STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET 需要此參數 |
newOrderRespType | ENUM | NO | "ACK", "RESULT", 默認 "ACK" |
priceMatch | ENUM | NO | OPPONENT/ OPPONENT_5/ OPPONENT_10/ OPPONENT_20/QUEUE/ QUEUE_5/ QUEUE_10/ QUEUE_20;不能與 price 同時傳 |
selfTradePreventionMode | ENUM | NO | EXPIRE_TAKER/ EXPIRE_MAKER/ EXPIRE_BOTH; 默認 NONE |
goodTillDate | LONG | NO | TIF 為 GTD 時訂單的自動取消時間, 當 timeInforce 為 GTD 時必傳;傳入的時間戳僅保留秒級精度,毫秒級部分會被自動忽略,時間戳需大於當前時間 + 600s 且小於 253402300799000 |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
參數選項詳解#
type (訂單類型)#
API 參數 | 幣安中文介面 | 說明 |
---|---|---|
LIMIT | 限價單 | 需要指定價格,按指定價格或更優價格成交 |
MARKET | 市價單 | 立即以當前市場價格成交 |
STOP | 限價止盈止損 | 價格達到 stopPrice 時,以指定 price 下限價單 |
TAKE_PROFIT | 限價止盈止損 | 價格達到 stopPrice 時,以指定 price 下限價單 |
STOP_MARKET | 市價止盈止損 | 價格達到 stopPrice 時,下市價單 |
TAKE_PROFIT_MARKET | 市價止盈止損 | 價格達到 stopPrice 時,下市價單 |
TRAILING_STOP_MARKET | 跟蹤委託 | 根據價格變動動態調整止損價格 |
其他幣安介面功能對應:
- 只做 Maker =
timeInForce=GTX
- 條件委託 = STOP/TAKE_PROFIT 類型訂單
- 分時委託 =
timeInForce=GTD
+goodTillDate
- 分段訂單 = 多個訂單組合,非單一 API 參數
幣安 APP 下單介面的 "止盈 / 止損" 參數:
- 止盈價格 =
stopPrice
(當選擇 TAKE_PROFIT 類型時) - 止損價格 =
stopPrice
(當選擇 STOP 類型時) - 止盈止損方式選擇:
- 限價 =
TAKE_PROFIT
或STOP
+price
參數 - 市價 =
TAKE_PROFIT_MARKET
或STOP_MARKET
- 限價 =
- 觸發條件 =
workingType
(標記價格 / 最新價格)
重要說明:幣安 APP 上同時設置止盈止損 = 多個訂單
當您在 APP 中選擇了止盈止損功能:
- 主訂單:開倉訂單(LIMIT 或 MARKET)
- 止盈訂單:TAKE_PROFIT 或 TAKE_PROFIT_MARKET 訂單
- 止損訂單:STOP 或 STOP_MARKET 訂單
實際上相當於調用了3 次 API,創建了 3 個獨立的訂單。當其中一個止盈止損訂單觸發時,另一個會被自動取消(OCO 機制)。
實際案例:市價單 + 止盈止損
以下是在市價單介面設置止盈止損的真實 API 調用:
// 1. 主訂單:市價買入
{
"type": "MARKET",
"side": "BUY",
"quantity": "0.014",
"price": "0" // 市價單無價格
}
// 2. 止盈訂單:市價止盈(自動生成)
{
"type": "TAKE_PROFIT_MARKET",
"side": "SELL",
"stopPrice": "3700", // 關鍵:止盈觸發價格
"reduceOnly": true, // 關鍵:只減倉
"price": "0" // 市價執行
}
// 3. 止損訂單:市價止損(自動生成)
{
"type": "STOP_MARKET",
"side": "SELL",
"stopPrice": "3300", // 關鍵:止損觸發價格
"reduceOnly": true, // 關鍵:只減倉
"price": "0" // 市價執行
}
關鍵特徵:
- 止盈止損訂單自動設置
reduceOnly=true
(只減倉) - 三個訂單有相同的數量(0.014)
- 止盈止損訂單在主訂單成交後自動創建
reduceOnly (只減倉)#
true
- 只能減少現有持倉,不能增加持倉或開新倉false
- 可以增加持倉或開新倉(默認值)- 注意:雙向持倉模式下不接受此參數;使用 closePosition 時不支持此參數
使用場景:
- 部分平倉:已有多頭持倉,想部分平倉但不想反向開空倉
- 風險控制:確保訂單只會減少風險敞口,不會增加
- 止盈止損:設置止盈止損訂單時,只想平倉不想反向開倉
- 資金管理:在持倉接近強平價時,只允許減倉操作
實際例子:
場景 1 - 程序化交易:
- 持有 100 個 BTC 多頭合約
- 程序自動下單賣出 150 個 BTC(可能是基於信號或算法)
- 設置
reduceOnly=true
作為安全措施 - 訂單只會平掉 100 個 BTC,剩餘 50 個被拒絕,避免意外開空倉
場景 2 - 止損單:
- 持有 50 個 BTC 空頭合約
- 設置止損單:買入 100 個 BTC,
reduceOnly=true
- 觸發時只會平掉 50 個 BTC 空頭,剩餘 50 個被拒絕
- 防止止損單變成開多倉
場景 3 - 批量平倉:
- 同時持有多個合約的持倉
- 批量下單平倉時,某個合約的持倉可能已經被其他訂單部分平掉
reduceOnly=true
確保不會過度平倉
核心作用:
- 主要是安全保護,防止意外的過度交易
- 特別適用於程序化交易和自動化策略
與普通訂單的區別:
- 普通訂單:如果賣出數量超過持倉,超出部分會排隊等待
reduceOnly=true
:超出持倉的部分會直接被拒絕,確保不會意外超賣
限制條件:
- 單向持倉模式:可以使用
- 雙向持倉模式:不支持此參數
- 與
closePosition=true
互斥,不能同時使用
closePosition (平倉標誌)#
true
- 觸發後全部平倉整個持倉false
- 不平倉(默認值)- 僅支持:STOP_MARKET 和 TAKE_PROFIT_MARKET
- 不與 quantity 合用;自帶只平倉效果,不與 reduceOnly 合用
對應交易所介面設置:
當您在幣安 APP 設置止盈止損時:
- 數量選擇 → 選擇 "全部" 或 "100%"
- 執行方式 → 選擇 "市價成交"(而不是 "限價成交")
- 觸發條件 → 選擇 "標記價格" 或 "最新價格"(這是
workingType
參數) - 這時候 API 會自動設置
closePosition=true
實際場景:
- 持倉:100 個 BTC 多頭
- 在 APP 中設置止損,數量選擇 "全部",類型選擇 "市價"
- 對應 API:
type=STOP_MARKET, closePosition=true
- 觸發時:自動平掉全部 100 個 BTC,無需指定具體數量
與手動輸入數量的區別:
- 手動輸入數量:
quantity=100
- 選擇全部平倉:
closePosition=true
(更方便,不需要計算具體數量)
priceMatch (價格匹配模式)#
在交易所 APP 裡可能看到一個參數 BBO(Best Bid and Offer,最優買賣價),其實就是設置這個參數
OPPONENT
- 對手價(最優買一 / 賣一價)OPPONENT_5
- 對手價上浮 5 個 tickOPPONENT_10
- 對手價上浮 10 個 tickOPPONENT_20
- 對手價上浮 20 個 tickQUEUE
- 排隊價(買一 / 賣一價)QUEUE_5
- 排隊價上浮 5 個 tickQUEUE_10
- 排隊價上浮 10 個 tickQUEUE_20
- 排隊價上浮 20 個 tick- 注意:不能與 price 參數同時使用
什麼是 tick(最小價格單位)?
- 每個合約都有最小價格變動單位
- 例如:BTCUSDT 期貨的 tick = 0.1 USDT
- 上浮 5 個 tick = 價格 + (5 × 0.1) = 價格 + 0.5 USDT
實際例子:
假設當前 BTCUSDT 價格:
- 買一價:50000.0
- 賣一價:50000.1
- tick 大小:0.1
那麼:
OPPONENT
= 50000.1(賣一價)OPPONENT_5
= 50000.1 + (5×0.1) = 50000.6QUEUE
= 50000.0(買一價)QUEUE_5
= 50000.0 + (5×0.1) = 50000.5
selfTradePreventionMode (自成交防護模式)#
NONE
- 不防護自成交(默認值)EXPIRE_TAKER
- 作為 taker 時,取消新訂單EXPIRE_MAKER
- 作為 maker 時,取消舊訂單EXPIRE_BOTH
- 新舊訂單都取消
Maker 和 Taker 區分:
- Maker(掛單者):先掛在訂單簿上等待成交的訂單,提供流動性
- Taker(吃單者):立即與現有訂單簿匹配成交的訂單,消耗流動性
- 區分標準:基於訂單的執行時機,不是買賣方向
- 先下的訂單 = Maker
- 後下的訂單 = Taker
- 買單 / 賣單都可以是 Maker 或 Taker
具體例子:
假設你有一個交易賬戶,同時在 BTC/USDT 交易對上有以下情況:
- 你在 50,000 USDT 價格上掛了個賣單(先掛單 = Maker 訂單)
- 然後你又想在 50,000 USDT 價格上下個買單(後成交 = Taker 訂單)
不同模式的行為:
-
NONE(默認):
- 你的買單會直接成交你自己的賣單
- 結果:自成交發生,你付了手續費但倉位沒變
-
EXPIRE_TAKER:
- 系統檢測到會發生自成交
- 新的買單(taker)被取消
- 原來的賣單(maker)保持不變
-
EXPIRE_MAKER:
- 系統檢測到會發生自成交
- 原來的賣單(maker)被取消
- 新的買單(taker)會尋找其他訂單成交
-
EXPIRE_BOTH:
- 系統檢測到會發生自成交
- 新舊訂單都被取消
- 沒有任何成交發生
實際應用場景:
- 量化交易機器人經常會遇到這種情況
- 網格交易策略中特別常見
- 使用
EXPIRE_TAKER
可以保護已有的掛單策略
timeInForce (訂單有效時間)#
GTC
- Good Till Cancel,一直有效直到取消IOC
- Immediate or Cancel,立即執行,未成交部分取消FOK
- Fill or Kill,全部成交或全部取消GTX
- Good Till Crossing,被動委託,只做 maker(在幣安 APP 中顯示為 "訂單類型" 為 "只做 Maker")GTD
- Good Till Date,到指定時間取消(需配合 goodTillDate 使用)(在幣安 APP 中顯示為 "訂單類型" 為 "分時委託" 即 TWAP)
適用訂單類型:
LIMIT
- 必填,支持所有 timeInForce 選項STOP
- 可選,默認 GTC,支持所有 timeInForce 選項TAKE_PROFIT
- 可選,默認 GTC,支持所有 timeInForce 選項
不支持 timeInForce:
MARKET
- 不支持,市價單立即執行STOP_MARKET
- 不支持,觸發後立即執行市價單TAKE_PROFIT_MARKET
- 不支持,觸發後立即執行市價單TRAILING_STOP_MARKET
- 不支持,跟蹤止損觸發後立即執行
workingType (條件價格類型)#
CONTRACT_PRICE
- 合約最新價(默認值)MARK_PRICE
- 標記價格
"條件價格類型" 的含義:
- 這裡的 "條件" 指的是觸發條件,不是普通的買賣價格
- 僅適用於條件單:STOP、STOP_MARKET、TAKE_PROFIT、TAKE_PROFIT_MARKET
- 決定用什麼價格來判斷是否達到了
stopPrice
觸發條件
兩種價格的區別:
CONTRACT_PRICE(合約最新價):
- 實際成交的最新價格,基於真實買賣訂單
- 可能被大單快速拉升或砸盤影響
- 波動較大,更容易被操縱
MARK_PRICE(標記價格):
- 交易所計算的 "公允價格"
- 通常基於現貨價格 + 資金費率等因素計算
- 更穩定,不容易被操縱,用於計算未實現盈虧和強平價格
實際例子:
設置止損單:stopPrice = 49,000
- CONTRACT_PRICE 模式:當合約最新成交價跌破 49,000 時觸發(可能被瞬間插針觸發)
- MARK_PRICE 模式:當標記價格跌破 49,000 時觸發(更穩定,不容易被操縱)
使用建議:
- CONTRACT_PRICE:適合短線交易,對價格敏感
- MARK_PRICE:適合避免被瞬間插針觸發,更穩定可靠
priceProtect (價格保護)#
TRUE
- 開啟價格保護,防止價格偏離過大 (超過 5%)FALSE
- 關閉價格保護(默認值)- 僅適用於:STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET
priceProtect (價格保護) 的理解:
核心作用:
- 防止條件單在極端市場情況下以過於偏離市場的價格成交
- 在訂單已經被觸發後,檢查當前市場價格是否合理
工作機制:
- 觸發判斷:根據
workingType
判斷是否達到stopPrice
- 訂單觸發:條件滿足,準備下單
- 價格保護:如果開啟
priceProtect=TRUE
,檢查當前市場價格 - 執行決策:價格合理則執行,不合理則拒絕
具體場景:
假設你設置了止損單:stopPrice = 49,000
,type = STOP_MARKET
不開啟價格保護(FALSE):
- 價格跌破 49,000 時,立即下市價單
- 可能以 48,000、47,000 甚至更低價格成交(如果市場流動性差)
開啟價格保護(TRUE):
- 價格跌破 49,000 時,系統檢查當前市場價格
- 如果當前價格是 48,500(偏離不大),正常成交
- 如果當前價格是 45,000(偏離過大),訂單被拒絕
保護目標:
- 防止在市場崩盤時以極端價格成交
- 避免因流動性不足造成巨大滑點損失
- 給用戶一個 "重新考慮" 的機會
適用場景:
- 特別適用於大額訂單
- 市場波動劇烈時期
- 流動性較差的交易對
注意事項:
- 開啟後可能導致止損單無法執行,需要平衡保護和執行效率
- 與
workingType
參數獨立,可以任意組合使用
positionSide (持倉方向)#
BOTH
- 單向持倉模式下默認值LONG
- 雙向持倉模式下做多SHORT
- 雙向持倉模式下做空
持倉模式說明:
單向持倉模式(默認):
- 同一個交易對只能持有一個方向的淨倉位
- 買入操作:如果有空倉先平倉,剩餘部分開多倉
- 賣出操作:如果有多倉先平倉,剩餘部分開空倉
- 簡單直觀,適合新手使用
- API 參數:
positionSide=BOTH
雙向持倉模式:
- 同一個交易對可以同時持有多倉和空倉
- 需要明確指定是開多還是開空
- 可以進行更複雜的對沖策略
- 風險管理更複雜,需要分別管理多空倉位
- API 參數:
positionSide=LONG
或positionSide=SHORT
在幣安 APP 中切換持倉模式:
- 合約交易頁面右上角點擊三個小點
- 找到 "倉位模式" 選項
- 從 "單向持倉" 切換到 "雙向持倉"
- 注意:切換前需要先平掉所有持倉
介面顯示差異:
- 單向持倉:只顯示 "買入 / 賣出" 按鈕
- 雙向持倉:顯示 "做多 / 做空" 選擇,或 "開多 / 開空 / 平多 / 平空" 按鈕
注意事項:
- 雙向持倉模式下不支持
reduceOnly
參數 - 雙向持倉模式下必須指定
positionSide
參數 - 單向持倉模式下
positionSide
參數可選,默認為BOTH
newOrderRespType (響應類型)#
ACK
- 確認信息,返回基本訂單信息(默認值)RESULT
- 訂單結果,返回詳細訂單信息和成交信息
響應示例:
ACK 響應(基本信息):
{
"orderId": 28,
"symbol": "BTCUSDT",
"status": "NEW",
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"price": "0.1",
"avgPrice": "0.00000",
"origQty": "10",
"executedQty": "0",
"cumQty": "0",
"timeInForce": "GTC",
"type": "LIMIT",
"reduceOnly": false,
"closePosition": false,
"side": "SELL",
"positionSide": "SHORT",
"stopPrice": "0",
"workingType": "CONTRACT_PRICE",
"priceProtect": false,
"origType": "LIMIT",
"time": 1499827319559,
"updateTime": 1499827319559
}
RESULT 響應(詳細信息):
{
"orderId": 28,
"symbol": "BTCUSDT",
"status": "FILLED",
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"price": "0.1",
"avgPrice": "0.10000",
"origQty": "10",
"executedQty": "10",
"cumQty": "10",
"timeInForce": "GTC",
"type": "LIMIT",
"reduceOnly": false,
"closePosition": false,
"side": "SELL",
"positionSide": "SHORT",
"stopPrice": "0",
"workingType": "CONTRACT_PRICE",
"priceProtect": false,
"origType": "LIMIT",
"time": 1499827319559,
"updateTime": 1499827319559,
"fills": [
{
"price": "0.10000000",
"qty": "5.00000000",
"commission": "0.00000500",
"commissionAsset": "USDT",
"tradeId": 56
},
{
"price": "0.10000000",
"qty": "5.00000000",
"commission": "0.00000500",
"commissionAsset": "USDT",
"tradeId": 57
}
]
}
主要區別:
- ACK:只返回訂單基本狀態,不包含成交明細
- RESULT:包含詳細的成交信息(
fills
數組)和手續費詳情 - 性能:ACK 響應更快,RESULT 響應更詳細但稍慢
各類型訂單參數詳解#
1. 限價單#
在幣安 APP 中選擇 "限價單" 時對應的 API 參數:
完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "LIMIT", // 必需:訂單類型 - 關鍵參數
"timeInForce": "GTC", // 必需:有效時間 - 關鍵參數
"quantity": "0.1", // 必需:委託數量
"price": "3450.00", // 必需:委託價格 - 關鍵參數
// 可選參數
"positionSide": "BOTH", // 持倉方向(單向持倉默認BOTH)
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_order_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
}
2. 市價單#
在幣安 APP 中選擇 "市價單" 時對應的 API 參數:
完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "MARKET", // 必需:訂單類型 - 關鍵參數
"quantity": "0.1", // 必需:委託數量
// 可選參數
"positionSide": "BOTH", // 持倉方向(單向持倉默認BOTH)
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_order_002", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 注意:市價單無需price參數 - 關鍵特徵
}
3. 限價止盈止損#
在幣安 APP 中選擇止盈 / 止損,執行方式選擇 "限價" 時對應的 API 參數:
止損單完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "SELL", // 必需:買賣方向
"type": "STOP", // 必需:訂單類型 - 關鍵參數
"quantity": "0.1", // 必需:委託數量
"price": "3400.00", // 必需:觸發後執行價格 - 關鍵參數
"stopPrice": "3420.00", // 必需:觸發價格 - 關鍵參數
// 可選參數
"timeInForce": "GTC", // 有效時間(默認GTC)
"workingType": "MARK_PRICE", // 觸發條件:標記價格/合約最新價 - 關鍵參數
"priceProtect": false, // 價格保護
"positionSide": "BOTH", // 持倉方向
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_stop_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
}
止盈單完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "SELL", // 必需:買賣方向
"type": "TAKE_PROFIT", // 必需:訂單類型 - 關鍵參數
"quantity": "0.1", // 必需:委託數量
"price": "3600.00", // 必需:觸發後執行價格 - 關鍵參數
"stopPrice": "3580.00", // 必需:觸發價格 - 關鍵參數
// 可選參數
"timeInForce": "GTC", // 有效時間(默認GTC)
"workingType": "MARK_PRICE", // 觸發條件:標記價格/合約最新價 - 關鍵參數
"priceProtect": false, // 價格保護
"positionSide": "BOTH", // 持倉方向
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_tp_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
}
4. 市價止盈止損#
在幣安 APP 中選擇止盈 / 止損,執行方式選擇 "市價" 時對應的 API 參數:
止損單完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "SELL", // 必需:買賣方向
"type": "STOP_MARKET", // 必需:訂單類型 - 關鍵參數
"stopPrice": "3420.00", // 必需:觸發價格 - 關鍵參數
// 數量參數(二選一)
"quantity": "0.1", // 指定數量
// "closePosition": true, // 或全部平倉 - 關鍵參數
// 可選參數
"workingType": "MARK_PRICE", // 觸發條件:標記價格/合約最新價 - 關鍵參數
"priceProtect": false, // 價格保護
"positionSide": "BOTH", // 持倉方向
"newClientOrderId": "my_stop_market_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 注意:市價止損無需price參數,觸發後以市價執行 - 關鍵特徵
}
止盈單完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "SELL", // 必需:買賣方向
"type": "TAKE_PROFIT_MARKET", // 必需:訂單類型 - 關鍵參數
"stopPrice": "3580.00", // 必需:觸發價格 - 關鍵參數
// 數量參數(二選一)
"quantity": "0.1", // 指定數量
// "closePosition": true, // 或全部平倉 - 關鍵參數
// 可選參數
"workingType": "MARK_PRICE", // 觸發條件:標記價格/合約最新價 - 關鍵參數
"priceProtect": false, // 價格保護
"positionSide": "BOTH", // 持倉方向
"newClientOrderId": "my_tp_market_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 注意:市價止盈無需price參數,觸發後以市價執行 - 關鍵特徵
}
5. 跟蹤委託#
在幣安 APP 中選擇 "跟蹤委託" 時對應的 API 參數:
完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "SELL", // 必需:買賣方向
"type": "TRAILING_STOP_MARKET", // 必需:訂單類型 - 關鍵參數
"quantity": "0.1", // 必需:委託數量
"activationPrice": "3500.00", // 必需:激活價格 - 關鍵參數
"callbackRate": "1.0", // 必需:回調比例(1.0=1%)- 關鍵參數
// 可選參數
"workingType": "CONTRACT_PRICE", // 價格類型:標記價格/合約最新價
"positionSide": "BOTH", // 持倉方向
"newClientOrderId": "my_trailing_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 注意:跟蹤委託無需price和stopPrice參數 - 關鍵特徵
// 激活條件:賣單的activationPrice必須大於當前價格
}
6. 只做 Maker#
在幣安 APP 中選擇 "只做 Maker" 時對應的 API 參數:
完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "LIMIT", // 必需:訂單類型
"timeInForce": "GTX", // 必需:有效時間 - 關鍵參數(必須為GTX)
"quantity": "0.1", // 必需:委託數量
"price": "3450.00", // 必需:委託價格
// 可選參數
"positionSide": "BOTH", // 持倉方向(單向持倉默認BOTH)
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_gtx_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 關鍵特徵:如果訂單會立即成交(成為taker),系統會拒絕訂單
// 確保只做流動性提供者,享受Maker手續費
}
7. 條件委託#
條件委託是 STOP、TAKE_PROFIT 類型訂單的通用稱呼,詳細參數請參考 "限價止盈止損" 和 "市價止盈止損" 章節。
條件委託的關鍵特徵:
- 包含:STOP、TAKE_PROFIT、STOP_MARKET、TAKE_PROFIT_MARKET
- 都有
stopPrice
觸發價格 - 關鍵參數 - 可選擇限價或市價執行
- 支持
workingType
(觸發條件)和priceProtect
(價格保護)參數 - 只有達到觸發條件時才會激活訂單
8. 分時委託(TWAP)#
在幣安 APP 中選擇 "分時委託" 時對應的 API 參數:
完整參數示例:
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "LIMIT", // 必需:訂單類型
"timeInForce": "GTD", // 必需:有效時間 - 關鍵參數(必須為GTD)
"quantity": "0.1", // 必需:委託數量
"price": "3450.00", // 必需:委託價格
"goodTillDate": 1640995200000, // 必需:到期時間戳 - 關鍵參數
// 可選參數
"positionSide": "BOTH", // 持倉方向(單向持倉默認BOTH)
"reduceOnly": false, // 是否只減倉
"newClientOrderId": "my_twap_001", // 自定義訂單ID
"newOrderRespType": "ACK" // 響應類型
// 關鍵特徵:系統會將大訂單拆分成多個小的市價單
// 在指定時間段內分批執行,實現時間加權平均價格
}
9. 分段訂單#
分段訂單不是單一 API 參數,而是多個訂單的組合:
實現方式:
- 將大訂單拆分成多個小訂單
- 每個小訂單獨立下單
- 可以是不同價格的限價單組合
- 或者是分時間執行的訂單序列
完整參數示例(多個獨立訂單):
// 訂單1 - 較高價格
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "LIMIT", // 必需:訂單類型
"timeInForce": "GTC", // 必需:有效時間
"quantity": "0.05", // 必需:委託數量
"price": "3450.00", // 必需:委託價格 - 關鍵參數
"newClientOrderId": "batch_001_1" // 自定義訂單ID
}
// 訂單2 - 較低價格
{
"symbol": "ETHUSDT", // 必需:交易對
"side": "BUY", // 必需:買賣方向
"type": "LIMIT", // 必需:訂單類型
"timeInForce": "GTC", // 必需:有效時間
"quantity": "0.05", // 必需:委託數量
"price": "3440.00", // 必需:委託價格 - 關鍵參數
"newClientOrderId": "batch_001_2" // 自定義訂單ID
}
// 關鍵特徵:通過多個不同價格的訂單實現分層買入/賣出策略
參數依賴關係總結#
價格相關參數#
LIMIT
類型:必須提供price
MARKET
類型:不需要價格參數STOP
/TAKE_PROFIT
類型:需要price
和stopPrice
STOP_MARKET
/TAKE_PROFIT_MARKET
類型:只需要stopPrice
TRAILING_STOP_MARKET
類型:需要activationPrice
和callbackRate
數量相關參數#
- 大部分訂單類型需要
quantity
STOP_MARKET
/TAKE_PROFIT_MARKET
可以使用closePosition=true
替代TRAILING_STOP_MARKET
不需要顯式指定數量
時間有效性參數#
LIMIT
訂單:必須指定timeInForce
STOP
/TAKE_PROFIT
訂單:可選timeInForce
,默認 GTC- 其他訂單類型:通常不需要此參數
注意事項#
Maker 和 Taker 的判斷規則#
很多人誤以為訂單類型決定了 Maker/Taker 角色,實際上:
關鍵判斷標準:
- 訂單是否立即成交現有的訂單簿,而不是訂單類型本身
市價單:
- 通常是 Taker:因為市價單會立即以當前最優價格成交
- 極少數例外:在極端流動性不足的情況下,市價單可能部分成為 Maker
限價單:
- 可能是 Maker:如果限價單價格不能立即成交,會掛在訂單簿上等待
- 也可能是 Taker:如果限價單價格能立即與現有訂單匹配成交
具體例子:
限價單作為 Taker:
- 當前賣一價:50,000 USDT
- 你下限價買單:50,000 USDT(立即成交)
- 結果:你的限價單是 Taker
限價單作為 Maker:
- 當前賣一價:50,000 USDT
- 你下限價買單:49,950 USDT(無法立即成交)
- 結果:你的限價單掛在訂單簿上,成為 Maker
市價單作為 Taker(常見):
- 你下市價買單
- 立即以當前最優賣價成交
- 結果:你是 Taker
對 selfTradePreventionMode 的影響:
- 系統會根據實際的 Maker/Taker 角色來應用防護規則
- 不是根據訂單類型,而是根據最終的成交角色
如何確保做 Maker#
由於 Maker 享受更低手續費,很多交易者希望確保自己的訂單成為 Maker:
1. 使用 timeInForce=GTX
- GTX(Good Till Crossing):被動委託,只做 maker
- 如果訂單會立即成交(變成 taker),系統會直接拒絕訂單
- 這是最直接和最安全的方法
2. 價格策略
- 買單:設置價格低於當前買一價
- 賣單:設置價格高於當前賣一價
- 這樣訂單會掛在訂單簿上等待成交
3. 使用 priceMatch 的排隊價
QUEUE
:排隊價(買一 / 賣一價)QUEUE_5/10/20
:排隊價基礎上稍微優化- 雖然不是 100% 保證,但大概率成為 maker
實際例子:
假設當前 BTCUSDT:買一價 49,950,賣一價 50,000
確保做 maker 的下單:
// 買單做maker
{
"side": "BUY",
"price": "49,940", // 低於買一價
"timeInForce": "GTX"
}
// 賣單做maker
{
"side": "SELL",
"price": "50,010", // 高於賣一價
"timeInForce": "GTX"
}
最安全的組合:
使用 timeInForce=GTX
+ 合適的價格策略,這樣即使價格判斷錯誤,系統也會拒絕訂單而不是讓你意外成為 taker。