UNPKG

@proton/ccxt

Version:

A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges

996 lines (993 loc) 399 kB
// ---------------------------------------------------------------------------- // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN: // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code // EDIT THE CORRESPONDENT .ts FILE INSTEAD // --------------------------------------------------------------------------- import Exchange from './abstract/binance.js'; import { ExchangeError, ArgumentsRequired, ExchangeNotAvailable, InsufficientFunds, OrderNotFound, InvalidOrder, DDoSProtection, InvalidNonce, AuthenticationError, RateLimitExceeded, PermissionDenied, NotSupported, BadRequest, BadSymbol, AccountSuspended, OrderImmediatelyFillable, OnMaintenance, BadResponse, RequestTimeout, OrderNotFillable, MarginModeAlreadySet } from './base/errors.js'; import { Precise } from './base/Precise.js'; import { TRUNCATE, DECIMAL_PLACES } from './base/functions/number.js'; import { sha256 } from './static_dependencies/noble-hashes/sha256.js'; import { rsa } from './base/functions/rsa.js'; // --------------------------------------------------------------------------- export default class binance extends Exchange { describe() { return this.deepExtend(super.describe(), { 'id': 'binance', 'name': 'Binance', 'countries': ['JP', 'MT'], 'rateLimit': 50, 'certified': true, 'pro': true, // new metainfo interface 'has': { 'CORS': undefined, 'spot': true, 'margin': true, 'swap': true, 'future': true, 'option': true, 'addMargin': true, 'borrowMargin': true, 'cancelAllOrders': true, 'cancelOrder': true, 'cancelOrders': undefined, 'createDepositAddress': false, 'createOrder': true, 'createPostOnlyOrder': true, 'createReduceOnlyOrder': true, 'createStopLimitOrder': true, 'createStopMarketOrder': false, 'createStopOrder': true, 'editOrder': true, 'fetchAccounts': undefined, 'fetchBalance': true, 'fetchBidsAsks': true, 'fetchBorrowInterest': true, 'fetchBorrowRate': true, 'fetchBorrowRateHistories': false, 'fetchBorrowRateHistory': true, 'fetchBorrowRates': false, 'fetchBorrowRatesPerSymbol': false, 'fetchCanceledOrders': 'emulated', 'fetchClosedOrder': false, 'fetchClosedOrders': 'emulated', 'fetchCurrencies': true, 'fetchDeposit': false, 'fetchDepositAddress': true, 'fetchDepositAddresses': false, 'fetchDepositAddressesByNetwork': false, 'fetchDeposits': true, 'fetchDepositsWithdrawals': false, 'fetchDepositWithdrawFee': 'emulated', 'fetchDepositWithdrawFees': true, 'fetchFundingHistory': true, 'fetchFundingRate': true, 'fetchFundingRateHistory': true, 'fetchFundingRates': true, 'fetchIndexOHLCV': true, 'fetchL3OrderBook': undefined, 'fetchLastPrices': true, 'fetchLedger': true, 'fetchLeverage': false, 'fetchLeverageTiers': true, 'fetchMarketLeverageTiers': 'emulated', 'fetchMarkets': true, 'fetchMarkOHLCV': true, 'fetchMyTrades': true, 'fetchOHLCV': true, 'fetchOpenInterest': true, 'fetchOpenInterestHistory': true, 'fetchOpenOrder': false, 'fetchOpenOrders': true, 'fetchOrder': true, 'fetchOrderBook': true, 'fetchOrderBooks': false, 'fetchOrders': true, 'fetchOrderTrades': true, 'fetchPosition': true, 'fetchPositions': true, 'fetchPositionsRisk': true, 'fetchPremiumIndexOHLCV': false, 'fetchSettlementHistory': true, 'fetchStatus': true, 'fetchTicker': true, 'fetchTickers': true, 'fetchTime': true, 'fetchTrades': true, 'fetchTradingFee': true, 'fetchTradingFees': true, 'fetchTradingLimits': undefined, 'fetchTransactionFee': undefined, 'fetchTransactionFees': true, 'fetchTransactions': false, 'fetchTransfers': true, 'fetchWithdrawal': false, 'fetchWithdrawals': true, 'fetchWithdrawalWhitelist': false, 'reduceMargin': true, 'repayMargin': true, 'setLeverage': true, 'setMargin': false, 'setMarginMode': true, 'setPositionMode': true, 'signIn': false, 'transfer': true, 'withdraw': true, }, 'timeframes': { '1s': '1s', '1m': '1m', '3m': '3m', '5m': '5m', '15m': '15m', '30m': '30m', '1h': '1h', '2h': '2h', '4h': '4h', '6h': '6h', '8h': '8h', '12h': '12h', '1d': '1d', '3d': '3d', '1w': '1w', '1M': '1M', }, 'urls': { 'logo': 'https://user-images.githubusercontent.com/1294454/29604020-d5483cdc-87ee-11e7-94c7-d1a8d9169293.jpg', 'test': { 'dapiPublic': 'https://testnet.binancefuture.com/dapi/v1', 'dapiPrivate': 'https://testnet.binancefuture.com/dapi/v1', 'dapiPrivateV2': 'https://testnet.binancefuture.com/dapi/v2', 'fapiPublic': 'https://testnet.binancefuture.com/fapi/v1', 'fapiPrivate': 'https://testnet.binancefuture.com/fapi/v1', 'fapiPrivateV2': 'https://testnet.binancefuture.com/fapi/v2', 'public': 'https://testnet.binance.vision/api/v3', 'private': 'https://testnet.binance.vision/api/v3', 'v1': 'https://testnet.binance.vision/api/v1', }, 'api': { 'wapi': 'https://api.binance.com/wapi/v3', 'sapi': 'https://api.binance.com/sapi/v1', 'sapiV2': 'https://api.binance.com/sapi/v2', 'sapiV3': 'https://api.binance.com/sapi/v3', 'sapiV4': 'https://api.binance.com/sapi/v4', 'dapiPublic': 'https://dapi.binance.com/dapi/v1', 'dapiPrivate': 'https://dapi.binance.com/dapi/v1', 'eapiPublic': 'https://eapi.binance.com/eapi/v1', 'eapiPrivate': 'https://eapi.binance.com/eapi/v1', 'dapiPrivateV2': 'https://dapi.binance.com/dapi/v2', 'dapiData': 'https://dapi.binance.com/futures/data', 'fapiPublic': 'https://fapi.binance.com/fapi/v1', 'fapiPrivate': 'https://fapi.binance.com/fapi/v1', 'fapiData': 'https://fapi.binance.com/futures/data', 'fapiPrivateV2': 'https://fapi.binance.com/fapi/v2', 'public': 'https://api.binance.com/api/v3', 'private': 'https://api.binance.com/api/v3', 'v1': 'https://api.binance.com/api/v1', 'papi': 'https://papi.binance.com/papi/v1', }, 'www': 'https://www.binance.com', 'referral': { 'url': 'https://accounts.binance.com/en/register?ref=D7YA7CLY', 'discount': 0.1, }, 'doc': [ 'https://binance-docs.github.io/apidocs/spot/en', ], 'api_management': 'https://www.binance.com/en/usercenter/settings/api-management', 'fees': 'https://www.binance.com/en/fee/schedule', }, 'api': { // the API structure below will need 3-layer apidefs 'sapi': { // IP (api) = 1200 per minute => (rateLimit = 50) // IP (sapi) request rate limit of 12 000 per minute // 1 IP (sapi) => cost = 0.1 // 10 IP (sapi) => cost = 1 // UID (sapi) request rate limit of 180 000 per minute // 1 UID (sapi) => cost = 1200 / 180 000 = 0.006667 'get': { 'system/status': 0.1, // these endpoints require this.apiKey 'accountSnapshot': 240, 'margin/asset': 1, 'margin/pair': 1, 'margin/allAssets': 0.1, 'margin/allPairs': 0.1, 'margin/priceIndex': 1, // these endpoints require this.apiKey + this.secret 'asset/assetDividend': 1, 'asset/dribblet': 0.1, 'asset/transfer': 0.1, 'asset/assetDetail': 0.1, 'asset/tradeFee': 0.1, 'asset/ledger-transfer/cloud-mining/queryByPage': 4, 'asset/convert-transfer/queryByPage': 0.033335, 'margin/loan': 1, 'margin/repay': 1, 'margin/account': 1, 'margin/transfer': 0.1, 'margin/interestHistory': 0.1, 'margin/forceLiquidationRec': 0.1, 'margin/order': 1, 'margin/openOrders': 1, 'margin/allOrders': 20, 'margin/myTrades': 1, 'margin/maxBorrowable': 5, 'margin/maxTransferable': 5, 'margin/tradeCoeff': 1, 'margin/isolated/transfer': 0.1, 'margin/isolated/account': 1, 'margin/isolated/pair': 1, 'margin/isolated/allPairs': 1, 'margin/isolated/accountLimit': 0.1, 'margin/interestRateHistory': 0.1, 'margin/orderList': 1, 'margin/allOrderList': 20, 'margin/openOrderList': 1, 'margin/crossMarginData': { 'cost': 0.1, 'noCoin': 0.5 }, 'margin/isolatedMarginData': { 'cost': 0.1, 'noCoin': 1 }, 'margin/isolatedMarginTier': 0.1, 'margin/rateLimit/order': 2, 'margin/dribblet': 0.1, 'margin/crossMarginCollateralRatio': 10, 'margin/exchange-small-liability': 0.6667, 'margin/exchange-small-liability-history': 0.6667, 'margin/next-hourly-interest-rate': 0.6667, 'loan/income': 40, 'loan/ongoing/orders': 40, 'loan/ltv/adjustment/history': 40, 'loan/borrow/history': 40, 'loan/repay/history': 40, 'loan/loanable/data': 40, 'loan/collateral/data': 40, 'loan/repay/collateral/rate': 600, 'loan/vip/ongoing/orders': 40, 'loan/vip/repay/history': 40, 'loan/vip/collateral/account': 600, 'fiat/orders': 600.03, 'fiat/payments': 0.1, 'futures/transfer': 1, 'futures/loan/borrow/history': 1, 'futures/loan/repay/history': 1, 'futures/loan/wallet': 1, 'futures/loan/adjustCollateral/history': 1, 'futures/loan/liquidationHistory': 1, 'rebate/taxQuery': 20.001, // https://binance-docs.github.io/apidocs/spot/en/#withdraw-sapi 'capital/config/getall': 1, 'capital/deposit/address': 1, 'capital/deposit/hisrec': 0.1, 'capital/deposit/subAddress': 0.1, 'capital/deposit/subHisrec': 0.1, 'capital/withdraw/history': 0.1, 'capital/contract/convertible-coins': 4.0002, 'convert/tradeFlow': 20.0001, 'convert/exchangeInfo': 50, 'convert/assetInfo': 10, 'convert/orderStatus': 0.6667, 'account/status': 0.1, 'account/apiTradingStatus': 0.1, 'account/apiRestrictions/ipRestriction': 0.1, 'bnbBurn': 0.1, // 'sub-account/assets': 1, (v3 endpoint) 'sub-account/futures/account': 1, 'sub-account/futures/accountSummary': 0.1, 'sub-account/futures/positionRisk': 1, 'sub-account/futures/internalTransfer': 0.1, 'sub-account/list': 0.1, 'sub-account/margin/account': 1, 'sub-account/margin/accountSummary': 1, 'sub-account/spotSummary': 0.1, 'sub-account/status': 1, 'sub-account/sub/transfer/history': 0.1, 'sub-account/transfer/subUserHistory': 0.1, 'sub-account/universalTransfer': 0.1, 'sub-account/apiRestrictions/ipRestriction/thirdPartyList': 1, 'sub-account/transaction-tatistics': 0.4, 'managed-subaccount/asset': 0.1, 'managed-subaccount/accountSnapshot': 240, 'managed-subaccount/queryTransLogForInvestor': 0.1, 'managed-subaccount/queryTransLogForTradeParent': 0.1, 'managed-subaccount/fetch-future-asset': 0.1, 'managed-subaccount/marginAsset': 0.1, 'managed-subaccount/info': 0.4, 'managed-subaccount/deposit/address': 0.1, 'managed-subaccount/query-trans-log': 0.40002, // lending endpoints 'lending/daily/product/list': 0.1, 'lending/daily/userLeftQuota': 0.1, 'lending/daily/userRedemptionQuota': 0.1, 'lending/daily/token/position': 0.1, 'lending/union/account': 0.1, 'lending/union/purchaseRecord': 0.1, 'lending/union/redemptionRecord': 0.1, 'lending/union/interestHistory': 0.1, 'lending/project/list': 0.1, 'lending/project/position/list': 0.1, // mining endpoints 'mining/pub/algoList': 0.1, 'mining/pub/coinList': 0.1, 'mining/worker/detail': 0.5, 'mining/worker/list': 0.5, 'mining/payment/list': 0.5, 'mining/statistics/user/status': 0.5, 'mining/statistics/user/list': 0.5, 'mining/payment/uid': 0.5, // liquid swap endpoints 'bswap/pools': 0.1, 'bswap/liquidity': { 'cost': 0.1, 'noPoolId': 1 }, 'bswap/liquidityOps': 20.001, 'bswap/quote': 1.00005, 'bswap/swap': 20.001, 'bswap/poolConfigure': 1.00005, 'bswap/addLiquidityPreview': 1.00005, 'bswap/removeLiquidityPreview': 1.00005, 'bswap/unclaimedRewards': 6.667, 'bswap/claimedHistory': 6.667, // leveraged token endpoints 'blvt/tokenInfo': 0.1, 'blvt/subscribe/record': 0.1, 'blvt/redeem/record': 0.1, 'blvt/userLimit': 0.1, // broker api TODO (NOT IN DOCS) 'apiReferral/ifNewUser': 1, 'apiReferral/customization': 1, 'apiReferral/userCustomization': 1, 'apiReferral/rebate/recentRecord': 1, 'apiReferral/rebate/historicalRecord': 1, 'apiReferral/kickback/recentRecord': 1, 'apiReferral/kickback/historicalRecord': 1, // brokerage API TODO https://binance-docs.github.io/Brokerage-API/General/ does not state ratelimits 'broker/subAccountApi': 1, 'broker/subAccount': 1, 'broker/subAccountApi/commission/futures': 1, 'broker/subAccountApi/commission/coinFutures': 1, 'broker/info': 1, 'broker/transfer': 1, 'broker/transfer/futures': 1, 'broker/rebate/recentRecord': 1, 'broker/rebate/historicalRecord': 1, 'broker/subAccount/bnbBurn/status': 1, 'broker/subAccount/depositHist': 1, 'broker/subAccount/spotSummary': 1, 'broker/subAccount/marginSummary': 1, 'broker/subAccount/futuresSummary': 1, 'broker/rebate/futures/recentRecord': 1, 'broker/subAccountApi/ipRestriction': 1, 'broker/universalTransfer': 1, // v2 not supported yet // GET /sapi/v2/broker/subAccount/futuresSummary 'account/apiRestrictions': 0.1, // c2c / p2p 'c2c/orderMatch/listUserOrderHistory': 0.1, // nft endpoints 'nft/history/transactions': 20.001, 'nft/history/deposit': 20.001, 'nft/history/withdraw': 20.001, 'nft/user/getAsset': 20.001, 'pay/transactions': 20.001, 'giftcard/verify': 0.1, 'giftcard/cryptography/rsa-public-key': 0.1, 'giftcard/buyCode/token-limit': 0.1, 'algo/futures/openOrders': 0.1, 'algo/futures/historicalOrders': 0.1, 'algo/futures/subOrders': 0.1, 'portfolio/account': 0.1, 'portfolio/collateralRate': 5, 'portfolio/pmLoan': 3.3335, 'portfolio/interest-history': 0.6667, 'portfolio/interest-rate': 0.6667, 'portfolio/asset-index-price': 0.1, // staking 'staking/productList': 0.1, 'staking/position': 0.1, 'staking/stakingRecord': 0.1, 'staking/personalLeftQuota': 0.1, 'lending/auto-invest/target-asset/list': 0.1, 'lending/auto-invest/target-asset/roi/list': 0.1, 'lending/auto-invest/all/asset': 0.1, 'lending/auto-invest/source-asset/list': 0.1, 'lending/auto-invest/plan/list': 0.1, 'lending/auto-invest/plan/id': 0.1, 'lending/auto-invest/history/list': 0.1, // simple earn 'simple-earn/flexible/list': 15, 'simple-earn/locked/list': 15, 'simple-earn/flexible/personalLeftQuota': 15, 'simple-earn/locked/personalLeftQuota': 15, 'simple-earn/flexible/subscriptionPreview': 15, 'simple-earn/locked/subscriptionPreview': 15, 'simple-earn/flexible/history/rateHistory': 15, 'simple-earn/flexible/position': 15, 'simple-earn/locked/position': 15, 'simple-earn/account': 15, 'simple-earn/flexible/history/subscriptionRecord': 15, 'simple-earn/locked/history/subscriptionRecord': 15, 'simple-earn/flexible/history/redemptionRecord': 15, 'simple-earn/locked/history/redemptionRecord': 15, 'simple-earn/flexible/history/rewardsRecord': 15, 'simple-earn/locked/history/rewardsRecord': 15, 'simple-earn/flexible/history/collateralRecord': 0.1, }, 'post': { 'asset/dust': 1, 'asset/dust-btc': 0.1, 'asset/transfer': 0.1, 'asset/get-funding-asset': 0.1, 'asset/convert-transfer': 0.033335, 'account/disableFastWithdrawSwitch': 0.1, 'account/enableFastWithdrawSwitch': 0.1, // 'account/apiRestrictions/ipRestriction': 1, discontinued // 'account/apiRestrictions/ipRestriction/ipList': 1, discontinued 'capital/withdraw/apply': 4.0002, 'capital/contract/convertible-coins': 4.0002, 'capital/deposit/credit-apply': 0.1, 'margin/transfer': 1, 'margin/loan': 20.001, 'margin/repay': 20.001, 'margin/order': 0.040002, 'margin/order/oco': 0.040002, 'margin/exchange-small-liability': 20.001, // 'margin/isolated/create': 1, discontinued 'margin/isolated/transfer': 4.0002, 'margin/isolated/account': 2.0001, 'bnbBurn': 0.1, 'sub-account/virtualSubAccount': 0.1, 'sub-account/margin/transfer': 4.0002, 'sub-account/margin/enable': 0.1, 'sub-account/futures/enable': 0.1, 'sub-account/futures/transfer': 0.1, 'sub-account/futures/internalTransfer': 0.1, 'sub-account/transfer/subToSub': 0.1, 'sub-account/transfer/subToMaster': 0.1, 'sub-account/universalTransfer': 0.1, 'sub-account/options/enable': 0.1, // v2 not supported yet // 'sub-account/subAccountApi/ipRestriction': 20, 'managed-subaccount/deposit': 0.1, 'managed-subaccount/withdraw': 0.1, 'userDataStream': 0.1, 'userDataStream/isolated': 0.1, 'futures/transfer': 0.1, // lending 'lending/customizedFixed/purchase': 0.1, 'lending/daily/purchase': 0.1, 'lending/daily/redeem': 0.1, // liquid swap endpoints 'bswap/liquidityAdd': 60, 'bswap/liquidityRemove': 60, 'bswap/swap': 60, 'bswap/claimRewards': 6.667, // leveraged token endpoints 'blvt/subscribe': 0.1, 'blvt/redeem': 0.1, // brokerage API TODO: NO MENTION OF RATELIMITS IN BROKERAGE DOCS 'apiReferral/customization': 1, 'apiReferral/userCustomization': 1, 'apiReferral/rebate/historicalRecord': 1, 'apiReferral/kickback/historicalRecord': 1, 'broker/subAccount': 1, 'broker/subAccount/margin': 1, 'broker/subAccount/futures': 1, 'broker/subAccountApi': 1, 'broker/subAccountApi/permission': 1, 'broker/subAccountApi/commission': 1, 'broker/subAccountApi/commission/futures': 1, 'broker/subAccountApi/commission/coinFutures': 1, 'broker/transfer': 1, 'broker/transfer/futures': 1, 'broker/rebate/historicalRecord': 1, 'broker/subAccount/bnbBurn/spot': 1, 'broker/subAccount/bnbBurn/marginInterest': 1, 'broker/subAccount/blvt': 1, 'broker/subAccountApi/ipRestriction': 1, 'broker/subAccountApi/ipRestriction/ipList': 1, 'broker/universalTransfer': 1, 'broker/subAccountApi/permission/universalTransfer': 1, 'broker/subAccountApi/permission/vanillaOptions': 1, // 'giftcard/createCode': 0.1, 'giftcard/redeemCode': 0.1, 'giftcard/buyCode': 0.1, 'algo/futures/newOrderVp': 20.001, 'algo/futures/newOrderTwap': 20.001, // staking 'staking/purchase': 0.1, 'staking/redeem': 0.1, 'staking/setAutoStaking': 0.1, 'portfolio/repay': 20.001, 'loan/borrow': 40, 'loan/repay': 40, 'loan/adjust/ltv': 40, 'loan/customize/margin_call': 40, 'loan/vip/repay': 40, 'convert/getQuote': 20.001, 'convert/acceptQuote': 3.3335, 'portfolio/auto-collection': 0.6667, 'portfolio/bnb-transfer': 0.6667, 'lending/auto-invest/plan/add': 0.1, 'lending/auto-invest/plan/edit': 0.1, 'lending/auto-invest/plan/edit-status': 0.1, // simple earn 'simple-earn/flexible/subscribe': 0.1, 'simple-earn/locked/subscribe': 0.1, 'simple-earn/flexible/redeem': 0.1, 'simple-earn/locked/redeem': 0.1, 'simple-earn/flexible/setAutoSubscribe': 15, 'simple-earn/locked/setAutoSubscribe': 15, }, 'put': { 'userDataStream': 0.1, 'userDataStream/isolated': 0.1, }, 'delete': { // 'account/apiRestrictions/ipRestriction/ipList': 1, discontinued 'margin/openOrders': 0.1, 'margin/order': 0.0066667, 'margin/orderList': 0.0066667, 'margin/isolated/account': 2.0001, 'userDataStream': 0.1, 'userDataStream/isolated': 0.1, // brokerage API TODO NO MENTION OF RATELIMIT IN BROKERAGE DOCS 'broker/subAccountApi': 1, 'broker/subAccountApi/ipRestriction/ipList': 1, 'algo/futures/order': 0.1, }, }, 'sapiV2': { 'get': { 'sub-account/futures/account': 0.1, 'sub-account/futures/positionRisk': 0.1, }, }, 'sapiV3': { 'get': { 'sub-account/assets': 1, }, 'post': { 'asset/getUserAsset': 0.5, }, }, 'sapiV4': { 'get': { 'sub-account/assets': 1, }, }, // deprecated 'wapi': { 'post': { 'withdraw': 1, 'sub-account/transfer': 1, }, 'get': { 'depositHistory': 1, 'withdrawHistory': 1, 'depositAddress': 1, 'accountStatus': 1, 'systemStatus': 1, 'apiTradingStatus': 1, 'userAssetDribbletLog': 1, 'tradeFee': 1, 'assetDetail': 1, 'sub-account/list': 1, 'sub-account/transfer/history': 1, 'sub-account/assets': 1, }, }, 'dapiPublic': { 'get': { 'ping': 1, 'time': 1, 'exchangeInfo': 1, 'depth': { 'cost': 2, 'byLimit': [[50, 2], [100, 5], [500, 10], [1000, 20]] }, 'trades': 5, 'historicalTrades': 20, 'aggTrades': 20, 'premiumIndex': 10, 'fundingRate': 1, 'klines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'continuousKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'indexPriceKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'markPriceKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 }, 'ticker/price': { 'cost': 1, 'noSymbol': 2 }, 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 }, 'openInterest': 1, }, }, 'dapiData': { 'get': { 'openInterestHist': 1, 'topLongShortAccountRatio': 1, 'topLongShortPositionRatio': 1, 'globalLongShortAccountRatio': 1, 'takerBuySellVol': 1, 'basis': 1, }, }, 'dapiPrivate': { 'get': { 'positionSide/dual': 30, 'order': 1, 'openOrder': 1, 'openOrders': { 'cost': 1, 'noSymbol': 5 }, 'allOrders': { 'cost': 20, 'noSymbol': 40 }, 'balance': 1, 'account': 5, 'positionMargin/history': 1, 'positionRisk': 1, 'userTrades': { 'cost': 20, 'noSymbol': 40 }, 'income': 20, 'leverageBracket': 1, 'forceOrders': { 'cost': 20, 'noSymbol': 50 }, 'adlQuantile': 5, 'orderAmendment': 1, 'pmAccountInfo': 5, }, 'post': { 'positionSide/dual': 1, 'order': 4, 'batchOrders': 5, 'countdownCancelAll': 10, 'leverage': 1, 'marginType': 1, 'positionMargin': 1, 'listenKey': 1, }, 'put': { 'listenKey': 1, 'order': 1, 'batchOrders': 5, }, 'delete': { 'order': 1, 'allOpenOrders': 1, 'batchOrders': 5, 'listenKey': 1, }, }, 'dapiPrivateV2': { 'get': { 'leverageBracket': 1, }, }, 'fapiPublic': { 'get': { 'ping': 1, 'time': 1, 'exchangeInfo': 1, 'depth': { 'cost': 2, 'byLimit': [[50, 2], [100, 5], [500, 10], [1000, 20]] }, 'trades': 5, 'historicalTrades': 20, 'aggTrades': 20, 'klines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'continuousKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'markPriceKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'indexPriceKlines': { 'cost': 1, 'byLimit': [[99, 1], [499, 2], [1000, 5], [10000, 10]] }, 'fundingRate': 1, 'premiumIndex': 1, 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 }, 'ticker/price': { 'cost': 1, 'noSymbol': 2 }, 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 }, 'openInterest': 1, 'indexInfo': 1, 'apiTradingStatus': { 'cost': 1, 'noSymbol': 10 }, 'lvtKlines': 1, }, }, 'fapiData': { 'get': { 'openInterestHist': 1, 'topLongShortAccountRatio': 1, 'topLongShortPositionRatio': 1, 'globalLongShortAccountRatio': 1, 'takerlongshortRatio': 1, }, }, 'fapiPrivate': { 'get': { 'forceOrders': { 'cost': 20, 'noSymbol': 50 }, 'allOrders': 5, 'openOrder': 1, 'openOrders': 1, 'order': 1, 'account': 5, 'balance': 5, 'leverageBracket': 1, 'positionMargin/history': 1, 'positionRisk': 5, 'positionSide/dual': 30, 'userTrades': 5, 'income': 30, 'commissionRate': 20, 'apiTradingStatus': 1, 'multiAssetsMargin': 30, // broker endpoints 'apiReferral/ifNewUser': 1, 'apiReferral/customization': 1, 'apiReferral/userCustomization': 1, 'apiReferral/traderNum': 1, 'apiReferral/overview': 1, 'apiReferral/tradeVol': 1, 'apiReferral/rebateVol': 1, 'apiReferral/traderSummary': 1, 'adlQuantile': 5, 'pmAccountInfo': 5, 'orderAmendment': 1, }, 'post': { 'batchOrders': 5, 'positionSide/dual': 1, 'positionMargin': 1, 'marginType': 1, 'order': 4, 'leverage': 1, 'listenKey': 1, 'countdownCancelAll': 10, 'multiAssetsMargin': 1, // broker endpoints 'apiReferral/customization': 1, 'apiReferral/userCustomization': 1, }, 'put': { 'listenKey': 1, 'order': 1, 'batchOrders': 5, }, 'delete': { 'batchOrders': 1, 'order': 1, 'allOpenOrders': 1, 'listenKey': 1, }, }, 'fapiPrivateV2': { 'get': { 'account': 1, 'balance': 1, 'positionRisk': 1, }, }, 'eapiPublic': { 'get': { 'ping': 1, 'time': 1, 'exchangeInfo': 1, 'index': 1, 'ticker': 5, 'mark': 5, 'depth': 1, 'klines': 1, 'trades': 5, 'historicalTrades': 20, 'exerciseHistory': 3, 'openInterest': 3, }, }, 'eapiPrivate': { 'get': { 'account': 3, 'position': 5, 'openOrders': { 'cost': 1, 'noSymbol': 40 }, 'historyOrders': 3, 'userTrades': 5, 'exerciseRecord': 5, 'bill': 1, 'marginAccount': 3, 'mmp': 1, 'countdownCancelAll': 1, 'order': 1, }, 'post': { 'order': 1, 'batchOrders': 5, 'listenKey': 1, 'mmpSet': 1, 'mmpReset': 1, 'countdownCancelAll': 1, 'countdownCancelAllHeartBeat': 10, }, 'put': { 'listenKey': 1, }, 'delete': { 'order': 1, 'batchOrders': 1, 'allOpenOrders': 1, 'allOpenOrdersByUnderlying': 1, 'listenKey': 1, }, }, 'public': { 'get': { 'ping': 1, 'time': 1, 'depth': { 'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]] }, 'trades': 1, 'aggTrades': 1, 'historicalTrades': 5, 'klines': 1, 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 }, 'ticker/price': { 'cost': 1, 'noSymbol': 2 }, 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 }, 'exchangeInfo': 10, }, 'put': { 'userDataStream': 1, }, 'post': { 'userDataStream': 1, }, 'delete': { 'userDataStream': 1, }, }, 'private': { 'get': { 'allOrderList': 10, 'openOrderList': 3, 'orderList': 2, 'order': 2, 'openOrders': { 'cost': 3, 'noSymbol': 40 }, 'allOrders': 10, 'account': 10, 'myTrades': 10, 'rateLimit/order': 20, 'myPreventedMatches': 1, }, 'post': { 'order/oco': 1, 'order': 1, 'order/cancelReplace': 1, 'order/test': 1, }, 'delete': { 'openOrders': 1, 'orderList': 1, 'order': 1, }, }, 'papi': { 'get': { 'um/order': 1, 'um/openOrder': 1, 'um/openOrders': 1, 'um/allOrders': 5, 'cm/order': 1, 'cm/openOrder': 1, 'cm/openOrders': 1, 'cm/allOrders': 20, 'balance': 20, 'account': 20, 'margin/maxBorrowable': 5, 'margin/maxWithdraw': 5, 'um/positionRisk': 5, 'cm/positionRisk': 1, 'um/positionSide/dual': 30, 'cm/positionSide/dual': 30, 'um/userTrades': 5, 'cm/userTrades': 20, 'um/leverageBracket': 1, 'cm/leverageBracket': 1, 'margin/forceOrders': 1, 'um/forceOrders': 20, 'cm/forceOrders': 20, 'um/apiTradingStatus': 1, 'um/commissionRate': 20, 'cm/commissionRate': 20, 'um/income': 30, 'cm/income ': 30, 'um/account': 5, 'cm/account': 5, 'margin/marginLoan': 0.0667, 'margin/repayLoan': 0.0667, 'margin/marginInterestHistory': 0.1, 'portfolio/interest-history': 50, // 50 }, 'post': { 'um/order': 1, 'cm/order': 1, 'margin/order': 0.0133, 'marginLoan': 0.1333, 'repayLoan': 0.1333, 'margin/order/oco': 0.0400, 'um/leverage': 1, 'cm/leverage': 1, 'um/positionSide/dual': 1, 'cm/positionSide/dual': 1, 'auto-collection': 0.6667, 'bnb-transfer': 0.6667, 'listenKey': 1, // 1 }, 'put': { 'listenKey': 1, // 1 }, 'delete': { 'um/order': 1, 'um/allOpenOrders': 1, 'cm/order': 1, 'cm/allOpenOrders': 1, 'margin/order': 1, 'margin/allOpenOrders': 5, 'margin/orderList': 2, 'listenKey': 1, // 1 }, }, }, 'fees': { 'trading': { 'feeSide': 'get', 'tierBased': false, 'percentage': true, 'taker': this.parseNumber('0.001'), 'maker': this.parseNumber('0.001'), }, 'linear': { 'trading': { 'feeSide': 'quote', 'tierBased': true, 'percentage': true, 'taker': this.parseNumber('0.000400'), 'maker': this.parseNumber('0.000200'), 'tiers': { 'taker': [ [this.parseNumber('0'), this.parseNumber('0.000400')], [this.parseNumber('250'), this.parseNumber('0.000400')], [this.parseNumber('2500'), this.parseNumber('0.000350')], [this.parseNumber('7500'), this.parseNumber('0.000320')], [this.parseNumber('22500'), this.parseNumber('0.000300')], [this.parseNumber('50000'), this.parseNumber('0.000270')], [this.parseNumber('100000'), this.parseNumber('0.000250')], [this.parseNumber('200000'), this.parseNumber('0.000220')], [this.parseNumber('400000'), this.parseNumber('0.000200')], [this.parseNumber('750000'), this.parseNumber('0.000170')], ], 'maker': [ [this.parseNumber('0'), this.parseNumber('0.000200')], [this.parseNumber('250'), this.parseNumber('0.000160')], [this.parseNumber('2500'), this.parseNumber('0.000140')], [this.parseNumber('7500'), this.parseNumber('0.000120')], [this.parseNumber('22500'), this.parseNumber('0.000100')], [this.parseNumber('50000'), this.parseNumber('0.000080')], [this.parseNumber('100000'), this.parseNumber('0.000060')], [this.parseNumber('200000'), this.parseNumber('0.000040')], [this.parseNumber('400000'), this.parseNumber('0.000020')], [this.parseNumber('750000'), this.parseNumber('0')], ], }, }, }, 'inverse': { 'trading': { 'feeSide': 'base', 'tierBased': true, 'percentage': true, 'taker': this.parseNumber('0.000500'), 'maker': this.parseNumber('0.000100'), 'tiers': { 'taker': [ [this.parseNumber('0'), this.parseNumber('0.000500')], [this.parseNumber('250'), this.parseNumber('0.000450')], [this.parseNumber('2500'), this.parseNumber('0.000400')], [this.parseNumber('7500'), this.parseNumber('0.000300')], [this.parseNumber('22500'), this.parseNumber('0.000250')], [this.parseNumber('50000'), this.parseNumber('0.000240')], [this.parseNumber('100000'), this.parseNumber('0.000240')], [this.parseNumber('200000'), this.parseNumber('0.000240')], [this.parseNumber('400000'), this.parseNumber('0.000240')], [this.parseNumber('750000'), this.parseNumber('0.000240')], ], 'maker': [ [this.parseNumber('0'), this.parseNumber('0.000100')], [this.parseNumber('250'), this.parseNumber('0.000080')], [this.parseNumber('2500'), this.parseNumber('0.000050')], [this.parseNumber('7500'), this.parseNumber('0.0000030')], [this.parseNumber('22500'), this.parseNumber('0')], [this.parseNumber('50000'), this.parseNumber('-0.000050')], [this.parseNumber('100000'), this.parseNumber('-0.000060')], [this.parseNumber('200000'), this.parseNumber('-0.000070')], [this.parseNumber('400000'), this.parseNumber('-0.000080')], [this.parseNumber('750000'), this.parseNumber('-0.000090')], ],