diff --git a/pkg/exchange/binance/exchange.go b/pkg/exchange/binance/exchange.go index c3e530e7a..918b85c2f 100644 --- a/pkg/exchange/binance/exchange.go +++ b/pkg/exchange/binance/exchange.go @@ -1413,22 +1413,23 @@ func (e *Exchange) queryMarginTrades(ctx context.Context, symbol string, options req.Limit(1000) } + // BINANCE seems to have an API bug, we can't use both fromId and the start time/end time // BINANCE uses inclusive last trade ID if options.LastTradeID > 0 { req.FromID(int64(options.LastTradeID)) - } - - if options.StartTime != nil && options.EndTime != nil { - if options.EndTime.Sub(*options.StartTime) < 24*time.Hour { + } else { + if options.StartTime != nil && options.EndTime != nil { + if options.EndTime.Sub(*options.StartTime) < 24*time.Hour { + req.StartTime(options.StartTime.UnixMilli()) + req.EndTime(options.EndTime.UnixMilli()) + } else { + req.StartTime(options.StartTime.UnixMilli()) + } + } else if options.StartTime != nil { req.StartTime(options.StartTime.UnixMilli()) + } else if options.EndTime != nil { req.EndTime(options.EndTime.UnixMilli()) - } else { - req.StartTime(options.StartTime.UnixMilli()) } - } else if options.StartTime != nil { - req.StartTime(options.StartTime.UnixMilli()) - } else if options.EndTime != nil { - req.EndTime(options.EndTime.UnixMilli()) } remoteTrades, err = req.Do(ctx)