@proton/ccxt
Version:
A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
1,021 lines (1,019 loc) • 213 kB
JavaScript
'use strict';
var bitget$1 = require('./abstract/bitget.js');
var errors = require('./base/errors.js');
var Precise = require('./base/Precise.js');
var number = require('./base/functions/number.js');
var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
class bitget extends bitget$1 {
describe() {
return this.deepExtend(super.describe(), {
'id': 'bitget',
'name': 'Bitget',
'countries': ['SG'],
'version': 'v1',
'rateLimit': 50,
'certified': true,
'pro': true,
'has': {
'CORS': undefined,
'spot': true,
'margin': false,
'swap': true,
'future': true,
'option': false,
'addMargin': true,
'cancelAllOrders': true,
'cancelOrder': true,
'cancelOrders': true,
'createOrder': true,
'createReduceOnlyOrder': false,
'editOrder': true,
'fetchAccounts': false,
'fetchBalance': true,
'fetchBorrowRate': false,
'fetchBorrowRateHistories': false,
'fetchBorrowRateHistory': false,
'fetchBorrowRates': false,
'fetchBorrowRatesPerSymbol': false,
'fetchCanceledOrders': true,
'fetchClosedOrders': true,
'fetchCurrencies': true,
'fetchDepositAddress': true,
'fetchDepositAddresses': false,
'fetchDeposits': true,
'fetchDepositWithdrawFee': 'emulated',
'fetchDepositWithdrawFees': true,
'fetchFundingHistory': true,
'fetchFundingRate': true,
'fetchFundingRateHistory': true,
'fetchFundingRates': false,
'fetchIndexOHLCV': false,
'fetchLedger': true,
'fetchLeverage': true,
'fetchLeverageTiers': false,
'fetchMarginMode': undefined,
'fetchMarketLeverageTiers': true,
'fetchMarkets': true,
'fetchMarkOHLCV': false,
'fetchMyTrades': true,
'fetchOHLCV': true,
'fetchOpenInterest': true,
'fetchOpenInterestHistory': false,
'fetchOpenOrders': true,
'fetchOrder': true,
'fetchOrderBook': true,
'fetchOrders': false,
'fetchOrderTrades': true,
'fetchPosition': true,
'fetchPositionMode': false,
'fetchPositions': true,
'fetchPositionsRisk': false,
'fetchPremiumIndexOHLCV': false,
'fetchTicker': true,
'fetchTickers': true,
'fetchTime': true,
'fetchTrades': true,
'fetchTradingFee': true,
'fetchTradingFees': true,
'fetchTransfer': false,
'fetchTransfers': true,
'fetchWithdrawal': false,
'fetchWithdrawals': true,
'reduceMargin': true,
'setLeverage': true,
'setMarginMode': true,
'setPositionMode': true,
'transfer': true,
'withdraw': false,
},
'timeframes': {
'1m': '1m',
'3m': '3m',
'5m': '5m',
'15m': '15m',
'30m': '30m',
'1h': '1h',
'2h': '2h',
'4h': '4h',
'6h': '6h',
'12h': '12h',
'1d': '1d',
'3d': '3d',
'1w': '1w',
'1M': '1m',
},
'hostname': 'bitget.com',
'urls': {
'logo': 'https://user-images.githubusercontent.com/1294454/195989417-4253ddb0-afbe-4a1c-9dea-9dbcd121fa5d.jpg',
'api': {
'spot': 'https://api.{hostname}',
'mix': 'https://api.{hostname}',
'user': 'https://api.{hostname}',
'p2p': 'https://api.{hostname}',
'broker': 'https://api.{hostname}',
'margin': 'https://api.{hostname}',
},
'www': 'https://www.bitget.com',
'doc': [
'https://bitgetlimited.github.io/apidoc/en/mix',
'https://bitgetlimited.github.io/apidoc/en/spot',
'https://bitgetlimited.github.io/apidoc/en/broker',
'https://bitgetlimited.github.io/apidoc/en/margin',
],
'fees': 'https://www.bitget.cc/zh-CN/rate?tab=1',
'referral': 'https://www.bitget.com/expressly?languageType=0&channelCode=ccxt&vipCode=tg9j',
},
'api': {
'public': {
'spot': {
'get': {
'public/time': 1,
'public/currencies': 6.6667,
'public/products': 1,
'public/product': 1,
'market/ticker': 1,
'market/tickers': 1,
'market/fills': 2,
'market/fills-history': 2,
'market/candles': 1,
'market/depth': 1,
'market/spot-vip-level': 2,
},
},
'mix': {
'get': {
'market/contracts': 1,
'market/depth': 1,
'market/ticker': 1,
'market/tickers': 1,
'market/contract-vip-level': 2,
'market/fills': 1,
'market/fills-history': 2,
'market/candles': 1,
'market/index': 1,
'market/funding-time': 1,
'market/history-fundRate': 1,
'market/current-fundRate': 1,
'market/open-interest': 1,
'market/mark-price': 1,
'market/symbol-leverage': 1,
'market/queryPositionLever': 1,
},
},
'margin': {
'get': {
'cross/public/interestRateAndLimit': 2,
'isolated/public/interestRateAndLimit': 2,
'cross/public/tierData': 2,
'isolated/public/tierData': 2,
'public/currencies': 1,
'cross/account/assets': 2,
'isolated/account/assets': 2, // 10 times/1s (IP) => 20/10 = 2
},
},
},
'private': {
'spot': {
'get': {
'wallet/deposit-address': 4,
'wallet/withdrawal-list': 1,
'wallet/deposit-list': 1,
'account/getInfo': 20,
'account/assets': 2,
'account/assets-lite': 2,
'account/transferRecords': 1, // 20 times/1s (UID) => 20/20 = 1
},
'post': {
'wallet/transfer': 4,
'wallet/transfer-v2': 4,
'wallet/subTransfer': 10,
'wallet/withdrawal': 4,
'wallet/withdrawal-v2': 4,
'wallet/withdrawal-inner': 4,
'wallet/withdrawal-inner-v2': 4,
'account/sub-account-spot-assets': 200,
'account/bills': 2,
'trade/orders': 2,
'trade/batch-orders': 4,
'trade/cancel-order': 2,
'trade/cancel-order-v2': 2,
'trade/cancel-symbol-order': 2,
'trade/cancel-batch-orders': 4,
'trade/cancel-batch-orders-v2': 4,
'trade/orderInfo': 1,
'trade/open-orders': 1,
'trade/history': 1,
'trade/fills': 1,
'plan/placePlan': 1,
'plan/modifyPlan': 1,
'plan/cancelPlan': 1,
'plan/currentPlan': 1,
'plan/historyPlan': 1,
'plan/batchCancelPlan': 2,
'trace/order/orderCurrentList': 2,
'trace/order/orderHistoryList': 2,
'trace/order/closeTrackingOrder': 2,
'trace/order/updateTpsl': 2,
'trace/order/followerEndOrder': 2,
'trace/order/spotInfoList': 2,
'trace/config/getTraderSettings': 2,
'trace/config/getFollowerSettings': 2,
'trace/user/myTraders': 2,
'trace/config/setFollowerConfig': 2,
'trace/user/myFollowers': 2,
'trace/config/setProductCode': 2,
'trace/user/removeTrader': 2,
'trace/profit/totalProfitInfo': 2,
'trace/profit/totalProfitList': 2,
'trace/profit/profitHisList': 2,
'trace/profit/profitHisDetailList': 2,
'trace/profit/waitProfitDetailList': 2,
'trace/user/getTraderInfo': 2, // 10 times/1s (UID) => 20/10 = 2
},
},
'mix': {
'get': {
'account/account': 2,
'account/accounts': 2,
'position/singlePosition': 2,
'position/singlePosition-v2': 2,
'position/allPosition': 4,
'position/allPosition-v2': 4,
'account/accountBill': 2,
'account/accountBusinessBill': 4,
'order/current': 1,
'order/marginCoinCurrent': 1,
'order/history': 2,
'order/historyProductType': 4,
'order/detail': 2,
'order/fills': 2,
'order/allFills': 2,
'plan/currentPlan': 1,
'plan/historyPlan': 2,
'trace/currentTrack': 2,
'trace/followerOrder': 2,
'trace/followerHistoryOrders': 2,
'trace/historyTrack': 2,
'trace/summary': 1,
'trace/profitSettleTokenIdGroup': 1,
'trace/profitDateGroupList': 1,
'trade/profitDateList': 2,
'trace/waitProfitDateList': 1,
'trace/traderSymbols': 1,
'trace/traderList': 2,
'trace/traderDetail': 2,
'trace/queryTraceConfig': 2,
},
'post': {
'account/sub-account-contract-assets': 200,
'account/open-count': 1,
'account/setLeverage': 4,
'account/setMargin': 4,
'account/setMarginMode': 4,
'account/setPositionMode': 4,
'order/placeOrder': 2,
'order/batch-orders': 2,
'order/cancel-order': 2,
'order/cancel-batch-orders': 2,
'order/modifyOrder': 2,
'order/cancel-symbol-orders': 2,
'order/cancel-all-orders': 2,
'order/close-all-positions': 20,
'plan/placePlan': 2,
'plan/modifyPlan': 2,
'plan/modifyPlanPreset': 2,
'plan/placeTPSL': 2,
'plan/placeTrailStop': 2,
'plan/placePositionsTPSL': 2,
'plan/modifyTPSLPlan': 2,
'plan/cancelPlan': 2,
'plan/cancelSymbolPlan': 2,
'plan/cancelAllPlan': 2,
'trace/closeTrackOrder': 2,
'trace/modifyTPSL': 2,
'trace/setUpCopySymbols': 2,
'trace/followerSetBatchTraceConfig': 2,
'trace/followerCloseByTrackingNo': 2,
'trace/followerCloseByAll': 2,
'trace/followerSetTpsl': 2,
'trace/cancelCopyTrader': 4,
'trace/traderUpdateConfig': 2,
'trace/myTraderList': 2,
'trace/myFollowerList': 2,
'trace/removeFollower': 2,
'trace/public/getFollowerConfig': 2,
'trace/report/order/historyList': 2,
'trace/report/order/currentList': 2,
'trace/queryTraderTpslRatioConfig': 2,
'trace/traderUpdateTpslRatioConfig': 2, // 10 times/1s (UID) => 20/10 = 2
},
},
'user': {
'get': {
'fee/query': 2,
'sub/virtual-list': 2,
'sub/virtual-api-list': 2,
'tax/spot-record': 1,
'tax/future-record': 1,
'tax/margin-record': 1,
'tax/p2p-record': 1,
},
'post': {
'sub/virtual-create': 4,
'sub/virtual-modify': 4,
'sub/virtual-api-batch-create': 20,
'sub/virtual-api-create': 4,
'sub/virtual-api-modify': 4,
},
},
'p2p': {
'get': {
'merchant/merchantList': 2,
'merchant/merchantInfo': 2,
'merchant/advList': 2,
'merchant/orderList': 2, // 10 times/1s (UID) => 20/10 = 2
},
},
'broker': {
'get': {
'account/info': 2,
'account/sub-list': 20,
'account/sub-email': 20,
'account/sub-spot-assets': 2,
'account/sub-future-assets': 2,
'account/sub-api-list': 2, // 10 times/1s (UID) => 20/10 = 2
},
'post': {
'account/sub-create': 20,
'account/sub-modify': 20,
'account/sub-modify-email': 20,
'account/sub-address': 2,
'account/sub-withdrawal': 2,
'account/sub-auto-transfer': 4,
'account/sub-api-create': 2,
'account/sub-api-modify': 2, // 10 times/1s (UID) => 20/10 = 2
},
},
'margin': {
'get': {
'cross/account/riskRate': 2,
'cross/account/maxTransferOutAmount': 2,
'isolated/account/maxTransferOutAmount': 2,
'isolated/order/openOrders': 2,
'isolated/order/history': 2,
'isolated/order/fills': 2,
'isolated/loan/list': 2,
'isolated/repay/list': 2,
'isolated/interest/list': 2,
'isolated/liquidation/list': 2,
'isolated/fin/list': 2,
'cross/order/openOrders': 2,
'cross/order/history': 2,
'cross/order/fills': 2,
'cross/loan/list': 2,
'cross/repay/list': 2,
'cross/interest/list': 2,
'cross/liquidation/list': 2,
'cross/fin/list': 2, // 10 times/1s (UID) => 20/10 = 2
},
'post': {
'cross/account/borrow': 2,
'isolated/account/borrow': 2,
'cross/account/repay': 2,
'isolated/account/repay': 2,
'isolated/account/riskRate': 2,
'cross/account/maxBorrowableAmount': 2,
'isolated/account/maxBorrowableAmount': 2,
'isolated/order/placeOrder': 4,
'isolated/order/batchPlaceOrder': 4,
'isolated/order/cancelOrder': 2,
'isolated/order/batchCancelOrder': 2,
'cross/order/placeOrder': 2,
'cross/order/batchPlaceOrder': 2,
'cross/order/cancelOrder': 2,
'cross/order/batchCancelOrder': 2, // 10 times/1s (UID) => 20/10 = 2
},
},
},
},
'fees': {
'spot': {
'taker': this.parseNumber('0.002'),
'maker': this.parseNumber('0.002'),
},
'swap': {
'taker': this.parseNumber('0.0006'),
'maker': this.parseNumber('0.0004'),
},
},
'requiredCredentials': {
'apiKey': true,
'secret': true,
'password': true,
},
'exceptions': {
// http error codes
// 400 Bad Request — Invalid request format
// 401 Unauthorized — Invalid API Key
// 403 Forbidden — You do not have access to the requested resource
// 404 Not Found
// 500 Internal Server Error — We had a problem with our server
'exact': {
'1': errors.ExchangeError,
// undocumented
'failure to get a peer from the ring-balancer': errors.ExchangeNotAvailable,
'4010': errors.PermissionDenied,
// common
// '0': ExchangeError, // 200 successful,when the order placement / cancellation / operation is successful
'4001': errors.ExchangeError,
'4002': errors.ExchangeError,
// --------------------------------------------------------
'30001': errors.AuthenticationError,
'30002': errors.AuthenticationError,
'30003': errors.AuthenticationError,
'30004': errors.AuthenticationError,
'30005': errors.InvalidNonce,
'30006': errors.AuthenticationError,
'30007': errors.BadRequest,
'30008': errors.RequestTimeout,
'30009': errors.ExchangeError,
'30010': errors.AuthenticationError,
'30011': errors.PermissionDenied,
'30012': errors.AuthenticationError,
'30013': errors.AuthenticationError,
'30014': errors.DDoSProtection,
'30015': errors.AuthenticationError,
'30016': errors.ExchangeError,
'30017': errors.ExchangeError,
'30018': errors.ExchangeError,
'30019': errors.ExchangeNotAvailable,
'30020': errors.BadRequest,
'30021': errors.BadRequest,
'30022': errors.PermissionDenied,
'30023': errors.BadRequest,
'30024': errors.BadSymbol,
'30025': errors.BadRequest,
'30026': errors.DDoSProtection,
'30027': errors.AuthenticationError,
'30028': errors.PermissionDenied,
'30029': errors.AccountSuspended,
'30030': errors.ExchangeError,
'30031': errors.BadRequest,
'30032': errors.BadSymbol,
'30033': errors.BadRequest,
'30034': errors.ExchangeError,
'30035': errors.ExchangeError,
'30036': errors.ExchangeError,
'30037': errors.ExchangeNotAvailable,
// '30038': AuthenticationError, // { "code": 30038, "message": "user does not exist" }
'30038': errors.OnMaintenance,
// futures
'32001': errors.AccountSuspended,
'32002': errors.PermissionDenied,
'32003': errors.CancelPending,
'32004': errors.ExchangeError,
'32005': errors.InvalidOrder,
'32006': errors.InvalidOrder,
'32007': errors.InvalidOrder,
'32008': errors.InvalidOrder,
'32009': errors.InvalidOrder,
'32010': errors.ExchangeError,
'32011': errors.ExchangeError,
'32012': errors.ExchangeError,
'32013': errors.ExchangeError,
'32014': errors.ExchangeError,
'32015': errors.ExchangeError,
'32016': errors.ExchangeError,
'32017': errors.ExchangeError,
'32018': errors.ExchangeError,
'32019': errors.ExchangeError,
'32020': errors.ExchangeError,
'32021': errors.ExchangeError,
'32022': errors.ExchangeError,
'32023': errors.ExchangeError,
'32024': errors.ExchangeError,
'32025': errors.ExchangeError,
'32026': errors.ExchangeError,
'32027': errors.ExchangeError,
'32028': errors.AccountSuspended,
'32029': errors.ExchangeError,
'32030': errors.InvalidOrder,
'32031': errors.ArgumentsRequired,
'32038': errors.AuthenticationError,
'32040': errors.ExchangeError,
'32044': errors.ExchangeError,
'32045': errors.ExchangeError,
'32046': errors.ExchangeError,
'32047': errors.ExchangeError,
'32048': errors.InvalidOrder,
'32049': errors.ExchangeError,
'32050': errors.InvalidOrder,
'32051': errors.InvalidOrder,
'32052': errors.ExchangeError,
'32053': errors.ExchangeError,
'32057': errors.ExchangeError,
'32054': errors.ExchangeError,
'32055': errors.InvalidOrder,
'32056': errors.ExchangeError,
'32058': errors.ExchangeError,
'32059': errors.InvalidOrder,
'32060': errors.InvalidOrder,
'32061': errors.InvalidOrder,
'32062': errors.InvalidOrder,
'32063': errors.InvalidOrder,
'32064': errors.ExchangeError,
'32065': errors.ExchangeError,
'32066': errors.ExchangeError,
'32067': errors.ExchangeError,
'32068': errors.ExchangeError,
'32069': errors.ExchangeError,
'32070': errors.ExchangeError,
'32071': errors.ExchangeError,
'32072': errors.ExchangeError,
'32073': errors.ExchangeError,
'32074': errors.ExchangeError,
'32075': errors.ExchangeError,
'32076': errors.ExchangeError,
'32077': errors.ExchangeError,
'32078': errors.ExchangeError,
'32079': errors.ExchangeError,
'32080': errors.ExchangeError,
'32083': errors.ExchangeError,
// token and margin trading
'33001': errors.PermissionDenied,
'33002': errors.AccountSuspended,
'33003': errors.InsufficientFunds,
'33004': errors.ExchangeError,
'33005': errors.ExchangeError,
'33006': errors.ExchangeError,
'33007': errors.ExchangeError,
'33008': errors.InsufficientFunds,
'33009': errors.ExchangeError,
'33010': errors.ExchangeError,
'33011': errors.ExchangeError,
'33012': errors.ExchangeError,
'33013': errors.InvalidOrder,
'33014': errors.OrderNotFound,
'33015': errors.InvalidOrder,
'33016': errors.ExchangeError,
'33017': errors.InsufficientFunds,
'33018': errors.ExchangeError,
'33020': errors.ExchangeError,
'33021': errors.BadRequest,
'33022': errors.InvalidOrder,
'33023': errors.ExchangeError,
'33024': errors.InvalidOrder,
'33025': errors.InvalidOrder,
'33026': errors.ExchangeError,
'33027': errors.InvalidOrder,
'33028': errors.InvalidOrder,
'33029': errors.InvalidOrder,
'33034': errors.ExchangeError,
'33035': errors.ExchangeError,
'33036': errors.ExchangeError,
'33037': errors.ExchangeError,
'33038': errors.ExchangeError,
'33039': errors.ExchangeError,
'33040': errors.ExchangeError,
'33041': errors.ExchangeError,
'33042': errors.ExchangeError,
'33043': errors.ExchangeError,
'33044': errors.ExchangeError,
'33045': errors.ExchangeError,
'33046': errors.ExchangeError,
'33047': errors.ExchangeError,
'33048': errors.ExchangeError,
'33049': errors.ExchangeError,
'33050': errors.ExchangeError,
'33051': errors.ExchangeError,
'33059': errors.BadRequest,
'33060': errors.BadRequest,
'33061': errors.ExchangeError,
'33062': errors.ExchangeError,
'33063': errors.ExchangeError,
'33064': errors.ExchangeError,
'33065': errors.ExchangeError,
// account
'21009': errors.ExchangeError,
'34001': errors.PermissionDenied,
'34002': errors.InvalidAddress,
'34003': errors.ExchangeError,
'34004': errors.ExchangeError,
'34005': errors.ExchangeError,
'34006': errors.ExchangeError,
'34007': errors.ExchangeError,
'34008': errors.InsufficientFunds,
'34009': errors.ExchangeError,
'34010': errors.ExchangeError,
'34011': errors.ExchangeError,
'34012': errors.ExchangeError,
'34013': errors.ExchangeError,
'34014': errors.ExchangeError,
'34015': errors.ExchangeError,
'34016': errors.PermissionDenied,
'34017': errors.AccountSuspended,
'34018': errors.AuthenticationError,
'34019': errors.PermissionDenied,
'34020': errors.PermissionDenied,
'34021': errors.InvalidAddress,
'34022': errors.ExchangeError,
'34023': errors.PermissionDenied,
'34026': errors.ExchangeError,
'34036': errors.ExchangeError,
'34037': errors.ExchangeError,
'34038': errors.ExchangeError,
'34039': errors.ExchangeError,
// swap
'35001': errors.ExchangeError,
'35002': errors.ExchangeError,
'35003': errors.ExchangeError,
'35004': errors.ExchangeError,
'35005': errors.AuthenticationError,
'35008': errors.InvalidOrder,
'35010': errors.InvalidOrder,
'35012': errors.InvalidOrder,
'35014': errors.InvalidOrder,
'35015': errors.InvalidOrder,
'35017': errors.ExchangeError,
'35019': errors.InvalidOrder,
'35020': errors.InvalidOrder,
'35021': errors.InvalidOrder,
'35022': errors.ExchangeError,
'35024': errors.ExchangeError,
'35025': errors.InsufficientFunds,
'35026': errors.ExchangeError,
'35029': errors.OrderNotFound,
'35030': errors.InvalidOrder,
'35031': errors.InvalidOrder,
'35032': errors.ExchangeError,
'35037': errors.ExchangeError,
'35039': errors.ExchangeError,
'35040': errors.InvalidOrder,
'35044': errors.ExchangeError,
'35046': errors.InsufficientFunds,
'35047': errors.InsufficientFunds,
'35048': errors.ExchangeError,
'35049': errors.InvalidOrder,
'35050': errors.InvalidOrder,
'35052': errors.InsufficientFunds,
'35053': errors.ExchangeError,
'35055': errors.InsufficientFunds,
'35057': errors.ExchangeError,
'35058': errors.ExchangeError,
'35059': errors.BadRequest,
'35060': errors.BadRequest,
'35061': errors.BadRequest,
'35062': errors.InvalidOrder,
'35063': errors.InvalidOrder,
'35064': errors.InvalidOrder,
'35066': errors.InvalidOrder,
'35067': errors.InvalidOrder,
'35068': errors.InvalidOrder,
'35069': errors.InvalidOrder,
'35070': errors.InvalidOrder,
'35071': errors.InvalidOrder,
'35072': errors.InvalidOrder,
'35073': errors.InvalidOrder,
'35074': errors.InvalidOrder,
'35075': errors.InvalidOrder,
'35076': errors.InvalidOrder,
'35077': errors.InvalidOrder,
'35078': errors.InvalidOrder,
'35079': errors.InvalidOrder,
'35080': errors.InvalidOrder,
'35081': errors.InvalidOrder,
'35082': errors.InvalidOrder,
'35083': errors.InvalidOrder,
'35084': errors.InvalidOrder,
'35085': errors.InvalidOrder,
'35086': errors.InvalidOrder,
'35087': errors.InvalidOrder,
'35088': errors.InvalidOrder,
'35089': errors.InvalidOrder,
'35090': errors.ExchangeError,
'35091': errors.ExchangeError,
'35092': errors.ExchangeError,
'35093': errors.ExchangeError,
'35094': errors.ExchangeError,
'35095': errors.BadRequest,
'35096': errors.ExchangeError,
'35097': errors.ExchangeError,
'35098': errors.ExchangeError,
'35099': errors.ExchangeError,
// option
'36001': errors.BadRequest,
'36002': errors.BadRequest,
'36005': errors.ExchangeError,
'36101': errors.AuthenticationError,
'36102': errors.PermissionDenied,
'36103': errors.AccountSuspended,
'36104': errors.PermissionDenied,
'36105': errors.PermissionDenied,
'36106': errors.AccountSuspended,
'36107': errors.PermissionDenied,
'36108': errors.InsufficientFunds,
'36109': errors.PermissionDenied,
'36201': errors.PermissionDenied,
'36202': errors.PermissionDenied,
'36203': errors.InvalidOrder,
'36204': errors.ExchangeError,
'36205': errors.BadRequest,
'36206': errors.BadRequest,
'36207': errors.InvalidOrder,
'36208': errors.InvalidOrder,
'36209': errors.InvalidOrder,
'36210': errors.InvalidOrder,
'36211': errors.InvalidOrder,
'36212': errors.InvalidOrder,
'36213': errors.InvalidOrder,
'36214': errors.ExchangeError,
'36216': errors.OrderNotFound,
'36217': errors.InvalidOrder,
'36218': errors.InvalidOrder,
'36219': errors.InvalidOrder,
'36220': errors.InvalidOrder,
'36221': errors.InvalidOrder,
'36222': errors.InvalidOrder,
'36223': errors.InvalidOrder,
'36224': errors.InvalidOrder,
'36225': errors.InvalidOrder,
'36226': errors.InvalidOrder,
'36227': errors.InvalidOrder,
'36228': errors.InvalidOrder,
'36229': errors.InvalidOrder,
'36230': errors.InvalidOrder,
// --------------------------------------------------------
// swap
'400': errors.BadRequest,
'401': errors.AuthenticationError,
'403': errors.PermissionDenied,
'404': errors.BadRequest,
'405': errors.BadRequest,
'415': errors.BadRequest,
'429': errors.DDoSProtection,
'500': errors.ExchangeNotAvailable,
'1001': errors.RateLimitExceeded,
'1002': errors.ExchangeError,
'1003': errors.ExchangeError,
// '00000': ExchangeError, // success
'40001': errors.AuthenticationError,
'40002': errors.AuthenticationError,
'40003': errors.AuthenticationError,
'40004': errors.InvalidNonce,
'40005': errors.InvalidNonce,
'40006': errors.AuthenticationError,
'40007': errors.BadRequest,
'40008': errors.InvalidNonce,
'40009': errors.AuthenticationError,
'40010': errors.AuthenticationError,
'40011': errors.AuthenticationError,
'40012': errors.AuthenticationError,
'40013': errors.ExchangeError,
'40014': errors.PermissionDenied,
'40015': errors.ExchangeError,
'40016': errors.PermissionDenied,
'40017': errors.ExchangeError,
'40018': errors.PermissionDenied,
'40019': errors.BadRequest,
'40102': errors.BadRequest,
'40103': errors.BadRequest,
'40104': errors.ExchangeError,
'40105': errors.ExchangeError,
'40106': errors.ExchangeError,
'40107': errors.ExchangeError,
'40108': errors.InvalidOrder,
'40109': errors.OrderNotFound,
'40200': errors.OnMaintenance,
'40201': errors.InvalidOrder,
'40202': errors.ExchangeError,
'40203': errors.BadRequest,
'40204': errors.BadRequest,
'40205': errors.BadRequest,
'40206': errors.BadRequest,
'40207': errors.BadRequest,
'40208': errors.BadRequest,
'40209': errors.BadRequest,
'40300': errors.ExchangeError,
'40301': errors.PermissionDenied,
'40302': errors.BadRequest,
'40303': errors.BadRequest,
'40304': errors.BadRequest,
'40305': errors.BadRequest,
'40306': errors.ExchangeError,
'40308': errors.OnMaintenance,
'40309': errors.BadSymbol,
'40400': errors.ExchangeError,
'40401': errors.ExchangeError,
'40402': errors.BadRequest,
'40403': errors.BadRequest,
'40404': errors.BadRequest,
'40405': errors.BadRequest,
'40406': errors.BadRequest,
'40407': errors.ExchangeError,
'40408': errors.ExchangeError,
'40409': errors.ExchangeError,
'40500': errors.InvalidOrder,
'40501': errors.ExchangeError,
'40502': errors.ExchangeError,
'40503': errors.ExchangeError,
'40504': errors.ExchangeError,
'40505': errors.ExchangeError,
'40506': errors.AuthenticationError,
'40507': errors.AuthenticationError,
'40508': errors.ExchangeError,
'40509': errors.ExchangeError,
'40600': errors.ExchangeError,
'40601': errors.ExchangeError,
'40602': errors.ExchangeError,
'40603': errors.ExchangeError,
'40604': errors.ExchangeNotAvailable,
'40605': errors.ExchangeError,
'40606': errors.ExchangeError,
'40607': errors.ExchangeError,
'40608': errors.ExchangeError,
'40609': errors.ExchangeError,
'40700': errors.BadRequest,
'40701': errors.ExchangeError,
'40702': errors.ExchangeError,
'40703': errors.ExchangeError,
'40704': errors.ExchangeError,
'40705': errors.BadRequest,
'40706': errors.InvalidOrder,
'40707': errors.BadRequest,
'40708': errors.BadRequest,
'40709': errors.ExchangeError,
'40710': errors.ExchangeError,
'40711': errors.InsufficientFunds,
'40712': errors.InsufficientFunds,
'40713': errors.ExchangeError,
'40714': errors.ExchangeError,
'41114': errors.OnMaintenance,
'43011': errors.InvalidOrder,
'43025': errors.InvalidOrder,
'45110': errors.InvalidOrder,
// spot
'invalid sign': errors.AuthenticationError,
'invalid currency': errors.BadSymbol,
'invalid symbol': errors.BadSymbol,
'invalid period': errors.BadRequest,
'invalid user': errors.ExchangeError,
'invalid amount': errors.InvalidOrder,
'invalid type': errors.InvalidOrder,
'invalid orderId': errors.InvalidOrder,
'invalid record': errors.ExchangeError,
'invalid accountId': errors.BadRequest,
'invalid address': errors.BadRequest,
'accesskey not null': errors.AuthenticationError,
'illegal accesskey': errors.AuthenticationError,
'sign not null': errors.AuthenticationError,
'req_time is too much difference from server time': errors.InvalidNonce,
'permissions not right': errors.PermissionDenied,
'illegal sign invalid': errors.AuthenticationError,
'user locked': errors.AccountSuspended,
'Request Frequency Is Too High': errors.RateLimitExceeded,
'more than a daily rate of cash': errors.BadRequest,
'more than the maximum daily withdrawal amount': errors.BadRequest,
'need to bind email or mobile': errors.ExchangeError,
'user forbid': errors.PermissionDenied,
'User Prohibited Cash Withdrawal': errors.PermissionDenied,
'Cash Withdrawal Is Less Than The Minimum Value': errors.BadRequest,
'Cash Withdrawal Is More Than The Maximum Value': errors.BadRequest,
'the account with in 24 hours ban coin': errors.PermissionDenied,
'order cancel fail': errors.BadRequest,
'base symbol error': errors.BadSymbol,
'base date error': errors.ExchangeError,
'api signature not valid': errors.AuthenticationError,
'gateway internal error': errors.ExchangeError,
'audit failed': errors.ExchangeError,
'order queryorder invalid': errors.BadRequest,
'market no need price': errors.InvalidOrder,
'limit need price': errors.InvalidOrder,
'userid not equal to account_id': errors.ExchangeError,
'your balance is low': errors.InsufficientFunds,
'address invalid cointype': errors.ExchangeError,
'system exception': errors.ExchangeError,
'50003': errors.ExchangeError,
'50004': errors.BadSymbol,
'50006': errors.PermissionDenied,
'50007': errors.PermissionDenied,
'50008': errors.RequestTimeout,
'50009': errors.RateLimitExceeded,
'50010': errors.ExchangeError,
'50014': errors.InvalidOrder,
'50015': errors.InvalidOrder,
'50016': errors.InvalidOrder,
'50017': errors.InvalidOrder,
'50018': errors.InvalidOrder,
'50019': errors.InvalidOrder,
'50020': errors.InsufficientFunds,
'50021': errors.InvalidOrder,
'50026': errors.InvalidOrder,
'invalid order query time': errors.ExchangeError,
'invalid start time': errors.BadRequest,
'invalid end time': errors.BadRequest,
'20003': errors.ExchangeError,
'01001': errors.ExchangeError,
'43111': errors.PermissionDenied, // {"code":"43111","msg":"参数错误 address not in address book","requestTime":1665394201164,"data":null}
},
'broad': {
'invalid size, valid range': errors.ExchangeError,
},
},
'precisionMode': number.TICK_SIZE,
'commonCurrencies': {
'JADE': 'Jade Protocol',
},
'options': {
'timeframes': {
'spot': {
'1m': '1min',
'5m': '5min',
'15m': '15min',
'30m': '30min',
'1h': '1h',
'4h': '4h',
'6h': '6Hutc',
'12h': '12Hutc',
'1d': '1Dutc',
'3d': '3Dutc',
'1w': '1Wutc',
'1M': '1Mutc',
},
'swap': {
'1m': '1m',
'3m': '3m',
'5m': '5m',
'15m': '15m',
'30m': '30m',
'1h': '1H',
'2h': '2H',
'4h': '4H',
'6h': '6Hutc',
'12h': '12Hutc',
'1d': '1Dutc',
'3d': '3Dutc',
'1w': '1Wutc',
'1M': '1Mutc',
},
},
'fetchMarkets': [
'spot',
'swap',
],
'defaultType': 'spot',
'defaultSubType': 'linear',
'createMarketBuyOrderRequiresPrice': true,
'broker': 'p4sve',
'withdraw': {
'fillResponseFromRequest': true,
},
'accountsByType': {
'main': 'EXCHANGE',
'spot': 'EXCHANGE',
'future': 'USDT_MIX',
'contract': 'CONTRACT',
'mix': 'USD_MIX',
},
'accountsById': {
'EXCHANGE': 'spot',
'USDT_MIX': 'future',
'CONTRACT': 'swap',
'USD_MIX': 'swap',
},
'sandboxMode': false,
'networks': {
'TRX': 'TRC20',
'ETH': 'ERC20',
'BSC': 'BEP20',
},
'networksById': {
'TRC20': 'TRX',
'BSC': 'BEP20',
},
'defaultTimeInForce': 'GTC', // 'GTC' = Good To Cancel (default), 'IOC' = Immediate Or Cancel
},
});
}
setSandboxMode(enabled) {
this.options['sandboxMode'] = enabled;
}
async fetchTime(params = {}) {
/**
* @method
* @name bitget#fetchTime
* @description fetches the current integer timestamp in milliseconds from the exchange server
* @param {object} params extra parameters specific to the bitget api endpoint
* @returns {int} the current integer timestamp in milliseconds from the exchange server
*/
const response = await this.publicSpotGetPublicTime(params);
//
// {
// code: '00000',
// msg: 'success',
// requestTime: 1645837773501,
// data: '1645837773501'
// }
//
return this.safeIntege