Skip to content

Binance:澄清或支持单向/双向持仓模式(-4061) #1029

Description

@bakabird

现象

已批准的 Binance 衍生品订单在 push 时可能被交易所拒绝,错误码 -4061:订单的 positionSide 与账户当前持仓模式(单向 / 双向)不一致。

Push 结果正确记为拒绝(已提交 0 / 已拒绝 1)。用户只看到原始 Binance 报错,没有产品层面对「持仓模式要求」的说明。

观测于 binance-main(derivatives 子账户):BUY LLY 0.051,限价 1183,2x → 被拒。

binance {"code":-4061,"msg":"Order's position side does not match user's setting."}

疑似原因 / 子系统

  • UTA CCXT 路径services/uta/src/domain/trading/brokers/ccxt/CcxtBroker.tsplaceOrder)只发送 buy/sell(平仓时带 reduceOnly),不会读取 Binance 持仓模式,也不会设置 positionSide / params.hedged
  • CCXT Binance 仅在 params.hedged === true 时写出 positionSide: LONG|SHORT;默认按单向形态下单。
  • 较可能的错配:账户为 双向(Hedge),订单按 单向发出(未带 LONG/SHORT)。反过来(单向账户却带了双向的 positionSide)也会得到 -4061

同类问题:#1022(Bitget 40774 — 同一类单向/双向缺口)。

需要做什么

先定产品立场,再按其中一条补齐缺口:

  1. 若 Binance 合约交易只支持单向(或只支持双向) — 说清楚,并给出可操作提示(不能只在批准后甩原始 -4061)。最好在用户 于 UTA 添加 Binance 凭证时就提示,若之后模式变更,push 前/时仍要拦截并说明。
  2. 否则 — 系统化支持单向与双向两种持仓模式,使已批准订单在任一账户设置下都能提交(探测模式;开/平仓映射到正确的 positionSide)。

同时考虑在审批 / push 结果 UI 里,把 -4061 翻译成更可读的产品文案。

验收标准

  • 用户清楚 Binance 合约支持单向、双向,还是两者都支持。
  • 若限制模式:添加 Binance 凭证时就能发现不兼容持仓模式(之后若变更,push 时仍用明确提示拦截)。
  • 在已支持的模式下,衍生品下单不再因这类错配被拒。
  • 不支持的模式失败时,有清晰的产品提示,而不只是交易所错误原文。

为何暂缓

在排查一次真实 push 拒绝时发现(explore)。修复需要先明确支持哪些持仓模式(与 #1022 同一决策面),再改 UTA 报文字段;当前交互线程不拥有该改动。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions