你到底用了什么 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。