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
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ndax$1 = require('../ndax.js');
|
|
4
|
+
var Cache = require('../base/ws/Cache.js');
|
|
5
|
+
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
class ndax extends ndax$1 {
|
|
9
|
+
describe() {
|
|
10
|
+
return this.deepExtend(super.describe(), {
|
|
11
|
+
'has': {
|
|
12
|
+
'ws': true,
|
|
13
|
+
'watchOrderBook': true,
|
|
14
|
+
'watchTrades': true,
|
|
15
|
+
'watchTicker': true,
|
|
16
|
+
'watchOHLCV': true,
|
|
17
|
+
},
|
|
18
|
+
'urls': {
|
|
19
|
+
'test': {
|
|
20
|
+
'ws': 'wss://ndaxmarginstaging.cdnhop.net:10456/WSAdminGatewa/',
|
|
21
|
+
},
|
|
22
|
+
'api': {
|
|
23
|
+
'ws': 'wss://api.ndax.io/WSGateway',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// 'options': {
|
|
27
|
+
// 'tradesLimit': 1000,
|
|
28
|
+
// 'ordersLimit': 1000,
|
|
29
|
+
// 'OHLCVLimit': 1000,
|
|
30
|
+
// },
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
requestId() {
|
|
34
|
+
const requestId = this.sum(this.safeInteger(this.options, 'requestId', 0), 1);
|
|
35
|
+
this.options['requestId'] = requestId;
|
|
36
|
+
return requestId;
|
|
37
|
+
}
|
|
38
|
+
async watchTicker(symbol, params = {}) {
|
|
39
|
+
/**
|
|
40
|
+
* @method
|
|
41
|
+
* @name ndax#watchTicker
|
|
42
|
+
* @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
43
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
44
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
45
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
46
|
+
*/
|
|
47
|
+
const omsId = this.safeInteger(this.options, 'omsId', 1);
|
|
48
|
+
await this.loadMarkets();
|
|
49
|
+
const market = this.market(symbol);
|
|
50
|
+
const name = 'SubscribeLevel1';
|
|
51
|
+
const messageHash = name + ':' + market['id'];
|
|
52
|
+
const url = this.urls['api']['ws'];
|
|
53
|
+
const requestId = this.requestId();
|
|
54
|
+
const payload = {
|
|
55
|
+
'OMSId': omsId,
|
|
56
|
+
'InstrumentId': parseInt(market['id']), // conditionally optional
|
|
57
|
+
// 'Symbol': market['info']['symbol'], // conditionally optional
|
|
58
|
+
};
|
|
59
|
+
const request = {
|
|
60
|
+
'm': 0,
|
|
61
|
+
'i': requestId,
|
|
62
|
+
'n': name,
|
|
63
|
+
'o': this.json(payload), // JSON-formatted string containing the data being sent with the message
|
|
64
|
+
};
|
|
65
|
+
const message = this.extend(request, params);
|
|
66
|
+
return await this.watch(url, messageHash, message, messageHash);
|
|
67
|
+
}
|
|
68
|
+
handleTicker(client, message) {
|
|
69
|
+
const payload = this.safeValue(message, 'o', {});
|
|
70
|
+
//
|
|
71
|
+
// {
|
|
72
|
+
// "OMSId": 1,
|
|
73
|
+
// "InstrumentId": 1,
|
|
74
|
+
// "BestBid": 6423.57,
|
|
75
|
+
// "BestOffer": 6436.53,
|
|
76
|
+
// "LastTradedPx": 6423.57,
|
|
77
|
+
// "LastTradedQty": 0.96183964,
|
|
78
|
+
// "LastTradeTime": 1534862990343,
|
|
79
|
+
// "SessionOpen": 6249.64,
|
|
80
|
+
// "SessionHigh": 11111,
|
|
81
|
+
// "SessionLow": 4433,
|
|
82
|
+
// "SessionClose": 6249.64,
|
|
83
|
+
// "Volume": 0.96183964,
|
|
84
|
+
// "CurrentDayVolume": 3516.31668185,
|
|
85
|
+
// "CurrentDayNumTrades": 8529,
|
|
86
|
+
// "CurrentDayPxChange": 173.93,
|
|
87
|
+
// "CurrentNotional": 0.0,
|
|
88
|
+
// "Rolling24HrNotional": 0.0,
|
|
89
|
+
// "Rolling24HrVolume": 4319.63870783,
|
|
90
|
+
// "Rolling24NumTrades": 10585,
|
|
91
|
+
// "Rolling24HrPxChange": -0.4165607307408487,
|
|
92
|
+
// "TimeStamp": "1534862990358"
|
|
93
|
+
// }
|
|
94
|
+
//
|
|
95
|
+
const ticker = this.parseTicker(payload);
|
|
96
|
+
const symbol = ticker['symbol'];
|
|
97
|
+
const market = this.market(symbol);
|
|
98
|
+
this.tickers[symbol] = ticker;
|
|
99
|
+
const name = 'SubscribeLevel1';
|
|
100
|
+
const messageHash = name + ':' + market['id'];
|
|
101
|
+
client.resolve(ticker, messageHash);
|
|
102
|
+
}
|
|
103
|
+
async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
104
|
+
/**
|
|
105
|
+
* @method
|
|
106
|
+
* @name ndax#watchTrades
|
|
107
|
+
* @description get the list of most recent trades for a particular symbol
|
|
108
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
109
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
110
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
111
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
112
|
+
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
113
|
+
*/
|
|
114
|
+
const omsId = this.safeInteger(this.options, 'omsId', 1);
|
|
115
|
+
await this.loadMarkets();
|
|
116
|
+
const market = this.market(symbol);
|
|
117
|
+
symbol = market['symbol'];
|
|
118
|
+
const name = 'SubscribeTrades';
|
|
119
|
+
const messageHash = name + ':' + market['id'];
|
|
120
|
+
const url = this.urls['api']['ws'];
|
|
121
|
+
const requestId = this.requestId();
|
|
122
|
+
const payload = {
|
|
123
|
+
'OMSId': omsId,
|
|
124
|
+
'InstrumentId': parseInt(market['id']),
|
|
125
|
+
'IncludeLastCount': 100, // the number of previous trades to retrieve in the immediate snapshot, 100 by default
|
|
126
|
+
};
|
|
127
|
+
const request = {
|
|
128
|
+
'm': 0,
|
|
129
|
+
'i': requestId,
|
|
130
|
+
'n': name,
|
|
131
|
+
'o': this.json(payload), // JSON-formatted string containing the data being sent with the message
|
|
132
|
+
};
|
|
133
|
+
const message = this.extend(request, params);
|
|
134
|
+
const trades = await this.watch(url, messageHash, message, messageHash);
|
|
135
|
+
if (this.newUpdates) {
|
|
136
|
+
limit = trades.getLimit(symbol, limit);
|
|
137
|
+
}
|
|
138
|
+
return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
|
|
139
|
+
}
|
|
140
|
+
handleTrades(client, message) {
|
|
141
|
+
const payload = this.safeValue(message, 'o', []);
|
|
142
|
+
//
|
|
143
|
+
// initial snapshot
|
|
144
|
+
//
|
|
145
|
+
// [
|
|
146
|
+
// [
|
|
147
|
+
// 6913253, // 0 TradeId
|
|
148
|
+
// 8, // 1 ProductPairCode
|
|
149
|
+
// 0.03340802, // 2 Quantity
|
|
150
|
+
// 19116.08, // 3 Price
|
|
151
|
+
// 2543425077, // 4 Order1
|
|
152
|
+
// 2543425482, // 5 Order2
|
|
153
|
+
// 1606935922416, // 6 Tradetime
|
|
154
|
+
// 0, // 7 Direction
|
|
155
|
+
// 1, // 8 TakerSide
|
|
156
|
+
// 0, // 9 BlockTrade
|
|
157
|
+
// 0, // 10 Either Order1ClientId or Order2ClientId
|
|
158
|
+
// ]
|
|
159
|
+
// ]
|
|
160
|
+
//
|
|
161
|
+
const name = 'SubscribeTrades';
|
|
162
|
+
const updates = {};
|
|
163
|
+
for (let i = 0; i < payload.length; i++) {
|
|
164
|
+
const trade = this.parseTrade(payload[i]);
|
|
165
|
+
const symbol = trade['symbol'];
|
|
166
|
+
let tradesArray = this.safeValue(this.trades, symbol);
|
|
167
|
+
if (tradesArray === undefined) {
|
|
168
|
+
const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
|
|
169
|
+
tradesArray = new Cache.ArrayCache(limit);
|
|
170
|
+
}
|
|
171
|
+
tradesArray.append(trade);
|
|
172
|
+
this.trades[symbol] = tradesArray;
|
|
173
|
+
updates[symbol] = true;
|
|
174
|
+
}
|
|
175
|
+
const symbols = Object.keys(updates);
|
|
176
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
177
|
+
const symbol = symbols[i];
|
|
178
|
+
const market = this.market(symbol);
|
|
179
|
+
const messageHash = name + ':' + market['id'];
|
|
180
|
+
const tradesArray = this.safeValue(this.trades, symbol);
|
|
181
|
+
client.resolve(tradesArray, messageHash);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
|
|
185
|
+
/**
|
|
186
|
+
* @method
|
|
187
|
+
* @name ndax#watchOHLCV
|
|
188
|
+
* @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
189
|
+
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
190
|
+
* @param {string} timeframe the length of time each candle represents
|
|
191
|
+
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
192
|
+
* @param {int} [limit] the maximum amount of candles to fetch
|
|
193
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
194
|
+
* @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
|
|
195
|
+
*/
|
|
196
|
+
const omsId = this.safeInteger(this.options, 'omsId', 1);
|
|
197
|
+
await this.loadMarkets();
|
|
198
|
+
const market = this.market(symbol);
|
|
199
|
+
symbol = market['symbol'];
|
|
200
|
+
const name = 'SubscribeTicker';
|
|
201
|
+
const messageHash = name + ':' + timeframe + ':' + market['id'];
|
|
202
|
+
const url = this.urls['api']['ws'];
|
|
203
|
+
const requestId = this.requestId();
|
|
204
|
+
const payload = {
|
|
205
|
+
'OMSId': omsId,
|
|
206
|
+
'InstrumentId': parseInt(market['id']),
|
|
207
|
+
'Interval': parseInt(this.safeString(this.timeframes, timeframe, timeframe)),
|
|
208
|
+
'IncludeLastCount': 100, // the number of previous candles to retrieve in the immediate snapshot, 100 by default
|
|
209
|
+
};
|
|
210
|
+
const request = {
|
|
211
|
+
'm': 0,
|
|
212
|
+
'i': requestId,
|
|
213
|
+
'n': name,
|
|
214
|
+
'o': this.json(payload), // JSON-formatted string containing the data being sent with the message
|
|
215
|
+
};
|
|
216
|
+
const message = this.extend(request, params);
|
|
217
|
+
const ohlcv = await this.watch(url, messageHash, message, messageHash);
|
|
218
|
+
if (this.newUpdates) {
|
|
219
|
+
limit = ohlcv.getLimit(symbol, limit);
|
|
220
|
+
}
|
|
221
|
+
return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
|
|
222
|
+
}
|
|
223
|
+
handleOHLCV(client, message) {
|
|
224
|
+
//
|
|
225
|
+
// {
|
|
226
|
+
// "m": 1,
|
|
227
|
+
// "i": 1,
|
|
228
|
+
// "n": "SubscribeTicker",
|
|
229
|
+
// "o": [[1608284160000,23113.52,23070.88,23075.76,23075.39,162.44964300,23075.38,23075.39,8,1608284100000]],
|
|
230
|
+
// }
|
|
231
|
+
//
|
|
232
|
+
const payload = this.safeValue(message, 'o', []);
|
|
233
|
+
//
|
|
234
|
+
// [
|
|
235
|
+
// [
|
|
236
|
+
// 1501603632000, // 0 DateTime
|
|
237
|
+
// 2700.33, // 1 High
|
|
238
|
+
// 2687.01, // 2 Low
|
|
239
|
+
// 2687.01, // 3 Open
|
|
240
|
+
// 2687.01, // 4 Close
|
|
241
|
+
// 24.86100992, // 5 Volume
|
|
242
|
+
// 0, // 6 Inside Bid Price
|
|
243
|
+
// 2870.95, // 7 Inside Ask Price
|
|
244
|
+
// 1 // 8 InstrumentId
|
|
245
|
+
// 1608290188062.7678, // 9 candle timestamp
|
|
246
|
+
// ]
|
|
247
|
+
// ]
|
|
248
|
+
//
|
|
249
|
+
const updates = {};
|
|
250
|
+
for (let i = 0; i < payload.length; i++) {
|
|
251
|
+
const ohlcv = payload[i];
|
|
252
|
+
const marketId = this.safeString(ohlcv, 8);
|
|
253
|
+
const market = this.safeMarket(marketId);
|
|
254
|
+
const symbol = market['symbol'];
|
|
255
|
+
updates[marketId] = {};
|
|
256
|
+
this.ohlcvs[symbol] = this.safeValue(this.ohlcvs, symbol, {});
|
|
257
|
+
const keys = Object.keys(this.timeframes);
|
|
258
|
+
for (let j = 0; j < keys.length; j++) {
|
|
259
|
+
const timeframe = keys[j];
|
|
260
|
+
const interval = this.safeString(this.timeframes, timeframe, timeframe);
|
|
261
|
+
const duration = parseInt(interval) * 1000;
|
|
262
|
+
const timestamp = this.safeInteger(ohlcv, 0);
|
|
263
|
+
const parsed = [
|
|
264
|
+
this.parseToInt((timestamp / duration) * duration),
|
|
265
|
+
this.safeFloat(ohlcv, 3),
|
|
266
|
+
this.safeFloat(ohlcv, 1),
|
|
267
|
+
this.safeFloat(ohlcv, 2),
|
|
268
|
+
this.safeFloat(ohlcv, 4),
|
|
269
|
+
this.safeFloat(ohlcv, 5),
|
|
270
|
+
];
|
|
271
|
+
const stored = this.safeValue(this.ohlcvs[symbol], timeframe, []);
|
|
272
|
+
const length = stored.length;
|
|
273
|
+
if (length && (parsed[0] === stored[length - 1][0])) {
|
|
274
|
+
const previous = stored[length - 1];
|
|
275
|
+
stored[length - 1] = [
|
|
276
|
+
parsed[0],
|
|
277
|
+
previous[1],
|
|
278
|
+
Math.max(parsed[1], previous[1]),
|
|
279
|
+
Math.min(parsed[2], previous[2]),
|
|
280
|
+
parsed[4],
|
|
281
|
+
this.sum(parsed[5], previous[5]),
|
|
282
|
+
];
|
|
283
|
+
updates[marketId][timeframe] = true;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
if (length && (parsed[0] < stored[length - 1][0])) {
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
stored.push(parsed);
|
|
291
|
+
const limit = this.safeInteger(this.options, 'OHLCVLimit', 1000);
|
|
292
|
+
if (length >= limit) {
|
|
293
|
+
stored.shift();
|
|
294
|
+
}
|
|
295
|
+
updates[marketId][timeframe] = true;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
this.ohlcvs[symbol][timeframe] = stored;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
const name = 'SubscribeTicker';
|
|
302
|
+
const marketIds = Object.keys(updates);
|
|
303
|
+
for (let i = 0; i < marketIds.length; i++) {
|
|
304
|
+
const marketId = marketIds[i];
|
|
305
|
+
const timeframes = Object.keys(updates[marketId]);
|
|
306
|
+
for (let j = 0; j < timeframes.length; j++) {
|
|
307
|
+
const timeframe = timeframes[j];
|
|
308
|
+
const messageHash = name + ':' + timeframe + ':' + marketId;
|
|
309
|
+
const market = this.safeMarket(marketId);
|
|
310
|
+
const symbol = market['symbol'];
|
|
311
|
+
const stored = this.safeValue(this.ohlcvs[symbol], timeframe, []);
|
|
312
|
+
client.resolve(stored, messageHash);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
async watchOrderBook(symbol, limit = undefined, params = {}) {
|
|
317
|
+
/**
|
|
318
|
+
* @method
|
|
319
|
+
* @name ndax#watchOrderBook
|
|
320
|
+
* @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
321
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
322
|
+
* @param {int} [limit] the maximum amount of order book entries to return
|
|
323
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
324
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
325
|
+
*/
|
|
326
|
+
const omsId = this.safeInteger(this.options, 'omsId', 1);
|
|
327
|
+
await this.loadMarkets();
|
|
328
|
+
const market = this.market(symbol);
|
|
329
|
+
symbol = market['symbol'];
|
|
330
|
+
const name = 'SubscribeLevel2';
|
|
331
|
+
const messageHash = name + ':' + market['id'];
|
|
332
|
+
const url = this.urls['api']['ws'];
|
|
333
|
+
const requestId = this.requestId();
|
|
334
|
+
limit = (limit === undefined) ? 100 : limit;
|
|
335
|
+
const payload = {
|
|
336
|
+
'OMSId': omsId,
|
|
337
|
+
'InstrumentId': parseInt(market['id']),
|
|
338
|
+
// 'Symbol': market['info']['symbol'], // conditionally optional
|
|
339
|
+
'Depth': limit, // default 100
|
|
340
|
+
};
|
|
341
|
+
const request = {
|
|
342
|
+
'm': 0,
|
|
343
|
+
'i': requestId,
|
|
344
|
+
'n': name,
|
|
345
|
+
'o': this.json(payload), // JSON-formatted string containing the data being sent with the message
|
|
346
|
+
};
|
|
347
|
+
const subscription = {
|
|
348
|
+
'id': requestId,
|
|
349
|
+
'messageHash': messageHash,
|
|
350
|
+
'name': name,
|
|
351
|
+
'symbol': symbol,
|
|
352
|
+
'marketId': market['id'],
|
|
353
|
+
'method': this.handleOrderBookSubscription,
|
|
354
|
+
'limit': limit,
|
|
355
|
+
'params': params,
|
|
356
|
+
};
|
|
357
|
+
const message = this.extend(request, params);
|
|
358
|
+
const orderbook = await this.watch(url, messageHash, message, messageHash, subscription);
|
|
359
|
+
return orderbook.limit();
|
|
360
|
+
}
|
|
361
|
+
handleOrderBook(client, message) {
|
|
362
|
+
//
|
|
363
|
+
// {
|
|
364
|
+
// "m": 3,
|
|
365
|
+
// "i": 2,
|
|
366
|
+
// "n": "Level2UpdateEvent",
|
|
367
|
+
// "o": [[2,1,1608208308265,0,20782.49,1,25000,8,1,1]]
|
|
368
|
+
// }
|
|
369
|
+
//
|
|
370
|
+
const payload = this.safeValue(message, 'o', []);
|
|
371
|
+
//
|
|
372
|
+
// [
|
|
373
|
+
// 0, // 0 MDUpdateId
|
|
374
|
+
// 1, // 1 Number of Unique Accounts
|
|
375
|
+
// 123, // 2 ActionDateTime in Posix format X 1000
|
|
376
|
+
// 0, // 3 ActionType 0 (New), 1 (Update), 2(Delete)
|
|
377
|
+
// 0.0, // 4 LastTradePrice
|
|
378
|
+
// 0, // 5 Number of Orders
|
|
379
|
+
// 0.0, // 6 Price
|
|
380
|
+
// 0, // 7 ProductPairCode
|
|
381
|
+
// 0.0, // 8 Quantity
|
|
382
|
+
// 0, // 9 Side
|
|
383
|
+
// ],
|
|
384
|
+
//
|
|
385
|
+
const firstBidAsk = this.safeValue(payload, 0, []);
|
|
386
|
+
const marketId = this.safeString(firstBidAsk, 7);
|
|
387
|
+
if (marketId === undefined) {
|
|
388
|
+
return message;
|
|
389
|
+
}
|
|
390
|
+
const market = this.safeMarket(marketId);
|
|
391
|
+
const symbol = market['symbol'];
|
|
392
|
+
const orderbook = this.safeValue(this.orderbooks, symbol);
|
|
393
|
+
if (orderbook === undefined) {
|
|
394
|
+
return message;
|
|
395
|
+
}
|
|
396
|
+
let timestamp = undefined;
|
|
397
|
+
let nonce = undefined;
|
|
398
|
+
for (let i = 0; i < payload.length; i++) {
|
|
399
|
+
const bidask = payload[i];
|
|
400
|
+
if (timestamp === undefined) {
|
|
401
|
+
timestamp = this.safeInteger(bidask, 2);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
const newTimestamp = this.safeInteger(bidask, 2);
|
|
405
|
+
timestamp = Math.max(timestamp, newTimestamp);
|
|
406
|
+
}
|
|
407
|
+
if (nonce === undefined) {
|
|
408
|
+
nonce = this.safeInteger(bidask, 0);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
const newNonce = this.safeInteger(bidask, 0);
|
|
412
|
+
nonce = Math.max(nonce, newNonce);
|
|
413
|
+
}
|
|
414
|
+
// 0 new, 1 update, 2 remove
|
|
415
|
+
const type = this.safeInteger(bidask, 3);
|
|
416
|
+
const price = this.safeFloat(bidask, 6);
|
|
417
|
+
const amount = this.safeFloat(bidask, 8);
|
|
418
|
+
const side = this.safeInteger(bidask, 9);
|
|
419
|
+
// 0 buy, 1 sell, 2 short reserved for future use, 3 unknown
|
|
420
|
+
const orderbookSide = (side === 0) ? orderbook['bids'] : orderbook['asks'];
|
|
421
|
+
// 0 new, 1 update, 2 remove
|
|
422
|
+
if (type === 0) {
|
|
423
|
+
orderbookSide.store(price, amount);
|
|
424
|
+
}
|
|
425
|
+
else if (type === 1) {
|
|
426
|
+
orderbookSide.store(price, amount);
|
|
427
|
+
}
|
|
428
|
+
else if (type === 2) {
|
|
429
|
+
orderbookSide.store(price, 0);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
orderbook['nonce'] = nonce;
|
|
433
|
+
orderbook['timestamp'] = timestamp;
|
|
434
|
+
orderbook['datetime'] = this.iso8601(timestamp);
|
|
435
|
+
const name = 'SubscribeLevel2';
|
|
436
|
+
const messageHash = name + ':' + marketId;
|
|
437
|
+
this.orderbooks[symbol] = orderbook;
|
|
438
|
+
client.resolve(orderbook, messageHash);
|
|
439
|
+
}
|
|
440
|
+
handleOrderBookSubscription(client, message, subscription) {
|
|
441
|
+
//
|
|
442
|
+
// {
|
|
443
|
+
// "m": 1,
|
|
444
|
+
// "i": 1,
|
|
445
|
+
// "n": "SubscribeLevel2",
|
|
446
|
+
// "o": [[1,1,1608204295901,0,20782.49,1,18200,8,1,0]]
|
|
447
|
+
// }
|
|
448
|
+
//
|
|
449
|
+
const payload = this.safeValue(message, 'o', []);
|
|
450
|
+
//
|
|
451
|
+
// [
|
|
452
|
+
// [
|
|
453
|
+
// 0, // 0 MDUpdateId
|
|
454
|
+
// 1, // 1 Number of Unique Accounts
|
|
455
|
+
// 123, // 2 ActionDateTime in Posix format X 1000
|
|
456
|
+
// 0, // 3 ActionType 0 (New), 1 (Update), 2(Delete)
|
|
457
|
+
// 0.0, // 4 LastTradePrice
|
|
458
|
+
// 0, // 5 Number of Orders
|
|
459
|
+
// 0.0, // 6 Price
|
|
460
|
+
// 0, // 7 ProductPairCode
|
|
461
|
+
// 0.0, // 8 Quantity
|
|
462
|
+
// 0, // 9 Side
|
|
463
|
+
// ],
|
|
464
|
+
// ]
|
|
465
|
+
//
|
|
466
|
+
const symbol = this.safeString(subscription, 'symbol');
|
|
467
|
+
const snapshot = this.parseOrderBook(payload, symbol);
|
|
468
|
+
const limit = this.safeInteger(subscription, 'limit');
|
|
469
|
+
const orderbook = this.orderBook(snapshot, limit);
|
|
470
|
+
this.orderbooks[symbol] = orderbook;
|
|
471
|
+
const messageHash = this.safeString(subscription, 'messageHash');
|
|
472
|
+
client.resolve(orderbook, messageHash);
|
|
473
|
+
}
|
|
474
|
+
handleSubscriptionStatus(client, message) {
|
|
475
|
+
//
|
|
476
|
+
// {
|
|
477
|
+
// "m": 1,
|
|
478
|
+
// "i": 1,
|
|
479
|
+
// "n": "SubscribeLevel2",
|
|
480
|
+
// "o": "[[1,1,1608204295901,0,20782.49,1,18200,8,1,0]]"
|
|
481
|
+
// }
|
|
482
|
+
//
|
|
483
|
+
const subscriptionsById = this.indexBy(client.subscriptions, 'id');
|
|
484
|
+
const id = this.safeInteger(message, 'i');
|
|
485
|
+
const subscription = this.safeValue(subscriptionsById, id);
|
|
486
|
+
if (subscription !== undefined) {
|
|
487
|
+
const method = this.safeValue(subscription, 'method');
|
|
488
|
+
if (method === undefined) {
|
|
489
|
+
return message;
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
return method.call(this, client, message, subscription);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
handleMessage(client, message) {
|
|
497
|
+
//
|
|
498
|
+
// {
|
|
499
|
+
// "m": 0, // message type, 0 request, 1 reply, 2 subscribe, 3 event, unsubscribe, 5 error
|
|
500
|
+
// "i": 0, // sequence number identifies an individual request or request-and-response pair, to your application
|
|
501
|
+
// "n":"function name", // function name is the name of the function being called or that the server is responding to, the server echoes your call
|
|
502
|
+
// "o":"payload", // JSON-formatted string containing the data being sent with the message
|
|
503
|
+
// }
|
|
504
|
+
//
|
|
505
|
+
// {
|
|
506
|
+
// "m": 1,
|
|
507
|
+
// "i": 1,
|
|
508
|
+
// "n": "SubscribeLevel2",
|
|
509
|
+
// "o": "[[1,1,1608204295901,0,20782.49,1,18200,8,1,0]]"
|
|
510
|
+
// }
|
|
511
|
+
//
|
|
512
|
+
// {
|
|
513
|
+
// "m": 3,
|
|
514
|
+
// "i": 2,
|
|
515
|
+
// "n": "Level2UpdateEvent",
|
|
516
|
+
// "o": "[[2,1,1608208308265,0,20782.49,1,25000,8,1,1]]"
|
|
517
|
+
// }
|
|
518
|
+
//
|
|
519
|
+
const payload = this.safeString(message, 'o');
|
|
520
|
+
if (payload === undefined) {
|
|
521
|
+
return message;
|
|
522
|
+
}
|
|
523
|
+
message['o'] = JSON.parse(payload);
|
|
524
|
+
const methods = {
|
|
525
|
+
'SubscribeLevel2': this.handleSubscriptionStatus,
|
|
526
|
+
'SubscribeLevel1': this.handleTicker,
|
|
527
|
+
'Level2UpdateEvent': this.handleOrderBook,
|
|
528
|
+
'Level1UpdateEvent': this.handleTicker,
|
|
529
|
+
'SubscribeTrades': this.handleTrades,
|
|
530
|
+
'TradeDataUpdateEvent': this.handleTrades,
|
|
531
|
+
'SubscribeTicker': this.handleOHLCV,
|
|
532
|
+
'TickerDataUpdateEvent': this.handleOHLCV,
|
|
533
|
+
};
|
|
534
|
+
const event = this.safeString(message, 'n');
|
|
535
|
+
const method = this.safeValue(methods, event);
|
|
536
|
+
if (method === undefined) {
|
|
537
|
+
return message;
|
|
538
|
+
}
|
|
539
|
+
else {
|
|
540
|
+
return method.call(this, client, message);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
module.exports = ndax;
|