交易接口
下单 (TRADE)
POST /api/v3/order
这个请求会把1个订单添加到 EXCHANGE_MAX_ORDERS 过滤器和 MAX_NUM_ORDERS 过滤器中。
权重: 1
未成交的订单计数: 1
参数:
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| symbol | STRING | YES | |
| side | ENUM | YES | 详见枚举定义:订单方向 |
| type | ENUM | YES | 详见枚举定义:订单类型 |
| timeInForce | ENUM | NO | 详见枚举定义:生效时间 |
| quantity | DECIMAL | NO | |
| quoteOrderQty | DECIMAL | NO | |
| price | DECIMAL | NO | |
| newClientOrderId | STRING | NO | 用户自定义的orderid,如空缺系统会自动赋值。 |
| strategyId | LONG | NO | |
| strategyType | INT | NO | 不能低于 1000000. |
| stopPrice | DECIMAL | NO | 仅 STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT 需要此参数。 |
| trailingDelta | LONG | NO | 参见 追踪止盈止损(Trailing Stop)订单常见问题。 |
| icebergQty | DECIMAL | NO | 仅有限价单(包括条件限价单与限价做事单)可以使用该参数,含义为创建冰山订单并指定冰山订单的数量。 |
| newOrderRespType | ENUM | NO | 指定响应类型 ACK, RESULT, or FULL; MARKET 与 LIMIT 订单默认为FULL, 其他默认为ACK。 |
| selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:STP 模式。 |
| pegPriceType | ENUM | NO | PRIMARY_PEG 或 MARKET_PEG。 参阅 关于挂钩订单参数的注意事项 |
| pegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。 参阅 关于挂钩订单参数的注意事项 |
| pegOffsetType | ENUM | NO | 仅支持 PRICE_LEVEL。 参阅 关于挂钩订单参数的注意事项 |
| recvWindow | DECIMAL | NO | 最大值为 60000 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。 |
| timestamp | LONG | YES |
根据 order type的不同,某些参数 有强制要求,具体如下:
| Type | 强制要求的参数 | 其他信息 |
|---|---|---|
LIMIT | timeInForce, quantity, price | |
MARKET | quantity | 市价买卖单可用quantity参数来设置base asset数量.例如:BTCUSDT 市价单,BTC 买卖数量取决于 quantity参数. 市价买卖单可用 quoteOrderQty参数来设置quote asset数量. 正确的quantity取决于市场的流动性与quoteOrderQty例如: 市价 BUY BTCUSDT,单子会基于quoteOrderQty- USDT 的数量,购买 BTC.市价 SELL BTCUSDT,单子会卖出 BTC 来满足quoteOrderQty- USDT 的数量. |
STOP_LOSS | quantity, stopPrice, trailingDelta | 条件满足后会下MARKET单子. (例如:达到stopPrice或trailingDelta被启动) |
STOP_LOSS_LIMIT | timeInForce, quantity, price, stopPrice, trailingDelta | |
TAKE_PROFIT | quantity, stopPrice, trailingDelta | 条件满足后会下MARKET单子. (例如:达到stopPrice或trailingDelta被启动) |
TAKE_PROFIT_LIMIT | timeInForce, quantity, price, stopPrice, trailingDelta | |
LIMIT_MAKER | quantity, price | 订单大部分情况下与普通的限价单没有区别,但是如果在当前价格会立即吃对手单并成交则下单会被拒绝。因此使用这个订单类型可以保证订单一定是挂单方,不会成为吃单方。 |
- 这些参数仅适用于
LIMIT,LIMIT_MAKER,STOP_LOSS_LIMIT和TAKE_PROFIT_LIMIT订单。 - 如果使用了
pegPriceType, 那么price字段将是可选的。 否则,price字段依旧是必须的。 pegPriceType=PRIMARY_PEG就是主要挂钩(primary),这是订单簿上与您的订单同一方向的最佳价格。pegPriceType=MARKET_PEG就是市场挂钩(market),这是订单簿上与您的订单相反方向的最佳价格。- 可以通过使用
pegOffsetType和pegOffsetValue来获取最佳价格以外的价格水平。 这两个参数必须一起使用。
其他:
- 任何
LIMIT或LIMIT_MAKER只要填icebergQty参数都可以下冰上订单。 - 冰山订单的
timeInForce必须设置为GTC。 STOP_LOSS,STOP_LOSS_LIMIT,TAKE_PROFIT_LIMIT与TAKE_PROFIT单子都能同时填上trailingDelta与stopPrice。- 填上
quoteOrderQty的市价单不会触犯过滤器的LOT_SIZE限制。订单的quantity会尽量满足quoteOrderQty的数量。
条件单的触发价格必须:
- 比下单时当前市价高:
STOP_LOSSBUY,TAKE_PROFITSELL - 比下单时当前市价低:
STOP_LOSSSELL,TAKE_PROFITBUY
关于 newOrderRespType的三种选择
数据源: 撮合引擎
Response ACK: 返回速度最快,不包含成交信息,信息量最少
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595
}
Response RESULT: 返回速度居中,返回吃单成交的少量信息
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE"
}
Response FULL: 返回速度最慢,返回吃单成交的详细信息
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE",
"fills": [
{
"price": "4000.00000000",
"qty": "1.00000000",
"commission": "4.00000000",
"commissionAsset": "USDT",
"tradeId": 56
},
{
"price": "3999.00000000",
"qty": "5.00000000",
"commission": "19.99500000",
"commissionAsset": "USDT",
"tradeId": 57
},
{
"price": "3998.00000000",
"qty": "2.00000000",
"commission": "7.99600000",
"commissionAsset": "USDT",
"tradeId": 58
},
{
"price": "3997.00000000",
"qty": "1.00000000",
"commission": "3.99700000",
"commissionAsset": "USDT",
"tradeId": 59
},
{
"price": "3995.00000000",
"qty": "1.00000000",
"commission": "3.99500000",
"commissionAsset": "USDT",
"tradeId": 60
}
]
}
订单响应中的特定条件时才会出现的字段
订单响应中的有一些字段仅在满足特定条件时才会出现。这些订单响应可以来自下订单,查询订单或取消订单,并且可以包括订单列表类型。 下面列出了这些字段:
| 名称 | 描述 | 显示的条件 | 示例 |
|---|---|---|---|
icebergQty | 冰山订单的数量。 | 只有在请求中发送 icebergQty 参数时才会出现。 | "icebergQty": "0.00000000" |
preventedMatchId | 与 symbol 结合使用时,可用于查询因为 STP 导致订单失效的过期订单。 | 只有在因为 STP 导致订单失效时可见。 | "preventedMatchId": 0 |
preventedQuantity | 因为 STP 导致订单失效的数量。 | 只有在因为 STP 导致订单失效时可见。 | "preventedQuantity": "1.200000" |
stopPrice | 用于设置逻辑订单中的触发价。 | STOP_LOSS,TAKE_PROFIT,STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单时可见。 | "stopPrice": "23500.00000000" |
strategyId | 策略单ID; 用以关联此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyId": 37463720 |
strategyType | 策略单类型; 用以显示此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyType": 1000000 |
trailingDelta | 用以定义追踪止盈止损订单被触发的价格差。 | 出现在追踪止损订单中。 | "trailingDelta": 10 |
trailingTime | 追踪单被激活和跟踪价格变化的时间。 | 出现在追踪止损订单中。 | "trailingTime": -1 |
usedSor | 用于确定订单是否使用SOR的字段 | 在使用SOR下单时出现 | "usedSor": true | |
workingFloor | 用以定义订单是通过 SOR 还是由订单提交到的订单簿(order book)成交的。 | 出现在使用了 SOR 的订单中。 | "workingFloor": "SOR" |
pegPriceType | 挂钩价格类型 | 仅用于挂钩订单 | "pegPriceType": "PRIMARY_PEG" |
pegOffsetType | 挂钩价格偏移类型 | 如若需要,仅用于挂钩订单 | "pegOffsetType": "PRICE_LEVEL" |
pegOffsetValue | 挂钩价格偏移值 | 如若需要,仅用于挂钩订单 | "pegOffsetValue": 5 |
peggedPrice | 订单对应的当前挂钩价格 | 一旦确定,仅用于挂钩订单 | "peggedPrice": "87523.83710000" |
expiryReason | 订单失效原因 | 当订单失效时 | "expiryReason": "INSUFFICIENT_LIQUIDITY" |