mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 07:26:47 +00:00
* orderbook: consolidate slice array types to orderbook package * Update exchanges/bybit/bybit_types.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * linter: fix and add test * cranktakular: nits * cranktakular: nits * Update exchanges/orderbook/orderbook_types.go Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com> * Update exchanges/gateio/gateio_test.go Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com> * gk: nits consolidation * gk: rm unifySpotOrderbook func * gk: nit but different * linter: fix * gk: nits * glorious: nits * Update exchanges/binance/binance.go Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io> * Update exchanges/binance/binance_cfutures.go Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io> * Update exchanges/binanceus/binanceus.go Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io> * thrasher-:nits * thrasher-: more nit --------- Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com> Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
80 lines
3.0 KiB
Go
80 lines
3.0 KiB
Go
package binanceus
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
|
)
|
|
|
|
const (
|
|
spotInterval = time.Minute
|
|
spotRequestRate = 1200
|
|
// Order related limits which are segregated from the global rate limits
|
|
// 100 requests per 10 seconds and max 100000 requests per day.
|
|
spotOrderInterval = 10 * time.Second
|
|
spotOrderRequestRate = 100
|
|
)
|
|
|
|
// Binance Spot rate limits
|
|
const (
|
|
spotDefaultRate request.EndpointLimit = iota
|
|
spotExchangeInfo
|
|
spotHistoricalTradesRate
|
|
spotOrderbookDepth500Rate
|
|
spotOrderbookDepth1000Rate
|
|
spotOrderbookDepth5000Rate
|
|
spotOrderbookTickerAllRate
|
|
spotPriceChangeAllRate
|
|
spotSymbolPriceAllRate
|
|
spotSingleOCOOrderRate
|
|
spotOpenOrdersAllRate
|
|
spotOpenOrdersSpecificRate
|
|
spotOrderRate
|
|
spotOrderQueryRate
|
|
spotTradesQueryRate
|
|
spotAllOrdersRate
|
|
spotAllOCOOrdersRate
|
|
spotOrderRateLimitRate
|
|
spotAccountInformationRate
|
|
)
|
|
|
|
// GetRateLimit returns the rate limit for the exchange
|
|
func GetRateLimit() request.RateLimitDefinitions {
|
|
spotRate := request.NewRateLimit(spotInterval, spotRequestRate)
|
|
spotOrdersRate := request.NewRateLimit(spotOrderInterval, spotOrderRequestRate)
|
|
return request.RateLimitDefinitions{
|
|
spotDefaultRate: request.GetRateLimiterWithWeight(spotRate, 1),
|
|
spotOrderbookTickerAllRate: request.GetRateLimiterWithWeight(spotRate, 2),
|
|
spotSymbolPriceAllRate: request.GetRateLimiterWithWeight(spotRate, 2),
|
|
spotHistoricalTradesRate: request.GetRateLimiterWithWeight(spotRate, 5),
|
|
spotOrderbookDepth500Rate: request.GetRateLimiterWithWeight(spotRate, 5),
|
|
spotOrderbookDepth1000Rate: request.GetRateLimiterWithWeight(spotRate, 10),
|
|
spotAccountInformationRate: request.GetRateLimiterWithWeight(spotRate, 10),
|
|
spotExchangeInfo: request.GetRateLimiterWithWeight(spotRate, 10),
|
|
spotTradesQueryRate: request.GetRateLimiterWithWeight(spotRate, 10),
|
|
spotPriceChangeAllRate: request.GetRateLimiterWithWeight(spotRate, 40),
|
|
spotOrderbookDepth5000Rate: request.GetRateLimiterWithWeight(spotRate, 50),
|
|
spotOrderRate: request.GetRateLimiterWithWeight(spotOrdersRate, 1),
|
|
spotOrderQueryRate: request.GetRateLimiterWithWeight(spotOrdersRate, 2),
|
|
spotSingleOCOOrderRate: request.GetRateLimiterWithWeight(spotOrdersRate, 2),
|
|
spotOpenOrdersSpecificRate: request.GetRateLimiterWithWeight(spotOrdersRate, 3),
|
|
spotAllOrdersRate: request.GetRateLimiterWithWeight(spotOrdersRate, 10),
|
|
spotAllOCOOrdersRate: request.GetRateLimiterWithWeight(spotOrdersRate, 10),
|
|
spotOrderRateLimitRate: request.GetRateLimiterWithWeight(spotOrdersRate, 20),
|
|
spotOpenOrdersAllRate: request.GetRateLimiterWithWeight(spotOrdersRate, 40),
|
|
}
|
|
}
|
|
|
|
// orderbookLimit returns the endpoint rate limit representing enum given order depth
|
|
func orderbookLimit(depth uint64) request.EndpointLimit {
|
|
switch {
|
|
case depth <= 100:
|
|
return spotDefaultRate
|
|
case depth <= 500:
|
|
return spotOrderbookDepth500Rate
|
|
case depth <= 1000:
|
|
return spotOrderbookDepth1000Rate
|
|
}
|
|
return spotOrderbookDepth5000Rate
|
|
}
|