mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
* few fixes and add ratelimiter * adds test * revert configtest.json changes * configtest updated * WIP: adds public endpoint support * WIP: adds public endpoint support * adds public endpoint support * WIP: adds auth. endpoint support * adds test for auth. endpoint * fixes * adds auth. endpoint support * WIP: ws support * WIP * WIP * WIP * WIP * WIP * WIP * WIP * Testing * Complete WS spot testing * adds support for ws events * minor change * WIP: adds REST support for CoinMarginedFutures * Fixes * WIP: adds REST support for CoinMarginedFutures * Fixes * improvement in SPOT REST * Typo fix * WIP: add REST support for CMF Account API * minor fixes * WIP: add support for CMF conditional orders and few minor fixes * complete support for CMF conditional orders * adds support for public CMF endpoint * adds support for CMF position API * Complete REST CMF support * WIP * Testing REST CMF support * Testing REST CMF support * Testing REST CMF support completed * WIP: add support for UMF * completed non-auth UMF * WIP: add support for REST Auth. UMF * WIP: add support for REST Auth. UMF and some improvements * WIP * WIP * WIP * completed REST UMF * renaming * adds REST support for futures * add testcases for UMF and some optimizations * add testcases for futures * Testing UMF, futures and its changes * Fixes * Fixes after testing * WIP * WIP * WIP * completed ws USDT futures support * WIP: ws support for futures * fixes in WS futures * fixes in WS support * roll back changes made for WS CMF, USDT and Futures * fixes * WIP * WIP * fixes * Steps for new PR * WIP * WIP * WIP * WIP * complete PR setup * fixes for successfully running tests * update in symbol for futures pair in test file * WIP * Fixes in test file and other minor fix * fix testdata/configtest.json * reset CONTRIBUTORS file * review changes * remove unwanted file * remove redundant code * improvisation * adds comment for exported functions * remove unwanted TODO and commented code * fix * improvisation * fix * defined errors * improvisation * improvisation * improvisation * updates test * adds comment for exported types * review changes * review changes * fix * fixes * Changes for making BYBIT compatible with existing code base * Test file changes * Changes for making BYBIT compatible with existing code base * Changes for making BYBIT compatible with existing code base * fix lint issues * fix * review changes * review changes * review changes * review changes * review changes * review changes * review changes * review changes * review changes * review changes * WIP * add test cases for new API's * minor improvements * add missing API and their tests * minor fixes * add bybitTime * add bybitTimeSec, bybitTimeMilliSec, bybitTimeNanoSec and necessary support * fix GetTradeHistory function * error handling * test fixes * add GetServerTime API * adds GetHistoricCandlesExtended and review changes * test fixes * minor fix * integrating CMF Bybit recent change log * minor fixes * adds extractCurrencyPair * minor fixes * minor fix * review changes * adds variable declaration of error * review commit * adds embeddable type in API response for all API and integrate it * fixes * adds authentication WS connection * review changes * review changes * compatible changes * adds asset to GetWithdrawalsHistory * adds asset_type in rpc.proto * adds asset argument in gctcli withdrawal request command * improve error handling in exchange API error * web socket fix * review changes * improvements * improvements * minor fix * review changes * fixing wrapper issues * fixes * fixes * review changes * add test cases * fix for GetActiveOrders * lint fixes * fixes in websocket * adds wrapper testcases * adds wrapper testcases * adds wrapper testcases * fixes * fix issue with GetHistoricCandlesExtended * fix merge issues * improving error reporting * adds wrapper testcases and a minor fix * gctrpc changes * adds test cases fixes in websocket * review changes for ws * review changes in WS * fix gctrpc * merge fixes * review changes * WIP * updates pair in configs * adds new asset USDCMarginedFutures * adds URL const for USDCMarginedFutures * adds API support * minor fixes * adds kline API * minor fix * adds API * adds API * adds API * WIP * WIP * WIP * adds support for USDC auth requests to SendAuthHTTPRequest * adds SendUSDCAuthHTTPRequest * run test and fix them * rollback support added for Auth. USDC request inside SendAuthHTTPRequest * adds API and test cases * adds API and test cases * adds APIs and test cases * adds APIs * adds rate limit for USDC * adds USDCMarginedFutures to wrapper * adds USDC testcases in wrapper and fix few issues * minor test fixes * minor test fixes * fix lint issues * WIP * Merge changes * minor fixes * remove "else" and optimize * review changes * review changes * review changes * fix lint issue * merge fix * fix test * fix templates and run them * changes after merge * review changes and improvements * code improvement * fixes with respect to changes in API response in documentation * fixed review change in test * adds check in CancelExistingOrder * update exchange template * review changes * adds GetDepositAddress API * WIP: adds GetOrderHistory * complete GetOrderHistory * fixes * adds test case * fixes and add WithdrawFund API * WIP * WIP * updating all SendAuthHTTPRequest call * adds WithdrawCryptocurrencyFunds * update test cases * fix lint issues * fixes after merge * adds GetAvailableTransferChains and few fixes * minor fix in GetDepositAddress * minor fix with WS ping/pong handling * add ping handler for WS Auth. * fix typo mistake * update doc
404 lines
14 KiB
Go
404 lines
14 KiB
Go
package bybit
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
|
"golang.org/x/time/rate"
|
|
)
|
|
|
|
const (
|
|
spotInterval = time.Second
|
|
spotRequestRate = 70
|
|
futuresPublicInterval = time.Second
|
|
futuresRequestRate = 50
|
|
|
|
spotPrivateRequestRate = 20
|
|
futuresInterval = time.Minute
|
|
futuresDefaultRateCount = 100
|
|
futuresOrderRate = 100
|
|
futuresOrderListRate = 600
|
|
futuresExecutionRate = 120
|
|
futuresPositionRateCount = 75
|
|
futuresPositionListRate = 120
|
|
futuresFundingRate = 120
|
|
futuresWalletRate = 120
|
|
futuresAccountRate = 600
|
|
|
|
usdcPerpetualPublicRate = 50
|
|
usdcPerpetualCancelAllRate = 1
|
|
usdcPerpetualPrivateRate = 5
|
|
usdcPerpetualInterval = time.Second
|
|
)
|
|
|
|
const (
|
|
publicSpotRate request.EndpointLimit = iota
|
|
publicFuturesRate
|
|
privateSpotRate
|
|
|
|
cFuturesDefaultRate
|
|
|
|
cFuturesCancelActiveOrderRate
|
|
cFuturesCancelAllActiveOrderRate
|
|
cFuturesCreateConditionalOrderRate
|
|
cFuturesCancelConditionalOrderRate
|
|
cFuturesReplaceActiveOrderRate
|
|
cFuturesReplaceConditionalOrderRate
|
|
cFuturesCreateOrderRate
|
|
cFuturesCancelAllConditionalOrderRate
|
|
|
|
cFuturesGetActiveOrderRate
|
|
cFuturesGetConditionalOrderRate
|
|
cFuturesGetRealtimeOrderRate
|
|
|
|
cFuturesTradeRate
|
|
|
|
cFuturesSetLeverageRate
|
|
cFuturesUpdateMarginRate
|
|
cFuturesSetTradingRate
|
|
cFuturesSwitchPositionRate
|
|
cFuturesGetTradingFeeRate
|
|
|
|
cFuturesPositionRate
|
|
cFuturesWalletBalanceRate
|
|
|
|
cFuturesLastFundingFeeRate
|
|
cFuturesPredictFundingRate
|
|
|
|
cFuturesWalletFundRecordRate
|
|
cFuturesWalletWithdrawalRate
|
|
|
|
cFuturesAPIKeyInfoRate
|
|
|
|
uFuturesDefaultRate
|
|
|
|
uFuturesCreateOrderRate
|
|
uFuturesCancelOrderRate
|
|
uFuturesCancelAllOrderRate
|
|
uFuturesCreateConditionalOrderRate
|
|
uFuturesCancelConditionalOrderRate
|
|
uFuturesCancelAllConditionalOrderRate
|
|
|
|
uFuturesSetLeverageRate
|
|
uFuturesSwitchMargin
|
|
uFuturesSwitchPosition
|
|
uFuturesSetMarginRate
|
|
uFuturesSetTradingStopRate
|
|
uFuturesUpdateMarginRate
|
|
|
|
uFuturesPositionRate
|
|
uFuturesGetClosedTradesRate
|
|
uFuturesGetTradesRate
|
|
|
|
uFuturesGetActiveOrderRate
|
|
uFuturesGetActiveRealtimeOrderRate
|
|
uFuturesGetConditionalOrderRate
|
|
uFuturesGetConditionalRealtimeOrderRate
|
|
|
|
uFuturesGetMyLastFundingFeeRate
|
|
uFuturesPredictFundingRate
|
|
|
|
futuresDefaultRate
|
|
|
|
futuresCancelOrderRate
|
|
futuresCreateOrderRate
|
|
futuresReplaceOrderRate
|
|
futuresCancelAllOrderRate
|
|
futuresCancelAllConditionalOrderRate
|
|
futuresReplaceConditionalOrderRate
|
|
futuresCancelConditionalOrderRate
|
|
futuresCreateConditionalOrderRate
|
|
|
|
futuresGetActiveOrderRate
|
|
futuresGetConditionalOrderRate
|
|
futuresGetActiveRealtimeOrderRate
|
|
futuresGetConditionalRealtimeOrderRate
|
|
|
|
futuresGetTradeRate
|
|
|
|
futuresSetLeverageRate
|
|
futuresUpdateMarginRate
|
|
futuresSetTradingStopRate
|
|
futuresSwitchPositionModeRate
|
|
futuresSwitchMarginRate
|
|
futuresSwitchPositionRate
|
|
|
|
futuresPositionRate
|
|
|
|
usdcPublicRate
|
|
|
|
usdcCancelAllOrderRate
|
|
|
|
usdcPlaceOrderRate
|
|
usdcModifyOrderRate
|
|
usdcCancelOrderRate
|
|
usdcGetOrderRate
|
|
usdcGetOrderHistoryRate
|
|
usdcGetTradeHistoryRate
|
|
usdcGetTransactionRate
|
|
usdcGetWalletRate
|
|
usdcGetAssetRate
|
|
usdcGetMarginRate
|
|
usdcGetPositionRate
|
|
usdcSetLeverageRate
|
|
usdcGetSettlementRate
|
|
usdcSetRiskRate
|
|
usdcGetPredictedFundingRate
|
|
)
|
|
|
|
// RateLimit implements the request.Limiter interface
|
|
type RateLimit struct {
|
|
SpotRate *rate.Limiter
|
|
FuturesRate *rate.Limiter
|
|
PrivateSpotRate *rate.Limiter
|
|
CMFuturesDefaultRate *rate.Limiter
|
|
CMFuturesOrderRate *rate.Limiter
|
|
CMFuturesOrderListRate *rate.Limiter
|
|
CMFuturesExecutionRate *rate.Limiter
|
|
CMFuturesPositionRate *rate.Limiter
|
|
CMFuturesPositionListRate *rate.Limiter
|
|
CMFuturesFundingRate *rate.Limiter
|
|
CMFuturesWalletRate *rate.Limiter
|
|
CMFuturesAccountRate *rate.Limiter
|
|
UFuturesDefaultRate *rate.Limiter
|
|
UFuturesOrderRate *rate.Limiter
|
|
UFuturesPositionRate *rate.Limiter
|
|
UFuturesPositionListRate *rate.Limiter
|
|
UFuturesOrderListRate *rate.Limiter
|
|
UFuturesFundingRate *rate.Limiter
|
|
FuturesDefaultRate *rate.Limiter
|
|
FuturesOrderRate *rate.Limiter
|
|
FuturesOrderListRate *rate.Limiter
|
|
FuturesExecutionRate *rate.Limiter
|
|
FuturesPositionRate *rate.Limiter
|
|
FuturesPositionListRate *rate.Limiter
|
|
USDCPublic *rate.Limiter
|
|
USDCPlaceOrderRate *rate.Limiter
|
|
USDCModifyOrderRate *rate.Limiter
|
|
USDCCancelOrderRate *rate.Limiter
|
|
USDCCancelAllOrderRate *rate.Limiter
|
|
USDCGetOrderRate *rate.Limiter
|
|
USDCGetOrderHistoryRate *rate.Limiter
|
|
USDCGetTradeHistoryRate *rate.Limiter
|
|
USDCGetTransactionRate *rate.Limiter
|
|
USDCGetWalletRate *rate.Limiter
|
|
USDCGetAssetRate *rate.Limiter
|
|
USDCGetMarginRate *rate.Limiter
|
|
USDCGetPositionRate *rate.Limiter
|
|
USDCSetLeverageRate *rate.Limiter
|
|
USDCGetSettlementRate *rate.Limiter
|
|
USDCSetRiskRate *rate.Limiter
|
|
USDCGetPredictedFundingRate *rate.Limiter
|
|
}
|
|
|
|
// Limit executes rate limiting functionality for Binance
|
|
func (r *RateLimit) Limit(ctx context.Context, f request.EndpointLimit) error {
|
|
var limiter *rate.Limiter
|
|
var tokens int
|
|
switch f {
|
|
case publicSpotRate:
|
|
limiter, tokens = r.SpotRate, 1
|
|
case privateSpotRate:
|
|
limiter, tokens = r.PrivateSpotRate, 1
|
|
|
|
case cFuturesDefaultRate:
|
|
limiter, tokens = r.CMFuturesDefaultRate, 1
|
|
|
|
case cFuturesCancelActiveOrderRate, cFuturesCreateConditionalOrderRate, cFuturesCancelConditionalOrderRate, cFuturesReplaceActiveOrderRate,
|
|
cFuturesReplaceConditionalOrderRate, cFuturesCreateOrderRate:
|
|
limiter, tokens = r.CMFuturesOrderRate, 1
|
|
case cFuturesCancelAllActiveOrderRate, cFuturesCancelAllConditionalOrderRate:
|
|
limiter, tokens = r.CMFuturesOrderRate, 10
|
|
|
|
case cFuturesGetActiveOrderRate, cFuturesGetConditionalOrderRate, cFuturesGetRealtimeOrderRate:
|
|
limiter, tokens = r.CMFuturesOrderListRate, 1
|
|
|
|
case cFuturesTradeRate:
|
|
limiter, tokens = r.CMFuturesExecutionRate, 1
|
|
|
|
case cFuturesSetLeverageRate, cFuturesUpdateMarginRate, cFuturesSetTradingRate, cFuturesSwitchPositionRate, cFuturesGetTradingFeeRate:
|
|
limiter, tokens = r.CMFuturesPositionRate, 1
|
|
|
|
case cFuturesPositionRate, cFuturesWalletBalanceRate:
|
|
limiter, tokens = r.CMFuturesPositionListRate, 1
|
|
|
|
case cFuturesLastFundingFeeRate, cFuturesPredictFundingRate:
|
|
limiter, tokens = r.CMFuturesFundingRate, 1
|
|
|
|
case cFuturesWalletFundRecordRate, cFuturesWalletWithdrawalRate:
|
|
limiter, tokens = r.CMFuturesWalletRate, 1
|
|
|
|
case cFuturesAPIKeyInfoRate:
|
|
limiter, tokens = r.CMFuturesAccountRate, 1
|
|
|
|
case uFuturesDefaultRate:
|
|
limiter, tokens = r.UFuturesDefaultRate, 1
|
|
|
|
case uFuturesCreateOrderRate, uFuturesCancelOrderRate, uFuturesCreateConditionalOrderRate, uFuturesCancelConditionalOrderRate:
|
|
limiter, tokens = r.UFuturesOrderRate, 1
|
|
|
|
case uFuturesCancelAllOrderRate, uFuturesCancelAllConditionalOrderRate:
|
|
limiter, tokens = r.UFuturesOrderRate, 10
|
|
|
|
case uFuturesSetLeverageRate, uFuturesSwitchMargin, uFuturesSwitchPosition, uFuturesSetMarginRate, uFuturesSetTradingStopRate, uFuturesUpdateMarginRate:
|
|
limiter, tokens = r.UFuturesPositionRate, 1
|
|
|
|
case uFuturesPositionRate, uFuturesGetClosedTradesRate, uFuturesGetTradesRate:
|
|
limiter, tokens = r.UFuturesPositionListRate, 1
|
|
|
|
case uFuturesGetActiveOrderRate, uFuturesGetActiveRealtimeOrderRate, uFuturesGetConditionalOrderRate, uFuturesGetConditionalRealtimeOrderRate:
|
|
limiter, tokens = r.UFuturesOrderListRate, 1
|
|
|
|
case uFuturesGetMyLastFundingFeeRate, uFuturesPredictFundingRate:
|
|
limiter, tokens = r.UFuturesFundingRate, 1
|
|
|
|
case futuresDefaultRate:
|
|
limiter, tokens = r.FuturesDefaultRate, 1
|
|
|
|
case futuresCancelOrderRate, futuresCreateOrderRate, futuresReplaceOrderRate, futuresReplaceConditionalOrderRate, futuresCancelConditionalOrderRate,
|
|
futuresCreateConditionalOrderRate:
|
|
limiter, tokens = r.FuturesOrderRate, 1
|
|
|
|
case futuresCancelAllOrderRate, futuresCancelAllConditionalOrderRate:
|
|
limiter, tokens = r.FuturesOrderRate, 10
|
|
|
|
case futuresGetActiveOrderRate, futuresGetConditionalOrderRate, futuresGetActiveRealtimeOrderRate, futuresGetConditionalRealtimeOrderRate:
|
|
limiter, tokens = r.FuturesOrderListRate, 1
|
|
|
|
case futuresGetTradeRate:
|
|
limiter, tokens = r.FuturesExecutionRate, 1
|
|
|
|
case futuresSetLeverageRate, futuresUpdateMarginRate, futuresSetTradingStopRate, futuresSwitchPositionModeRate, futuresSwitchMarginRate, futuresSwitchPositionRate:
|
|
limiter, tokens = r.FuturesPositionRate, 1
|
|
|
|
case futuresPositionRate:
|
|
limiter, tokens = r.FuturesPositionListRate, 1
|
|
|
|
case usdcPublicRate:
|
|
limiter, tokens = r.USDCPublic, 1
|
|
|
|
case usdcCancelAllOrderRate:
|
|
limiter, tokens = r.USDCCancelAllOrderRate, 1
|
|
|
|
case usdcPlaceOrderRate:
|
|
limiter, tokens = r.USDCPlaceOrderRate, 1
|
|
|
|
case usdcModifyOrderRate:
|
|
limiter, tokens = r.USDCModifyOrderRate, 1
|
|
|
|
case usdcCancelOrderRate:
|
|
limiter, tokens = r.USDCCancelOrderRate, 1
|
|
|
|
case usdcGetOrderRate:
|
|
limiter, tokens = r.USDCGetOrderRate, 1
|
|
|
|
case usdcGetOrderHistoryRate:
|
|
limiter, tokens = r.USDCGetOrderHistoryRate, 1
|
|
|
|
case usdcGetTradeHistoryRate:
|
|
limiter, tokens = r.USDCGetTradeHistoryRate, 1
|
|
|
|
case usdcGetTransactionRate:
|
|
limiter, tokens = r.USDCGetTransactionRate, 1
|
|
|
|
case usdcGetWalletRate:
|
|
limiter, tokens = r.USDCGetWalletRate, 1
|
|
|
|
case usdcGetAssetRate:
|
|
limiter, tokens = r.USDCGetAssetRate, 1
|
|
|
|
case usdcGetMarginRate:
|
|
limiter, tokens = r.USDCGetMarginRate, 1
|
|
|
|
case usdcGetPositionRate:
|
|
limiter, tokens = r.USDCGetPositionRate, 1
|
|
|
|
case usdcSetLeverageRate:
|
|
limiter, tokens = r.USDCSetLeverageRate, 1
|
|
|
|
case usdcGetSettlementRate:
|
|
limiter, tokens = r.USDCGetSettlementRate, 1
|
|
|
|
case usdcSetRiskRate:
|
|
limiter, tokens = r.USDCSetRiskRate, 1
|
|
|
|
case usdcGetPredictedFundingRate:
|
|
limiter, tokens = r.USDCGetPredictedFundingRate, 1
|
|
|
|
default:
|
|
limiter, tokens = r.SpotRate, 1
|
|
}
|
|
|
|
var finalDelay time.Duration
|
|
var reserves = make([]*rate.Reservation, tokens)
|
|
for i := 0; i < tokens; i++ {
|
|
// Consume tokens 1 at a time as this avoids needing burst capacity in the limiter,
|
|
// which would otherwise allow the rate limit to be exceeded over short periods
|
|
reserves[i] = limiter.Reserve()
|
|
finalDelay = limiter.Reserve().Delay()
|
|
}
|
|
|
|
if dl, ok := ctx.Deadline(); ok && dl.Before(time.Now().Add(finalDelay)) {
|
|
// Cancel all potential reservations to free up rate limiter if deadline
|
|
// is exceeded.
|
|
for x := range reserves {
|
|
reserves[x].Cancel()
|
|
}
|
|
return fmt.Errorf("rate limit delay of %s will exceed deadline: %w",
|
|
finalDelay,
|
|
context.DeadlineExceeded)
|
|
}
|
|
|
|
time.Sleep(finalDelay)
|
|
return nil
|
|
}
|
|
|
|
// SetRateLimit returns the rate limit for the exchange
|
|
func SetRateLimit() *RateLimit {
|
|
return &RateLimit{
|
|
SpotRate: request.NewRateLimit(spotInterval, spotRequestRate),
|
|
FuturesRate: request.NewRateLimit(futuresPublicInterval, futuresRequestRate),
|
|
PrivateSpotRate: request.NewRateLimit(spotInterval, spotPrivateRequestRate),
|
|
CMFuturesDefaultRate: request.NewRateLimit(futuresInterval, futuresDefaultRateCount),
|
|
CMFuturesOrderRate: request.NewRateLimit(futuresInterval, futuresOrderRate),
|
|
CMFuturesOrderListRate: request.NewRateLimit(futuresInterval, futuresOrderListRate),
|
|
CMFuturesExecutionRate: request.NewRateLimit(futuresInterval, futuresExecutionRate),
|
|
CMFuturesPositionRate: request.NewRateLimit(futuresInterval, futuresPositionRateCount),
|
|
CMFuturesPositionListRate: request.NewRateLimit(futuresInterval, futuresPositionListRate),
|
|
CMFuturesFundingRate: request.NewRateLimit(futuresInterval, futuresFundingRate),
|
|
CMFuturesWalletRate: request.NewRateLimit(futuresInterval, futuresWalletRate),
|
|
CMFuturesAccountRate: request.NewRateLimit(futuresInterval, futuresAccountRate),
|
|
UFuturesDefaultRate: request.NewRateLimit(futuresInterval, futuresDefaultRateCount),
|
|
UFuturesOrderRate: request.NewRateLimit(futuresInterval, futuresOrderRate),
|
|
UFuturesPositionRate: request.NewRateLimit(futuresInterval, futuresPositionRateCount),
|
|
UFuturesPositionListRate: request.NewRateLimit(futuresInterval, futuresPositionListRate),
|
|
UFuturesOrderListRate: request.NewRateLimit(futuresInterval, futuresOrderListRate),
|
|
UFuturesFundingRate: request.NewRateLimit(futuresInterval, futuresFundingRate),
|
|
FuturesDefaultRate: request.NewRateLimit(futuresInterval, futuresDefaultRateCount),
|
|
FuturesOrderRate: request.NewRateLimit(futuresInterval, futuresOrderRate),
|
|
FuturesOrderListRate: request.NewRateLimit(futuresInterval, futuresOrderListRate),
|
|
FuturesExecutionRate: request.NewRateLimit(futuresInterval, futuresExecutionRate),
|
|
FuturesPositionRate: request.NewRateLimit(futuresInterval, futuresPositionRateCount),
|
|
FuturesPositionListRate: request.NewRateLimit(futuresInterval, futuresPositionListRate),
|
|
USDCPublic: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPublicRate),
|
|
USDCPlaceOrderRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCModifyOrderRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCCancelOrderRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCCancelAllOrderRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualCancelAllRate),
|
|
USDCGetOrderRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetOrderHistoryRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetTradeHistoryRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetTransactionRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetWalletRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetAssetRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetMarginRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetPositionRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCSetLeverageRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetSettlementRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCSetRiskRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
USDCGetPredictedFundingRate: request.NewRateLimit(usdcPerpetualInterval, usdcPerpetualPrivateRate),
|
|
}
|
|
}
|