ccxt 4.2.11 → 4.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/build.sh +2 -2
- package/dist/ccxt.browser.js +1347 -490
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/_virtual/agent.js +7 -0
- package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
- package/dist/cjs/_virtual/promisify.js +7 -0
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/js/ccxt.js +474 -0
- package/dist/cjs/js/src/abstract/ace.js +9 -0
- package/dist/cjs/js/src/abstract/alpaca.js +9 -0
- package/dist/cjs/js/src/abstract/ascendex.js +9 -0
- package/dist/cjs/js/src/abstract/bigone.js +9 -0
- package/dist/cjs/js/src/abstract/binance.js +9 -0
- package/dist/cjs/js/src/abstract/bingx.js +9 -0
- package/dist/cjs/js/src/abstract/bit2c.js +9 -0
- package/dist/cjs/js/src/abstract/bitbank.js +9 -0
- package/dist/cjs/js/src/abstract/bitbns.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
- package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
- package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
- package/dist/cjs/js/src/abstract/bitforex.js +9 -0
- package/dist/cjs/js/src/abstract/bitget.js +9 -0
- package/dist/cjs/js/src/abstract/bithumb.js +9 -0
- package/dist/cjs/js/src/abstract/bitmart.js +9 -0
- package/dist/cjs/js/src/abstract/bitmex.js +9 -0
- package/dist/cjs/js/src/abstract/bitopro.js +9 -0
- package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
- package/dist/cjs/js/src/abstract/bitrue.js +9 -0
- package/dist/cjs/js/src/abstract/bitso.js +9 -0
- package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
- package/dist/cjs/js/src/abstract/bitteam.js +9 -0
- package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
- package/dist/cjs/js/src/abstract/bl3p.js +9 -0
- package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
- package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
- package/dist/cjs/js/src/abstract/btcbox.js +9 -0
- package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
- package/dist/cjs/js/src/abstract/btcturk.js +9 -0
- package/dist/cjs/js/src/abstract/bybit.js +9 -0
- package/dist/cjs/js/src/abstract/cex.js +9 -0
- package/dist/cjs/js/src/abstract/coinbase.js +9 -0
- package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
- package/dist/cjs/js/src/abstract/coincheck.js +9 -0
- package/dist/cjs/js/src/abstract/coinex.js +9 -0
- package/dist/cjs/js/src/abstract/coinlist.js +9 -0
- package/dist/cjs/js/src/abstract/coinmate.js +9 -0
- package/dist/cjs/js/src/abstract/coinone.js +9 -0
- package/dist/cjs/js/src/abstract/coinsph.js +9 -0
- package/dist/cjs/js/src/abstract/coinspot.js +9 -0
- package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
- package/dist/cjs/js/src/abstract/currencycom.js +9 -0
- package/dist/cjs/js/src/abstract/delta.js +9 -0
- package/dist/cjs/js/src/abstract/deribit.js +9 -0
- package/dist/cjs/js/src/abstract/digifinex.js +9 -0
- package/dist/cjs/js/src/abstract/exmo.js +9 -0
- package/dist/cjs/js/src/abstract/gate.js +9 -0
- package/dist/cjs/js/src/abstract/gemini.js +9 -0
- package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
- package/dist/cjs/js/src/abstract/hollaex.js +9 -0
- package/dist/cjs/js/src/abstract/htx.js +9 -0
- package/dist/cjs/js/src/abstract/huobijp.js +9 -0
- package/dist/cjs/js/src/abstract/idex.js +9 -0
- package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
- package/dist/cjs/js/src/abstract/indodax.js +9 -0
- package/dist/cjs/js/src/abstract/kraken.js +9 -0
- package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kucoin.js +9 -0
- package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
- package/dist/cjs/js/src/abstract/kuna.js +9 -0
- package/dist/cjs/js/src/abstract/latoken.js +9 -0
- package/dist/cjs/js/src/abstract/lbank.js +9 -0
- package/dist/cjs/js/src/abstract/luno.js +9 -0
- package/dist/cjs/js/src/abstract/lykke.js +9 -0
- package/dist/cjs/js/src/abstract/mercado.js +9 -0
- package/dist/cjs/js/src/abstract/mexc.js +9 -0
- package/dist/cjs/js/src/abstract/ndax.js +9 -0
- package/dist/cjs/js/src/abstract/novadax.js +9 -0
- package/dist/cjs/js/src/abstract/oceanex.js +9 -0
- package/dist/cjs/js/src/abstract/okcoin.js +9 -0
- package/dist/cjs/js/src/abstract/okx.js +9 -0
- package/dist/cjs/js/src/abstract/p2b.js +9 -0
- package/dist/cjs/js/src/abstract/paymium.js +9 -0
- package/dist/cjs/js/src/abstract/phemex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniex.js +9 -0
- package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
- package/dist/cjs/js/src/abstract/probit.js +9 -0
- package/dist/cjs/js/src/abstract/timex.js +9 -0
- package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
- package/dist/cjs/js/src/abstract/upbit.js +9 -0
- package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
- package/dist/cjs/js/src/abstract/wazirx.js +9 -0
- package/dist/cjs/js/src/abstract/whitebit.js +9 -0
- package/dist/cjs/js/src/abstract/woo.js +9 -0
- package/dist/cjs/js/src/abstract/yobit.js +9 -0
- package/dist/cjs/js/src/abstract/zaif.js +9 -0
- package/dist/cjs/js/src/abstract/zonda.js +9 -0
- package/dist/cjs/js/src/ace.js +1058 -0
- package/dist/cjs/js/src/alpaca.js +1125 -0
- package/dist/cjs/js/src/ascendex.js +3360 -0
- package/dist/cjs/js/src/base/Exchange.js +5110 -0
- package/dist/cjs/js/src/base/Precise.js +263 -0
- package/dist/cjs/js/src/base/errors.js +299 -0
- package/dist/cjs/js/src/base/functions/crypto.js +78 -0
- package/dist/cjs/js/src/base/functions/encode.js +44 -0
- package/dist/cjs/js/src/base/functions/generic.js +193 -0
- package/dist/cjs/js/src/base/functions/misc.js +96 -0
- package/dist/cjs/js/src/base/functions/number.js +297 -0
- package/dist/cjs/js/src/base/functions/platform.js +28 -0
- package/dist/cjs/js/src/base/functions/rsa.js +34 -0
- package/dist/cjs/js/src/base/functions/string.js +48 -0
- package/dist/cjs/js/src/base/functions/throttle.js +66 -0
- package/dist/cjs/js/src/base/functions/time.js +187 -0
- package/dist/cjs/js/src/base/functions/totp.js +24 -0
- package/dist/cjs/js/src/base/functions/type.js +162 -0
- package/dist/cjs/js/src/base/functions.js +157 -0
- package/dist/cjs/js/src/base/ws/Cache.js +254 -0
- package/dist/cjs/js/src/base/ws/Client.js +299 -0
- package/dist/cjs/js/src/base/ws/Future.js +34 -0
- package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
- package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
- package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
- package/dist/cjs/js/src/bequant.js +33 -0
- package/dist/cjs/js/src/bigone.js +2209 -0
- package/dist/cjs/js/src/binance.js +9736 -0
- package/dist/cjs/js/src/binancecoinm.js +45 -0
- package/dist/cjs/js/src/binanceus.js +84 -0
- package/dist/cjs/js/src/binanceusdm.js +58 -0
- package/dist/cjs/js/src/bingx.js +3807 -0
- package/dist/cjs/js/src/bit2c.js +916 -0
- package/dist/cjs/js/src/bitbank.js +1000 -0
- package/dist/cjs/js/src/bitbay.js +17 -0
- package/dist/cjs/js/src/bitbns.js +1220 -0
- package/dist/cjs/js/src/bitcoincom.js +17 -0
- package/dist/cjs/js/src/bitfinex.js +1670 -0
- package/dist/cjs/js/src/bitfinex2.js +2990 -0
- package/dist/cjs/js/src/bitflyer.js +1045 -0
- package/dist/cjs/js/src/bitforex.js +852 -0
- package/dist/cjs/js/src/bitget.js +8291 -0
- package/dist/cjs/js/src/bithumb.js +1090 -0
- package/dist/cjs/js/src/bitmart.js +4454 -0
- package/dist/cjs/js/src/bitmex.js +2884 -0
- package/dist/cjs/js/src/bitopro.js +1724 -0
- package/dist/cjs/js/src/bitpanda.js +2002 -0
- package/dist/cjs/js/src/bitrue.js +3253 -0
- package/dist/cjs/js/src/bitso.js +1753 -0
- package/dist/cjs/js/src/bitstamp.js +2188 -0
- package/dist/cjs/js/src/bitteam.js +2309 -0
- package/dist/cjs/js/src/bitvavo.js +1968 -0
- package/dist/cjs/js/src/bl3p.js +447 -0
- package/dist/cjs/js/src/blockchaincom.js +1160 -0
- package/dist/cjs/js/src/btcalpha.js +929 -0
- package/dist/cjs/js/src/btcbox.js +565 -0
- package/dist/cjs/js/src/btcmarkets.js +1237 -0
- package/dist/cjs/js/src/btcturk.js +929 -0
- package/dist/cjs/js/src/bybit.js +7646 -0
- package/dist/cjs/js/src/cex.js +1693 -0
- package/dist/cjs/js/src/coinbase.js +3424 -0
- package/dist/cjs/js/src/coinbasepro.js +1866 -0
- package/dist/cjs/js/src/coincheck.js +843 -0
- package/dist/cjs/js/src/coinex.js +5414 -0
- package/dist/cjs/js/src/coinlist.js +2329 -0
- package/dist/cjs/js/src/coinmate.js +989 -0
- package/dist/cjs/js/src/coinone.js +1185 -0
- package/dist/cjs/js/src/coinsph.js +1933 -0
- package/dist/cjs/js/src/coinspot.js +548 -0
- package/dist/cjs/js/src/cryptocom.js +3007 -0
- package/dist/cjs/js/src/currencycom.js +2015 -0
- package/dist/cjs/js/src/delta.js +3256 -0
- package/dist/cjs/js/src/deribit.js +3306 -0
- package/dist/cjs/js/src/digifinex.js +4307 -0
- package/dist/cjs/js/src/exmo.js +2645 -0
- package/dist/cjs/js/src/fmfwio.js +34 -0
- package/dist/cjs/js/src/gate.js +7072 -0
- package/dist/cjs/js/src/gateio.js +16 -0
- package/dist/cjs/js/src/gemini.js +1801 -0
- package/dist/cjs/js/src/hitbtc.js +3660 -0
- package/dist/cjs/js/src/hitbtc3.js +19 -0
- package/dist/cjs/js/src/hollaex.js +1882 -0
- package/dist/cjs/js/src/htx.js +9049 -0
- package/dist/cjs/js/src/huobi.js +16 -0
- package/dist/cjs/js/src/huobijp.js +1918 -0
- package/dist/cjs/js/src/idex.js +1770 -0
- package/dist/cjs/js/src/independentreserve.js +761 -0
- package/dist/cjs/js/src/indodax.js +1069 -0
- package/dist/cjs/js/src/kraken.js +2857 -0
- package/dist/cjs/js/src/krakenfutures.js +2407 -0
- package/dist/cjs/js/src/kucoin.js +4489 -0
- package/dist/cjs/js/src/kucoinfutures.js +2475 -0
- package/dist/cjs/js/src/kuna.js +1949 -0
- package/dist/cjs/js/src/latoken.js +1729 -0
- package/dist/cjs/js/src/lbank.js +2851 -0
- package/dist/cjs/js/src/luno.js +1044 -0
- package/dist/cjs/js/src/lykke.js +1303 -0
- package/dist/cjs/js/src/mercado.js +897 -0
- package/dist/cjs/js/src/mexc.js +5407 -0
- package/dist/cjs/js/src/ndax.js +2450 -0
- package/dist/cjs/js/src/novadax.js +1556 -0
- package/dist/cjs/js/src/oceanex.js +964 -0
- package/dist/cjs/js/src/okcoin.js +3115 -0
- package/dist/cjs/js/src/okx.js +7330 -0
- package/dist/cjs/js/src/p2b.js +1243 -0
- package/dist/cjs/js/src/paymium.js +597 -0
- package/dist/cjs/js/src/phemex.js +4722 -0
- package/dist/cjs/js/src/poloniex.js +2356 -0
- package/dist/cjs/js/src/poloniexfutures.js +1794 -0
- package/dist/cjs/js/src/pro/alpaca.js +714 -0
- package/dist/cjs/js/src/pro/ascendex.js +957 -0
- package/dist/cjs/js/src/pro/bequant.js +33 -0
- package/dist/cjs/js/src/pro/binance.js +2796 -0
- package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
- package/dist/cjs/js/src/pro/binanceus.js +51 -0
- package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
- package/dist/cjs/js/src/pro/bingx.js +944 -0
- package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
- package/dist/cjs/js/src/pro/bitfinex.js +672 -0
- package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
- package/dist/cjs/js/src/pro/bitget.js +1733 -0
- package/dist/cjs/js/src/pro/bitmart.js +1486 -0
- package/dist/cjs/js/src/pro/bitmex.js +1576 -0
- package/dist/cjs/js/src/pro/bitopro.js +327 -0
- package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
- package/dist/cjs/js/src/pro/bitrue.js +462 -0
- package/dist/cjs/js/src/pro/bitstamp.js +547 -0
- package/dist/cjs/js/src/pro/bitvavo.js +704 -0
- package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
- package/dist/cjs/js/src/pro/bybit.js +1843 -0
- package/dist/cjs/js/src/pro/cex.js +1510 -0
- package/dist/cjs/js/src/pro/coinbase.js +561 -0
- package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
- package/dist/cjs/js/src/pro/coinex.js +1095 -0
- package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
- package/dist/cjs/js/src/pro/currencycom.js +563 -0
- package/dist/cjs/js/src/pro/deribit.js +825 -0
- package/dist/cjs/js/src/pro/exmo.js +658 -0
- package/dist/cjs/js/src/pro/gate.js +1316 -0
- package/dist/cjs/js/src/pro/gateio.js +16 -0
- package/dist/cjs/js/src/pro/gemini.js +649 -0
- package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
- package/dist/cjs/js/src/pro/hollaex.js +597 -0
- package/dist/cjs/js/src/pro/htx.js +2383 -0
- package/dist/cjs/js/src/pro/huobi.js +16 -0
- package/dist/cjs/js/src/pro/huobijp.js +606 -0
- package/dist/cjs/js/src/pro/idex.js +714 -0
- package/dist/cjs/js/src/pro/independentreserve.js +280 -0
- package/dist/cjs/js/src/pro/kraken.js +1364 -0
- package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
- package/dist/cjs/js/src/pro/kucoin.js +1052 -0
- package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
- package/dist/cjs/js/src/pro/luno.js +322 -0
- package/dist/cjs/js/src/pro/mexc.js +1170 -0
- package/dist/cjs/js/src/pro/ndax.js +545 -0
- package/dist/cjs/js/src/pro/okcoin.js +760 -0
- package/dist/cjs/js/src/pro/okx.js +1608 -0
- package/dist/cjs/js/src/pro/phemex.js +1511 -0
- package/dist/cjs/js/src/pro/poloniex.js +1253 -0
- package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
- package/dist/cjs/js/src/pro/probit.js +586 -0
- package/dist/cjs/js/src/pro/upbit.js +234 -0
- package/dist/cjs/js/src/pro/wazirx.js +776 -0
- package/dist/cjs/js/src/pro/whitebit.js +927 -0
- package/dist/cjs/js/src/pro/woo.js +769 -0
- package/dist/cjs/js/src/probit.js +1867 -0
- package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
- package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
- package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
- package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
- package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
- package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
- package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
- package/dist/cjs/js/src/timex.js +1562 -0
- package/dist/cjs/js/src/tokocrypto.js +2542 -0
- package/dist/cjs/js/src/upbit.js +1844 -0
- package/dist/cjs/js/src/wavesexchange.js +2607 -0
- package/dist/cjs/js/src/wazirx.js +953 -0
- package/dist/cjs/js/src/whitebit.js +2309 -0
- package/dist/cjs/js/src/woo.js +2765 -0
- package/dist/cjs/js/src/yobit.js +1314 -0
- package/dist/cjs/js/src/zaif.js +736 -0
- package/dist/cjs/js/src/zonda.js +1883 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bigone.d.ts +18 -0
- package/js/src/abstract/binance.d.ts +2 -0
- package/js/src/abstract/binancecoinm.d.ts +2 -0
- package/js/src/abstract/binanceus.d.ts +2 -0
- package/js/src/abstract/binanceusdm.d.ts +2 -0
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/bybit.d.ts +1 -0
- package/js/src/abstract/gate.d.ts +11 -0
- package/js/src/abstract/gateio.d.ts +11 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/alpaca.js +18 -18
- package/js/src/base/Exchange.d.ts +5 -1
- package/js/src/base/Exchange.js +101 -12
- package/js/src/bigone.d.ts +3 -2
- package/js/src/bigone.js +429 -167
- package/js/src/binance.js +48 -34
- package/js/src/bingx.js +115 -38
- package/js/src/bitfinex.d.ts +2 -2
- package/js/src/bitfinex.js +2 -3
- package/js/src/bitget.js +33 -13
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +5 -5
- package/js/src/bitmex.js +1 -0
- package/js/src/bybit.js +2 -0
- package/js/src/coinbase.d.ts +26 -3
- package/js/src/coinbase.js +176 -26
- package/js/src/coinlist.js +3 -4
- package/js/src/coinone.js +1 -1
- package/js/src/coinsph.js +2 -3
- package/js/src/deribit.js +1 -0
- package/js/src/gate.d.ts +4 -4
- package/js/src/gate.js +96 -59
- package/js/src/gemini.js +1 -1
- package/js/src/hitbtc.d.ts +4 -4
- package/js/src/hitbtc.js +2 -3
- package/js/src/htx.d.ts +1 -0
- package/js/src/htx.js +29 -7
- package/js/src/huobijp.js +2 -3
- package/js/src/independentreserve.js +7 -5
- package/js/src/kraken.js +3 -6
- package/js/src/lbank.js +59 -33
- package/js/src/mexc.js +2 -1
- package/js/src/oceanex.js +1 -1
- package/js/src/okx.js +14 -3
- package/js/src/phemex.js +9 -2
- package/js/src/pro/binance.d.ts +2 -23
- package/js/src/pro/binance.js +58 -22
- package/js/src/pro/coinbase.d.ts +2 -2
- package/js/src/pro/coinbase.js +4 -1
- package/js/src/pro/coinbasepro.d.ts +2 -2
- package/js/src/pro/hitbtc.d.ts +2 -2
- package/js/src/pro/kraken.js +1 -1
- package/js/src/pro/okx.d.ts +1 -0
- package/js/src/pro/okx.js +52 -2
- package/js/src/pro/poloniex.d.ts +2 -2
- package/js/src/probit.js +4 -2
- package/js/src/upbit.d.ts +3 -101
- package/js/src/upbit.js +12 -12
- package/js/src/wavesexchange.js +1 -1
- package/js/src/woo.d.ts +2 -0
- package/js/src/woo.js +52 -0
- package/package.json +1 -1
- package/skip-tests.json +5 -0
package/js/src/hitbtc.js
CHANGED
|
@@ -2633,11 +2633,10 @@ export default class hitbtc extends Exchange {
|
|
|
2633
2633
|
// "2db6ebab-fb26-4537-9ef8-1a689472d236"
|
|
2634
2634
|
// ]
|
|
2635
2635
|
//
|
|
2636
|
-
const timestamp = this.milliseconds();
|
|
2637
2636
|
return {
|
|
2638
2637
|
'id': this.safeString(transfer, 0),
|
|
2639
|
-
'timestamp':
|
|
2640
|
-
'datetime':
|
|
2638
|
+
'timestamp': undefined,
|
|
2639
|
+
'datetime': undefined,
|
|
2641
2640
|
'currency': this.safeCurrencyCode(undefined, currency),
|
|
2642
2641
|
'amount': undefined,
|
|
2643
2642
|
'fromAccount': undefined,
|
package/js/src/htx.d.ts
CHANGED
|
@@ -84,6 +84,7 @@ export default class htx extends Exchange {
|
|
|
84
84
|
parseOrderStatus(status: any): string;
|
|
85
85
|
parseOrder(order: any, market?: Market): Order;
|
|
86
86
|
createMarketBuyOrderWithCost(symbol: string, cost: any, params?: {}): Promise<Order>;
|
|
87
|
+
createTrailingPercentOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, trailingPercent?: any, trailingTriggerPrice?: any, params?: {}): Promise<Order>;
|
|
87
88
|
createSpotOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<any>;
|
|
88
89
|
createContractOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): any;
|
|
89
90
|
createOrder(symbol: string, type: OrderType, side: OrderSide, amount: any, price?: any, params?: {}): Promise<Order>;
|
package/js/src/htx.js
CHANGED
|
@@ -50,6 +50,7 @@ export default class htx extends Exchange {
|
|
|
50
50
|
'createStopLimitOrder': true,
|
|
51
51
|
'createStopMarketOrder': true,
|
|
52
52
|
'createStopOrder': true,
|
|
53
|
+
'createTrailingPercentOrder': true,
|
|
53
54
|
'fetchAccounts': true,
|
|
54
55
|
'fetchBalance': true,
|
|
55
56
|
'fetchBidsAsks': undefined,
|
|
@@ -4971,6 +4972,31 @@ export default class htx extends Exchange {
|
|
|
4971
4972
|
params['createMarketBuyOrderRequiresPrice'] = false;
|
|
4972
4973
|
return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
|
|
4973
4974
|
}
|
|
4975
|
+
async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
|
|
4976
|
+
/**
|
|
4977
|
+
* @method
|
|
4978
|
+
* @name createTrailingPercentOrder
|
|
4979
|
+
* @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
|
|
4980
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
4981
|
+
* @param {string} type 'market' or 'limit'
|
|
4982
|
+
* @param {string} side 'buy' or 'sell'
|
|
4983
|
+
* @param {float} amount how much you want to trade in units of the base currency, or number of contracts
|
|
4984
|
+
* @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
|
|
4985
|
+
* @param {float} trailingPercent the percent to trail away from the current market price
|
|
4986
|
+
* @param {float} trailingTriggerPrice the price to activate a trailing order, default uses the price argument
|
|
4987
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
4988
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4989
|
+
*/
|
|
4990
|
+
if (trailingPercent === undefined) {
|
|
4991
|
+
throw new ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
|
|
4992
|
+
}
|
|
4993
|
+
if (trailingTriggerPrice === undefined) {
|
|
4994
|
+
throw new ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingTriggerPrice argument');
|
|
4995
|
+
}
|
|
4996
|
+
params['trailingPercent'] = trailingPercent;
|
|
4997
|
+
params['trailingTriggerPrice'] = trailingTriggerPrice;
|
|
4998
|
+
return await this.createOrder(symbol, type, side, amount, price, params);
|
|
4999
|
+
}
|
|
4974
5000
|
async createSpotOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
4975
5001
|
/**
|
|
4976
5002
|
* @method
|
|
@@ -5183,15 +5209,11 @@ export default class htx extends Exchange {
|
|
|
5183
5209
|
}
|
|
5184
5210
|
}
|
|
5185
5211
|
if (!isStopLossTriggerOrder && !isTakeProfitTriggerOrder) {
|
|
5186
|
-
const leverRate = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
|
|
5187
5212
|
const reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only', false);
|
|
5188
|
-
const openOrClose = (reduceOnly) ? 'close' : 'open';
|
|
5189
|
-
const offset = this.safeString(params, 'offset', openOrClose);
|
|
5190
|
-
request['offset'] = offset;
|
|
5191
5213
|
if (reduceOnly) {
|
|
5192
5214
|
request['reduce_only'] = 1;
|
|
5193
5215
|
}
|
|
5194
|
-
request['lever_rate'] = leverRate;
|
|
5216
|
+
request['lever_rate'] = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
|
|
5195
5217
|
if (!isTrailingPercentOrder) {
|
|
5196
5218
|
request['order_price_type'] = type;
|
|
5197
5219
|
}
|
|
@@ -5255,10 +5277,10 @@ export default class htx extends Exchange {
|
|
|
5255
5277
|
response = await this.spotPrivatePostV1OrderOrdersPlace(spotRequest);
|
|
5256
5278
|
}
|
|
5257
5279
|
else {
|
|
5258
|
-
|
|
5280
|
+
let contractRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
|
|
5259
5281
|
if (market['linear']) {
|
|
5260
5282
|
let marginMode = undefined;
|
|
5261
|
-
[marginMode,
|
|
5283
|
+
[marginMode, contractRequest] = this.handleMarginModeAndParams('createOrder', contractRequest);
|
|
5262
5284
|
marginMode = (marginMode === undefined) ? 'cross' : marginMode;
|
|
5263
5285
|
if (marginMode === 'isolated') {
|
|
5264
5286
|
if (isStop) {
|
package/js/src/huobijp.js
CHANGED
|
@@ -1451,13 +1451,12 @@ export default class huobijp extends Exchange {
|
|
|
1451
1451
|
}
|
|
1452
1452
|
const method = this.options['createOrderMethod'];
|
|
1453
1453
|
const response = await this[method](this.extend(request, params));
|
|
1454
|
-
const timestamp = this.milliseconds();
|
|
1455
1454
|
const id = this.safeString(response, 'data');
|
|
1456
1455
|
return this.safeOrder({
|
|
1457
1456
|
'info': response,
|
|
1458
1457
|
'id': id,
|
|
1459
|
-
'timestamp':
|
|
1460
|
-
'datetime':
|
|
1458
|
+
'timestamp': undefined,
|
|
1459
|
+
'datetime': undefined,
|
|
1461
1460
|
'lastTradeTimestamp': undefined,
|
|
1462
1461
|
'status': undefined,
|
|
1463
1462
|
'symbol': symbol,
|
|
@@ -686,20 +686,22 @@ export default class independentreserve extends Exchange {
|
|
|
686
686
|
*/
|
|
687
687
|
await this.loadMarkets();
|
|
688
688
|
const market = this.market(symbol);
|
|
689
|
-
|
|
690
|
-
const method = 'privatePostPlace' + capitalizedOrderType + 'Order';
|
|
691
|
-
let orderType = capitalizedOrderType;
|
|
689
|
+
let orderType = this.capitalize(type);
|
|
692
690
|
orderType += (side === 'sell') ? 'Offer' : 'Bid';
|
|
693
691
|
const request = this.ordered({
|
|
694
692
|
'primaryCurrencyCode': market['baseId'],
|
|
695
693
|
'secondaryCurrencyCode': market['quoteId'],
|
|
696
694
|
'orderType': orderType,
|
|
697
695
|
});
|
|
696
|
+
let response = undefined;
|
|
697
|
+
request['volume'] = amount;
|
|
698
698
|
if (type === 'limit') {
|
|
699
699
|
request['price'] = price;
|
|
700
|
+
response = await this.privatePostPlaceLimitOrder(this.extend(request, params));
|
|
701
|
+
}
|
|
702
|
+
else {
|
|
703
|
+
response = await this.privatePostPlaceMarketOrder(this.extend(request, params));
|
|
700
704
|
}
|
|
701
|
-
request['volume'] = amount;
|
|
702
|
-
const response = await this[method](this.extend(request, params));
|
|
703
705
|
return this.safeOrder({
|
|
704
706
|
'info': response,
|
|
705
707
|
'id': response['OrderGuid'],
|
package/js/src/kraken.js
CHANGED
|
@@ -42,6 +42,7 @@ export default class kraken extends Exchange {
|
|
|
42
42
|
'createStopLimitOrder': true,
|
|
43
43
|
'createStopMarketOrder': true,
|
|
44
44
|
'createStopOrder': true,
|
|
45
|
+
'createTrailingAmountOrder': true,
|
|
45
46
|
'editOrder': true,
|
|
46
47
|
'fetchBalance': true,
|
|
47
48
|
'fetchBorrowInterest': false,
|
|
@@ -1266,12 +1267,8 @@ export default class kraken extends Exchange {
|
|
|
1266
1267
|
request['since'] = since * 1e6;
|
|
1267
1268
|
request['since'] = since.toString() + '000000'; // expected to be in nanoseconds
|
|
1268
1269
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
const fetchTradesWarning = this.safeValue(this.options, 'fetchTradesWarning', true);
|
|
1272
|
-
if (fetchTradesWarning) {
|
|
1273
|
-
throw new ExchangeError(this.id + ' fetchTrades() cannot serve ' + limit.toString() + " trades without breaking the pagination, see https://github.com/ccxt/ccxt/issues/5698 for more details. Set exchange.options['fetchTradesWarning'] to acknowledge this warning and silence it.");
|
|
1274
|
-
}
|
|
1270
|
+
if (limit !== undefined) {
|
|
1271
|
+
request['count'] = limit;
|
|
1275
1272
|
}
|
|
1276
1273
|
const response = await this.publicGetTrades(this.extend(request, params));
|
|
1277
1274
|
//
|
package/js/src/lbank.js
CHANGED
|
@@ -932,13 +932,17 @@ export default class lbank extends Exchange {
|
|
|
932
932
|
else {
|
|
933
933
|
request['size'] = 600; // max
|
|
934
934
|
}
|
|
935
|
-
|
|
935
|
+
const options = this.safeValue(this.options, 'fetchTrades', {});
|
|
936
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPublicGetTrades');
|
|
937
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
936
938
|
params = this.omit(params, 'method');
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
939
|
+
let response = undefined;
|
|
940
|
+
if (method === 'spotPublicGetSupplementTrades') {
|
|
941
|
+
response = await this.spotPublicGetSupplementTrades(this.extend(request, params));
|
|
942
|
+
}
|
|
943
|
+
else {
|
|
944
|
+
response = await this.spotPublicGetTrades(this.extend(request, params));
|
|
940
945
|
}
|
|
941
|
-
const response = await this[method](this.extend(request, params));
|
|
942
946
|
//
|
|
943
947
|
// {
|
|
944
948
|
// "result":"true",
|
|
@@ -1175,12 +1179,19 @@ export default class lbank extends Exchange {
|
|
|
1175
1179
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
1176
1180
|
*/
|
|
1177
1181
|
await this.loadMarkets();
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
+
const options = this.safeValue(this.options, 'fetchBalance', {});
|
|
1183
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementUserInfo');
|
|
1184
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1185
|
+
let response = undefined;
|
|
1186
|
+
if (method === 'spotPrivatePostSupplementUserInfoAccount') {
|
|
1187
|
+
response = await this.spotPrivatePostSupplementUserInfoAccount();
|
|
1188
|
+
}
|
|
1189
|
+
else if (method === 'spotPrivatePostUserInfo') {
|
|
1190
|
+
response = await this.spotPrivatePostUserInfo();
|
|
1191
|
+
}
|
|
1192
|
+
else {
|
|
1193
|
+
response = await this.spotPrivatePostSupplementUserInfo();
|
|
1182
1194
|
}
|
|
1183
|
-
const response = await this[method]();
|
|
1184
1195
|
//
|
|
1185
1196
|
// {
|
|
1186
1197
|
// "result": "true",
|
|
@@ -1365,14 +1376,17 @@ export default class lbank extends Exchange {
|
|
|
1365
1376
|
if (clientOrderId !== undefined) {
|
|
1366
1377
|
request['custom_id'] = clientOrderId;
|
|
1367
1378
|
}
|
|
1368
|
-
|
|
1369
|
-
|
|
1379
|
+
const options = this.safeValue(this.options, 'createOrder', {});
|
|
1380
|
+
const defaultMethod = this.safeString(options, 'method', 'spotPrivatePostSupplementCreateOrder');
|
|
1381
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1370
1382
|
params = this.omit(params, 'method');
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1383
|
+
let response = undefined;
|
|
1384
|
+
if (method === 'spotPrivatePostCreateOrder') {
|
|
1385
|
+
response = await this.spotPrivatePostCreateOrder(this.extend(request, params));
|
|
1386
|
+
}
|
|
1387
|
+
else {
|
|
1388
|
+
response = await this.spotPrivatePostSupplementCreateOrder(this.extend(request, params));
|
|
1374
1389
|
}
|
|
1375
|
-
const response = await this[method](this.extend(request, params));
|
|
1376
1390
|
//
|
|
1377
1391
|
// {
|
|
1378
1392
|
// "result":true,
|
|
@@ -1907,13 +1921,18 @@ export default class lbank extends Exchange {
|
|
|
1907
1921
|
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1908
1922
|
*/
|
|
1909
1923
|
await this.loadMarkets();
|
|
1910
|
-
|
|
1924
|
+
const options = this.safeValue(this.options, 'fetchDepositAddress', {});
|
|
1925
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchDepositAddressDefault');
|
|
1926
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
1911
1927
|
params = this.omit(params, 'method');
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1928
|
+
let response = undefined;
|
|
1929
|
+
if (method === 'fetchDepositAddressSupplement') {
|
|
1930
|
+
response = await this.fetchDepositAddressSupplement(code, params);
|
|
1915
1931
|
}
|
|
1916
|
-
|
|
1932
|
+
else {
|
|
1933
|
+
response = await this.fetchDepositAddressDefault(code, params);
|
|
1934
|
+
}
|
|
1935
|
+
return response;
|
|
1917
1936
|
}
|
|
1918
1937
|
async fetchDepositAddressDefault(code, params = {}) {
|
|
1919
1938
|
await this.loadMarkets();
|
|
@@ -2285,13 +2304,16 @@ export default class lbank extends Exchange {
|
|
|
2285
2304
|
const isAuthorized = this.checkRequiredCredentials(false);
|
|
2286
2305
|
let result = undefined;
|
|
2287
2306
|
if (isAuthorized === true) {
|
|
2288
|
-
|
|
2307
|
+
const options = this.safeValue(this.options, 'fetchTransactionFees', {});
|
|
2308
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchPrivateTransactionFees');
|
|
2309
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
2289
2310
|
params = this.omit(params, 'method');
|
|
2290
|
-
if (method ===
|
|
2291
|
-
|
|
2292
|
-
|
|
2311
|
+
if (method === 'fetchPublicTransactionFees') {
|
|
2312
|
+
result = await this.fetchPublicTransactionFees(params);
|
|
2313
|
+
}
|
|
2314
|
+
else {
|
|
2315
|
+
result = await this.fetchPrivateTransactionFees(params);
|
|
2293
2316
|
}
|
|
2294
|
-
result = await this[method](params);
|
|
2295
2317
|
}
|
|
2296
2318
|
else {
|
|
2297
2319
|
result = await this.fetchPublicTransactionFees(params);
|
|
@@ -2429,19 +2451,23 @@ export default class lbank extends Exchange {
|
|
|
2429
2451
|
*/
|
|
2430
2452
|
await this.loadMarkets();
|
|
2431
2453
|
const isAuthorized = this.checkRequiredCredentials(false);
|
|
2432
|
-
|
|
2454
|
+
const response = undefined;
|
|
2433
2455
|
if (isAuthorized === true) {
|
|
2434
|
-
|
|
2456
|
+
const options = this.safeValue(this.options, 'fetchDepositWithdrawFees', {});
|
|
2457
|
+
const defaultMethod = this.safeString(options, 'method', 'fetchPrivateDepositWithdrawFees');
|
|
2458
|
+
const method = this.safeString(params, 'method', defaultMethod);
|
|
2435
2459
|
params = this.omit(params, 'method');
|
|
2436
|
-
if (method ===
|
|
2437
|
-
|
|
2438
|
-
|
|
2460
|
+
if (method === 'fetchPublicDepositWithdrawFees') {
|
|
2461
|
+
await this.fetchPublicDepositWithdrawFees(codes, params);
|
|
2462
|
+
}
|
|
2463
|
+
else {
|
|
2464
|
+
await this.fetchPrivateDepositWithdrawFees(codes, params);
|
|
2439
2465
|
}
|
|
2440
2466
|
}
|
|
2441
2467
|
else {
|
|
2442
|
-
|
|
2468
|
+
await this.fetchPublicDepositWithdrawFees(codes, params);
|
|
2443
2469
|
}
|
|
2444
|
-
return
|
|
2470
|
+
return response;
|
|
2445
2471
|
}
|
|
2446
2472
|
async fetchPrivateDepositWithdrawFees(codes = undefined, params = {}) {
|
|
2447
2473
|
// complete response
|
package/js/src/mexc.js
CHANGED
|
@@ -1328,7 +1328,8 @@ export default class mexc extends Exchange {
|
|
|
1328
1328
|
// ]
|
|
1329
1329
|
// }
|
|
1330
1330
|
//
|
|
1331
|
-
|
|
1331
|
+
const spotTimestamp = this.safeInteger(response, 'timestamp');
|
|
1332
|
+
orderbook = this.parseOrderBook(response, symbol, spotTimestamp);
|
|
1332
1333
|
orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
|
|
1333
1334
|
}
|
|
1334
1335
|
else if (market['swap']) {
|
package/js/src/oceanex.js
CHANGED
|
@@ -475,7 +475,7 @@ export default class oceanex extends Exchange {
|
|
|
475
475
|
'market': market['id'],
|
|
476
476
|
};
|
|
477
477
|
if (limit !== undefined) {
|
|
478
|
-
request['limit'] = limit;
|
|
478
|
+
request['limit'] = Math.min(limit, 1000);
|
|
479
479
|
}
|
|
480
480
|
const response = await this.publicGetTrades(this.extend(request, params));
|
|
481
481
|
//
|
package/js/src/okx.js
CHANGED
|
@@ -48,6 +48,7 @@ export default class okx extends Exchange {
|
|
|
48
48
|
'createStopLimitOrder': true,
|
|
49
49
|
'createStopMarketOrder': true,
|
|
50
50
|
'createStopOrder': true,
|
|
51
|
+
'createTrailingPercentOrder': true,
|
|
51
52
|
'editOrder': true,
|
|
52
53
|
'fetchAccounts': true,
|
|
53
54
|
'fetchBalance': true,
|
|
@@ -160,8 +161,7 @@ export default class okx extends Exchange {
|
|
|
160
161
|
'referral': {
|
|
161
162
|
// old reflink 0% discount https://www.okx.com/join/1888677
|
|
162
163
|
// new reflink 20% discount https://www.okx.com/join/CCXT2023
|
|
163
|
-
|
|
164
|
-
'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023',
|
|
164
|
+
'url': 'https://www.okx.com/join/CCXT2023',
|
|
165
165
|
'discount': 0.2,
|
|
166
166
|
},
|
|
167
167
|
'test': {
|
|
@@ -262,6 +262,7 @@ export default class okx extends Exchange {
|
|
|
262
262
|
'sprd/order': 1 / 3,
|
|
263
263
|
'sprd/orders-pending': 1 / 3,
|
|
264
264
|
'sprd/orders-history': 1 / 2,
|
|
265
|
+
'sprd/orders-history-archive': 1 / 2,
|
|
265
266
|
'sprd/trades': 1 / 3,
|
|
266
267
|
// trade
|
|
267
268
|
'trade/order': 1 / 3,
|
|
@@ -1218,10 +1219,20 @@ export default class okx extends Exchange {
|
|
|
1218
1219
|
for (let i = 0; i < data.length; i++) {
|
|
1219
1220
|
const event = data[i];
|
|
1220
1221
|
const state = this.safeString(event, 'state');
|
|
1222
|
+
update['eta'] = this.safeInteger(event, 'end');
|
|
1223
|
+
update['url'] = this.safeString(event, 'href');
|
|
1221
1224
|
if (state === 'ongoing') {
|
|
1222
|
-
update['eta'] = this.safeInteger(event, 'end');
|
|
1223
1225
|
update['status'] = 'maintenance';
|
|
1224
1226
|
}
|
|
1227
|
+
else if (state === 'scheduled') {
|
|
1228
|
+
update['status'] = 'ok';
|
|
1229
|
+
}
|
|
1230
|
+
else if (state === 'completed') {
|
|
1231
|
+
update['status'] = 'ok';
|
|
1232
|
+
}
|
|
1233
|
+
else if (state === 'canceled') {
|
|
1234
|
+
update['status'] = 'ok';
|
|
1235
|
+
}
|
|
1225
1236
|
}
|
|
1226
1237
|
return update;
|
|
1227
1238
|
}
|
package/js/src/phemex.js
CHANGED
|
@@ -455,7 +455,7 @@ export default class phemex extends Exchange {
|
|
|
455
455
|
},
|
|
456
456
|
},
|
|
457
457
|
'options': {
|
|
458
|
-
'brokerId': '
|
|
458
|
+
'brokerId': 'CCXT123456',
|
|
459
459
|
'x-phemex-request-expiry': 60,
|
|
460
460
|
'createOrderByQuoteRequiresPrice': true,
|
|
461
461
|
'networks': {
|
|
@@ -2480,7 +2480,7 @@ export default class phemex extends Exchange {
|
|
|
2480
2480
|
const takeProfit = this.safeValue(params, 'takeProfit');
|
|
2481
2481
|
const takeProfitDefined = (takeProfit !== undefined);
|
|
2482
2482
|
if (clientOrderId === undefined) {
|
|
2483
|
-
const brokerId = this.safeString(this.options, 'brokerId');
|
|
2483
|
+
const brokerId = this.safeString(this.options, 'brokerId', 'CCXT123456');
|
|
2484
2484
|
if (brokerId !== undefined) {
|
|
2485
2485
|
request['clOrdID'] = brokerId + this.uuid16();
|
|
2486
2486
|
}
|
|
@@ -4276,6 +4276,13 @@ export default class phemex extends Exchange {
|
|
|
4276
4276
|
};
|
|
4277
4277
|
let payload = '';
|
|
4278
4278
|
if (method === 'POST') {
|
|
4279
|
+
const isOrderPlacement = (path === 'g-orders') || (path === 'spot/orders') || (path === 'orders');
|
|
4280
|
+
if (isOrderPlacement) {
|
|
4281
|
+
if (this.safeString(params, 'clOrdID') === undefined) {
|
|
4282
|
+
const id = this.safeString(this.options, 'brokerId', 'CCXT123456');
|
|
4283
|
+
params['clOrdID'] = id + this.uuid16();
|
|
4284
|
+
}
|
|
4285
|
+
}
|
|
4279
4286
|
payload = this.json(params);
|
|
4280
4287
|
body = payload;
|
|
4281
4288
|
headers['Content-Type'] = 'application/json';
|
package/js/src/pro/binance.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import Client from '../base/ws/Client.js';
|
|
|
4
4
|
export default class binance extends binanceRest {
|
|
5
5
|
describe(): any;
|
|
6
6
|
requestId(url: any): any;
|
|
7
|
-
stream(type: any, subscriptionHash: any): string;
|
|
7
|
+
stream(type: any, subscriptionHash: any, numSubscriptions?: number): string;
|
|
8
8
|
watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
|
|
9
9
|
watchOrderBookForSymbols(symbols: string[], limit?: Int, params?: {}): Promise<OrderBook>;
|
|
10
10
|
fetchOrderBookSnapshot(client: any, message: any, subscription: any): Promise<void>;
|
|
@@ -22,28 +22,7 @@ export default class binance extends binanceRest {
|
|
|
22
22
|
handleOHLCV(client: Client, message: any): void;
|
|
23
23
|
watchTicker(symbol: string, params?: {}): Promise<Ticker>;
|
|
24
24
|
watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
|
|
25
|
-
parseWsTicker(message: any, marketType: any):
|
|
26
|
-
symbol: string;
|
|
27
|
-
timestamp: any;
|
|
28
|
-
datetime: string;
|
|
29
|
-
high: number;
|
|
30
|
-
low: number;
|
|
31
|
-
bid: number;
|
|
32
|
-
bidVolume: number;
|
|
33
|
-
ask: number;
|
|
34
|
-
askVolume: number;
|
|
35
|
-
vwap: number;
|
|
36
|
-
open: number;
|
|
37
|
-
close: number;
|
|
38
|
-
last: number;
|
|
39
|
-
previousClose: number;
|
|
40
|
-
change: number;
|
|
41
|
-
percentage: number;
|
|
42
|
-
average: any;
|
|
43
|
-
baseVolume: number;
|
|
44
|
-
quoteVolume: number;
|
|
45
|
-
info: any;
|
|
46
|
-
};
|
|
25
|
+
parseWsTicker(message: any, marketType: any): Ticker;
|
|
47
26
|
handleTicker(client: Client, message: any): void;
|
|
48
27
|
handleTickers(client: Client, message: any): void;
|
|
49
28
|
signParams(params?: {}): any;
|
package/js/src/pro/binance.js
CHANGED
|
@@ -73,6 +73,12 @@ export default class binance extends binanceRest {
|
|
|
73
73
|
'future': 50,
|
|
74
74
|
'delivery': 50, // max 200
|
|
75
75
|
},
|
|
76
|
+
'subscriptionLimitByStream': {
|
|
77
|
+
'spot': 200,
|
|
78
|
+
'margin': 200,
|
|
79
|
+
'future': 200,
|
|
80
|
+
'delivery': 200,
|
|
81
|
+
},
|
|
76
82
|
'streamBySubscriptionsHash': {},
|
|
77
83
|
'streamIndex': -1,
|
|
78
84
|
// get updates every 1000ms or 100ms
|
|
@@ -121,7 +127,7 @@ export default class binance extends binanceRest {
|
|
|
121
127
|
this.options['requestId'][url] = newValue;
|
|
122
128
|
return newValue;
|
|
123
129
|
}
|
|
124
|
-
stream(type, subscriptionHash) {
|
|
130
|
+
stream(type, subscriptionHash, numSubscriptions = 1) {
|
|
125
131
|
const streamBySubscriptionsHash = this.safeValue(this.options, 'streamBySubscriptionsHash', {});
|
|
126
132
|
let stream = this.safeString(streamBySubscriptionsHash, subscriptionHash);
|
|
127
133
|
if (stream === undefined) {
|
|
@@ -133,6 +139,17 @@ export default class binance extends binanceRest {
|
|
|
133
139
|
this.options['streamIndex'] = streamIndex;
|
|
134
140
|
stream = this.numberToString(normalizedIndex);
|
|
135
141
|
this.options['streamBySubscriptionsHash'][subscriptionHash] = stream;
|
|
142
|
+
const subscriptionsByStreams = this.safeValue(this.options, 'numSubscriptionsByStream');
|
|
143
|
+
if (subscriptionsByStreams === undefined) {
|
|
144
|
+
this.options['numSubscriptionsByStream'] = {};
|
|
145
|
+
}
|
|
146
|
+
const subscriptionsByStream = this.safeInteger(this.options['numSubscriptionsByStream'], stream, 0);
|
|
147
|
+
const newNumSubscriptions = subscriptionsByStream + numSubscriptions;
|
|
148
|
+
const subscriptionLimitByStream = this.safeInteger(this.options, 'subscriptionLimitByStream', 200);
|
|
149
|
+
if (newNumSubscriptions > subscriptionLimitByStream) {
|
|
150
|
+
throw new BadRequest(this.id + ' reached the limit of subscriptions by stream. Increase the number of streams, or increase the stream limit or subscription limit by stream if the exchange allows.');
|
|
151
|
+
}
|
|
152
|
+
this.options['numSubscriptionsByStream'][stream] = subscriptionsByStream + numSubscriptions;
|
|
136
153
|
}
|
|
137
154
|
return stream;
|
|
138
155
|
}
|
|
@@ -203,8 +220,14 @@ export default class binance extends binanceRest {
|
|
|
203
220
|
type = firstMarket['linear'] ? 'future' : 'delivery';
|
|
204
221
|
}
|
|
205
222
|
const name = 'depth';
|
|
206
|
-
|
|
207
|
-
|
|
223
|
+
let streamHash = 'multipleOrderbook';
|
|
224
|
+
if (symbols !== undefined) {
|
|
225
|
+
const symbolsLength = symbols.length;
|
|
226
|
+
if (symbolsLength > 200) {
|
|
227
|
+
throw new BadRequest(this.id + ' watchOrderBookForSymbols() accepts 200 symbols at most. To watch more symbols call watchOrderBookForSymbols() multiple times');
|
|
228
|
+
}
|
|
229
|
+
streamHash += '::' + symbols.join(',');
|
|
230
|
+
}
|
|
208
231
|
const watchOrderBookRate = this.safeString(this.options, 'watchOrderBookRate', '100');
|
|
209
232
|
const subParams = [];
|
|
210
233
|
const messageHashes = [];
|
|
@@ -216,6 +239,9 @@ export default class binance extends binanceRest {
|
|
|
216
239
|
const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
|
|
217
240
|
subParams.push(symbolHash);
|
|
218
241
|
}
|
|
242
|
+
const messageHashesLength = messageHashes.length;
|
|
243
|
+
const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, messageHashesLength);
|
|
244
|
+
const requestId = this.requestId(url);
|
|
219
245
|
const request = {
|
|
220
246
|
'method': 'SUBSCRIBE',
|
|
221
247
|
'params': subParams,
|
|
@@ -459,6 +485,14 @@ export default class binance extends binanceRest {
|
|
|
459
485
|
*/
|
|
460
486
|
await this.loadMarkets();
|
|
461
487
|
symbols = this.marketSymbols(symbols, undefined, false, true, true);
|
|
488
|
+
let streamHash = 'multipleTrades';
|
|
489
|
+
if (symbols !== undefined) {
|
|
490
|
+
const symbolsLength = symbols.length;
|
|
491
|
+
if (symbolsLength > 200) {
|
|
492
|
+
throw new BadRequest(this.id + ' watchTradesForSymbols() accepts 200 symbols at most. To watch more symbols call watchTradesForSymbols() multiple times');
|
|
493
|
+
}
|
|
494
|
+
streamHash += '::' + symbols.join(',');
|
|
495
|
+
}
|
|
462
496
|
const options = this.safeValue(this.options, 'watchTradesForSymbols', {});
|
|
463
497
|
const name = this.safeString(options, 'name', 'trade');
|
|
464
498
|
const firstMarket = this.market(symbols[0]);
|
|
@@ -474,7 +508,8 @@ export default class binance extends binanceRest {
|
|
|
474
508
|
subParams.push(currentMessageHash);
|
|
475
509
|
}
|
|
476
510
|
const query = this.omit(params, 'type');
|
|
477
|
-
const
|
|
511
|
+
const subParamsLength = subParams.length;
|
|
512
|
+
const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, subParamsLength);
|
|
478
513
|
const requestId = this.requestId(url);
|
|
479
514
|
const request = {
|
|
480
515
|
'method': 'SUBSCRIBE',
|
|
@@ -958,30 +993,30 @@ export default class binance extends binanceRest {
|
|
|
958
993
|
}
|
|
959
994
|
const marketId = this.safeString(message, 's');
|
|
960
995
|
const symbol = this.safeSymbol(marketId, undefined, undefined, marketType);
|
|
961
|
-
const
|
|
962
|
-
const
|
|
996
|
+
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
997
|
+
const last = this.safeString(message, 'c');
|
|
998
|
+
return this.safeTicker({
|
|
963
999
|
'symbol': symbol,
|
|
964
1000
|
'timestamp': timestamp,
|
|
965
1001
|
'datetime': this.iso8601(timestamp),
|
|
966
|
-
'high': this.
|
|
967
|
-
'low': this.
|
|
968
|
-
'bid': this.
|
|
969
|
-
'bidVolume': this.
|
|
970
|
-
'ask': this.
|
|
971
|
-
'askVolume': this.
|
|
972
|
-
'vwap': this.
|
|
973
|
-
'open': this.
|
|
1002
|
+
'high': this.safeString(message, 'h'),
|
|
1003
|
+
'low': this.safeString(message, 'l'),
|
|
1004
|
+
'bid': this.safeString(message, 'b'),
|
|
1005
|
+
'bidVolume': this.safeString(message, 'B'),
|
|
1006
|
+
'ask': this.safeString(message, 'a'),
|
|
1007
|
+
'askVolume': this.safeString(message, 'A'),
|
|
1008
|
+
'vwap': this.safeString(message, 'w'),
|
|
1009
|
+
'open': this.safeString(message, 'o'),
|
|
974
1010
|
'close': last,
|
|
975
1011
|
'last': last,
|
|
976
|
-
'previousClose': this.
|
|
977
|
-
'change': this.
|
|
978
|
-
'percentage': this.
|
|
1012
|
+
'previousClose': this.safeString(message, 'x'),
|
|
1013
|
+
'change': this.safeString(message, 'p'),
|
|
1014
|
+
'percentage': this.safeString(message, 'P'),
|
|
979
1015
|
'average': undefined,
|
|
980
|
-
'baseVolume': this.
|
|
981
|
-
'quoteVolume': this.
|
|
1016
|
+
'baseVolume': this.safeString(message, 'v'),
|
|
1017
|
+
'quoteVolume': this.safeString(message, 'q'),
|
|
982
1018
|
'info': message,
|
|
983
|
-
};
|
|
984
|
-
return ticker;
|
|
1019
|
+
}, market);
|
|
985
1020
|
}
|
|
986
1021
|
handleTicker(client, message) {
|
|
987
1022
|
//
|
|
@@ -2246,7 +2281,8 @@ export default class binance extends binanceRest {
|
|
|
2246
2281
|
market = this.getMarketFromSymbols(symbols);
|
|
2247
2282
|
messageHash = '::' + symbols.join(',');
|
|
2248
2283
|
}
|
|
2249
|
-
let type =
|
|
2284
|
+
let type = undefined;
|
|
2285
|
+
[type, params] = this.handleMarketTypeAndParams('watchPositions', market, params);
|
|
2250
2286
|
if (type === 'spot' || type === 'margin') {
|
|
2251
2287
|
type = 'future';
|
|
2252
2288
|
}
|
package/js/src/pro/coinbase.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import coinbaseRest from '../coinbase.js';
|
|
2
|
-
import { Ticker, Int, Trade, OrderBook, Order } from '../base/types.js';
|
|
2
|
+
import { Strings, Tickers, Ticker, Int, Trade, OrderBook, Order } from '../base/types.js';
|
|
3
3
|
export default class coinbase extends coinbaseRest {
|
|
4
4
|
describe(): any;
|
|
5
5
|
subscribe(name: any, symbol?: any, params?: {}): Promise<any>;
|
|
6
6
|
watchTicker(symbol: any, params?: {}): Promise<Ticker>;
|
|
7
|
-
watchTickers(symbols?:
|
|
7
|
+
watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
|
|
8
8
|
handleTickers(client: any, message: any): any;
|
|
9
9
|
parseWsTicker(ticker: any, market?: any): Ticker;
|
|
10
10
|
watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
package/js/src/pro/coinbase.js
CHANGED
|
@@ -117,7 +117,10 @@ export default class coinbase extends coinbaseRest {
|
|
|
117
117
|
}
|
|
118
118
|
const name = 'ticker_batch';
|
|
119
119
|
const tickers = await this.subscribe(name, symbols, params);
|
|
120
|
-
|
|
120
|
+
if (this.newUpdates) {
|
|
121
|
+
return tickers;
|
|
122
|
+
}
|
|
123
|
+
return this.tickers;
|
|
121
124
|
}
|
|
122
125
|
handleTickers(client, message) {
|
|
123
126
|
//
|