UNPKG

@jalmonter/ccxt

Version:

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

1,030 lines (1,028 loc) 332 kB
'use strict'; var okx$1 = require('./abstract/okx.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 okx * @augments Exchange */ class okx extends okx$1 { describe() { return this.deepExtend(super.describe(), { 'id': 'okx', 'name': 'OKX', 'countries': ['CN', 'US'], 'version': 'v5', 'rateLimit': 100 * 1.03, 'pro': true, 'certified': true, 'has': { 'CORS': undefined, 'spot': true, 'margin': true, 'swap': true, 'future': true, 'option': true, 'addMargin': true, 'cancelAllOrders': false, 'cancelOrder': true, 'cancelOrders': true, 'closeAllPositions': false, 'closePosition': true, 'createDepositAddress': false, 'createMarketBuyOrderWithCost': true, 'createMarketSellOrderWithCost': true, 'createOrder': true, 'createOrders': true, 'createPostOnlyOrder': true, 'createReduceOnlyOrder': true, 'createStopLimitOrder': true, 'createStopMarketOrder': true, 'createStopOrder': true, 'editOrder': true, 'fetchAccounts': true, 'fetchBalance': true, 'fetchBidsAsks': undefined, 'fetchBorrowInterest': true, 'fetchBorrowRateHistories': true, 'fetchBorrowRateHistory': true, 'fetchCanceledOrders': true, 'fetchClosedOrder': undefined, 'fetchClosedOrders': true, 'fetchCrossBorrowRate': true, 'fetchCrossBorrowRates': true, 'fetchCurrencies': true, 'fetchDeposit': true, 'fetchDepositAddress': true, 'fetchDepositAddresses': false, 'fetchDepositAddressesByNetwork': true, 'fetchDeposits': true, 'fetchDepositsWithdrawals': false, 'fetchDepositWithdrawFee': 'emulated', 'fetchDepositWithdrawFees': true, 'fetchFundingHistory': true, 'fetchFundingRate': true, 'fetchFundingRateHistory': true, 'fetchFundingRates': false, 'fetchGreeks': true, 'fetchIndexOHLCV': true, 'fetchIsolatedBorrowRate': false, 'fetchIsolatedBorrowRates': false, 'fetchL3OrderBook': false, 'fetchLedger': true, 'fetchLedgerEntry': undefined, 'fetchLeverage': true, 'fetchLeverageTiers': false, 'fetchMarketLeverageTiers': true, 'fetchMarkets': true, 'fetchMarkOHLCV': true, 'fetchMySettlementHistory': false, 'fetchMyTrades': true, 'fetchOHLCV': true, 'fetchOpenInterest': true, 'fetchOpenInterestHistory': true, 'fetchOpenOrder': undefined, 'fetchOpenOrders': true, 'fetchOrder': true, 'fetchOrderBook': true, 'fetchOrderBooks': false, 'fetchOrders': false, 'fetchOrderTrades': true, 'fetchPermissions': undefined, 'fetchPosition': true, 'fetchPositions': true, 'fetchPositionsForSymbol': true, 'fetchPositionsRisk': false, 'fetchPremiumIndexOHLCV': false, 'fetchSettlementHistory': true, 'fetchStatus': true, 'fetchTicker': true, 'fetchTickers': true, 'fetchTime': true, 'fetchTrades': true, 'fetchTradingFee': true, 'fetchTradingFees': false, 'fetchTradingLimits': false, 'fetchTransactionFee': false, 'fetchTransactionFees': false, 'fetchTransactions': false, 'fetchTransfer': true, 'fetchTransfers': true, 'fetchUnderlyingAssets': true, 'fetchVolatilityHistory': false, 'fetchWithdrawal': true, 'fetchWithdrawals': true, 'fetchWithdrawalWhitelist': false, 'reduceMargin': true, 'repayCrossMargin': true, 'setLeverage': true, 'setMargin': false, 'setMarginMode': true, 'setPositionMode': true, 'signIn': false, 'transfer': true, 'withdraw': true, }, 'timeframes': { '1m': '1m', '3m': '3m', '5m': '5m', '15m': '15m', '30m': '30m', '1h': '1H', '2h': '2H', '4h': '4H', '6h': '6H', '12h': '12H', '1d': '1D', '1w': '1W', '1M': '1M', '3M': '3M', }, 'hostname': 'www.okx.com', 'urls': { 'logo': 'https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg', 'api': { 'rest': 'https://{hostname}', }, 'www': 'https://www.okx.com', 'doc': 'https://www.okx.com/docs-v5/en/', 'fees': 'https://www.okx.com/pages/products/fees.html', 'referral': { // old reflink 0% discount https://www.okx.com/join/1888677 // new reflink 20% discount https://www.okx.com/join/CCXT2023 // okx + ccxt campaign reflink with 20% discount https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023 'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023', 'discount': 0.2, }, 'test': { 'rest': 'https://{hostname}', }, }, 'api': { 'public': { 'get': { 'market/tickers': 1, 'market/ticker': 1, 'market/index-tickers': 1, 'market/books': 1 / 2, 'market/books-lite': 5 / 3, 'market/candles': 1 / 2, 'market/history-candles': 1, 'market/index-candles': 1, 'market/history-index-candles': 2, 'market/mark-price-candles': 1, 'market/history-mark-price-candles': 2, 'market/trades': 1 / 5, 'market/history-trades': 2, 'market/option/instrument-family-trades': 1, 'market/platform-24-volume': 10, 'market/open-oracle': 50, 'market/exchange-rate': 20, 'market/index-components': 1, 'public/economic-calendar': 50, 'market/block-tickers': 1, 'market/block-ticker': 1, 'public/block-trades': 1, 'public/instruments': 1, 'public/delivery-exercise-history': 1 / 2, 'public/open-interest': 1, 'public/funding-rate': 1, 'public/funding-rate-history': 1, 'public/price-limit': 1, 'public/opt-summary': 1, 'public/estimated-price': 2, 'public/discount-rate-interest-free-quota': 10, 'public/time': 2, 'public/mark-price': 2, 'public/position-tiers': 2, 'public/interest-rate-loan-quota': 10, 'public/vip-interest-rate-loan-quota': 10, 'public/underlying': 1, 'public/insurance-fund': 2, 'public/convert-contract-coin': 2, 'public/option-trades': 1, 'public/instrument-tick-bands': 4, 'rubik/stat/trading-data/support-coin': 4, 'rubik/stat/taker-volume': 4, 'rubik/stat/margin/loan-ratio': 4, // long/short 'rubik/stat/contracts/long-short-account-ratio': 4, 'rubik/stat/contracts/open-interest-volume': 4, 'rubik/stat/option/open-interest-volume': 4, // put/call 'rubik/stat/option/open-interest-volume-ratio': 4, 'rubik/stat/option/open-interest-volume-expiry': 4, 'rubik/stat/option/open-interest-volume-strike': 4, 'rubik/stat/option/taker-block-volume': 4, 'system/status': 50, // public api 'sprd/spreads': 1, 'sprd/books': 1 / 2, 'sprd/ticker': 1, 'sprd/public-trades': 1 / 5, 'tradingBot/grid/ai-param': 1, 'tradingBot/grid/min-investment': 1, 'tradingBot/public/rsi-back-testing': 1, 'asset/exchange-list': 5 / 3, 'finance/staking-defi/eth/apy-history': 5 / 3, 'finance/savings/lending-rate-summary': 5 / 3, 'finance/savings/lending-rate-history': 5 / 3, // public broker 'finance/sfp/dcd/products': 2 / 3, // copytrading 'copytrading/public-lead-traders': 4, 'copytrading/public-weekly-pnl': 4, 'copytrading/public-stats': 4, 'copytrading/public-preference-currency': 4, 'copytrading/public-current-subpositions': 4, 'copytrading/public-subpositions-history': 4, }, }, 'private': { 'get': { // rfq 'rfq/counterparties': 4, 'rfq/maker-instrument-settings': 4, 'rfq/rfqs': 10, 'rfq/quotes': 10, 'rfq/trades': 4, 'rfq/public-trades': 4, // sprd 'sprd/order': 1 / 3, 'sprd/orders-pending': 1 / 3, 'sprd/orders-history': 1 / 2, 'sprd/trades': 1 / 3, // trade 'trade/order': 1 / 3, 'trade/orders-pending': 1 / 3, 'trade/orders-history': 1 / 2, 'trade/orders-history-archive': 1, 'trade/fills': 1 / 3, 'trade/fills-history': 2.2, 'trade/fills-archive': 2, 'trade/order-algo': 1, 'trade/orders-algo-pending': 1, 'trade/orders-algo-history': 1, 'trade/easy-convert-currency-list': 20, 'trade/easy-convert-history': 20, 'trade/one-click-repay-currency-list': 20, 'trade/one-click-repay-history': 20, // asset 'asset/currencies': 5 / 3, 'asset/balances': 5 / 3, 'asset/non-tradable-assets': 5 / 3, 'asset/asset-valuation': 10, 'asset/transfer-state': 10, 'asset/bills': 5 / 3, 'asset/deposit-lightning': 5, 'asset/deposit-address': 5 / 3, 'asset/deposit-history': 5 / 3, 'asset/withdrawal-history': 5 / 3, 'asset/deposit-withdraw-status': 20, 'asset/convert/currencies': 5 / 3, 'asset/convert/currency-pair': 5 / 3, 'asset/convert/history': 5 / 3, 'asset/monthly-statement': 2, // account 'account/balance': 2, 'account/positions': 2, 'account/positions-history': 100, 'account/account-position-risk': 2, 'account/bills': 5 / 3, 'account/bills-archive': 5 / 3, 'account/config': 4, 'account/max-size': 1, 'account/max-avail-size': 1, 'account/leverage-info': 1, 'account/adjust-leverage-info': 4, 'account/max-loan': 1, 'account/trade-fee': 4, 'account/interest-accrued': 4, 'account/interest-rate': 4, 'account/max-withdrawal': 1, 'account/risk-state': 2, 'account/quick-margin-borrow-repay-history': 4, 'account/borrow-repay-history': 4, 'account/vip-interest-accrued': 4, 'account/vip-interest-deducted': 4, 'account/vip-loan-order-list': 4, 'account/vip-loan-order-detail': 4, 'account/interest-limits': 4, 'account/greeks': 2, 'account/position-tiers': 2, 'account/mmp-config': 4, // subaccount 'users/subaccount/list': 10, 'account/subaccount/balances': 10 / 3, 'asset/subaccount/balances': 10 / 3, 'account/subaccount/max-withdrawal': 1, 'asset/subaccount/bills': 5 / 3, 'asset/subaccount/managed-subaccount-bills': 5 / 3, 'users/entrust-subaccount-list': 10, 'account/subaccount/interest-limits': 4, // grid trading 'tradingBot/grid/orders-algo-pending': 1, 'tradingBot/grid/orders-algo-history': 1, 'tradingBot/grid/orders-algo-details': 1, 'tradingBot/grid/sub-orders': 1, 'tradingBot/grid/positions': 1, 'tradingBot/grid/ai-param': 1, 'tradingBot/public/rsi-back-testing': 1, 'tradingBot/signal/orders-algo-details': 1, 'tradingBot/signal/positions': 1, 'tradingBot/signal/sub-orders': 1, 'tradingBot/signal/event-history': 1, 'tradingBot/recurring/orders-algo-pending': 1, 'tradingBot/recurring/orders-algo-history': 1, 'tradingBot/recurring/orders-algo-details': 1, 'tradingBot/recurring/sub-orders': 1, // earn 'finance/savings/balance': 5 / 3, 'finance/savings/lending-history': 5 / 3, 'finance/staking-defi/offers': 10 / 3, 'finance/staking-defi/orders-active': 10 / 3, 'finance/staking-defi/orders-history': 10 / 3, // eth staking 'finance/staking-defi/eth/balance': 5 / 3, 'finance/staking-defi/eth/purchase-redeem-history': 5 / 3, // copytrading 'copytrading/current-subpositions': 1, 'copytrading/subpositions-history': 1, 'copytrading/instruments': 4, 'copytrading/profit-sharing-details': 4, 'copytrading/total-profit-sharing': 4, 'copytrading/unrealized-profit-sharing-details': 4, 'copytrading/copy-settings': 4, 'copytrading/batch-leverage-info': 4, 'copytrading/current-lead-traders': 4, 'copytrading/lead-traders-history': 4, // broker 'broker/nd/info': 10, 'broker/nd/subaccount-info': 10, 'broker/nd/subaccount/apikey': 10, 'asset/broker/nd/subaccount-deposit-address': 5 / 3, 'asset/broker/nd/subaccount-deposit-history': 4, 'asset/broker/nd/subaccount-withdrawal-history': 4, 'broker/nd/rebate-daily': 100, 'broker/nd/rebate-per-orders': 300, 'finance/sfp/dcd/order': 2, 'finance/sfp/dcd/orders': 2, 'broker/fd/rebate-per-orders': 300, 'broker/fd/if-rebate': 5, // affiliate 'affiliate/invitee/detail': 1, 'users/partner/if-rebate': 1, }, 'post': { // rfq 'rfq/create-rfq': 4, 'rfq/cancel-rfq': 4, 'rfq/cancel-batch-rfqs': 10, 'rfq/cancel-all-rfqs': 10, 'rfq/execute-quote': 15, 'rfq/maker-instrument-settings': 4, 'rfq/mmp-reset': 4, 'rfq/create-quote': 0.4, 'rfq/cancel-quote': 0.4, 'rfq/cancel-batch-quotes': 10, 'rfq/cancel-all-quotes': 10, // sprd 'sprd/order': 1, 'sprd/cancel-order': 1, 'sprd/mass-cancel': 1, 'sprd/amend-order': 1, // trade 'trade/order': 1 / 3, 'trade/batch-orders': 1 / 15, 'trade/cancel-order': 1 / 3, 'trade/cancel-batch-orders': 1 / 15, 'trade/amend-order': 1 / 3, 'trade/amend-batch-orders': 1 / 150, 'trade/close-position': 1, 'trade/fills-archive': 172800, 'trade/order-algo': 1, 'trade/cancel-algos': 1, 'trade/amend-algos': 1, 'trade/cancel-advance-algos': 1, 'trade/easy-convert': 20, 'trade/one-click-repay': 20, 'trade/mass-cancel': 4, 'trade/cancel-all-after': 10, // asset 'asset/transfer': 10, 'asset/withdrawal': 5 / 3, 'asset/withdrawal-lightning': 5, 'asset/cancel-withdrawal': 5 / 3, 'asset/convert-dust-assets': 10, 'asset/convert/estimate-quote': 1, 'asset/convert/trade': 1, 'asset/monthly-statement': 1, // account 'account/set-position-mode': 4, 'account/set-leverage': 1, 'account/position/margin-balance': 1, 'account/set-greeks': 4, 'account/set-isolated-mode': 4, 'account/quick-margin-borrow-repay': 4, 'account/borrow-repay': 5 / 3, 'account/simulated_margin': 10, 'account/set-riskOffset-type': 2, 'account/activate-option': 4, 'account/set-auto-loan': 4, 'account/set-account-level': 4, 'account/mmp-reset': 4, 'account/mmp-config': 100, // subaccount 'users/subaccount/modify-apikey': 10, 'asset/subaccount/transfer': 10, 'users/subaccount/set-transfer-out': 10, 'account/subaccount/set-loan-allocation': 4, // grid trading 'tradingBot/grid/order-algo': 1, 'tradingBot/grid/amend-order-algo': 1, 'tradingBot/grid/stop-order-algo': 1, 'tradingBot/grid/close-position': 1, 'tradingBot/grid/cancel-close-order': 1, 'tradingBot/grid/order-instant-trigger': 1, 'tradingBot/grid/withdraw-income': 1, 'tradingBot/grid/compute-margin-balance': 1, 'tradingBot/grid/margin-balance': 1, 'tradingBot/grid/min-investment': 1, 'tradingBot/recurring/order-algo': 1, 'tradingBot/recurring/amend-order-algo': 1, 'tradingBot/recurring/stop-order-algo': 1, // earn 'finance/savings/purchase-redempt': 5 / 3, 'finance/savings/set-lending-rate': 5 / 3, 'finance/staking-defi/purchase': 3, 'finance/staking-defi/redeem': 3, 'finance/staking-defi/cancel': 3, // eth staking 'finance/staking-defi/eth/purchase': 5, 'finance/staking-defi/eth/redeem': 5, // copytrading 'copytrading/algo-order': 1, 'copytrading/close-subposition': 1, 'copytrading/set-instruments': 4, 'copytrading/first-copy-settings': 4, 'copytrading/amend-copy-settings': 4, 'copytrading/stop-copy-trading': 4, 'copytrading/batch-set-leverage': 4, // broker 'broker/nd/create-subaccount': 0.25, 'broker/nd/delete-subaccount': 1, 'broker/nd/subaccount/apikey': 0.25, 'broker/nd/subaccount/modify-apikey': 1, 'broker/nd/subaccount/delete-apikey': 1, 'broker/nd/set-subaccount-level': 4, 'broker/nd/set-subaccount-fee-rate': 4, 'broker/nd/set-subaccount-assets': 0.25, 'asset/broker/nd/subaccount-deposit-address': 1, 'asset/broker/nd/modify-subaccount-deposit-address': 5 / 3, 'broker/nd/rebate-per-orders': 36000, 'finance/sfp/dcd/quote': 10, 'finance/sfp/dcd/order': 10, 'broker/nd/report-subaccount-ip': 0.25, 'broker/fd/rebate-per-orders': 36000, }, }, }, 'fees': { 'trading': { 'taker': this.parseNumber('0.0015'), 'maker': this.parseNumber('0.0010'), }, 'spot': { 'taker': this.parseNumber('0.0015'), 'maker': this.parseNumber('0.0010'), }, 'future': { 'taker': this.parseNumber('0.0005'), 'maker': this.parseNumber('0.0002'), }, 'swap': { 'taker': this.parseNumber('0.00050'), 'maker': this.parseNumber('0.00020'), }, }, 'requiredCredentials': { 'apiKey': true, 'secret': true, 'password': true, }, 'exceptions': { 'exact': { // Public error codes from 50000-53999 // General Class '1': errors.ExchangeError, '2': errors.ExchangeError, '50000': errors.BadRequest, '50001': errors.OnMaintenance, '50002': errors.BadRequest, '50004': errors.RequestTimeout, '50005': errors.ExchangeNotAvailable, '50006': errors.BadRequest, '50007': errors.AccountSuspended, '50008': errors.AuthenticationError, '50009': errors.AccountSuspended, '50010': errors.ExchangeError, '50011': errors.RateLimitExceeded, '50012': errors.ExchangeError, '50013': errors.ExchangeNotAvailable, '50014': errors.BadRequest, '50015': errors.ExchangeError, '50016': errors.ExchangeError, '50017': errors.ExchangeError, '50018': errors.ExchangeError, '50019': errors.ExchangeError, '50020': errors.ExchangeError, '50021': errors.ExchangeError, '50022': errors.ExchangeError, '50023': errors.ExchangeError, '50024': errors.BadRequest, '50025': errors.ExchangeError, '50026': errors.ExchangeNotAvailable, '50027': errors.PermissionDenied, '50028': errors.ExchangeError, '50044': errors.BadRequest, // API Class '50100': errors.ExchangeError, '50101': errors.AuthenticationError, '50102': errors.InvalidNonce, '50103': errors.AuthenticationError, '50104': errors.AuthenticationError, '50105': errors.AuthenticationError, '50106': errors.AuthenticationError, '50107': errors.AuthenticationError, '50108': errors.ExchangeError, '50109': errors.ExchangeError, '50110': errors.PermissionDenied, '50111': errors.AuthenticationError, '50112': errors.AuthenticationError, '50113': errors.AuthenticationError, '50114': errors.AuthenticationError, '50115': errors.BadRequest, // Trade Class '51000': errors.BadRequest, '51001': errors.BadSymbol, '51002': errors.BadSymbol, '51003': errors.BadRequest, '51004': errors.InvalidOrder, '51005': errors.InvalidOrder, '51006': errors.InvalidOrder, '51007': errors.InvalidOrder, '51008': errors.InsufficientFunds, '51009': errors.AccountSuspended, '51010': errors.AccountNotEnabled, '51011': errors.InvalidOrder, '51012': errors.BadSymbol, '51014': errors.BadSymbol, '51015': errors.BadSymbol, '51016': errors.InvalidOrder, '51017': errors.ExchangeError, '51018': errors.ExchangeError, '51019': errors.ExchangeError, '51020': errors.InvalidOrder, '51021': errors.ContractUnavailable, '51022': errors.ContractUnavailable, '51023': errors.ExchangeError, '51024': errors.AccountSuspended, '51025': errors.ExchangeError, '51026': errors.BadSymbol, '51027': errors.ContractUnavailable, '51028': errors.ContractUnavailable, '51029': errors.ContractUnavailable, '51030': errors.ContractUnavailable, '51031': errors.InvalidOrder, '51046': errors.InvalidOrder, '51047': errors.InvalidOrder, '51072': errors.InvalidOrder, '51073': errors.InvalidOrder, '51074': errors.InvalidOrder, '51100': errors.InvalidOrder, '51101': errors.InvalidOrder, '51102': errors.InvalidOrder, '51103': errors.InvalidOrder, '51104': errors.InvalidOrder, '51105': errors.InvalidOrder, '51106': errors.InvalidOrder, '51107': errors.InvalidOrder, '51108': errors.InvalidOrder, '51109': errors.InvalidOrder, '51110': errors.InvalidOrder, '51111': errors.BadRequest, '51112': errors.InvalidOrder, '51113': errors.RateLimitExceeded, '51115': errors.InvalidOrder, '51116': errors.InvalidOrder, '51117': errors.InvalidOrder, '51118': errors.InvalidOrder, '51119': errors.InsufficientFunds, '51120': errors.InvalidOrder, '51121': errors.InvalidOrder, '51122': errors.InvalidOrder, '51124': errors.InvalidOrder, '51125': errors.InvalidOrder, '51126': errors.InvalidOrder, '51127': errors.InsufficientFunds, '51128': errors.InvalidOrder, '51129': errors.InvalidOrder, '51130': errors.BadSymbol, '51131': errors.InsufficientFunds, '51132': errors.InvalidOrder, '51133': errors.InvalidOrder, '51134': errors.InvalidOrder, '51135': errors.InvalidOrder, '51136': errors.InvalidOrder, '51137': errors.InvalidOrder, '51138': errors.InvalidOrder, '51139': errors.InvalidOrder, '51156': errors.BadRequest, '51159': errors.BadRequest, '51162': errors.InvalidOrder, '51163': errors.InvalidOrder, '51166': errors.InvalidOrder, '51174': errors.InvalidOrder, '51185': errors.InvalidOrder, '51201': errors.InvalidOrder, '51202': errors.InvalidOrder, '51203': errors.InvalidOrder, '51204': errors.InvalidOrder, '51205': errors.InvalidOrder, '51250': errors.InvalidOrder, '51251': errors.InvalidOrder, '51252': errors.InvalidOrder, '51253': errors.InvalidOrder, '51254': errors.InvalidOrder, '51255': errors.InvalidOrder, '51256': errors.InvalidOrder, '51257': errors.InvalidOrder, '51258': errors.InvalidOrder, '51259': errors.InvalidOrder, '51260': errors.InvalidOrder, '51261': errors.InvalidOrder, '51262': errors.InvalidOrder, '51263': errors.InvalidOrder, '51264': errors.InvalidOrder, '51265': errors.InvalidOrder, '51267': errors.InvalidOrder, '51268': errors.InvalidOrder, '51269': errors.InvalidOrder, '51270': errors.InvalidOrder, '51271': errors.InvalidOrder, '51272': errors.InvalidOrder, '51273': errors.InvalidOrder, '51274': errors.InvalidOrder, '51275': errors.InvalidOrder, '51276': errors.InvalidOrder, '51277': errors.InvalidOrder, '51278': errors.InvalidOrder, '51279': errors.InvalidOrder, '51280': errors.InvalidOrder, '51321': errors.InvalidOrder, '51322': errors.InvalidOrder, '51323': errors.BadRequest, '51324': errors.BadRequest, '51325': errors.InvalidOrder, '51327': errors.InvalidOrder, '51328': errors.InvalidOrder, '51329': errors.InvalidOrder, '51330': errors.InvalidOrder, '51400': errors.OrderNotFound, '51401': errors.OrderNotFound, '51402': errors.OrderNotFound, '51403': errors.InvalidOrder, '51404': errors.InvalidOrder, '51405': errors.ExchangeError, '51406': errors.ExchangeError, '51407': errors.BadRequest, '51408': errors.ExchangeError, '51409': errors.ExchangeError, '51410': errors.CancelPending, '51500': errors.ExchangeError, '51501': errors.ExchangeError, '51502': errors.InsufficientFunds, '51503': errors.ExchangeError, '51506': errors.ExchangeError, '51508': errors.ExchangeError, '51509': errors.ExchangeError, '51510': errors.ExchangeError, '51511': errors.ExchangeError, '51600': errors.ExchangeError, '51601': errors.ExchangeError, '51602': errors.ExchangeError, '51603': errors.OrderNotFound, '51732': errors.AuthenticationError, '51733': errors.AuthenticationError, '51734': errors.AuthenticationError, '51735': errors.ExchangeError, '51736': errors.InsufficientFunds, // Data class '52000': errors.ExchangeError, // SPOT/MARGIN error codes 54000-54999 '54000': errors.ExchangeError, '54001': errors.ExchangeError, // FUNDING error codes 58000-58999 '58000': errors.ExchangeError, '58001': errors.AuthenticationError, '58002': errors.PermissionDenied, '58003': errors.ExchangeError, '58004': errors.AccountSuspended, '58005': errors.ExchangeError, '58006': errors.ExchangeError, '58007': errors.ExchangeError, '58100': errors.ExchangeError, '58101': errors.AccountSuspended, '58102': errors.RateLimitExceeded, '58103': errors.ExchangeError, '58104': errors.ExchangeError, '58105': errors.ExchangeError, '58106': errors.ExchangeError, '58107': errors.ExchangeError, '58108': errors.ExchangeError, '58109': errors.ExchangeError, '58110': errors.ExchangeError, '58111': errors.ExchangeError, '58112': errors.ExchangeError, '58114': errors.ExchangeError, '58115': errors.ExchangeError, '58116': errors.ExchangeError, '58117': errors.ExchangeError, '58125': errors.BadRequest, '58126': errors.BadRequest, '58127': errors.BadRequest, '58128': errors.BadRequest, '58200': errors.ExchangeError, '58201': errors.ExchangeError, '58202': errors.ExchangeError, '58203': errors.InvalidAddress, '58204': errors.AccountSuspended, '58205': errors.ExchangeError, '58206': errors.ExchangeError, '58207': errors.InvalidAddress, '58208': errors.ExchangeError, '58209': errors.ExchangeError, '58210': errors.ExchangeError, '58211': errors.ExchangeError, '58212': errors.ExchangeError, '58213': errors.AuthenticationError, '58221': errors.BadRequest, '58222': errors.BadRequest, '58224': errors.BadRequest, '58227': errors.BadRequest, '58228': errors.BadRequest, '58229': errors.InsufficientFunds, '58300': errors.ExchangeError, '58350': errors.InsufficientFunds, // Account error codes 59000-59999 '59000': errors.ExchangeError, '59001': errors.ExchangeError, '59100': errors.ExchangeError, '59101': errors.ExchangeError, '59102': errors.ExchangeError, '59103': errors.InsufficientFunds, '59104': errors.ExchangeError, '59105': errors.ExchangeError, '59106': errors.ExchangeError, '59107': errors.ExchangeError, '59108': errors.InsufficientFunds, '59109': errors.ExchangeError, '59128': errors.InvalidOrder, '59200': errors.InsufficientFunds, '59201': errors.InsufficientFunds, '59216': errors.BadRequest, '59260': errors.PermissionDenied, '59262': errors.PermissionDenied, '59300': errors.ExchangeError, '59301': errors.ExchangeError, '59313': errors.ExchangeError, '59401': errors.ExchangeError, '59500': errors.ExchangeError, '59501': errors.ExchangeError, '59502': errors.ExchangeError, '59503': errors.ExchangeError, '59504': errors.ExchangeError, '59505': errors.ExchangeError, '59506': errors.ExchangeError, '59507': errors.ExchangeError, '59508': errors.AccountSuspended, '59642': errors.BadRequest, '59643': errors.ExchangeError, // WebSocket error Codes from 60000-63999 '60001': errors.AuthenticationError, '60002': errors.AuthenticationError, '60003': errors.AuthenticationError, '60004': errors.AuthenticationError, '60005': errors.AuthenticationError, '60006': errors.InvalidNonce, '60007': errors.AuthenticationError, '60008': errors.AuthenticationError, '60009': errors.AuthenticationError, '60010': errors.AuthenticationError, '60011': errors.AuthenticationError, '60012': errors.BadRequest, '60013': errors.BadRequest, '60014': errors.RateLimitExceeded, '60015': errors.NetworkError, '60016': errors.ExchangeNotAvailable, '60017': errors.BadRequest, '60018': errors.BadRequest, '60019': errors.BadRequest, '63999': errors.ExchangeError, '70010': errors.BadRequest, '70013': errors.BadRequest, '70016': errors.BadRequest, // Please specify your instrument settings for at least one instType. }, 'broad': { 'Internal Server Error': errors.ExchangeNotAvailable, 'server error': errors.ExchangeNotAvailable, // {"code":500,"data":{},"detailMsg":"","error_code":"500","error_message":"server error 1236805249","msg":"server error 1236805249"} }, }, 'httpExceptions': { '429': errors.ExchangeNotAvailable, // https://github.com/ccxt/ccxt/issues/9612 }, 'precisionMode': number.TICK_SIZE, 'options': { 'sandboxMode': false, 'defaultNetwork': 'ERC20', 'defaultNetworks': { 'ETH': 'ERC20', 'BTC': 'BTC', 'USDT': 'TRC20', }, 'networks': { 'BTC': 'Bitcoin', 'BTCLN': 'Lightning', 'BEP20': 'BSC', 'ERC20': 'ERC20', 'TRC20': 'TRC20', 'CRC20': 'Crypto', // sorted 'ACA': 'Acala', 'ALGO': 'Algorand', 'BHP': 'BHP', 'APT': 'Aptos', 'ARBONE': 'Arbitrum one', 'AVAXC': 'Avalanche C-Chain', 'AVAXX': 'Avalanche X-Chain', 'ARK': 'ARK', 'AR': 'Arweave', 'ASTR': 'Astar', 'BCH': 'BitcoinCash', 'BSV': 'Bitcoin SV', 'BTM': 'Bytom', 'ADA': 'Cardano', 'CSPR': 'Casper', 'CELO': 'CELO', 'XCH': 'Chia', 'CHZ': 'Chiliz', 'ATOM': 'Cosmos', 'TRUE': 'TrueChain', 'DCR': 'Decred', 'DGB': 'Digibyte', 'DOGE': 'Dogecoin', 'XEC': 'XEC', 'EGLD': 'Elrond', 'EOS': 'EOS', 'ETC': 'Ethereum Classic', 'ETHW': 'EthereumPow', 'FTM': 'Fantom', 'FIL': 'Filecoin', 'FLOW': 'FLOW', 'FSN': 'Fusion', 'ONE': 'Harmony', 'HBAR': 'Hedera', 'HNT': 'Helium', 'ZEN': 'Horizen', 'ICX': 'ICON', 'ICP': 'Dfinity', 'IOST': 'IOST', 'IOTA': 'MIOTA', 'KDA': 'Kadena', 'KAR': 'KAR', 'KLAY': 'Klaytn', 'KSM': 'Kusama', 'LSK': 'Lisk', 'LTC': 'Litecoin', 'METIS': 'Metis', 'MINA': 'Mina', 'XMR': 'Monero', 'GLRM': 'Moonbeam', 'MOVR': 'Moonriver', 'NANO': 'Nano', 'NEAR': 'NEAR', 'NAS': 'Nebulas', 'NEM': 'New Economy Movement', 'NULS': 'NULS', 'OASYS': 'OASYS', 'OKC': 'OKC', 'ONT': 'Ontology', 'OPTIMISM': 'Optimism', 'LAT': 'PlatON', 'DOT': 'Polkadot', 'MATIC': 'Polygon', 'RVN': 'Ravencoin', 'XRP': 'Ripple', 'SC': 'Siacoin', 'SOL': 'Solana', 'STX': 'l-Stacks', 'XLM': 'Stellar Lumens', 'XTZ': 'Tezos', 'TON': 'TON', 'THETA': 'Theta', 'VSYS': 'VSYSTEMS', 'WAVES': 'WAVES', 'WAX': 'Wax', 'ZEC': 'Zcash', 'ZIL': 'Zilliqa', 'ZKSYNC': 'ZKSYNC', // 'NEON3': 'N3', // tbd // undetermined : "CELO-TOKEN", "Digital Cash", Khala // todo: uncomment below after consensus // 'AELF': 'AELF', // 'BITCOINDIAMOND': 'Bitcoin Diamond', // 'BITCOINGOLD': 'BitcoinGold', // 'YOYOW': 'YOYOW', // 'QTUM': 'Quantum', // 'INTCHAIN': 'INTCHAIN', // 'YOUCHAIN': 'YOUCHAIN', // 'RONIN': 'Ronin', // 'OEC': 'OEC', // 'WAYIKICHAIN': 'WGRT', // 'MDNA': 'DNA', // 'STEP': 'Step Network', // 'EMINER': 'Eminer', // 'CYBERMILES': 'CyberMiles', // 'HYPERCASH': 'HyperCash', // 'CONFLUX': 'Conflux', // 'CORTEX': 'Cortex', // 'TERRA': 'Terra', // 'TERRACLASSIC': 'Terra Classic', }, 'fetchOpenInterestHistory': { 'timeframes': { '5m': '5m', '1h': '1H', '8h': '8H', '1d': '1D', '5M': '5m', '1H': '1H', '8H': '8H', '1D': '1D', }, }, 'fetchOHLCV': { // 'type': 'Candles', // Candles or HistoryCandles, IndexCandles, MarkPriceCandles 'timezone': 'UTC', // UTC, HK }, 'fetchPositions': { 'method': 'privateGetAccountPositions', // privateGetAccountPositions or privateGetAccountPositionsHistory }, 'createOrder': 'privatePostTradeBatchOrders', 'createMarketBuyOrderRequiresPrice': false, 'fetchMarkets': ['spot', 'future', 'swap', 'option'], 'defaultType': 'spot', // 'fetchBalance': { // 'type': 'spot', // 'funding', 'trading', 'spot' // }, 'fetchLedger': { 'method': 'privateGetAccountBills', // privateGetAccountBills, privateGetAccountBillsArchive, privateGetAssetBills }, // 6: Funding account, 18: Trading account 'fetchOrder': { 'method': 'privateGetTradeOrder', // privateGetTradeOrdersAlgoHistory }, 'fetchOpenOrders': { 'method': 'privateGetTradeOrdersPending', // privateGetTradeOrdersAlgoPending }, 'cancelOrders': { 'method': 'privatePostTradeCancelBatchOrders', // privatePostTradeCancelAlgos }, 'fetchCanceledOrders': { 'method': 'privateGetTradeOrdersHistory', // privateGetTradeOrdersAlgoHistory }, 'fetchClosedOrders': { 'method': 'privateGetTradeOrdersHistory', // privateGetTradeOrdersAlgoHistory }, 'withdraw': { // a funding password credential is required by the exchange for the // withdraw call (not to be confused with the api password credential) 'password': undefined, 'pwd': undefined, // password or pwd both work }, 'algoOrderTypes': { 'conditional': true, 'trigger': true, 'oco': true, 'move_order_stop': true, 'iceberg': true, 'twap': true, }, 'accountsByType': { 'funding': '6', 'trad