mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
* exchanges/websocket: update websocket rate limiting to use requester rate limiting functionality. * glorious: nits * rm unsused * updoo * glorious: purgerino * reduce duplicate code * thrasher: engrish --------- Co-authored-by: shazbert <ryan.oharareid@thrasher.io>
135 lines
7.3 KiB
Go
135 lines
7.3 KiB
Go
package bybit
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
|
)
|
|
|
|
const (
|
|
defaultEPL request.EndpointLimit = iota
|
|
createOrderEPL
|
|
createSpotOrderEPL
|
|
amendOrderEPL
|
|
cancelOrderEPL
|
|
cancelSpotEPL
|
|
cancelAllEPL
|
|
cancelAllSpotEPL
|
|
createBatchOrderEPL
|
|
amendBatchOrderEPL
|
|
cancelBatchOrderEPL
|
|
getOrderEPL
|
|
getOrderHistoryEPL
|
|
getPositionListEPL
|
|
getExecutionListEPL
|
|
getPositionClosedPNLEPL
|
|
postPositionSetLeverageEPL
|
|
setPositionTPLSModeEPL
|
|
setPositionRiskLimitEPL
|
|
stopTradingPositionEPL
|
|
getAccountWalletBalanceEPL
|
|
getAccountFeeEPL
|
|
getAssetTransferQueryInfoEPL
|
|
getAssetTransferQueryTransferCoinListEPL
|
|
getAssetTransferCoinListEPL
|
|
getAssetInterTransferListEPL
|
|
getSubMemberListEPL
|
|
getAssetUniversalTransferListEPL
|
|
getAssetAccountCoinBalanceEPL
|
|
getAssetDepositRecordsEPL
|
|
getAssetDepositSubMemberRecordsEPL
|
|
getAssetDepositSubMemberAddressEPL
|
|
getWithdrawRecordsEPL
|
|
getAssetCoinInfoEPL
|
|
getExchangeOrderRecordEPL
|
|
interTransferEPL
|
|
saveTransferSubMemberEPL
|
|
universalTransferEPL
|
|
createWithdrawalEPL
|
|
cancelWithdrawalEPL
|
|
userCreateSubMemberEPL
|
|
userCreateSubAPIKeyEPL
|
|
userFrozenSubMemberEPL
|
|
userUpdateAPIEPL
|
|
userUpdateSubAPIEPL
|
|
userDeleteAPIEPL
|
|
userDeleteSubAPIEPL
|
|
userQuerySubMembersEPL
|
|
userQueryAPIEPL
|
|
getSpotLeverageTokenOrderRecordsEPL
|
|
spotLeverageTokenPurchaseEPL
|
|
spotLeverTokenRedeemEPL
|
|
getSpotCrossMarginTradeLoanInfoEPL
|
|
getSpotCrossMarginTradeAccountEPL
|
|
getSpotCrossMarginTradeOrdersEPL
|
|
getSpotCrossMarginTradeRepayHistoryEPL
|
|
spotCrossMarginTradeLoanEPL
|
|
spotCrossMarginTradeRepayEPL
|
|
spotCrossMarginTradeSwitchEPL
|
|
)
|
|
|
|
// GetRateLimit returns the rate limit for the exchange
|
|
func GetRateLimit() request.RateLimitDefinitions {
|
|
return request.RateLimitDefinitions{
|
|
defaultEPL: request.NewRateLimitWithWeight(time.Second*5 /* See: https://bybit-exchange.github.io/docs/v5/rate-limit */, 600, 1),
|
|
createOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
createSpotOrderEPL: request.NewRateLimitWithWeight(time.Second, 20, 20),
|
|
amendOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
cancelOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
cancelSpotEPL: request.NewRateLimitWithWeight(time.Second, 20, 20),
|
|
cancelAllEPL: request.NewWeightedRateLimitByDuration(time.Second),
|
|
cancelAllSpotEPL: request.NewRateLimitWithWeight(time.Second, 20, 20),
|
|
createBatchOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
amendBatchOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
cancelBatchOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getOrderEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getOrderHistoryEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getPositionListEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getExecutionListEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getPositionClosedPNLEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
postPositionSetLeverageEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
setPositionTPLSModeEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
setPositionRiskLimitEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
stopTradingPositionEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getAccountWalletBalanceEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getAccountFeeEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getAssetTransferQueryInfoEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
getAssetTransferQueryTransferCoinListEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
getAssetTransferCoinListEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
getAssetInterTransferListEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
getSubMemberListEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
getAssetUniversalTransferListEPL: request.NewRateLimitWithWeight(time.Second, 2, 2),
|
|
getAssetAccountCoinBalanceEPL: request.NewRateLimitWithWeight(time.Second, 2, 2),
|
|
getAssetDepositRecordsEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
getAssetDepositSubMemberRecordsEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
getAssetDepositSubMemberAddressEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
getWithdrawRecordsEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
getAssetCoinInfoEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
getExchangeOrderRecordEPL: request.NewRateLimitWithWeight(time.Minute, 30, 1),
|
|
interTransferEPL: request.NewRateLimitWithWeight(time.Minute, 20, 1),
|
|
saveTransferSubMemberEPL: request.NewRateLimitWithWeight(time.Minute, 20, 1),
|
|
universalTransferEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
createWithdrawalEPL: request.NewWeightedRateLimitByDuration(time.Second),
|
|
cancelWithdrawalEPL: request.NewRateLimitWithWeight(time.Minute, 60, 1),
|
|
userCreateSubMemberEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userCreateSubAPIKeyEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userFrozenSubMemberEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userUpdateAPIEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userUpdateSubAPIEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userDeleteAPIEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userDeleteSubAPIEPL: request.NewRateLimitWithWeight(time.Second, 5, 5),
|
|
userQuerySubMembersEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
userQueryAPIEPL: request.NewRateLimitWithWeight(time.Second, 10, 10),
|
|
getSpotLeverageTokenOrderRecordsEPL: request.NewRateLimitWithWeight(time.Second, 50, 50),
|
|
spotLeverageTokenPurchaseEPL: request.NewRateLimitWithWeight(time.Second, 20, 20),
|
|
spotLeverTokenRedeemEPL: request.NewRateLimitWithWeight(time.Second, 20, 20),
|
|
getSpotCrossMarginTradeLoanInfoEPL: request.NewRateLimitWithWeight(time.Second, 50, 50),
|
|
getSpotCrossMarginTradeAccountEPL: request.NewRateLimitWithWeight(time.Second, 50, 50),
|
|
getSpotCrossMarginTradeOrdersEPL: request.NewRateLimitWithWeight(time.Second, 50, 50),
|
|
getSpotCrossMarginTradeRepayHistoryEPL: request.NewRateLimitWithWeight(time.Second, 50, 50),
|
|
spotCrossMarginTradeLoanEPL: request.NewRateLimitWithWeight(time.Second, 20, 50),
|
|
spotCrossMarginTradeRepayEPL: request.NewRateLimitWithWeight(time.Second, 20, 50),
|
|
spotCrossMarginTradeSwitchEPL: request.NewRateLimitWithWeight(time.Second, 20, 50),
|
|
}
|
|
}
|