订单类型与执行
本指南提供了 BigONE 订单系统的技术规范。它详细说明了每种订单类型所需的 确切参数组合,以避免 400 Bad Request 错误。
1. 现货交易参数矩阵
在现货交易 (POST /viewer/orders) 中,实行严格的验证。
| 订单类型 | side | price | amount | stop_price | operator | 备注 |
|---|---|---|---|---|---|---|
| LIMIT | 必填 | 必填 | 必填 | - | - | 标准挂单。 |
| MARKET | 必填 | - | 必填 | - | - | amount = 基础资产数量。 |
| STOP_LIMIT | 必填 | 必填 | 必填 | 必填 | 必填 | 触发后下限价单。 |
| STOP_MARKET | 必填 | - | 必填 | 必填 | 必填 | 触发后下市价单。 |
注意
- "-" 表示该字段 不应 发送。如果发送,可能会导致错误或被忽略(最佳实践:不要发送)。
- MARKET Buy: 目前,BigONE 现货 API 通常要求市价买入提供
amount(基础资产)。如果您想 "花费 100 USDT",您必须自己估算 BTC 数量,或者检查该特定端点版本是否支持quote_quantity。
2. 合约交易参数矩阵
合约交易 (POST /orders) 使用略有不同的模式。
| 订单类型 | side | price | size | stop_price | reduceOnly | 备注 |
|---|---|---|---|---|---|---|
| LIMIT | 必填 | 必填 | 必填 | - | 可选 | 标准限价单。 |
| MARKET | 必填 | - | 必填 | - | 可选 | 以最优价格执行。 |
| STOP_LIMIT | - | 必填 | - | 必填 | - | 见下文条件单部分。 |
合约条件单
在合约 API 中,止损/触发单通常通过特定的 conditional 对象或根据 API 版本通过不同的参数处理。
- 标准订单: 使用
LIMIT/MARKET。 - 止损 / 止盈: 这些通常附加到仓位上,或使用
type=STOP_MARKET和reduceOnly=true发送。
3. 生效时间 (执行标志)
这些标志修改 LIMIT 订单的处理方式。它们对 MARKET 订单无效。
POST_ONLY (只做 Maker)
- Payload:
"post_only": true - 逻辑:
- 如果
订单价格<卖一价(对于买单): 订单被 接受 (Maker)。 - 如果
订单价格>=卖一价(对于买单): 订单被 拒绝 或 取消。
- 如果
- 错误代码:
50047(Liquidity taken too much) 或类似的取消状态。
IOC (立即成交或取消)
- Payload:
"immediate_or_cancel": true - 逻辑:
- 立即匹配可用的流动性。
- 未成交部分被 取消(不进入订单簿)。
- 响应: 您将收到一个订单 ID,但其状态可能会立即变为
FILLED或CANCELLED。
4. 详细行为场景
场景 A: "胖手指" 保护
您想买入 BTC。当前价格 $50,000。您不小心发出了 $55,000 的限价买单。
- 标准 LIMIT: 系统会将您与最优卖单 ($50,000, $50,001...) 匹配,直到 $55,000。
- 结果: 您立即以市场价格买入,支付 Taker 手续费。
- 使用
post_only: true: 系统看到您的价格 ($55,000) 穿过了卖一价 ($50,000)。- 结果: 订单被 拒绝。您避免了支付 Taker 费用或以糟糕的价差买入。
场景 B: 止损逻辑
您持有 BTC 多头仓位。当前价格 $50,000。您想在 $49,000 止损。
- STOP_MARKET:
stop_price: 49000operator:LTE(小于等于)- 行为: 当标记价格触及 49,000 时,触发 市价卖单。
- 风险: 如果价格瞬间崩盘至 48,000,您将在 48,000 卖出。
- STOP_LIMIT:
stop_price: 49000price: 48900 (限价)- 行为: 当标记价格触及 49,000 时,放置一个 48,900 的限价卖单。
- 风险: 如果价格直接崩盘至 48,000,您的限价单 (48,900) 可能无法成交,导致您被套。
5. 验证错误代码
如果参数设置错误,可能会遇到以下错误:
- 10007 (Parameter Error):
- 为
MARKET订单发送了price(在某些严格验证器中)。 - 止损单缺少
operator。 - 发送的
amount小数位过多(违反asset_pair精度)。
- 为
- 50047 (Liquidity Issue):
post_only订单本应立即成交。
结论
- 现货: 严格遵守矩阵。
price和amount是字符串。 - 合约: 小心使用
reduceOnly。仅用于平仓。 - 算法交易: 如果您的策略依赖 Maker 返佣,请始终使用
post_only。