跳到主要内容

订单类型与执行

本指南提供了 BigONE 订单系统的技术规范。它详细说明了每种订单类型所需的 确切参数组合,以避免 400 Bad Request 错误。


1. 现货交易参数矩阵

在现货交易 (POST /viewer/orders) 中,实行严格的验证。

订单类型sidepriceamountstop_priceoperator备注
LIMIT必填必填必填--标准挂单。
MARKET必填-必填--amount = 基础资产数量。
STOP_LIMIT必填必填必填必填必填触发后下限价单。
STOP_MARKET必填-必填必填必填触发后下市价单。
注意
  • "-" 表示该字段 不应 发送。如果发送,可能会导致错误或被忽略(最佳实践:不要发送)。
  • MARKET Buy: 目前,BigONE 现货 API 通常要求市价买入提供 amount(基础资产)。如果您想 "花费 100 USDT",您必须自己估算 BTC 数量,或者检查该特定端点版本是否支持 quote_quantity

2. 合约交易参数矩阵

合约交易 (POST /orders) 使用略有不同的模式。

订单类型sidepricesizestop_pricereduceOnly备注
LIMIT必填必填必填-可选标准限价单。
MARKET必填-必填-可选以最优价格执行。
STOP_LIMIT-必填-必填-见下文条件单部分。
合约条件单

在合约 API 中,止损/触发单通常通过特定的 conditional 对象或根据 API 版本通过不同的参数处理。

  • 标准订单: 使用 LIMIT / MARKET
  • 止损 / 止盈: 这些通常附加到仓位上,或使用 type=STOP_MARKETreduceOnly=true 发送。

3. 生效时间 (执行标志)

这些标志修改 LIMIT 订单的处理方式。它们对 MARKET 订单无效。

POST_ONLY (只做 Maker)

  • Payload: "post_only": true
  • 逻辑:
    • 如果 订单价格 < 卖一价 (对于买单): 订单被 接受 (Maker)。
    • 如果 订单价格 >= 卖一价 (对于买单): 订单被 拒绝取消
  • 错误代码: 50047 (Liquidity taken too much) 或类似的取消状态。

IOC (立即成交或取消)

  • Payload: "immediate_or_cancel": true
  • 逻辑:
    • 立即匹配可用的流动性。
    • 未成交部分被 取消(不进入订单簿)。
    • 响应: 您将收到一个订单 ID,但其状态可能会立即变为 FILLEDCANCELLED

4. 详细行为场景

场景 A: "胖手指" 保护

您想买入 BTC。当前价格 $50,000。您不小心发出了 $55,000 的限价买单

  1. 标准 LIMIT: 系统会将您与最优卖单 ($50,000, $50,001...) 匹配,直到 $55,000。
    • 结果: 您立即以市场价格买入,支付 Taker 手续费。
  2. 使用 post_only: true: 系统看到您的价格 ($55,000) 穿过了卖一价 ($50,000)。
    • 结果: 订单被 拒绝。您避免了支付 Taker 费用或以糟糕的价差买入。

场景 B: 止损逻辑

您持有 BTC 多头仓位。当前价格 $50,000。您想在 $49,000 止损。

  1. STOP_MARKET:
    • stop_price: 49000
    • operator: LTE (小于等于)
    • 行为: 当标记价格触及 49,000 时,触发 市价卖单
    • 风险: 如果价格瞬间崩盘至 48,000,您将在 48,000 卖出。
  2. STOP_LIMIT:
    • stop_price: 49000
    • price: 48900 (限价)
    • 行为: 当标记价格触及 49,000 时,放置一个 48,900 的限价卖单
    • 风险: 如果价格直接崩盘至 48,000,您的限价单 (48,900) 可能无法成交,导致您被套。

5. 验证错误代码

如果参数设置错误,可能会遇到以下错误:

  • 10007 (Parameter Error):
    • MARKET 订单发送了 price(在某些严格验证器中)。
    • 止损单缺少 operator
    • 发送的 amount 小数位过多(违反 asset_pair 精度)。
  • 50047 (Liquidity Issue):
    • post_only 订单本应立即成交。

结论

  • 现货: 严格遵守矩阵。priceamount 是字符串。
  • 合约: 小心使用 reduceOnly。仅用于平仓。
  • 算法交易: 如果您的策略依赖 Maker 返佣,请始终使用 post_only