fix: Bitget 平仓必须传 holdSide 参数

- PlaceMarketOrder 新增 holdSide 参数
- 平仓时(closeLeg)根据 leg.Side 传 holdSide="long"/"short"
- 开仓传空字符串,不受影响
- 修复 BG 持续 'No position to close' (22002) 问题
This commit is contained in:
jackyu66git
2026-05-05 00:46:49 +08:00
parent d01a261828
commit fd777e6fe0
2 changed files with 12 additions and 4 deletions
+5 -1
View File
@@ -30,7 +30,7 @@ func NewBitgetTrade(apiKey, apiSecret, passphrase string) *BitgetTrade {
}
}
func (b *BitgetTrade) PlaceMarketOrder(side, symbol, size, tradeSide string) (string, error) {
func (b *BitgetTrade) PlaceMarketOrder(side, symbol, size, tradeSide, holdSide string) (string, error) {
ts := fmt.Sprintf("%d", time.Now().UnixMilli())
method := "POST"
@@ -48,6 +48,10 @@ func (b *BitgetTrade) PlaceMarketOrder(side, symbol, size, tradeSide string) (st
"tradeSide": tradeSide,
"size": size,
}
// When closing, Bitget requires holdSide to identify which position to close
if tradeSide == "close" && holdSide != "" {
body["holdSide"] = holdSide
}
bodyJSON, _ := json.Marshal(body)
sign := b.sign(method, requestPath, ts, string(bodyJSON))