0xhardman

0xhardman

twitter
medium
jike
github

你到底用了什么 API 下单?Binance USDS-M期货下单界面和API下单参数对比分析

你到底用了什么 API 下单?Binance USDS-M 期货下单界面和 API 下单参数对比分析#

请求参数说明#

参数名类型必填说明
symbolSTRINGYES交易对
sideENUMYES买卖方向 SELL, BUY
positionSideENUMNO持仓方向,单向持仓模式下非必填,默认且仅可填 BOTH; 在双向持仓模式下必填,且仅可选择 LONG 或 SHORT
typeENUMYES订单类型 LIMIT, MARKET, STOP, TAKE_PROFIT, STOP_MARKET, TAKE_PROFIT_MARKET, TRAILING_STOP_MARKET
reduceOnlySTRINGNOtrue, false; 非双开模式下默认 false;双开模式下不接受此参数; 使用 closePosition 不支持此参数。
quantityDECIMALNO下单数量,使用 closePosition 不支持此参数。
priceDECIMALNO委托价格
newClientOrderIdSTRINGNO用户自定义的订单号,不可以重复出现在挂单中。如空缺系统会自动赋值。必须满足正则规则 ^[.A-Z:/a-z0-9_-]{1,36}$
stopPriceDECIMALNO触发价,仅 STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET 需要此参数
closePositionSTRINGNOtrue, false;触发后全部平仓,仅支持 STOP_MARKET 和 TAKE_PROFIT_MARKET;不与 quantity 合用;自带只平仓效果,不与 reduceOnly 合用
activationPriceDECIMALNO追踪止损激活价格,仅 TRAILING_STOP_MARKET 需要此参数,默认为下单当前市场价格 (支持不同 workingType)
callbackRateDECIMALNO追踪止损回调比例,可取值范围 [0.1, 10], 其中 1 代表 1% , 仅 TRAILING_STOP_MARKET 需要此参数
timeInForceENUMNO有效方法 GTC/IOC/FOK/GTX/GTD,LIMIT 订单必填
workingTypeENUMNOstopPrice 触发类型: MARK_PRICE (标记价格), CONTRACT_PRICE (合约最新价). 默认 CONTRACT_PRICE
priceProtectSTRINGNO条件单触发保护:"TRUE","FALSE", 默认 "FALSE". 仅 STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET 需要此参数
newOrderRespTypeENUMNO"ACK", "RESULT", 默认 "ACK"
priceMatchENUMNOOPPONENT/ OPPONENT_5/ OPPONENT_10/ OPPONENT_20/QUEUE/ QUEUE_5/ QUEUE_10/ QUEUE_20;不能与 price 同时传
selfTradePreventionModeENUMNOEXPIRE_TAKER/ EXPIRE_MAKER/ EXPIRE_BOTH; 默认 NONE
goodTillDateLONGNOTIF 为 GTD 时订单的自动取消时间, 当 timeInforce 为 GTD 时必传;传入的时间戳仅保留秒级精度,毫秒级部分会被自动忽略,时间戳需大于当前时间 + 600s 且小于 253402300799000
recvWindowLONGNO
timestampLONGYES

参数选项详解#

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_PROFITSTOP + price参数
    • 市价 = TAKE_PROFIT_MARKETSTOP_MARKET
  • 触发条件 = workingType(标记价格 / 最新价格)

重要说明:币安 APP 上同时设置止盈止损 = 多个订单
当您在 APP 中选择了止盈止损功能:

  1. 主订单:开仓订单(LIMIT 或 MARKET)
  2. 止盈订单:TAKE_PROFIT 或 TAKE_PROFIT_MARKET 订单
  3. 止损订单: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. 部分平仓:已有多头持仓,想部分平仓但不想反向开空仓
  2. 风险控制:确保订单只会减少风险敞口,不会增加
  3. 止盈止损:设置止盈止损订单时,只想平仓不想反向开仓
  4. 资金管理:在持仓接近强平价时,只允许减仓操作

实际例子:
场景 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 个 tick
  • OPPONENT_10 - 对手价上浮 10 个 tick
  • OPPONENT_20 - 对手价上浮 20 个 tick
  • QUEUE - 排队价(买一 / 卖一价)
  • QUEUE_5 - 排队价上浮 5 个 tick
  • QUEUE_10 - 排队价上浮 10 个 tick
  • QUEUE_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.6
  • QUEUE = 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 订单)

不同模式的行为:

  1. NONE(默认)

    • 你的买单会直接成交你自己的卖单
    • 结果:自成交发生,你付了手续费但仓位没变
  2. EXPIRE_TAKER

    • 系统检测到会发生自成交
    • 新的买单(taker)被取消
    • 原来的卖单(maker)保持不变
  3. EXPIRE_MAKER

    • 系统检测到会发生自成交
    • 原来的卖单(maker)被取消
    • 新的买单(taker)会寻找其他订单成交
  4. 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 (价格保护) 的理解:

核心作用:

  • 防止条件单在极端市场情况下以过于偏离市场的价格成交
  • 在订单已经被触发后,检查当前市场价格是否合理

工作机制:

  1. 触发判断:根据workingType判断是否达到stopPrice
  2. 订单触发:条件满足,准备下单
  3. 价格保护:如果开启priceProtect=TRUE,检查当前市场价格
  4. 执行决策:价格合理则执行,不合理则拒绝

具体场景:
假设你设置了止损单:stopPrice = 49,000type = 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=LONGpositionSide=SHORT

在币安 APP 中切换持仓模式:

  1. 合约交易页面右上角点击三个小点
  2. 找到 "仓位模式" 选项
  3. 从 "单向持仓" 切换到 "双向持仓"
  4. 注意:切换前需要先平掉所有持仓
币安订单类型 币安订单类型

界面显示差异:

  • 单向持仓:只显示 "买入 / 卖出" 按钮
  • 双向持仓:显示 "做多 / 做空" 选择,或 "开多 / 开空 / 平多 / 平空" 按钮

注意事项:

  • 双向持仓模式下不支持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类型:需要 pricestopPrice
  • STOP_MARKET/TAKE_PROFIT_MARKET类型:只需要 stopPrice
  • TRAILING_STOP_MARKET类型:需要 activationPricecallbackRate

数量相关参数#

  • 大部分订单类型需要 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。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。