Files
gocryptotrader/exchanges/okx/ratelimit.go
Samuael A 2ac165a477 exchanges: Add OKX support (#1005)
* public endpoints methods added

* Completing mapping REST endpoints

* Binanceus Wrapper methods -Partially

* Binanceus Wrapper methods -Partially

* BinaWra functions with test funs; Not Completed

* Finalizing wrapper methods & test

* Fix & Complete wrapper functions

* Finalizing wrapper methods & test

* Adding Stream Datas

* WS Test functions

* CI: Fix golangci-lint linter issues

* CI: Fix reverting unnessesary changes and type conversion issues

* CI: Fix reverting unnessesary changes and type conversion issues

* Adding Public endpoints and tests

* Adding Market and Public Endpoints

* Adding Public endoints

* Public Trading Endpoints & Authenticated Trade order methods

* Adding Authenticated Methods and Tests

* Adding algo and Funding Authenticated endpoints

* Adding funding trading endpoints and correspondint tests

* adding authenticated endpoints

* Completing Block Trading endpoints and added subaccount endpoints

* Completing sub account and grid Trading endpoints

* Adding Rate Limit and missing endpoints

* Wrapper and Websocket handlers

* Fixing Websocket Test and Push Data Handler Issues

* Fixing Websocket Test and Push Data Handler Issues

* Fixing linter issues, package dependency, and other slight tempos

* Fixing linter and slight tempos

* Update on test functions, and Rest and Websocket Endpoint handlers

* Remove okex, adding comments, and slight fixes on endpoints.

* Fixing linter issues and adding comments

* Slight code changes, updating documentation, and n and linter issues

* Fix context and configuration endpoint issues

* slight fixes on config and test files

* adding some missing test and fix linter issues

* fix linter issue

* Slight fixes on code structure, shorthand exp,and ot and other

* Fix slight linter issue

* Slight code fixes and fixing linter issues

* fixing linter iissues

* fixing linter iissues

* slight linter issue fix

* slight linter issue fix

* Fix on models, type convert funcs and endpoints

* Adding Error messages map and update of models

* Fix on error message string and linter issues

* Fix slight linter issue

* Fix slight linter issue

* Fixing type converts, models, and linter issues

* Adding Ws fixes

* Slight fix on websocket and other issues

* Adding slight websocket fixes

* Remove 'books5' channel default subscription

* Small changes on default subscription and checksum

* Fix slight websocket tempos

* Fix Wrapper function tempost and linter issues

* Resolving slight naming and other issues

* Resolve slight pointer issues

* resolve slight linter issues

* Resolve config files issue

* Update websocket and wrapper funcs with test and docs

* fixs on websocket multiplexer, types, and other slight issues

* fix slight linter issues

* slight update on web-socket orderbook and tickers

* fix slight issues and websocket runtime errors

* Slight unit test fix and assing simple semaphore

* FIx race issue

* Update on authenticated endpoints

* Fix wsSetupRun check in websocket 'setupWsAuth' func

* Update wsSetupRun check in websocket 'setupWsAuth' func

* Slight update on websocket handling

* Fix some race conditions

* fix slight tempos

* fix authenticated test issues

* Update on conditional statements

* slight update on unit test

* fix unit test tempos

* Fix slight tempos

* Change check map from struct valued to bool valued

* slight fix trial

* Slight unit test update

* Fix websocket timeout error

* Updating websocket subscription endpoints, and unit tests

* update unit tests

* Slight issue on wrapper method 'GetActiveOrders'

* Overall code update

* Addressing missing review comments

* Fix unit test tempo and linter issue

* Monor fix

* Slight update

* Slight unit test fix

* Slight fixes

* Slight fixes

* Fixing on missing review comments

* Adding WS Fixes

* slight fix

* Monor fix on unit test

* Minor convert issue

* Minor change on WS

* Monor logic fix

* Fix code structure and logic issues

* Fixing small typos

* fix slight data format issue

* Update on trade and order wrapper methods

* Adding slight update

* fix on order detail

* Slight update on FetchTradablePairs wrapper method

* Slight update on wrapper

* Update on deserialization and other slight issues

* Final update

* Resolve missing review comments

* Slight update on config and unit test

* minor fix on GetDepositAddress param

* Minor fix
2022-12-09 11:44:29 +11:00

1035 lines
44 KiB
Go

package okx
import (
"context"
"errors"
"time"
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
"golang.org/x/time/rate"
)
const (
// oneSecondInterval
oneSecondInterval = time.Second
// twoSecondInterval
twoSecondsInterval = 2 * time.Second
// threeSecondInterval
threeSecondsInterval = 3 * time.Second
// fiveSecondsInterval
fiveSecondsInterval = 5 * time.Second
// tenSecondsInterval
tenSecondsInterval = 10 * time.Second
)
// RateLimit implements the request.Limiter interface
type RateLimit struct {
// Trade Endpoints
PlaceOrder *rate.Limiter
PlaceMultipleOrders *rate.Limiter
CancelOrder *rate.Limiter
CancelMultipleOrders *rate.Limiter
AmendOrder *rate.Limiter
AmendMultipleOrders *rate.Limiter
CloseDeposit *rate.Limiter
GetOrderDetails *rate.Limiter
GetOrderList *rate.Limiter
GetOrderHistory7Days *rate.Limiter
GetOrderHistory3Months *rate.Limiter
GetTransactionDetail3Days *rate.Limiter
GetTransactionDetail3Months *rate.Limiter
PlaceAlgoOrder *rate.Limiter
CancelAlgoOrder *rate.Limiter
CancelAdvanceAlgoOrder *rate.Limiter
GetAlgoOrderList *rate.Limiter
GetAlgoOrderHistory *rate.Limiter
GetEasyConvertCurrencyList *rate.Limiter
PlaceEasyConvert *rate.Limiter
GetEasyConvertHistory *rate.Limiter
GetOneClickRepayHistory *rate.Limiter
OneClickRepayCurrencyList *rate.Limiter
TradeOneClickRepay *rate.Limiter
// Block Trading endpoints
GetCounterparties *rate.Limiter
CreateRfq *rate.Limiter
CancelRfq *rate.Limiter
CancelMultipleRfq *rate.Limiter
CancelAllRfqs *rate.Limiter
ExecuteQuote *rate.Limiter
SetQuoteProducts *rate.Limiter
RestMMPStatus *rate.Limiter
CreateQuote *rate.Limiter
CancelQuote *rate.Limiter
CancelMultipleQuotes *rate.Limiter
CancelAllQuotes *rate.Limiter
GetRfqs *rate.Limiter
GetQuotes *rate.Limiter
GetTrades *rate.Limiter
GetTradesHistory *rate.Limiter
GetPublicTrades *rate.Limiter
// Funding
GetCurrencies *rate.Limiter
GetBalance *rate.Limiter
GetAccountAssetValuation *rate.Limiter
FundsTransfer *rate.Limiter
GetFundsTransferState *rate.Limiter
AssetBillsDetails *rate.Limiter
LightningDeposits *rate.Limiter
GetDepositAddress *rate.Limiter
GetDepositHistory *rate.Limiter
Withdrawal *rate.Limiter
LightningWithdrawals *rate.Limiter
CancelWithdrawal *rate.Limiter
GetWithdrawalHistory *rate.Limiter
SmallAssetsConvert *rate.Limiter
GetSavingBalance *rate.Limiter
SavingsPurchaseRedemp *rate.Limiter
SetLendingRate *rate.Limiter
GetLendingHistory *rate.Limiter
GetPublicBorrowInfo *rate.Limiter
// Convert
GetConvertCurrencies *rate.Limiter
GetConvertCurrencyPair *rate.Limiter
EstimateQuote *rate.Limiter
ConvertTrade *rate.Limiter
GetConvertHistory *rate.Limiter
// Account
GetAccountBalance *rate.Limiter
GetPositions *rate.Limiter
GetPositionsHistory *rate.Limiter
GetAccountAndPositionRisk *rate.Limiter
GetBillsDetails *rate.Limiter
GetAccountConfiguration *rate.Limiter
SetPositionMode *rate.Limiter
SetLeverage *rate.Limiter
GetMaximumBuyOrSellAmount *rate.Limiter
GetMaximumAvailableTradableAmount *rate.Limiter
IncreaseOrDecreaseMargin *rate.Limiter
GetLeverage *rate.Limiter
GetTheMaximumLoanOfInstrument *rate.Limiter
GetFeeRates *rate.Limiter
GetInterestAccruedData *rate.Limiter
GetInterestRate *rate.Limiter
SetGreeks *rate.Limiter
IsolatedMarginTradingSettings *rate.Limiter
GetMaximumWithdrawals *rate.Limiter
GetAccountRiskState *rate.Limiter
VipLoansBorrowAnsRepay *rate.Limiter
GetBorrowAnsRepayHistoryHistory *rate.Limiter
GetBorrowInterestAndLimit *rate.Limiter
PositionBuilder *rate.Limiter
GetGreeks *rate.Limiter
GetPMLimitation *rate.Limiter
// Sub Account Endpoints
ViewSubaccountList *rate.Limiter
ResetSubAccountAPIKey *rate.Limiter
GetSubaccountTradingBalance *rate.Limiter
GetSubaccountFundingBalance *rate.Limiter
HistoryOfSubaccountTransfer *rate.Limiter
MasterAccountsManageTransfersBetweenSubaccount *rate.Limiter
SetPermissionOfTransferOut *rate.Limiter
GetCustodyTradingSubaccountList *rate.Limiter
GridTrading *rate.Limiter
AmendGridAlgoOrder *rate.Limiter
StopGridAlgoOrder *rate.Limiter
GetGridAlgoOrderList *rate.Limiter
GetGridAlgoOrderHistory *rate.Limiter
GetGridAlgoOrderDetails *rate.Limiter
GetGridAlgoSubOrders *rate.Limiter
GetGridAlgoOrderPositions *rate.Limiter
SpotGridWithdrawIncome *rate.Limiter
ComputeMarginBalance *rate.Limiter
AdjustMarginBalance *rate.Limiter
GetGridAIParameter *rate.Limiter
// Earn
GetOffer *rate.Limiter
Purchase *rate.Limiter
Redeem *rate.Limiter
CancelPurchaseOrRedemption *rate.Limiter
GetEarnActiveOrders *rate.Limiter
GetFundingOrderHistory *rate.Limiter
// Market Data
GetTickers *rate.Limiter
GetIndexTickers *rate.Limiter
GetOrderBook *rate.Limiter
GetCandlesticks *rate.Limiter
GetCandlesticksHistory *rate.Limiter
GetIndexCandlesticks *rate.Limiter
GetMarkPriceCandlesticks *rate.Limiter
GetTradesRequest *rate.Limiter
Get24HTotalVolume *rate.Limiter
GetOracle *rate.Limiter
GetExchangeRateRequest *rate.Limiter
GetIndexComponents *rate.Limiter
GetBlockTickers *rate.Limiter
GetBlockTrades *rate.Limiter
// Public Data Endpoints
GetInstruments *rate.Limiter
GetDeliveryExerciseHistory *rate.Limiter
GetOpenInterest *rate.Limiter
GetFunding *rate.Limiter
GetFundingRateHistory *rate.Limiter
GetLimitPrice *rate.Limiter
GetOptionMarketDate *rate.Limiter
GetEstimatedDeliveryExercisePrice *rate.Limiter
GetDiscountRateAndInterestFreeQuota *rate.Limiter
GetSystemTime *rate.Limiter
GetLiquidationOrders *rate.Limiter
GetMarkPrice *rate.Limiter
GetPositionTiers *rate.Limiter
GetInterestRateAndLoanQuota *rate.Limiter
GetInterestRateAndLoanQuoteForVIPLoans *rate.Limiter
GetUnderlying *rate.Limiter
GetInsuranceFund *rate.Limiter
UnitConvert *rate.Limiter
// Trading Data Endpoints
GetSupportCoin *rate.Limiter
GetTakerVolume *rate.Limiter
GetMarginLendingRatio *rate.Limiter
GetLongShortRatio *rate.Limiter
GetContractsOpenInterestAndVolume *rate.Limiter
GetOptionsOpenInterestAndVolume *rate.Limiter
GetPutCallRatio *rate.Limiter
GetOpenInterestAndVolume *rate.Limiter
GetTakerFlow *rate.Limiter
// Status Endpoints
GetEventStatus *rate.Limiter
}
const (
// Trade Endpoints
placeOrderRate = 60
placeMultipleOrdersRate = 300
cancelOrderRate = 60
cancelMultipleOrdersRate = 300
amendOrderRate = 60
amendMultipleOrdersRate = 300
closeDepositions = 20
getOrderDetails = 60
getOrderListRate = 60
getOrderHistory7DaysRate = 40
getOrderHistory3MonthsRate = 20
getTransactionDetail3DaysRate = 60
getTransactionDetail3MonthsRate = 10
placeAlgoOrderRate = 20
cancelAlgoOrderRate = 20
cancelAdvanceAlgoOrderRate = 20
getAlgoOrderListRate = 20
getAlgoOrderHistoryRate = 20
getEasyConvertCurrencyListRate = 1
placeEasyConvert = 1
getEasyConvertHistory = 1
oneClickRepayCurrencyList = 1
tradeOneClickRepay = 1
getOneClickRepayHistory = 1
// Block Trading endpoints
getCounterpartiesRate = 5
createRfqRate = 5
cancelRfqRate = 5
cancelMultipleRfqRate = 2
cancelAllRfqsRate = 2
executeQuoteRate = 2
setQuoteProducts = 5
restMMPStatus = 5
createQuoteRate = 50
cancelQuoteRate = 50
cancelMultipleQuotesRate = 2
cancelAllQuotes = 2
getRfqsRate = 2
getQuotesRate = 2
getTradesRate = 5
getTradesHistoryRate = 10
getPublicTradesRate = 5
// Funding
getCurrenciesRate = 6
getBalanceRate = 6
getAccountAssetValuationRate = 1
fundsTransferRate = 1
getFundsTransferStateRate = 1
assetBillsDetailsRate = 6
lightningDepositsRate = 2
getDepositAddressRate = 6
getDepositHistoryRate = 6
withdrawalRate = 6
lightningWithdrawalsRate = 2
cancelWithdrawalRate = 6
getWithdrawalHistoryRate = 6
smallAssetsConvertRate = 1
getSavingBalanceRate = 6
savingsPurchaseRedemption = 6
setLendingRateRate = 6
getLendingHistoryRate = 6
getPublicBorrowInfoRate = 6
// Convert
getConvertCurrenciesRate = 6
getConvertCurrencyPairRate = 6
estimateQuoteRate = 10
convertTradeRate = 10
getConvertHistoryRate = 6
// Account
getAccountBalanceRate = 10
getPositionsRate = 10
getPositionsHistoryRate = 1
getAccountAndPositionRiskRate = 10
getBillsDetailsRate = 6
getAccountConfigurationRate = 5
setPositionModeRate = 5
setLeverageRate = 20
getMaximumBuyOrSellAmountRate = 20
getMaximumAvailableTradableAmountRate = 20
increaseOrDecreaseMarginRate = 20
getLeverageRate = 20
getTheMaximumLoanOfInstrumentRate = 20
getFeeRatesRate = 5
getInterestAccruedDataRate = 5
getInterestRateRate = 5
setGreeksRate = 5
isolatedMarginTradingSettingsRate = 5
getMaximumWithdrawalsRate = 20
getAccountRiskStateRate = 10
vipLoansBorrowAndRepayRate = 6
getBorrowAnsRepayHistoryHistoryRate = 5
getBorrowInterestAndLimitRate = 5
positionBuilderRate = 2
getGreeksRate = 10
getPMLimitation = 10
// Sub Account Endpoints
viewSubaccountListRate = 2
resetSubAccountAPIKey = 1
getSubaccountTradingBalanceRate = 2
getSubaccountFundingBalanceRate = 2
historyOfSubaccountTransferRate = 6
masterAccountsManageTransfersBetweenSubaccountRate = 1
setPermissionOfTransferOutRate = 1
getCustodyTradingSubaccountListRate = 1
gridTradingRate = 20
amendGridAlgoOrderRate = 20
stopGridAlgoOrderRate = 20
getGridAlgoOrderListRate = 20
getGridAlgoOrderHistoryRate = 20
getGridAlgoOrderDetailsRate = 20
getGridAlgoSubOrdersRate = 20
getGridAlgoOrderPositionsRate = 20
spotGridWithdrawIncomeRate = 20
computeMarginBalance = 20
adjustMarginBalance = 20
getGridAIParameter = 20
// Earn
getOffer = 3
purchase = 2
redeem = 2
cancelPurchaseOrRedemption = 2
getEarnActiveOrders = 3
getFundingOrderHistory = 3
// Market Data
getTickersRate = 20
getIndexTickersRate = 20
getOrderBookRate = 20
getCandlesticksRate = 40
getCandlesticksHistoryRate = 20
getIndexCandlesticksRate = 20
getMarkPriceCandlesticksRate = 20
getTradesRequestRate = 100
get24HTotalVolumeRate = 2
getOracleRate = 1
getExchangeRateRequestRate = 1
getIndexComponentsRate = 20
getBlockTickersRate = 20
getBlockTradesRate = 20
// Public Data Endpoints
getInstrumentsRate = 20
getDeliveryExerciseHistoryRate = 40
getOpenInterestRate = 20
getFundingRate = 20
getFundingRateHistoryRate = 20
getLimitPriceRate = 20
getOptionMarketDateRate = 20
getEstimatedDeliveryExercisePriceRate = 10
getDiscountRateAndInterestFreeQuotaRate = 2
getSystemTimeRate = 10
getLiquidationOrdersRate = 40
getMarkPriceRate = 10
getPositionTiersRate = 10
getInterestRateAndLoanQuotaRate = 2
getInterestRateAndLoanQuoteForVIPLoansRate = 2
getUnderlyingRate = 20
getInsuranceFundRate = 10
unitConvertRate = 10
// Trading Data Endpoints
getSupportCoinRate = 5
getTakerVolumeRate = 5
getMarginLendingRatioRate = 5
getLongShortRatioRate = 5
getContractsOpenInterestAndVolumeRate = 5
getOptionsOpenInterestAndVolumeRate = 5
getPutCallRatioRate = 5
getOpenInterestAndVolumeRate = 5
getTakerFlowRate = 5
// Status Endpoints
getEventStatusRate = 1
)
const (
placeOrderEPL request.EndpointLimit = iota
placeMultipleOrdersEPL
cancelOrderEPL
cancelMultipleOrdersEPL
amendOrderEPL
amendMultipleOrdersEPL
closePositionEPL
getOrderDetEPL
getOrderListEPL
getOrderHistory7DaysEPL
getOrderHistory3MonthsEPL
getTransactionDetail3DaysEPL
getTransactionDetail3MonthsEPL
placeAlgoOrderEPL
cancelAlgoOrderEPL
cancelAdvanceAlgoOrderEPL
getAlgoOrderListEPL
getAlgoOrderHistoryEPL
getEasyConvertCurrencyListEPL
placeEasyConvertEPL
getEasyConvertHistoryEPL
getOneClickRepayHistoryEPL
oneClickRepayCurrencyListEPL
tradeOneClickRepayEPL
getCounterpartiesEPL
createRfqEPL
cancelRfqEPL
cancelMultipleRfqEPL
cancelAllRfqsEPL
executeQuoteEPL
setQuoteProductsEPL
restMMPStatusEPL
createQuoteEPL
cancelQuoteEPL
cancelMultipleQuotesEPL
cancelAllQuotesEPL
getRfqsEPL
getQuotesEPL
getTradesEPL
getTradesHistoryEPL
getPublicTradesEPL
getCurrenciesEPL
getBalanceEPL
getAccountAssetValuationEPL
fundsTransferEPL
getFundsTransferStateEPL
assetBillsDetailsEPL
lightningDepositsEPL
getDepositAddressEPL
getDepositHistoryEPL
withdrawalEPL
lightningWithdrawalsEPL
cancelWithdrawalEPL
getWithdrawalHistoryEPL
smallAssetsConvertEPL
getSavingBalanceEPL
savingsPurchaseRedemptionEPL
setLendingRateEPL
getLendingHistoryEPL
getPublicBorrowInfoEPL
getConvertCurrenciesEPL
getConvertCurrencyPairEPL
estimateQuoteEPL
convertTradeEPL
getConvertHistoryEPL
getAccountBalanceEPL
getPositionsEPL
getPositionsHistoryEPL
getAccountAndPositionRiskEPL
getBillsDetailsEPL
getAccountConfigurationEPL
setPositionModeEPL
setLeverageEPL
getMaximumBuyOrSellAmountEPL
getMaximumAvailableTradableAmountEPL
increaseOrDecreaseMarginEPL
getLeverageEPL
getTheMaximumLoanOfInstrumentEPL
getFeeRatesEPL
getInterestAccruedDataEPL
getInterestRateEPL
setGreeksEPL
isolatedMarginTradingSettingsEPL
getMaximumWithdrawalsEPL
getAccountRiskStateEPL
vipLoansBorrowAnsRepayEPL
getBorrowAnsRepayHistoryHistoryEPL
getBorrowInterestAndLimitEPL
positionBuilderEPL
getGreeksEPL
getPMLimitationEPL
viewSubaccountListEPL
resetSubAccountAPIKeyEPL
getSubaccountTradingBalanceEPL
getSubaccountFundingBalanceEPL
historyOfSubaccountTransferEPL
masterAccountsManageTransfersBetweenSubaccountEPL
setPermissionOfTransferOutEPL
getCustodyTradingSubaccountListEPL
gridTradingEPL
amendGridAlgoOrderEPL
stopGridAlgoOrderEPL
getGridAlgoOrderListEPL
getGridAlgoOrderHistoryEPL
getGridAlgoOrderDetailsEPL
getGridAlgoSubOrdersEPL
getGridAlgoOrderPositionsEPL
spotGridWithdrawIncomeEPL
computeMarginBalanceEPL
adjustMarginBalanceEPL
getGridAIParameterEPL
getOfferEPL
purchaseEPL
redeemEPL
cancelPurchaseOrRedemptionEPL
getEarnActiveOrdersEPL
getFundingOrderHistoryEPL
getTickersEPL
getIndexTickersEPL
getOrderBookEPL
getCandlesticksEPL
getTradesRequestEPL
get24HTotalVolumeEPL
getOracleEPL
getExchangeRateRequestEPL
getIndexComponentsEPL
getBlockTickersEPL
getBlockTradesEPL
getInstrumentsEPL
getDeliveryExerciseHistoryEPL
getOpenInterestEPL
getFundingEPL
getFundingRateHistoryEPL
getLimitPriceEPL
getOptionMarketDateEPL
getEstimatedDeliveryPriceEPL
getDiscountRateAndInterestFreeQuotaEPL
getSystemTimeEPL
getLiquidationOrdersEPL
getMarkPriceEPL
getPositionTiersEPL
getInterestRateAndLoanQuotaEPL
getInterestRateAndLoanQuoteForVIPLoansEPL
getUnderlyingEPL
getInsuranceFundEPL
unitConvertEPL
getSupportCoinEPL
getTakerVolumeEPL
getMarginLendingRatioEPL
getLongShortRatioEPL
getContractsOpenInterestAndVolumeEPL
getOptionsOpenInterestAndVolumeEPL
getPutCallRatioEPL
getOpenInterestAndVolumeEPL
getTakerFlowEPL
getEventStatusEPL
)
// Limit executes rate limiting for Okx exchange given the context and EndpointLimit
func (r *RateLimit) Limit(ctx context.Context, f request.EndpointLimit) error {
switch f {
case placeOrderEPL:
return r.PlaceOrder.Wait(ctx)
case placeMultipleOrdersEPL:
return r.PlaceMultipleOrders.Wait(ctx)
case cancelOrderEPL:
return r.CancelOrder.Wait(ctx)
case cancelMultipleOrdersEPL:
return r.CancelMultipleOrders.Wait(ctx)
case amendOrderEPL:
return r.AmendOrder.Wait(ctx)
case amendMultipleOrdersEPL:
return r.AmendMultipleOrders.Wait(ctx)
case closePositionEPL:
return r.CloseDeposit.Wait(ctx)
case getOrderDetEPL:
return r.GetOrderDetails.Wait(ctx)
case getOrderListEPL:
return r.GetOrderList.Wait(ctx)
case getOrderHistory7DaysEPL:
return r.GetOrderHistory7Days.Wait(ctx)
case getOrderHistory3MonthsEPL:
return r.GetOrderHistory3Months.Wait(ctx)
case getTransactionDetail3DaysEPL:
return r.GetTransactionDetail3Days.Wait(ctx)
case getTransactionDetail3MonthsEPL:
return r.GetTransactionDetail3Months.Wait(ctx)
case placeAlgoOrderEPL:
return r.PlaceAlgoOrder.Wait(ctx)
case cancelAlgoOrderEPL:
return r.CancelAlgoOrder.Wait(ctx)
case cancelAdvanceAlgoOrderEPL:
return r.CancelAdvanceAlgoOrder.Wait(ctx)
case getAlgoOrderListEPL:
return r.GetAlgoOrderList.Wait(ctx)
case getAlgoOrderHistoryEPL:
return r.GetAlgoOrderHistory.Wait(ctx)
case getEasyConvertCurrencyListEPL:
return r.GetEasyConvertCurrencyList.Wait(ctx)
case placeEasyConvertEPL:
return r.PlaceEasyConvert.Wait(ctx)
case getEasyConvertHistoryEPL:
return r.GetEasyConvertHistory.Wait(ctx)
case getOneClickRepayHistoryEPL:
return r.GetOneClickRepayHistory.Wait(ctx)
case oneClickRepayCurrencyListEPL:
return r.OneClickRepayCurrencyList.Wait(ctx)
case tradeOneClickRepayEPL:
return r.TradeOneClickRepay.Wait(ctx)
case getCounterpartiesEPL:
return r.GetCounterparties.Wait(ctx)
case createRfqEPL:
return r.CreateRfq.Wait(ctx)
case cancelRfqEPL:
return r.CancelRfq.Wait(ctx)
case cancelMultipleRfqEPL:
return r.CancelMultipleRfq.Wait(ctx)
case cancelAllRfqsEPL:
return r.CancelAllRfqs.Wait(ctx)
case executeQuoteEPL:
return r.ExecuteQuote.Wait(ctx)
case setQuoteProductsEPL:
return r.SetQuoteProducts.Wait(ctx)
case restMMPStatusEPL:
return r.RestMMPStatus.Wait(ctx)
case createQuoteEPL:
return r.CreateQuote.Wait(ctx)
case cancelQuoteEPL:
return r.CancelQuote.Wait(ctx)
case cancelMultipleQuotesEPL:
return r.CancelMultipleQuotes.Wait(ctx)
case cancelAllQuotesEPL:
return r.CancelAllQuotes.Wait(ctx)
case getRfqsEPL:
return r.GetRfqs.Wait(ctx)
case getQuotesEPL:
return r.GetQuotes.Wait(ctx)
case getTradesEPL:
return r.GetTrades.Wait(ctx)
case getTradesHistoryEPL:
return r.GetTradesHistory.Wait(ctx)
case getPublicTradesEPL:
return r.GetPublicTrades.Wait(ctx)
case getCurrenciesEPL:
return r.GetCurrencies.Wait(ctx)
case getBalanceEPL:
return r.GetBalance.Wait(ctx)
case getAccountAssetValuationEPL:
return r.GetAccountAssetValuation.Wait(ctx)
case fundsTransferEPL:
return r.FundsTransfer.Wait(ctx)
case getFundsTransferStateEPL:
return r.GetFundsTransferState.Wait(ctx)
case assetBillsDetailsEPL:
return r.AssetBillsDetails.Wait(ctx)
case lightningDepositsEPL:
return r.LightningDeposits.Wait(ctx)
case getDepositAddressEPL:
return r.GetDepositAddress.Wait(ctx)
case getDepositHistoryEPL:
return r.GetDepositHistory.Wait(ctx)
case withdrawalEPL:
return r.Withdrawal.Wait(ctx)
case lightningWithdrawalsEPL:
return r.LightningWithdrawals.Wait(ctx)
case cancelWithdrawalEPL:
return r.CancelWithdrawal.Wait(ctx)
case getWithdrawalHistoryEPL:
return r.GetWithdrawalHistory.Wait(ctx)
case smallAssetsConvertEPL:
return r.SmallAssetsConvert.Wait(ctx)
case getSavingBalanceEPL:
return r.GetSavingBalance.Wait(ctx)
case savingsPurchaseRedemptionEPL:
return r.SavingsPurchaseRedemp.Wait(ctx)
case setLendingRateEPL:
return r.SetLendingRate.Wait(ctx)
case getLendingHistoryEPL:
return r.GetLendingHistory.Wait(ctx)
case getPublicBorrowInfoEPL:
return r.GetPublicBorrowInfo.Wait(ctx)
case getConvertCurrenciesEPL:
return r.GetConvertCurrencies.Wait(ctx)
case getConvertCurrencyPairEPL:
return r.GetConvertCurrencyPair.Wait(ctx)
case estimateQuoteEPL:
return r.EstimateQuote.Wait(ctx)
case convertTradeEPL:
return r.ConvertTrade.Wait(ctx)
case getConvertHistoryEPL:
return r.GetConvertHistory.Wait(ctx)
case getAccountBalanceEPL:
return r.GetAccountBalance.Wait(ctx)
case getPositionsEPL:
return r.GetPositions.Wait(ctx)
case getPositionsHistoryEPL:
return r.GetPositionsHistory.Wait(ctx)
case getAccountAndPositionRiskEPL:
return r.GetAccountAndPositionRisk.Wait(ctx)
case getBillsDetailsEPL:
return r.GetBillsDetails.Wait(ctx)
case getAccountConfigurationEPL:
return r.GetAccountConfiguration.Wait(ctx)
case setPositionModeEPL:
return r.SetPositionMode.Wait(ctx)
case setLeverageEPL:
return r.SetLeverage.Wait(ctx)
case getMaximumBuyOrSellAmountEPL:
return r.GetMaximumBuyOrSellAmount.Wait(ctx)
case getMaximumAvailableTradableAmountEPL:
return r.GetMaximumAvailableTradableAmount.Wait(ctx)
case increaseOrDecreaseMarginEPL:
return r.IncreaseOrDecreaseMargin.Wait(ctx)
case getLeverageEPL:
return r.GetLeverage.Wait(ctx)
case getTheMaximumLoanOfInstrumentEPL:
return r.GetTheMaximumLoanOfInstrument.Wait(ctx)
case getFeeRatesEPL:
return r.GetFeeRates.Wait(ctx)
case getInterestAccruedDataEPL:
return r.GetInterestAccruedData.Wait(ctx)
case getInterestRateEPL:
return r.GetInterestRate.Wait(ctx)
case setGreeksEPL:
return r.SetGreeks.Wait(ctx)
case isolatedMarginTradingSettingsEPL:
return r.IsolatedMarginTradingSettings.Wait(ctx)
case getMaximumWithdrawalsEPL:
return r.GetMaximumWithdrawals.Wait(ctx)
case getAccountRiskStateEPL:
return r.GetAccountRiskState.Wait(ctx)
case vipLoansBorrowAnsRepayEPL:
return r.VipLoansBorrowAnsRepay.Wait(ctx)
case getBorrowAnsRepayHistoryHistoryEPL:
return r.GetBorrowAnsRepayHistoryHistory.Wait(ctx)
case getBorrowInterestAndLimitEPL:
return r.GetBorrowInterestAndLimit.Wait(ctx)
case positionBuilderEPL:
return r.PositionBuilder.Wait(ctx)
case getGreeksEPL:
return r.GetGreeks.Wait(ctx)
case getPMLimitationEPL:
return r.GetPMLimitation.Wait(ctx)
case viewSubaccountListEPL:
return r.ViewSubaccountList.Wait(ctx)
case resetSubAccountAPIKeyEPL:
return r.ResetSubAccountAPIKey.Wait(ctx)
case getSubaccountTradingBalanceEPL:
return r.GetSubaccountTradingBalance.Wait(ctx)
case getSubaccountFundingBalanceEPL:
return r.GetSubaccountFundingBalance.Wait(ctx)
case historyOfSubaccountTransferEPL:
return r.HistoryOfSubaccountTransfer.Wait(ctx)
case masterAccountsManageTransfersBetweenSubaccountEPL:
return r.MasterAccountsManageTransfersBetweenSubaccount.Wait(ctx)
case setPermissionOfTransferOutEPL:
return r.SetPermissionOfTransferOut.Wait(ctx)
case getCustodyTradingSubaccountListEPL:
return r.GetCustodyTradingSubaccountList.Wait(ctx)
case gridTradingEPL:
return r.GridTrading.Wait(ctx)
case amendGridAlgoOrderEPL:
return r.AmendGridAlgoOrder.Wait(ctx)
case stopGridAlgoOrderEPL:
return r.StopGridAlgoOrder.Wait(ctx)
case getGridAlgoOrderListEPL:
return r.GetGridAlgoOrderList.Wait(ctx)
case getGridAlgoOrderHistoryEPL:
return r.GetGridAlgoOrderHistory.Wait(ctx)
case getGridAlgoOrderDetailsEPL:
return r.GetGridAlgoOrderDetails.Wait(ctx)
case getGridAlgoSubOrdersEPL:
return r.GetGridAlgoSubOrders.Wait(ctx)
case getGridAlgoOrderPositionsEPL:
return r.GetGridAlgoOrderPositions.Wait(ctx)
case spotGridWithdrawIncomeEPL:
return r.SpotGridWithdrawIncome.Wait(ctx)
case computeMarginBalanceEPL:
return r.ComputeMarginBalance.Wait(ctx)
case adjustMarginBalanceEPL:
return r.AdjustMarginBalance.Wait(ctx)
case getGridAIParameterEPL:
return r.GetGridAIParameter.Wait(ctx)
case getOfferEPL:
return r.GetOffer.Wait(ctx)
case purchaseEPL:
return r.Purchase.Wait(ctx)
case redeemEPL:
return r.Redeem.Wait(ctx)
case cancelPurchaseOrRedemptionEPL:
return r.CancelPurchaseOrRedemption.Wait(ctx)
case getEarnActiveOrdersEPL:
return r.GetEarnActiveOrders.Wait(ctx)
case getFundingOrderHistoryEPL:
return r.GetFundingOrderHistory.Wait(ctx)
case getTickersEPL:
return r.GetTickers.Wait(ctx)
case getIndexTickersEPL:
return r.GetIndexTickers.Wait(ctx)
case getOrderBookEPL:
return r.GetOrderBook.Wait(ctx)
case getCandlesticksEPL:
return r.GetCandlesticks.Wait(ctx)
case getTradesRequestEPL:
return r.GetTradesRequest.Wait(ctx)
case get24HTotalVolumeEPL:
return r.Get24HTotalVolume.Wait(ctx)
case getOracleEPL:
return r.GetOracle.Wait(ctx)
case getExchangeRateRequestEPL:
return r.GetExchangeRateRequest.Wait(ctx)
case getIndexComponentsEPL:
return r.GetIndexComponents.Wait(ctx)
case getBlockTickersEPL:
return r.GetBlockTickers.Wait(ctx)
case getBlockTradesEPL:
return r.GetBlockTrades.Wait(ctx)
case getInstrumentsEPL:
return r.GetInstruments.Wait(ctx)
case getDeliveryExerciseHistoryEPL:
return r.GetDeliveryExerciseHistory.Wait(ctx)
case getOpenInterestEPL:
return r.GetOpenInterest.Wait(ctx)
case getFundingEPL:
return r.GetFunding.Wait(ctx)
case getFundingRateHistoryEPL:
return r.GetFundingRateHistory.Wait(ctx)
case getLimitPriceEPL:
return r.GetLimitPrice.Wait(ctx)
case getOptionMarketDateEPL:
return r.GetOptionMarketDate.Wait(ctx)
case getEstimatedDeliveryPriceEPL:
return r.GetEstimatedDeliveryExercisePrice.Wait(ctx)
case getDiscountRateAndInterestFreeQuotaEPL:
return r.GetDiscountRateAndInterestFreeQuota.Wait(ctx)
case getSystemTimeEPL:
return r.GetSystemTime.Wait(ctx)
case getLiquidationOrdersEPL:
return r.GetLiquidationOrders.Wait(ctx)
case getMarkPriceEPL:
return r.GetMarkPrice.Wait(ctx)
case getPositionTiersEPL:
return r.GetPositionTiers.Wait(ctx)
case getInterestRateAndLoanQuotaEPL:
return r.GetInterestRateAndLoanQuota.Wait(ctx)
case getInterestRateAndLoanQuoteForVIPLoansEPL:
return r.GetInterestRateAndLoanQuoteForVIPLoans.Wait(ctx)
case getUnderlyingEPL:
return r.GetUnderlying.Wait(ctx)
case getInsuranceFundEPL:
return r.GetInsuranceFund.Wait(ctx)
case unitConvertEPL:
return r.UnitConvert.Wait(ctx)
case getSupportCoinEPL:
return r.GetSupportCoin.Wait(ctx)
case getTakerVolumeEPL:
return r.GetTakerVolume.Wait(ctx)
case getMarginLendingRatioEPL:
return r.GetMarginLendingRatio.Wait(ctx)
case getLongShortRatioEPL:
return r.GetLongShortRatio.Wait(ctx)
case getContractsOpenInterestAndVolumeEPL:
return r.GetContractsOpenInterestAndVolume.Wait(ctx)
case getOptionsOpenInterestAndVolumeEPL:
return r.GetOptionsOpenInterestAndVolume.Wait(ctx)
case getPutCallRatioEPL:
return r.GetPutCallRatio.Wait(ctx)
case getOpenInterestAndVolumeEPL:
return r.GetOpenInterestAndVolume.Wait(ctx)
case getTakerFlowEPL:
return r.GetTakerFlow.Wait(ctx)
case getEventStatusEPL:
return r.GetEventStatus.Wait(ctx)
default:
return errors.New("endpoint rate limit functionality not found")
}
}
// SetRateLimit returns a RateLimit instance, which implements the request.Limiter interface.
func SetRateLimit() *RateLimit {
return &RateLimit{
// Trade Endpoints
PlaceOrder: request.NewRateLimit(twoSecondsInterval, placeOrderRate),
PlaceMultipleOrders: request.NewRateLimit(twoSecondsInterval, placeMultipleOrdersRate),
CancelOrder: request.NewRateLimit(twoSecondsInterval, cancelOrderRate),
CancelMultipleOrders: request.NewRateLimit(twoSecondsInterval, cancelMultipleOrdersRate),
AmendOrder: request.NewRateLimit(twoSecondsInterval, amendOrderRate),
AmendMultipleOrders: request.NewRateLimit(twoSecondsInterval, amendMultipleOrdersRate),
CloseDeposit: request.NewRateLimit(twoSecondsInterval, closeDepositions),
GetOrderDetails: request.NewRateLimit(twoSecondsInterval, getOrderDetails),
GetOrderList: request.NewRateLimit(twoSecondsInterval, getOrderListRate),
GetOrderHistory7Days: request.NewRateLimit(twoSecondsInterval, getOrderHistory7DaysRate),
GetOrderHistory3Months: request.NewRateLimit(twoSecondsInterval, getOrderHistory3MonthsRate),
GetTransactionDetail3Days: request.NewRateLimit(twoSecondsInterval, getTransactionDetail3DaysRate),
GetTransactionDetail3Months: request.NewRateLimit(twoSecondsInterval, getTransactionDetail3MonthsRate),
PlaceAlgoOrder: request.NewRateLimit(twoSecondsInterval, placeAlgoOrderRate),
CancelAlgoOrder: request.NewRateLimit(twoSecondsInterval, cancelAlgoOrderRate),
CancelAdvanceAlgoOrder: request.NewRateLimit(twoSecondsInterval, cancelAdvanceAlgoOrderRate),
GetAlgoOrderList: request.NewRateLimit(twoSecondsInterval, getAlgoOrderListRate),
GetAlgoOrderHistory: request.NewRateLimit(twoSecondsInterval, getAlgoOrderHistoryRate),
GetEasyConvertCurrencyList: request.NewRateLimit(twoSecondsInterval, getEasyConvertCurrencyListRate),
PlaceEasyConvert: request.NewRateLimit(twoSecondsInterval, placeEasyConvert),
GetEasyConvertHistory: request.NewRateLimit(twoSecondsInterval, getEasyConvertHistory),
GetOneClickRepayHistory: request.NewRateLimit(twoSecondsInterval, getOneClickRepayHistory),
OneClickRepayCurrencyList: request.NewRateLimit(twoSecondsInterval, oneClickRepayCurrencyList),
TradeOneClickRepay: request.NewRateLimit(twoSecondsInterval, tradeOneClickRepay),
// Block Trading endpoints
GetCounterparties: request.NewRateLimit(twoSecondsInterval, getCounterpartiesRate),
CreateRfq: request.NewRateLimit(twoSecondsInterval, createRfqRate),
CancelRfq: request.NewRateLimit(twoSecondsInterval, cancelRfqRate),
CancelMultipleRfq: request.NewRateLimit(twoSecondsInterval, cancelMultipleRfqRate),
CancelAllRfqs: request.NewRateLimit(twoSecondsInterval, cancelAllRfqsRate),
ExecuteQuote: request.NewRateLimit(threeSecondsInterval, executeQuoteRate),
SetQuoteProducts: request.NewRateLimit(twoSecondsInterval, setQuoteProducts),
RestMMPStatus: request.NewRateLimit(twoSecondsInterval, restMMPStatus),
CreateQuote: request.NewRateLimit(twoSecondsInterval, createQuoteRate),
CancelQuote: request.NewRateLimit(twoSecondsInterval, cancelQuoteRate),
CancelMultipleQuotes: request.NewRateLimit(twoSecondsInterval, cancelMultipleQuotesRate),
CancelAllQuotes: request.NewRateLimit(twoSecondsInterval, cancelAllQuotes),
GetRfqs: request.NewRateLimit(twoSecondsInterval, getRfqsRate),
GetQuotes: request.NewRateLimit(twoSecondsInterval, getQuotesRate),
GetTrades: request.NewRateLimit(twoSecondsInterval, getTradesRate),
GetTradesHistory: request.NewRateLimit(twoSecondsInterval, getTradesHistoryRate),
GetPublicTrades: request.NewRateLimit(twoSecondsInterval, getPublicTradesRate),
// Funding
GetCurrencies: request.NewRateLimit(oneSecondInterval, getCurrenciesRate),
GetBalance: request.NewRateLimit(oneSecondInterval, getBalanceRate),
GetAccountAssetValuation: request.NewRateLimit(twoSecondsInterval, getAccountAssetValuationRate),
FundsTransfer: request.NewRateLimit(oneSecondInterval, fundsTransferRate),
GetFundsTransferState: request.NewRateLimit(oneSecondInterval, getFundsTransferStateRate),
AssetBillsDetails: request.NewRateLimit(oneSecondInterval, assetBillsDetailsRate),
LightningDeposits: request.NewRateLimit(oneSecondInterval, lightningDepositsRate),
GetDepositAddress: request.NewRateLimit(oneSecondInterval, getDepositAddressRate),
GetDepositHistory: request.NewRateLimit(oneSecondInterval, getDepositHistoryRate),
Withdrawal: request.NewRateLimit(oneSecondInterval, withdrawalRate),
LightningWithdrawals: request.NewRateLimit(oneSecondInterval, lightningWithdrawalsRate),
CancelWithdrawal: request.NewRateLimit(oneSecondInterval, cancelWithdrawalRate),
GetWithdrawalHistory: request.NewRateLimit(oneSecondInterval, getWithdrawalHistoryRate),
SmallAssetsConvert: request.NewRateLimit(oneSecondInterval, smallAssetsConvertRate),
GetSavingBalance: request.NewRateLimit(oneSecondInterval, getSavingBalanceRate),
SavingsPurchaseRedemp: request.NewRateLimit(oneSecondInterval, savingsPurchaseRedemption),
SetLendingRate: request.NewRateLimit(oneSecondInterval, setLendingRateRate),
GetLendingHistory: request.NewRateLimit(oneSecondInterval, getLendingHistoryRate),
GetPublicBorrowInfo: request.NewRateLimit(oneSecondInterval, getPublicBorrowInfoRate),
// Convert
GetConvertCurrencies: request.NewRateLimit(oneSecondInterval, getConvertCurrenciesRate),
GetConvertCurrencyPair: request.NewRateLimit(oneSecondInterval, getConvertCurrencyPairRate),
EstimateQuote: request.NewRateLimit(oneSecondInterval, estimateQuoteRate),
ConvertTrade: request.NewRateLimit(oneSecondInterval, convertTradeRate),
GetConvertHistory: request.NewRateLimit(oneSecondInterval, getConvertHistoryRate),
// Account
GetAccountBalance: request.NewRateLimit(twoSecondsInterval, getAccountBalanceRate),
GetPositions: request.NewRateLimit(twoSecondsInterval, getPositionsRate),
GetPositionsHistory: request.NewRateLimit(tenSecondsInterval, getPositionsHistoryRate),
GetAccountAndPositionRisk: request.NewRateLimit(twoSecondsInterval, getAccountAndPositionRiskRate),
GetBillsDetails: request.NewRateLimit(oneSecondInterval, getBillsDetailsRate),
GetAccountConfiguration: request.NewRateLimit(twoSecondsInterval, getAccountConfigurationRate),
SetPositionMode: request.NewRateLimit(twoSecondsInterval, setPositionModeRate),
SetLeverage: request.NewRateLimit(twoSecondsInterval, setLeverageRate),
GetMaximumBuyOrSellAmount: request.NewRateLimit(twoSecondsInterval, getMaximumBuyOrSellAmountRate),
GetMaximumAvailableTradableAmount: request.NewRateLimit(twoSecondsInterval, getMaximumAvailableTradableAmountRate),
IncreaseOrDecreaseMargin: request.NewRateLimit(twoSecondsInterval, increaseOrDecreaseMarginRate),
GetLeverage: request.NewRateLimit(twoSecondsInterval, getLeverageRate),
GetTheMaximumLoanOfInstrument: request.NewRateLimit(twoSecondsInterval, getTheMaximumLoanOfInstrumentRate),
GetFeeRates: request.NewRateLimit(twoSecondsInterval, getFeeRatesRate),
GetInterestAccruedData: request.NewRateLimit(twoSecondsInterval, getInterestAccruedDataRate),
GetInterestRate: request.NewRateLimit(twoSecondsInterval, getInterestRateRate),
SetGreeks: request.NewRateLimit(twoSecondsInterval, setGreeksRate),
IsolatedMarginTradingSettings: request.NewRateLimit(twoSecondsInterval, isolatedMarginTradingSettingsRate),
GetMaximumWithdrawals: request.NewRateLimit(twoSecondsInterval, getMaximumWithdrawalsRate),
GetAccountRiskState: request.NewRateLimit(twoSecondsInterval, getAccountRiskStateRate),
VipLoansBorrowAnsRepay: request.NewRateLimit(oneSecondInterval, vipLoansBorrowAndRepayRate),
GetBorrowAnsRepayHistoryHistory: request.NewRateLimit(twoSecondsInterval, getBorrowAnsRepayHistoryHistoryRate),
GetBorrowInterestAndLimit: request.NewRateLimit(twoSecondsInterval, getBorrowInterestAndLimitRate),
PositionBuilder: request.NewRateLimit(twoSecondsInterval, positionBuilderRate),
GetGreeks: request.NewRateLimit(twoSecondsInterval, getGreeksRate),
GetPMLimitation: request.NewRateLimit(twoSecondsInterval, getPMLimitation),
// Sub Account Endpoints
ViewSubaccountList: request.NewRateLimit(twoSecondsInterval, viewSubaccountListRate),
ResetSubAccountAPIKey: request.NewRateLimit(oneSecondInterval, resetSubAccountAPIKey),
GetSubaccountTradingBalance: request.NewRateLimit(twoSecondsInterval, getSubaccountTradingBalanceRate),
GetSubaccountFundingBalance: request.NewRateLimit(twoSecondsInterval, getSubaccountFundingBalanceRate),
HistoryOfSubaccountTransfer: request.NewRateLimit(oneSecondInterval, historyOfSubaccountTransferRate),
MasterAccountsManageTransfersBetweenSubaccount: request.NewRateLimit(oneSecondInterval, masterAccountsManageTransfersBetweenSubaccountRate),
SetPermissionOfTransferOut: request.NewRateLimit(oneSecondInterval, setPermissionOfTransferOutRate),
GetCustodyTradingSubaccountList: request.NewRateLimit(oneSecondInterval, getCustodyTradingSubaccountListRate),
// Grid Trading Endpoints
GridTrading: request.NewRateLimit(twoSecondsInterval, gridTradingRate),
AmendGridAlgoOrder: request.NewRateLimit(twoSecondsInterval, amendGridAlgoOrderRate),
StopGridAlgoOrder: request.NewRateLimit(twoSecondsInterval, stopGridAlgoOrderRate),
GetGridAlgoOrderList: request.NewRateLimit(twoSecondsInterval, getGridAlgoOrderListRate),
GetGridAlgoOrderHistory: request.NewRateLimit(twoSecondsInterval, getGridAlgoOrderHistoryRate),
GetGridAlgoOrderDetails: request.NewRateLimit(twoSecondsInterval, getGridAlgoOrderDetailsRate),
GetGridAlgoSubOrders: request.NewRateLimit(twoSecondsInterval, getGridAlgoSubOrdersRate),
GetGridAlgoOrderPositions: request.NewRateLimit(twoSecondsInterval, getGridAlgoOrderPositionsRate),
SpotGridWithdrawIncome: request.NewRateLimit(twoSecondsInterval, spotGridWithdrawIncomeRate),
ComputeMarginBalance: request.NewRateLimit(twoSecondsInterval, computeMarginBalance),
AdjustMarginBalance: request.NewRateLimit(twoSecondsInterval, adjustMarginBalance),
GetGridAIParameter: request.NewRateLimit(twoSecondsInterval, getGridAIParameter),
// Earn
GetOffer: request.NewRateLimit(oneSecondInterval, getOffer),
Purchase: request.NewRateLimit(oneSecondInterval, purchase),
Redeem: request.NewRateLimit(oneSecondInterval, redeem),
CancelPurchaseOrRedemption: request.NewRateLimit(oneSecondInterval, cancelPurchaseOrRedemption),
GetEarnActiveOrders: request.NewRateLimit(oneSecondInterval, getEarnActiveOrders),
GetFundingOrderHistory: request.NewRateLimit(oneSecondInterval, getFundingOrderHistory),
// Market Data
GetTickers: request.NewRateLimit(twoSecondsInterval, getTickersRate),
GetIndexTickers: request.NewRateLimit(twoSecondsInterval, getIndexTickersRate),
GetOrderBook: request.NewRateLimit(twoSecondsInterval, getOrderBookRate),
GetCandlesticks: request.NewRateLimit(twoSecondsInterval, getCandlesticksRate),
GetCandlesticksHistory: request.NewRateLimit(twoSecondsInterval, getCandlesticksHistoryRate),
GetIndexCandlesticks: request.NewRateLimit(twoSecondsInterval, getIndexCandlesticksRate),
GetMarkPriceCandlesticks: request.NewRateLimit(twoSecondsInterval, getMarkPriceCandlesticksRate),
GetTradesRequest: request.NewRateLimit(twoSecondsInterval, getTradesRequestRate),
Get24HTotalVolume: request.NewRateLimit(twoSecondsInterval, get24HTotalVolumeRate),
GetOracle: request.NewRateLimit(fiveSecondsInterval, getOracleRate),
GetExchangeRateRequest: request.NewRateLimit(twoSecondsInterval, getExchangeRateRequestRate),
GetIndexComponents: request.NewRateLimit(twoSecondsInterval, getIndexComponentsRate),
GetBlockTickers: request.NewRateLimit(twoSecondsInterval, getBlockTickersRate),
GetBlockTrades: request.NewRateLimit(twoSecondsInterval, getBlockTradesRate),
// Public Data Endpoints
GetInstruments: request.NewRateLimit(twoSecondsInterval, getInstrumentsRate),
GetDeliveryExerciseHistory: request.NewRateLimit(twoSecondsInterval, getDeliveryExerciseHistoryRate),
GetOpenInterest: request.NewRateLimit(twoSecondsInterval, getOpenInterestRate),
GetFunding: request.NewRateLimit(twoSecondsInterval, getFundingRate),
GetFundingRateHistory: request.NewRateLimit(twoSecondsInterval, getFundingRateHistoryRate),
GetLimitPrice: request.NewRateLimit(twoSecondsInterval, getLimitPriceRate),
GetOptionMarketDate: request.NewRateLimit(twoSecondsInterval, getOptionMarketDateRate),
GetEstimatedDeliveryExercisePrice: request.NewRateLimit(twoSecondsInterval, getEstimatedDeliveryExercisePriceRate),
GetDiscountRateAndInterestFreeQuota: request.NewRateLimit(twoSecondsInterval, getDiscountRateAndInterestFreeQuotaRate),
GetSystemTime: request.NewRateLimit(twoSecondsInterval, getSystemTimeRate),
GetLiquidationOrders: request.NewRateLimit(twoSecondsInterval, getLiquidationOrdersRate),
GetMarkPrice: request.NewRateLimit(twoSecondsInterval, getMarkPriceRate),
GetPositionTiers: request.NewRateLimit(twoSecondsInterval, getPositionTiersRate),
GetInterestRateAndLoanQuota: request.NewRateLimit(twoSecondsInterval, getInterestRateAndLoanQuotaRate),
GetInterestRateAndLoanQuoteForVIPLoans: request.NewRateLimit(twoSecondsInterval, getInterestRateAndLoanQuoteForVIPLoansRate),
GetUnderlying: request.NewRateLimit(twoSecondsInterval, getUnderlyingRate),
GetInsuranceFund: request.NewRateLimit(twoSecondsInterval, getInsuranceFundRate),
UnitConvert: request.NewRateLimit(twoSecondsInterval, unitConvertRate),
// Trading Data Endpoints
GetSupportCoin: request.NewRateLimit(twoSecondsInterval, getSupportCoinRate),
GetTakerVolume: request.NewRateLimit(twoSecondsInterval, getTakerVolumeRate),
GetMarginLendingRatio: request.NewRateLimit(twoSecondsInterval, getMarginLendingRatioRate),
GetLongShortRatio: request.NewRateLimit(twoSecondsInterval, getLongShortRatioRate),
GetContractsOpenInterestAndVolume: request.NewRateLimit(twoSecondsInterval, getContractsOpenInterestAndVolumeRate),
GetOptionsOpenInterestAndVolume: request.NewRateLimit(twoSecondsInterval, getOptionsOpenInterestAndVolumeRate),
GetPutCallRatio: request.NewRateLimit(twoSecondsInterval, getPutCallRatioRate),
GetOpenInterestAndVolume: request.NewRateLimit(twoSecondsInterval, getOpenInterestAndVolumeRate),
GetTakerFlow: request.NewRateLimit(twoSecondsInterval, getTakerFlowRate),
// Status Endpoints
GetEventStatus: request.NewRateLimit(fiveSecondsInterval, getEventStatusRate),
}
}