Skip to content

Commit

Permalink
Merge pull request #1906 from c9s/feature/binance/support-client-orde…
Browse files Browse the repository at this point in the history
…r-id
  • Loading branch information
ycdesu authored Feb 14, 2025
2 parents b648a32 + 8ceb3e3 commit 38190cc
Showing 1 changed file with 47 additions and 8 deletions.
55 changes: 47 additions & 8 deletions pkg/exchange/binance/exchange.go
Original file line number Diff line number Diff line change
Expand Up @@ -827,33 +827,72 @@ func (e *Exchange) QueryOrderTrades(ctx context.Context, q types.OrderQuery) ([]
}

func (e *Exchange) QueryOrder(ctx context.Context, q types.OrderQuery) (*types.Order, error) {
orderID, err := strconv.ParseInt(q.OrderID, 10, 64)
if err != nil {
return nil, err
if len(q.Symbol) == 0 {
return nil, errors.New("symbol parameter is a mandatory parameter for querying order")
}

var orderID int64
var err error
if len(q.OrderID) > 0 {
orderID, err = strconv.ParseInt(q.OrderID, 10, 64)
if err != nil {
return nil, err
}
}

if e.IsMargin {
order, err := e.client.NewGetMarginOrderService().Symbol(q.Symbol).OrderID(orderID).Do(ctx)
var order *binance.Order
req := e.client.NewGetMarginOrderService().Symbol(q.Symbol)

if len(q.OrderID) > 0 {
req.OrderID(orderID)
} else if len(q.ClientOrderID) > 0 {
req.OrigClientOrderID(q.ClientOrderID)
} else {
return nil, errors.New("empty order id")
}

order, err = req.Do(ctx)
if err != nil {
return nil, err
}
return toGlobalOrder(order, e.IsMargin)
}

if e.IsFutures {
order, err := e.futuresClient.NewGetOrderService().Symbol(q.Symbol).OrderID(orderID).Do(ctx)
var order *futures.Order
req := e.futuresClient.NewGetOrderService().Symbol(q.Symbol)

if len(q.OrderID) > 0 {
req.OrderID(orderID)
} else if len(q.ClientOrderID) > 0 {
req.OrigClientOrderID(q.ClientOrderID)
} else {
return nil, errors.New("empty order id")
}

order, err = req.Do(ctx)
if err != nil {
return nil, err
}

return toGlobalFuturesOrder(order, false)
}

order, err := e.client.NewGetOrderService().Symbol(q.Symbol).OrderID(orderID).Do(ctx)
var order *binance.Order
req := e.client.NewGetOrderService().Symbol(q.Symbol)

if len(q.OrderID) > 0 {
req.OrderID(orderID)
} else if len(q.ClientOrderID) > 0 {
req.OrigClientOrderID(q.ClientOrderID)
} else {
return nil, errors.New("empty order id")
}

order, err = req.Do(ctx)
if err != nil {
return nil, err
}

return toGlobalOrder(order, e.IsMargin)
}

Expand Down

0 comments on commit 38190cc

Please sign in to comment.