ccxt 4.2.10 → 4.2.12
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 +4 -4
- package/dist/ccxt.browser.js +695 -282
- 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 +2142 -0
- package/dist/cjs/js/src/binance.js +9729 -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 +3737 -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 +8284 -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 +3274 -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 +7054 -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 +9024 -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 +759 -0
- package/dist/cjs/js/src/indodax.js +1069 -0
- package/dist/cjs/js/src/kraken.js +2861 -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 +2825 -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 +7329 -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 +4715 -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 +1558 -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 +1865 -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 +2715 -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/dist/cjs/src/base/Exchange.js +11 -0
- package/dist/cjs/src/bingx.js +0 -10
- package/dist/cjs/src/bitget.js +14 -5
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/kucoin.js +29 -5
- 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/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/alpaca.js +18 -18
- package/js/src/base/Exchange.d.ts +6 -1
- package/js/src/base/Exchange.js +112 -12
- package/js/src/bigone.d.ts +1 -2
- package/js/src/bigone.js +340 -145
- package/js/src/binance.js +15 -8
- package/js/src/bingx.d.ts +0 -1
- package/js/src/bingx.js +9 -12
- package/js/src/bitfinex.d.ts +2 -2
- package/js/src/bitfinex.js +2 -3
- package/js/src/bitget.js +35 -13
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +3 -3
- package/js/src/bitmex.js +1 -0
- package/js/src/bybit.js +3 -1
- package/js/src/coinlist.js +2 -3
- 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 +22 -3
- package/js/src/hitbtc.d.ts +4 -4
- package/js/src/hitbtc.js +2 -3
- package/js/src/htx.js +4 -7
- package/js/src/huobijp.js +2 -3
- package/js/src/kraken.js +1 -0
- package/js/src/kucoin.js +29 -5
- package/js/src/mexc.js +2 -1
- package/js/src/okx.js +13 -3
- 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/poloniex.d.ts +2 -2
- package/js/src/upbit.d.ts +3 -101
- package/js/src/upbit.js +12 -12
- package/js/src/woo.js +2 -0
- package/package.json +11 -11
- package/skip-tests.json +5 -0
- package/tests-manager.sh +2 -2
package/dist/ccxt.browser.js
CHANGED
|
@@ -2522,7 +2522,7 @@ class alpaca extends _abstract_alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
2522
2522
|
'market': 'https://data.sandbox.{hostname}',
|
|
2523
2523
|
},
|
|
2524
2524
|
'doc': 'https://alpaca.markets/docs/',
|
|
2525
|
-
'fees': 'https://alpaca.markets/
|
|
2525
|
+
'fees': 'https://docs.alpaca.markets/docs/crypto-fees',
|
|
2526
2526
|
},
|
|
2527
2527
|
'has': {
|
|
2528
2528
|
'CORS': false,
|
|
@@ -2693,28 +2693,28 @@ class alpaca extends _abstract_alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
2693
2693
|
'trading': {
|
|
2694
2694
|
'tierBased': true,
|
|
2695
2695
|
'percentage': true,
|
|
2696
|
-
'maker': this.parseNumber('0.
|
|
2697
|
-
'taker': this.parseNumber('0.
|
|
2696
|
+
'maker': this.parseNumber('0.0015'),
|
|
2697
|
+
'taker': this.parseNumber('0.0025'),
|
|
2698
2698
|
'tiers': {
|
|
2699
2699
|
'taker': [
|
|
2700
|
-
[this.parseNumber('0'), this.parseNumber('0.
|
|
2701
|
-
[this.parseNumber('
|
|
2702
|
-
[this.parseNumber('
|
|
2703
|
-
[this.parseNumber('
|
|
2704
|
-
[this.parseNumber('10000000'), this.parseNumber('0.
|
|
2705
|
-
[this.parseNumber('25000000'), this.parseNumber('0.
|
|
2706
|
-
[this.parseNumber('50000000'), this.parseNumber('0.
|
|
2700
|
+
[this.parseNumber('0'), this.parseNumber('0.0025')],
|
|
2701
|
+
[this.parseNumber('100000'), this.parseNumber('0.0022')],
|
|
2702
|
+
[this.parseNumber('500000'), this.parseNumber('0.0020')],
|
|
2703
|
+
[this.parseNumber('1000000'), this.parseNumber('0.0018')],
|
|
2704
|
+
[this.parseNumber('10000000'), this.parseNumber('0.0015')],
|
|
2705
|
+
[this.parseNumber('25000000'), this.parseNumber('0.0013')],
|
|
2706
|
+
[this.parseNumber('50000000'), this.parseNumber('0.0012')],
|
|
2707
2707
|
[this.parseNumber('100000000'), this.parseNumber('0.001')],
|
|
2708
2708
|
],
|
|
2709
2709
|
'maker': [
|
|
2710
|
-
[this.parseNumber('0'), this.parseNumber('0.
|
|
2711
|
-
[this.parseNumber('
|
|
2712
|
-
[this.parseNumber('
|
|
2713
|
-
[this.parseNumber('
|
|
2714
|
-
[this.parseNumber('10000000'), this.parseNumber('0.
|
|
2715
|
-
[this.parseNumber('25000000'), this.parseNumber('0.
|
|
2716
|
-
[this.parseNumber('50000000'), this.parseNumber('0.
|
|
2717
|
-
[this.parseNumber('100000000'), this.parseNumber('0.
|
|
2710
|
+
[this.parseNumber('0'), this.parseNumber('0.0015')],
|
|
2711
|
+
[this.parseNumber('100000'), this.parseNumber('0.0012')],
|
|
2712
|
+
[this.parseNumber('500000'), this.parseNumber('0.001')],
|
|
2713
|
+
[this.parseNumber('1000000'), this.parseNumber('0.0008')],
|
|
2714
|
+
[this.parseNumber('10000000'), this.parseNumber('0.0005')],
|
|
2715
|
+
[this.parseNumber('25000000'), this.parseNumber('0.0002')],
|
|
2716
|
+
[this.parseNumber('50000000'), this.parseNumber('0.0002')],
|
|
2717
|
+
[this.parseNumber('100000000'), this.parseNumber('0.00')],
|
|
2718
2718
|
],
|
|
2719
2719
|
},
|
|
2720
2720
|
},
|
|
@@ -7357,6 +7357,8 @@ class Exchange {
|
|
|
7357
7357
|
'createStopOrder': undefined,
|
|
7358
7358
|
'createStopLimitOrder': undefined,
|
|
7359
7359
|
'createStopMarketOrder': undefined,
|
|
7360
|
+
'createTrailingAmountOrder': undefined,
|
|
7361
|
+
'createTrailingPercentOrder': undefined,
|
|
7360
7362
|
'createOrderWs': undefined,
|
|
7361
7363
|
'editOrderWs': undefined,
|
|
7362
7364
|
'fetchOpenOrdersWs': undefined,
|
|
@@ -7649,10 +7651,28 @@ class Exchange {
|
|
|
7649
7651
|
console.log(...args);
|
|
7650
7652
|
}
|
|
7651
7653
|
async loadProxyModules() {
|
|
7654
|
+
if (this.proxyModulesLoaded) {
|
|
7655
|
+
return;
|
|
7656
|
+
}
|
|
7652
7657
|
this.proxyModulesLoaded = true;
|
|
7653
|
-
//
|
|
7654
|
-
|
|
7655
|
-
|
|
7658
|
+
// we have to handle it with below nested way, because of dynamic
|
|
7659
|
+
// import issues (https://github.com/ccxt/ccxt/pull/20687)
|
|
7660
|
+
try {
|
|
7661
|
+
// todo: possible sync alternatives: https://stackoverflow.com/questions/51069002/convert-import-to-synchronous
|
|
7662
|
+
this.httpProxyAgentModule = await import(/* webpackIgnore: true */ '../static_dependencies/proxies/http-proxy-agent/index.js');
|
|
7663
|
+
this.httpsProxyAgentModule = await import(/* webpackIgnore: true */ '../static_dependencies/proxies/https-proxy-agent/index.js');
|
|
7664
|
+
}
|
|
7665
|
+
catch (e) {
|
|
7666
|
+
// if several users are using those frameworks which cause exceptions,
|
|
7667
|
+
// let them to be able to load modules still, by installing them
|
|
7668
|
+
try {
|
|
7669
|
+
// @ts-ignore
|
|
7670
|
+
this.httpProxyAgentModule = await import(/* webpackIgnore: true */ 'http-proxy-agent');
|
|
7671
|
+
// @ts-ignore
|
|
7672
|
+
this.httpProxyAgentModule = await import(/* webpackIgnore: true */ 'https-proxy-agent');
|
|
7673
|
+
}
|
|
7674
|
+
catch { }
|
|
7675
|
+
}
|
|
7656
7676
|
if (this.socksProxyAgentModuleChecked === false) {
|
|
7657
7677
|
this.socksProxyAgentModuleChecked = true;
|
|
7658
7678
|
try {
|
|
@@ -7744,11 +7764,10 @@ class Exchange {
|
|
|
7744
7764
|
// proxy agents
|
|
7745
7765
|
const [httpProxy, httpsProxy, socksProxy] = this.checkProxySettings(url, method, headers, body);
|
|
7746
7766
|
this.checkConflictingProxies(httpProxy || httpsProxy || socksProxy, proxyUrl);
|
|
7767
|
+
// skip proxies on the browser
|
|
7747
7768
|
if (isNode) {
|
|
7748
|
-
//
|
|
7749
|
-
|
|
7750
|
-
await this.loadProxyModules(); // this is needed in JS, independently whether proxy properties were set or not, we have to load them because of necessity in WS, which would happen beyond 'fetch' method (WS/etc)
|
|
7751
|
-
}
|
|
7769
|
+
// this is needed in JS, independently whether proxy properties were set or not, we have to load them because of necessity in WS, which would happen beyond 'fetch' method (WS/etc)
|
|
7770
|
+
await this.loadProxyModules();
|
|
7752
7771
|
}
|
|
7753
7772
|
const chosenAgent = this.setProxyAgents(httpProxy, httpsProxy, socksProxy);
|
|
7754
7773
|
// user-agent
|
|
@@ -7770,13 +7789,29 @@ class Exchange {
|
|
|
7770
7789
|
// end of proxies & headers
|
|
7771
7790
|
if (this.fetchImplementation === undefined) {
|
|
7772
7791
|
if (isNode) {
|
|
7773
|
-
const module = await import(/* webpackIgnore: true */ '../static_dependencies/node-fetch/index.js');
|
|
7774
7792
|
if (this.agent === undefined) {
|
|
7775
7793
|
this.agent = this.httpsAgent;
|
|
7776
7794
|
}
|
|
7777
|
-
|
|
7778
|
-
|
|
7779
|
-
|
|
7795
|
+
try {
|
|
7796
|
+
const module = await import(/* webpackIgnore: true */ '../static_dependencies/node-fetch/index.js');
|
|
7797
|
+
this.AbortError = module.AbortError;
|
|
7798
|
+
this.fetchImplementation = module.default;
|
|
7799
|
+
this.FetchError = module.FetchError;
|
|
7800
|
+
}
|
|
7801
|
+
catch (e) {
|
|
7802
|
+
// some users having issues with dynamic imports (https://github.com/ccxt/ccxt/pull/20687)
|
|
7803
|
+
// so let them to fallback to node's native fetch
|
|
7804
|
+
if (typeof fetch === 'function') {
|
|
7805
|
+
this.fetchImplementation = fetch;
|
|
7806
|
+
// as it's browser-compatible implementation ( https://nodejs.org/dist/latest-v20.x/docs/api/globals.html#fetch )
|
|
7807
|
+
// it throws same error types
|
|
7808
|
+
this.AbortError = DOMException;
|
|
7809
|
+
this.FetchError = TypeError;
|
|
7810
|
+
}
|
|
7811
|
+
else {
|
|
7812
|
+
throw new Error('Seems, "fetch" function is not available in your node-js version, please use latest node-js version');
|
|
7813
|
+
}
|
|
7814
|
+
}
|
|
7780
7815
|
}
|
|
7781
7816
|
else {
|
|
7782
7817
|
this.fetchImplementation = self.fetch;
|
|
@@ -8284,6 +8319,17 @@ class Exchange {
|
|
|
8284
8319
|
axolotl(payload, hexKey, ed25519) {
|
|
8285
8320
|
return (0,_functions_crypto_js__WEBPACK_IMPORTED_MODULE_7__/* .axolotl */ .gC)(payload, hexKey, ed25519);
|
|
8286
8321
|
}
|
|
8322
|
+
fixStringifiedJsonMembers(content) {
|
|
8323
|
+
// used for instance in bingx
|
|
8324
|
+
// when stringified json has members with their values also stringified, like:
|
|
8325
|
+
// '{"code":0, "data":{"order":{"orderId":1742968678528512345,"symbol":"BTC-USDT", "takeProfit":"{\"type\":\"TAKE_PROFIT\",\"stopPrice\":43320.1}","reduceOnly":false}}}'
|
|
8326
|
+
// we can fix with below manipulations
|
|
8327
|
+
// @ts-ignore
|
|
8328
|
+
let modifiedContent = content.replaceAll('\\', '');
|
|
8329
|
+
modifiedContent = modifiedContent.replaceAll('"{', '{');
|
|
8330
|
+
modifiedContent = modifiedContent.replaceAll('}"', '}');
|
|
8331
|
+
return modifiedContent;
|
|
8332
|
+
}
|
|
8287
8333
|
/* eslint-enable */
|
|
8288
8334
|
// ------------------------------------------------------------------------
|
|
8289
8335
|
// ########################################################################
|
|
@@ -10720,6 +10766,60 @@ class Exchange {
|
|
|
10720
10766
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
10721
10767
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' createOrder() is not supported yet');
|
|
10722
10768
|
}
|
|
10769
|
+
async createTrailingAmountOrder(symbol, type, side, amount, price = undefined, trailingAmount = undefined, trailingTriggerPrice = undefined, params = {}) {
|
|
10770
|
+
/**
|
|
10771
|
+
* @method
|
|
10772
|
+
* @name createTrailingAmountOrder
|
|
10773
|
+
* @description create a trailing order by providing the symbol, type, side, amount, price and trailingAmount
|
|
10774
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
10775
|
+
* @param {string} type 'market' or 'limit'
|
|
10776
|
+
* @param {string} side 'buy' or 'sell'
|
|
10777
|
+
* @param {float} amount how much you want to trade in units of the base currency, or number of contracts
|
|
10778
|
+
* @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
|
|
10779
|
+
* @param {float} trailingAmount the quote amount to trail away from the current market price
|
|
10780
|
+
* @param {float} [trailingTriggerPrice] the price to activate a trailing order, default uses the price argument
|
|
10781
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10782
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
10783
|
+
*/
|
|
10784
|
+
if (trailingAmount === undefined) {
|
|
10785
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ArgumentsRequired(this.id + ' createTrailingAmountOrder() requires a trailingAmount argument');
|
|
10786
|
+
}
|
|
10787
|
+
params['trailingAmount'] = trailingAmount;
|
|
10788
|
+
if (trailingTriggerPrice !== undefined) {
|
|
10789
|
+
params['trailingTriggerPrice'] = trailingTriggerPrice;
|
|
10790
|
+
}
|
|
10791
|
+
if (this.has['createTrailingAmountOrder']) {
|
|
10792
|
+
return await this.createOrder(symbol, type, side, amount, price, params);
|
|
10793
|
+
}
|
|
10794
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' createTrailingAmountOrder() is not supported yet');
|
|
10795
|
+
}
|
|
10796
|
+
async createTrailingPercentOrder(symbol, type, side, amount, price = undefined, trailingPercent = undefined, trailingTriggerPrice = undefined, params = {}) {
|
|
10797
|
+
/**
|
|
10798
|
+
* @method
|
|
10799
|
+
* @name createTrailingPercentOrder
|
|
10800
|
+
* @description create a trailing order by providing the symbol, type, side, amount, price and trailingPercent
|
|
10801
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
10802
|
+
* @param {string} type 'market' or 'limit'
|
|
10803
|
+
* @param {string} side 'buy' or 'sell'
|
|
10804
|
+
* @param {float} amount how much you want to trade in units of the base currency, or number of contracts
|
|
10805
|
+
* @param {float} [price] the price for the order to be filled at, in units of the quote currency, ignored in market orders
|
|
10806
|
+
* @param {float} trailingPercent the percent to trail away from the current market price
|
|
10807
|
+
* @param {float} [trailingTriggerPrice] the price to activate a trailing order, default uses the price argument
|
|
10808
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10809
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
10810
|
+
*/
|
|
10811
|
+
if (trailingPercent === undefined) {
|
|
10812
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ArgumentsRequired(this.id + ' createTrailingPercentOrder() requires a trailingPercent argument');
|
|
10813
|
+
}
|
|
10814
|
+
params['trailingPercent'] = trailingPercent;
|
|
10815
|
+
if (trailingTriggerPrice !== undefined) {
|
|
10816
|
+
params['trailingTriggerPrice'] = trailingTriggerPrice;
|
|
10817
|
+
}
|
|
10818
|
+
if (this.has['createTrailingPercentOrder']) {
|
|
10819
|
+
return await this.createOrder(symbol, type, side, amount, price, params);
|
|
10820
|
+
}
|
|
10821
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' createTrailingPercentOrder() is not supported yet');
|
|
10822
|
+
}
|
|
10723
10823
|
async createMarketOrderWithCost(symbol, side, cost, params = {}) {
|
|
10724
10824
|
/**
|
|
10725
10825
|
* @method
|
|
@@ -10880,7 +10980,7 @@ class Exchange {
|
|
|
10880
10980
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchFundingHistory() is not supported yet');
|
|
10881
10981
|
}
|
|
10882
10982
|
async closePosition(symbol, side = undefined, params = {}) {
|
|
10883
|
-
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + '
|
|
10983
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' closePosition() is not supported yet');
|
|
10884
10984
|
}
|
|
10885
10985
|
async closeAllPositions(params = {}) {
|
|
10886
10986
|
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' closeAllPositions() is not supported yet');
|
|
@@ -15253,10 +15353,10 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15253
15353
|
'has': {
|
|
15254
15354
|
'CORS': undefined,
|
|
15255
15355
|
'spot': true,
|
|
15256
|
-
'margin':
|
|
15356
|
+
'margin': false,
|
|
15257
15357
|
'swap': undefined,
|
|
15258
15358
|
'future': undefined,
|
|
15259
|
-
'option':
|
|
15359
|
+
'option': false,
|
|
15260
15360
|
'cancelAllOrders': true,
|
|
15261
15361
|
'cancelOrder': true,
|
|
15262
15362
|
'createMarketBuyOrderWithCost': true,
|
|
@@ -15310,6 +15410,8 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15310
15410
|
'api': {
|
|
15311
15411
|
'public': 'https://{hostname}/api/v3',
|
|
15312
15412
|
'private': 'https://{hostname}/api/v3/viewer',
|
|
15413
|
+
'contractPublic': 'https://{hostname}/api/contract/v2',
|
|
15414
|
+
'contractPrivate': 'https://{hostname}/api/contract/v2',
|
|
15313
15415
|
'webExchange': 'https://{hostname}/api/',
|
|
15314
15416
|
},
|
|
15315
15417
|
'www': 'https://big.one',
|
|
@@ -15349,6 +15451,38 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15349
15451
|
'transfer',
|
|
15350
15452
|
],
|
|
15351
15453
|
},
|
|
15454
|
+
'contractPublic': {
|
|
15455
|
+
'get': [
|
|
15456
|
+
'instruments',
|
|
15457
|
+
'depth@{symbol}/snapshot',
|
|
15458
|
+
'instruments/difference',
|
|
15459
|
+
'instruments/prices',
|
|
15460
|
+
],
|
|
15461
|
+
},
|
|
15462
|
+
'contractPrivate': {
|
|
15463
|
+
'get': [
|
|
15464
|
+
'accounts',
|
|
15465
|
+
'orders/{id}',
|
|
15466
|
+
'orders',
|
|
15467
|
+
'orders/opening',
|
|
15468
|
+
'orders/count',
|
|
15469
|
+
'orders/opening/count',
|
|
15470
|
+
'trades',
|
|
15471
|
+
'trades/count',
|
|
15472
|
+
],
|
|
15473
|
+
'post': [
|
|
15474
|
+
'orders',
|
|
15475
|
+
'orders/batch',
|
|
15476
|
+
],
|
|
15477
|
+
'put': [
|
|
15478
|
+
'positions/{symbol}/margin',
|
|
15479
|
+
'positions/{symbol}/risk-limit',
|
|
15480
|
+
],
|
|
15481
|
+
'delete': [
|
|
15482
|
+
'orders/{id}',
|
|
15483
|
+
'orders/batch',
|
|
15484
|
+
],
|
|
15485
|
+
},
|
|
15352
15486
|
'webExchange': {
|
|
15353
15487
|
'get': [
|
|
15354
15488
|
'uc/v2/assets',
|
|
@@ -15740,93 +15874,214 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15740
15874
|
// ]
|
|
15741
15875
|
// }
|
|
15742
15876
|
//
|
|
15877
|
+
const contractResponse = await this.contractPublicGetInstruments(params);
|
|
15878
|
+
//
|
|
15879
|
+
// [
|
|
15880
|
+
// {
|
|
15881
|
+
// "usdtPrice": 1.00031998,
|
|
15882
|
+
// "symbol": "BTCUSD",
|
|
15883
|
+
// "btcPrice": 34700.4,
|
|
15884
|
+
// "ethPrice": 1787.83,
|
|
15885
|
+
// "nextFundingRate": 0.00010,
|
|
15886
|
+
// "fundingRate": 0.00010,
|
|
15887
|
+
// "latestPrice": 34708.5,
|
|
15888
|
+
// "last24hPriceChange": 0.0321,
|
|
15889
|
+
// "indexPrice": 34700.4,
|
|
15890
|
+
// "volume24h": 261319063,
|
|
15891
|
+
// "turnover24h": 8204.129380685496,
|
|
15892
|
+
// "nextFundingTime": 1698285600000,
|
|
15893
|
+
// "markPrice": 34702.4646738,
|
|
15894
|
+
// "last24hMaxPrice": 35127.5,
|
|
15895
|
+
// "volume24hInUsd": 0.0,
|
|
15896
|
+
// "openValue": 32.88054722085945,
|
|
15897
|
+
// "last24hMinPrice": 33552.0,
|
|
15898
|
+
// "openInterest": 1141372.0
|
|
15899
|
+
// }
|
|
15900
|
+
// ...
|
|
15901
|
+
// ]
|
|
15902
|
+
//
|
|
15743
15903
|
const markets = this.safeValue(response, 'data', []);
|
|
15744
|
-
|
|
15745
|
-
|
|
15746
|
-
|
|
15747
|
-
|
|
15748
|
-
|
|
15749
|
-
|
|
15750
|
-
|
|
15751
|
-
|
|
15752
|
-
|
|
15753
|
-
|
|
15754
|
-
|
|
15755
|
-
|
|
15756
|
-
|
|
15757
|
-
|
|
15758
|
-
|
|
15759
|
-
|
|
15760
|
-
|
|
15761
|
-
|
|
15762
|
-
|
|
15763
|
-
|
|
15764
|
-
|
|
15765
|
-
|
|
15766
|
-
|
|
15767
|
-
|
|
15768
|
-
|
|
15769
|
-
|
|
15770
|
-
|
|
15771
|
-
|
|
15772
|
-
|
|
15773
|
-
|
|
15774
|
-
|
|
15775
|
-
|
|
15776
|
-
|
|
15777
|
-
|
|
15778
|
-
|
|
15779
|
-
|
|
15780
|
-
|
|
15781
|
-
},
|
|
15782
|
-
'limits': {
|
|
15783
|
-
'leverage': {
|
|
15784
|
-
'min': undefined,
|
|
15785
|
-
'max': undefined,
|
|
15904
|
+
const result = [];
|
|
15905
|
+
for (let i = 0; i < markets.length; i++) {
|
|
15906
|
+
const market = markets[i];
|
|
15907
|
+
const baseAsset = this.safeValue(market, 'base_asset', {});
|
|
15908
|
+
const quoteAsset = this.safeValue(market, 'quote_asset', {});
|
|
15909
|
+
const baseId = this.safeString(baseAsset, 'symbol');
|
|
15910
|
+
const quoteId = this.safeString(quoteAsset, 'symbol');
|
|
15911
|
+
const base = this.safeCurrencyCode(baseId);
|
|
15912
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
15913
|
+
result.push(this.safeMarketStructure({
|
|
15914
|
+
'id': this.safeString(market, 'name'),
|
|
15915
|
+
'uuid': this.safeString(market, 'id'),
|
|
15916
|
+
'symbol': base + '/' + quote,
|
|
15917
|
+
'base': base,
|
|
15918
|
+
'quote': quote,
|
|
15919
|
+
'settle': undefined,
|
|
15920
|
+
'baseId': baseId,
|
|
15921
|
+
'quoteId': quoteId,
|
|
15922
|
+
'settleId': undefined,
|
|
15923
|
+
'type': 'spot',
|
|
15924
|
+
'spot': true,
|
|
15925
|
+
'margin': false,
|
|
15926
|
+
'swap': false,
|
|
15927
|
+
'future': false,
|
|
15928
|
+
'option': false,
|
|
15929
|
+
'active': true,
|
|
15930
|
+
'contract': false,
|
|
15931
|
+
'linear': undefined,
|
|
15932
|
+
'inverse': undefined,
|
|
15933
|
+
'contractSize': undefined,
|
|
15934
|
+
'expiry': undefined,
|
|
15935
|
+
'expiryDatetime': undefined,
|
|
15936
|
+
'strike': undefined,
|
|
15937
|
+
'optionType': undefined,
|
|
15938
|
+
'precision': {
|
|
15939
|
+
'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'base_scale'))),
|
|
15940
|
+
'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quote_scale'))),
|
|
15786
15941
|
},
|
|
15787
|
-
'
|
|
15788
|
-
'
|
|
15789
|
-
|
|
15942
|
+
'limits': {
|
|
15943
|
+
'leverage': {
|
|
15944
|
+
'min': undefined,
|
|
15945
|
+
'max': undefined,
|
|
15946
|
+
},
|
|
15947
|
+
'amount': {
|
|
15948
|
+
'min': undefined,
|
|
15949
|
+
'max': undefined,
|
|
15950
|
+
},
|
|
15951
|
+
'price': {
|
|
15952
|
+
'min': undefined,
|
|
15953
|
+
'max': undefined,
|
|
15954
|
+
},
|
|
15955
|
+
'cost': {
|
|
15956
|
+
'min': this.safeNumber(market, 'min_quote_value'),
|
|
15957
|
+
'max': this.safeNumber(market, 'max_quote_value'),
|
|
15958
|
+
},
|
|
15790
15959
|
},
|
|
15791
|
-
'
|
|
15792
|
-
|
|
15793
|
-
|
|
15960
|
+
'created': undefined,
|
|
15961
|
+
'info': market,
|
|
15962
|
+
}));
|
|
15963
|
+
}
|
|
15964
|
+
for (let i = 0; i < contractResponse.length; i++) {
|
|
15965
|
+
const market = contractResponse[i];
|
|
15966
|
+
const marketId = this.safeString(market, 'symbol');
|
|
15967
|
+
const index = marketId.indexOf('USD');
|
|
15968
|
+
const baseId = marketId.slice(0, index);
|
|
15969
|
+
const quoteId = marketId.slice(index);
|
|
15970
|
+
const inverse = (quoteId === 'USD');
|
|
15971
|
+
const settleId = inverse ? baseId : quoteId;
|
|
15972
|
+
const base = this.safeCurrencyCode(baseId);
|
|
15973
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
15974
|
+
const settle = this.safeCurrencyCode(settleId);
|
|
15975
|
+
result.push(this.safeMarketStructure({
|
|
15976
|
+
'id': marketId,
|
|
15977
|
+
'symbol': base + '/' + quote + ':' + settle,
|
|
15978
|
+
'base': base,
|
|
15979
|
+
'quote': quote,
|
|
15980
|
+
'settle': settle,
|
|
15981
|
+
'baseId': baseId,
|
|
15982
|
+
'quoteId': quoteId,
|
|
15983
|
+
'settleId': settleId,
|
|
15984
|
+
'type': 'swap',
|
|
15985
|
+
'spot': false,
|
|
15986
|
+
'margin': false,
|
|
15987
|
+
'swap': true,
|
|
15988
|
+
'future': false,
|
|
15989
|
+
'option': false,
|
|
15990
|
+
'active': true,
|
|
15991
|
+
'contract': true,
|
|
15992
|
+
'linear': !inverse,
|
|
15993
|
+
'inverse': inverse,
|
|
15994
|
+
'contractSize': 1,
|
|
15995
|
+
'expiry': undefined,
|
|
15996
|
+
'expiryDatetime': undefined,
|
|
15997
|
+
'strike': undefined,
|
|
15998
|
+
'optionType': undefined,
|
|
15999
|
+
'precision': {
|
|
16000
|
+
'amount': undefined,
|
|
16001
|
+
'price': undefined,
|
|
15794
16002
|
},
|
|
15795
|
-
'
|
|
15796
|
-
'
|
|
15797
|
-
|
|
16003
|
+
'limits': {
|
|
16004
|
+
'leverage': {
|
|
16005
|
+
'min': undefined,
|
|
16006
|
+
'max': undefined,
|
|
16007
|
+
},
|
|
16008
|
+
'amount': {
|
|
16009
|
+
'min': undefined,
|
|
16010
|
+
'max': undefined,
|
|
16011
|
+
},
|
|
16012
|
+
'price': {
|
|
16013
|
+
'min': undefined,
|
|
16014
|
+
'max': undefined,
|
|
16015
|
+
},
|
|
16016
|
+
'cost': {
|
|
16017
|
+
'min': undefined,
|
|
16018
|
+
'max': undefined,
|
|
16019
|
+
},
|
|
15798
16020
|
},
|
|
15799
|
-
|
|
15800
|
-
|
|
15801
|
-
|
|
15802
|
-
|
|
16021
|
+
'info': market,
|
|
16022
|
+
}));
|
|
16023
|
+
}
|
|
16024
|
+
return result;
|
|
15803
16025
|
}
|
|
15804
16026
|
parseTicker(ticker, market = undefined) {
|
|
15805
16027
|
//
|
|
15806
|
-
//
|
|
15807
|
-
// "asset_pair_name":"ETH-BTC",
|
|
15808
|
-
// "bid":{"price":"0.021593","order_count":1,"quantity":"0.20936"},
|
|
15809
|
-
// "ask":{"price":"0.021613","order_count":1,"quantity":"2.87064"},
|
|
15810
|
-
// "open":"0.021795",
|
|
15811
|
-
// "high":"0.021795",
|
|
15812
|
-
// "low":"0.021471",
|
|
15813
|
-
// "close":"0.021613",
|
|
15814
|
-
// "volume":"117078.90431",
|
|
15815
|
-
// "daily_change":"-0.000182"
|
|
15816
|
-
// }
|
|
16028
|
+
// spot
|
|
15817
16029
|
//
|
|
15818
|
-
|
|
15819
|
-
|
|
15820
|
-
|
|
15821
|
-
|
|
16030
|
+
// {
|
|
16031
|
+
// "asset_pair_name": "ETH-BTC",
|
|
16032
|
+
// "bid": {
|
|
16033
|
+
// "price": "0.021593",
|
|
16034
|
+
// "order_count": 1,
|
|
16035
|
+
// "quantity": "0.20936"
|
|
16036
|
+
// },
|
|
16037
|
+
// "ask": {
|
|
16038
|
+
// "price": "0.021613",
|
|
16039
|
+
// "order_count": 1,
|
|
16040
|
+
// "quantity": "2.87064"
|
|
16041
|
+
// },
|
|
16042
|
+
// "open": "0.021795",
|
|
16043
|
+
// "high": "0.021795",
|
|
16044
|
+
// "low": "0.021471",
|
|
16045
|
+
// "close": "0.021613",
|
|
16046
|
+
// "volume": "117078.90431",
|
|
16047
|
+
// "daily_change": "-0.000182"
|
|
16048
|
+
// }
|
|
16049
|
+
//
|
|
16050
|
+
// contract
|
|
16051
|
+
//
|
|
16052
|
+
// {
|
|
16053
|
+
// "usdtPrice": 1.00031998,
|
|
16054
|
+
// "symbol": "BTCUSD",
|
|
16055
|
+
// "btcPrice": 34700.4,
|
|
16056
|
+
// "ethPrice": 1787.83,
|
|
16057
|
+
// "nextFundingRate": 0.00010,
|
|
16058
|
+
// "fundingRate": 0.00010,
|
|
16059
|
+
// "latestPrice": 34708.5,
|
|
16060
|
+
// "last24hPriceChange": 0.0321,
|
|
16061
|
+
// "indexPrice": 34700.4,
|
|
16062
|
+
// "volume24h": 261319063,
|
|
16063
|
+
// "turnover24h": 8204.129380685496,
|
|
16064
|
+
// "nextFundingTime": 1698285600000,
|
|
16065
|
+
// "markPrice": 34702.4646738,
|
|
16066
|
+
// "last24hMaxPrice": 35127.5,
|
|
16067
|
+
// "volume24hInUsd": 0.0,
|
|
16068
|
+
// "openValue": 32.88054722085945,
|
|
16069
|
+
// "last24hMinPrice": 33552.0,
|
|
16070
|
+
// "openInterest": 1141372.0
|
|
16071
|
+
// }
|
|
16072
|
+
//
|
|
16073
|
+
const marketType = ('asset_pair_name' in ticker) ? 'spot' : 'swap';
|
|
16074
|
+
const marketId = this.safeString2(ticker, 'asset_pair_name', 'symbol');
|
|
16075
|
+
const symbol = this.safeSymbol(marketId, market, '-', marketType);
|
|
16076
|
+
const close = this.safeString2(ticker, 'close', 'latestPrice');
|
|
15822
16077
|
const bid = this.safeValue(ticker, 'bid', {});
|
|
15823
16078
|
const ask = this.safeValue(ticker, 'ask', {});
|
|
15824
16079
|
return this.safeTicker({
|
|
15825
16080
|
'symbol': symbol,
|
|
15826
|
-
'timestamp':
|
|
15827
|
-
'datetime':
|
|
15828
|
-
'high': this.
|
|
15829
|
-
'low': this.
|
|
16081
|
+
'timestamp': undefined,
|
|
16082
|
+
'datetime': undefined,
|
|
16083
|
+
'high': this.safeString2(ticker, 'high', 'last24hMaxPrice'),
|
|
16084
|
+
'low': this.safeString2(ticker, 'low', 'last24hMinPrice'),
|
|
15830
16085
|
'bid': this.safeString(bid, 'price'),
|
|
15831
16086
|
'bidVolume': this.safeString(bid, 'quantity'),
|
|
15832
16087
|
'ask': this.safeString(ask, 'price'),
|
|
@@ -15836,11 +16091,11 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15836
16091
|
'close': close,
|
|
15837
16092
|
'last': close,
|
|
15838
16093
|
'previousClose': undefined,
|
|
15839
|
-
'change': this.
|
|
16094
|
+
'change': this.safeString2(ticker, 'daily_change', 'last24hPriceChange'),
|
|
15840
16095
|
'percentage': undefined,
|
|
15841
16096
|
'average': undefined,
|
|
15842
|
-
'baseVolume': this.
|
|
15843
|
-
'quoteVolume':
|
|
16097
|
+
'baseVolume': this.safeString2(ticker, 'volume', 'volume24h'),
|
|
16098
|
+
'quoteVolume': this.safeString(ticker, 'volume24hInUsd'),
|
|
15844
16099
|
'info': ticker,
|
|
15845
16100
|
}, market);
|
|
15846
16101
|
}
|
|
@@ -15855,83 +16110,123 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
15855
16110
|
*/
|
|
15856
16111
|
await this.loadMarkets();
|
|
15857
16112
|
const market = this.market(symbol);
|
|
15858
|
-
|
|
15859
|
-
|
|
15860
|
-
|
|
15861
|
-
|
|
15862
|
-
|
|
15863
|
-
|
|
15864
|
-
|
|
15865
|
-
|
|
15866
|
-
|
|
15867
|
-
|
|
15868
|
-
|
|
15869
|
-
|
|
15870
|
-
|
|
15871
|
-
|
|
15872
|
-
|
|
15873
|
-
|
|
15874
|
-
|
|
15875
|
-
|
|
15876
|
-
|
|
15877
|
-
|
|
15878
|
-
|
|
15879
|
-
|
|
16113
|
+
let type = undefined;
|
|
16114
|
+
[type, params] = this.handleMarketTypeAndParams('fetchTicker', market, params);
|
|
16115
|
+
if (type === 'spot') {
|
|
16116
|
+
const request = {
|
|
16117
|
+
'asset_pair_name': market['id'],
|
|
16118
|
+
};
|
|
16119
|
+
const response = await this.publicGetAssetPairsAssetPairNameTicker(this.extend(request, params));
|
|
16120
|
+
//
|
|
16121
|
+
// {
|
|
16122
|
+
// "code":0,
|
|
16123
|
+
// "data":{
|
|
16124
|
+
// "asset_pair_name":"ETH-BTC",
|
|
16125
|
+
// "bid":{"price":"0.021593","order_count":1,"quantity":"0.20936"},
|
|
16126
|
+
// "ask":{"price":"0.021613","order_count":1,"quantity":"2.87064"},
|
|
16127
|
+
// "open":"0.021795",
|
|
16128
|
+
// "high":"0.021795",
|
|
16129
|
+
// "low":"0.021471",
|
|
16130
|
+
// "close":"0.021613",
|
|
16131
|
+
// "volume":"117078.90431",
|
|
16132
|
+
// "daily_change":"-0.000182"
|
|
16133
|
+
// }
|
|
16134
|
+
// }
|
|
16135
|
+
//
|
|
16136
|
+
const ticker = this.safeValue(response, 'data', {});
|
|
16137
|
+
return this.parseTicker(ticker, market);
|
|
16138
|
+
}
|
|
16139
|
+
else {
|
|
16140
|
+
const tickers = await this.fetchTickers([symbol], params);
|
|
16141
|
+
return this.safeValue(tickers, symbol);
|
|
16142
|
+
}
|
|
15880
16143
|
}
|
|
15881
16144
|
async fetchTickers(symbols = undefined, params = {}) {
|
|
15882
16145
|
/**
|
|
15883
16146
|
* @method
|
|
15884
16147
|
* @name bigone#fetchTickers
|
|
15885
16148
|
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
15886
|
-
* @param {string[]
|
|
16149
|
+
* @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
15887
16150
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
15888
16151
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
15889
16152
|
*/
|
|
15890
16153
|
await this.loadMarkets();
|
|
16154
|
+
let market = undefined;
|
|
16155
|
+
const symbol = this.safeString(symbols, 0);
|
|
16156
|
+
if (symbol !== undefined) {
|
|
16157
|
+
market = this.market(symbol);
|
|
16158
|
+
}
|
|
16159
|
+
let type = undefined;
|
|
16160
|
+
[type, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
16161
|
+
const isSpot = type === 'spot';
|
|
15891
16162
|
const request = {};
|
|
15892
16163
|
symbols = this.marketSymbols(symbols);
|
|
15893
|
-
|
|
15894
|
-
|
|
15895
|
-
|
|
16164
|
+
let data = undefined;
|
|
16165
|
+
if (isSpot) {
|
|
16166
|
+
if (symbols !== undefined) {
|
|
16167
|
+
const ids = this.marketIds(symbols);
|
|
16168
|
+
request['pair_names'] = ids.join(',');
|
|
16169
|
+
}
|
|
16170
|
+
const response = await this.publicGetAssetPairsTickers(this.extend(request, params));
|
|
16171
|
+
//
|
|
16172
|
+
// {
|
|
16173
|
+
// "code": 0,
|
|
16174
|
+
// "data": [
|
|
16175
|
+
// {
|
|
16176
|
+
// "asset_pair_name": "PCX-BTC",
|
|
16177
|
+
// "bid": {
|
|
16178
|
+
// "price": "0.000234",
|
|
16179
|
+
// "order_count": 1,
|
|
16180
|
+
// "quantity": "0.518"
|
|
16181
|
+
// },
|
|
16182
|
+
// "ask": {
|
|
16183
|
+
// "price": "0.0002348",
|
|
16184
|
+
// "order_count": 1,
|
|
16185
|
+
// "quantity": "2.348"
|
|
16186
|
+
// },
|
|
16187
|
+
// "open": "0.0002343",
|
|
16188
|
+
// "high": "0.0002348",
|
|
16189
|
+
// "low": "0.0002162",
|
|
16190
|
+
// "close": "0.0002348",
|
|
16191
|
+
// "volume": "12887.016",
|
|
16192
|
+
// "daily_change": "0.0000005"
|
|
16193
|
+
// },
|
|
16194
|
+
// ...
|
|
16195
|
+
// ]
|
|
16196
|
+
// }
|
|
16197
|
+
//
|
|
16198
|
+
data = this.safeValue(response, 'data', []);
|
|
15896
16199
|
}
|
|
15897
|
-
|
|
15898
|
-
|
|
15899
|
-
|
|
15900
|
-
|
|
15901
|
-
|
|
15902
|
-
|
|
15903
|
-
|
|
15904
|
-
|
|
15905
|
-
|
|
15906
|
-
|
|
15907
|
-
|
|
15908
|
-
|
|
15909
|
-
|
|
15910
|
-
|
|
15911
|
-
|
|
15912
|
-
|
|
15913
|
-
|
|
15914
|
-
|
|
15915
|
-
|
|
15916
|
-
|
|
15917
|
-
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15922
|
-
|
|
15923
|
-
|
|
15924
|
-
// ]
|
|
15925
|
-
// }
|
|
15926
|
-
//
|
|
15927
|
-
const tickers = this.safeValue(response, 'data', []);
|
|
15928
|
-
const result = {};
|
|
15929
|
-
for (let i = 0; i < tickers.length; i++) {
|
|
15930
|
-
const ticker = this.parseTicker(tickers[i]);
|
|
15931
|
-
const symbol = ticker['symbol'];
|
|
15932
|
-
result[symbol] = ticker;
|
|
16200
|
+
else {
|
|
16201
|
+
data = await this.contractPublicGetInstruments(params);
|
|
16202
|
+
//
|
|
16203
|
+
// [
|
|
16204
|
+
// {
|
|
16205
|
+
// "usdtPrice": 1.00031998,
|
|
16206
|
+
// "symbol": "BTCUSD",
|
|
16207
|
+
// "btcPrice": 34700.4,
|
|
16208
|
+
// "ethPrice": 1787.83,
|
|
16209
|
+
// "nextFundingRate": 0.00010,
|
|
16210
|
+
// "fundingRate": 0.00010,
|
|
16211
|
+
// "latestPrice": 34708.5,
|
|
16212
|
+
// "last24hPriceChange": 0.0321,
|
|
16213
|
+
// "indexPrice": 34700.4,
|
|
16214
|
+
// "volume24h": 261319063,
|
|
16215
|
+
// "turnover24h": 8204.129380685496,
|
|
16216
|
+
// "nextFundingTime": 1698285600000,
|
|
16217
|
+
// "markPrice": 34702.4646738,
|
|
16218
|
+
// "last24hMaxPrice": 35127.5,
|
|
16219
|
+
// "volume24hInUsd": 0.0,
|
|
16220
|
+
// "openValue": 32.88054722085945,
|
|
16221
|
+
// "last24hMinPrice": 33552.0,
|
|
16222
|
+
// "openInterest": 1141372.0
|
|
16223
|
+
// }
|
|
16224
|
+
// ...
|
|
16225
|
+
// ]
|
|
16226
|
+
//
|
|
15933
16227
|
}
|
|
15934
|
-
|
|
16228
|
+
const tickers = this.parseTickers(data, symbols);
|
|
16229
|
+
return this.filterByArrayTickers(tickers, 'symbol', symbols);
|
|
15935
16230
|
}
|
|
15936
16231
|
async fetchTime(params = {}) {
|
|
15937
16232
|
/**
|
|
@@ -16745,7 +17040,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
16745
17040
|
const baseUrl = this.implodeHostname(this.urls['api'][api]);
|
|
16746
17041
|
let url = baseUrl + '/' + this.implodeParams(path, params);
|
|
16747
17042
|
headers = {};
|
|
16748
|
-
if (api === 'public' || api === 'webExchange') {
|
|
17043
|
+
if (api === 'public' || api === 'webExchange' || api === 'contractPublic') {
|
|
16749
17044
|
if (Object.keys(query).length) {
|
|
16750
17045
|
url += '?' + this.urlencode(query);
|
|
16751
17046
|
}
|
|
@@ -16768,7 +17063,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
16768
17063
|
}
|
|
16769
17064
|
else if (method === 'POST') {
|
|
16770
17065
|
headers['Content-Type'] = 'application/json';
|
|
16771
|
-
body =
|
|
17066
|
+
body = query;
|
|
16772
17067
|
}
|
|
16773
17068
|
}
|
|
16774
17069
|
headers['User-Agent'] = 'ccxt/' + this.id + '-' + this.version;
|
|
@@ -17162,7 +17457,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
17162
17457
|
//
|
|
17163
17458
|
const code = this.safeString(response, 'code');
|
|
17164
17459
|
const message = this.safeString(response, 'message');
|
|
17165
|
-
if (code !== '0') {
|
|
17460
|
+
if ((code !== '0') && (code !== undefined)) {
|
|
17166
17461
|
const feedback = this.id + ' ' + body;
|
|
17167
17462
|
this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
|
|
17168
17463
|
this.throwExactlyMatchedException(this.exceptions['exact'], code, feedback);
|
|
@@ -17233,6 +17528,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17233
17528
|
'createMarketBuyOrderWithCost': true,
|
|
17234
17529
|
'createMarketOrderWithCost': true,
|
|
17235
17530
|
'createMarketSellOrderWithCost': true,
|
|
17531
|
+
'createTrailingPercentOrder': true,
|
|
17236
17532
|
'createOrder': true,
|
|
17237
17533
|
'createOrders': true,
|
|
17238
17534
|
'createPostOnlyOrder': true,
|
|
@@ -17415,6 +17711,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17415
17711
|
'asset/convert-transfer/queryByPage': 0.033335,
|
|
17416
17712
|
'asset/wallet/balance': 6,
|
|
17417
17713
|
'asset/custody/transfer-history': 6,
|
|
17714
|
+
'margin/borrow-repay': 1,
|
|
17418
17715
|
'margin/loan': 1,
|
|
17419
17716
|
'margin/repay': 1,
|
|
17420
17717
|
'margin/account': 1,
|
|
@@ -17666,6 +17963,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
17666
17963
|
'capital/withdraw/apply': 4.0002,
|
|
17667
17964
|
'capital/contract/convertible-coins': 4.0002,
|
|
17668
17965
|
'capital/deposit/credit-apply': 0.1,
|
|
17966
|
+
'margin/borrow-repay': 20.001,
|
|
17669
17967
|
'margin/transfer': 4.0002,
|
|
17670
17968
|
'margin/loan': 20.001,
|
|
17671
17969
|
'margin/repay': 20.001,
|
|
@@ -26314,7 +26612,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26314
26612
|
* @method
|
|
26315
26613
|
* @name binance#repayCrossMargin
|
|
26316
26614
|
* @description repay borrowed margin and interest
|
|
26317
|
-
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-repay-margin
|
|
26615
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-repay-margin
|
|
26318
26616
|
* @param {string} code unified currency code of the currency to repay
|
|
26319
26617
|
* @param {float} amount the amount to repay
|
|
26320
26618
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -26326,8 +26624,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26326
26624
|
'asset': currency['id'],
|
|
26327
26625
|
'amount': this.currencyToPrecision(code, amount),
|
|
26328
26626
|
'isIsolated': 'FALSE',
|
|
26627
|
+
'type': 'REPAY',
|
|
26329
26628
|
};
|
|
26330
|
-
const response = await this.
|
|
26629
|
+
const response = await this.sapiPostMarginBorrowRepay(this.extend(request, params));
|
|
26331
26630
|
//
|
|
26332
26631
|
// {
|
|
26333
26632
|
// "tranId": 108988250265,
|
|
@@ -26341,7 +26640,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26341
26640
|
* @method
|
|
26342
26641
|
* @name binance#repayIsolatedMargin
|
|
26343
26642
|
* @description repay borrowed margin and interest
|
|
26344
|
-
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-repay-margin
|
|
26643
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-repay-margin
|
|
26345
26644
|
* @param {string} symbol unified market symbol, required for isolated margin
|
|
26346
26645
|
* @param {string} code unified currency code of the currency to repay
|
|
26347
26646
|
* @param {float} amount the amount to repay
|
|
@@ -26356,8 +26655,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26356
26655
|
'amount': this.currencyToPrecision(code, amount),
|
|
26357
26656
|
'symbol': market['id'],
|
|
26358
26657
|
'isIsolated': 'TRUE',
|
|
26658
|
+
'type': 'REPAY',
|
|
26359
26659
|
};
|
|
26360
|
-
const response = await this.
|
|
26660
|
+
const response = await this.sapiPostMarginBorrowRepay(this.extend(request, params));
|
|
26361
26661
|
//
|
|
26362
26662
|
// {
|
|
26363
26663
|
// "tranId": 108988250265,
|
|
@@ -26371,7 +26671,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26371
26671
|
* @method
|
|
26372
26672
|
* @name binance#borrowCrossMargin
|
|
26373
26673
|
* @description create a loan to borrow margin
|
|
26374
|
-
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-margin
|
|
26674
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-repay-margin
|
|
26375
26675
|
* @param {string} code unified currency code of the currency to borrow
|
|
26376
26676
|
* @param {float} amount the amount to borrow
|
|
26377
26677
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -26383,8 +26683,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26383
26683
|
'asset': currency['id'],
|
|
26384
26684
|
'amount': this.currencyToPrecision(code, amount),
|
|
26385
26685
|
'isIsolated': 'FALSE',
|
|
26686
|
+
'type': 'BORROW',
|
|
26386
26687
|
};
|
|
26387
|
-
const response = await this.
|
|
26688
|
+
const response = await this.sapiPostMarginBorrowRepay(this.extend(request, params));
|
|
26388
26689
|
//
|
|
26389
26690
|
// {
|
|
26390
26691
|
// "tranId": 108988250265,
|
|
@@ -26398,7 +26699,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26398
26699
|
* @method
|
|
26399
26700
|
* @name binance#borrowIsolatedMargin
|
|
26400
26701
|
* @description create a loan to borrow margin
|
|
26401
|
-
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-margin
|
|
26702
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#margin-account-borrow-repay-margin
|
|
26402
26703
|
* @param {string} symbol unified market symbol, required for isolated margin
|
|
26403
26704
|
* @param {string} code unified currency code of the currency to borrow
|
|
26404
26705
|
* @param {float} amount the amount to borrow
|
|
@@ -26413,8 +26714,9 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
26413
26714
|
'amount': this.currencyToPrecision(code, amount),
|
|
26414
26715
|
'symbol': market['id'],
|
|
26415
26716
|
'isIsolated': 'TRUE',
|
|
26717
|
+
'type': 'BORROW',
|
|
26416
26718
|
};
|
|
26417
|
-
const response = await this.
|
|
26719
|
+
const response = await this.sapiPostMarginBorrowRepay(this.extend(request, params));
|
|
26418
26720
|
//
|
|
26419
26721
|
// {
|
|
26420
26722
|
// "tranId": 108988250265,
|
|
@@ -27163,6 +27465,8 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27163
27465
|
'createMarketSellOrderWithCost': true,
|
|
27164
27466
|
'createOrder': true,
|
|
27165
27467
|
'createOrders': true,
|
|
27468
|
+
'createTrailingAmountOrder': true,
|
|
27469
|
+
'createTrailingPercentOrder': true,
|
|
27166
27470
|
'fetchBalance': true,
|
|
27167
27471
|
'fetchClosedOrders': true,
|
|
27168
27472
|
'fetchCurrencies': true,
|
|
@@ -29033,16 +29337,6 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
29033
29337
|
const order = this.safeValue(data, 'order', data);
|
|
29034
29338
|
return this.parseOrder(order, market);
|
|
29035
29339
|
}
|
|
29036
|
-
fixStringifiedJsonMembers(content) {
|
|
29037
|
-
// when stringified json has members with their values also stringified, like:
|
|
29038
|
-
// '{"code":0, "data":{"order":{"orderId":1742968678528512345,"symbol":"BTC-USDT", "takeProfit":"{\"type\":\"TAKE_PROFIT\",\"stopPrice\":43320.1}","reduceOnly":false}}}'
|
|
29039
|
-
// we can fix with below manipulations
|
|
29040
|
-
// @ts-ignore
|
|
29041
|
-
let modifiedContent = content.replaceAll('\\', '');
|
|
29042
|
-
modifiedContent = modifiedContent.replaceAll('"{', '{');
|
|
29043
|
-
modifiedContent = modifiedContent.replaceAll('}"', '}');
|
|
29044
|
-
return modifiedContent;
|
|
29045
|
-
}
|
|
29046
29340
|
async createOrders(orders, params = {}) {
|
|
29047
29341
|
/**
|
|
29048
29342
|
* @method
|
|
@@ -29554,6 +29848,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
29554
29848
|
'symbol': market['id'],
|
|
29555
29849
|
};
|
|
29556
29850
|
const clientOrderIds = this.safeValue(params, 'clientOrderIds');
|
|
29851
|
+
params = this.omit(params, 'clientOrderIds');
|
|
29557
29852
|
let idsToParse = ids;
|
|
29558
29853
|
const areClientOrderIds = (clientOrderIds !== undefined);
|
|
29559
29854
|
if (areClientOrderIds) {
|
|
@@ -29572,8 +29867,12 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
29572
29867
|
response = await this.spotV1PrivatePostTradeCancelOrders(this.extend(request, params));
|
|
29573
29868
|
}
|
|
29574
29869
|
else {
|
|
29575
|
-
|
|
29576
|
-
|
|
29870
|
+
if (areClientOrderIds) {
|
|
29871
|
+
request['clientOrderIDList'] = this.json(parsedIds);
|
|
29872
|
+
}
|
|
29873
|
+
else {
|
|
29874
|
+
request['orderIdList'] = parsedIds;
|
|
29875
|
+
}
|
|
29577
29876
|
response = await this.swapV2PrivateDeleteTradeBatchOrders(this.extend(request, params));
|
|
29578
29877
|
}
|
|
29579
29878
|
//
|
|
@@ -34877,12 +35176,11 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
34877
35176
|
// "message": "0.0001 Bitcoin transfered from Margin to Exchange"
|
|
34878
35177
|
// }
|
|
34879
35178
|
//
|
|
34880
|
-
const timestamp = this.milliseconds();
|
|
34881
35179
|
return {
|
|
34882
35180
|
'info': transfer,
|
|
34883
35181
|
'id': undefined,
|
|
34884
|
-
'timestamp':
|
|
34885
|
-
'datetime':
|
|
35182
|
+
'timestamp': undefined,
|
|
35183
|
+
'datetime': undefined,
|
|
34886
35184
|
'currency': this.safeCurrencyCode(undefined, currency),
|
|
34887
35185
|
'amount': undefined,
|
|
34888
35186
|
'fromAccount': undefined,
|
|
@@ -40725,6 +41023,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
40725
41023
|
'createMarketBuyOrderWithCost': true,
|
|
40726
41024
|
'createMarketOrderWithCost': false,
|
|
40727
41025
|
'createMarketSellOrderWithCost': false,
|
|
41026
|
+
'createTrailingPercentOrder': true,
|
|
40728
41027
|
'createOrder': true,
|
|
40729
41028
|
'createOrders': true,
|
|
40730
41029
|
'createReduceOnlyOrder': false,
|
|
@@ -43958,26 +44257,38 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
43958
44257
|
'granularity': selectedTimeframe,
|
|
43959
44258
|
};
|
|
43960
44259
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
43961
|
-
if (since !== undefined) {
|
|
43962
|
-
request['startTime'] = limit;
|
|
43963
|
-
}
|
|
43964
44260
|
if (limit !== undefined) {
|
|
43965
44261
|
request['limit'] = limit;
|
|
43966
44262
|
}
|
|
43967
44263
|
const options = this.safeValue(this.options, 'fetchOHLCV', {});
|
|
44264
|
+
const spotOptions = this.safeValue(options, 'spot', {});
|
|
44265
|
+
const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
|
|
44266
|
+
const method = this.safeString(params, 'method', defaultSpotMethod);
|
|
44267
|
+
params = this.omit(params, 'method');
|
|
44268
|
+
if (method !== 'publicSpotGetV2SpotMarketHistoryCandles') {
|
|
44269
|
+
if (since !== undefined) {
|
|
44270
|
+
request['startTime'] = since;
|
|
44271
|
+
}
|
|
44272
|
+
}
|
|
43968
44273
|
let response = undefined;
|
|
43969
44274
|
if (market['spot']) {
|
|
43970
|
-
const spotOptions = this.safeValue(options, 'spot', {});
|
|
43971
|
-
const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketCandles');
|
|
43972
|
-
const method = this.safeString(params, 'method', defaultSpotMethod);
|
|
43973
|
-
params = this.omit(params, 'method');
|
|
43974
44275
|
if (method === 'publicSpotGetV2SpotMarketCandles') {
|
|
43975
44276
|
response = await this.publicSpotGetV2SpotMarketCandles(this.extend(request, params));
|
|
43976
44277
|
}
|
|
43977
44278
|
else if (method === 'publicSpotGetV2SpotMarketHistoryCandles') {
|
|
43978
44279
|
const until = this.safeInteger2(params, 'until', 'till');
|
|
43979
44280
|
params = this.omit(params, ['until', 'till']);
|
|
43980
|
-
if (
|
|
44281
|
+
if (since !== undefined) {
|
|
44282
|
+
if (limit === undefined) {
|
|
44283
|
+
limit = 100; // exchange default
|
|
44284
|
+
}
|
|
44285
|
+
const duration = this.parseTimeframe(timeframe) * 1000;
|
|
44286
|
+
request['endTime'] = this.sum(since, duration * limit);
|
|
44287
|
+
}
|
|
44288
|
+
else if (until !== undefined) {
|
|
44289
|
+
request['endTime'] = until;
|
|
44290
|
+
}
|
|
44291
|
+
else {
|
|
43981
44292
|
request['endTime'] = this.milliseconds();
|
|
43982
44293
|
}
|
|
43983
44294
|
response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
|
|
@@ -44693,6 +45004,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44693
45004
|
* @param {string} [params.trailingPercent] *swap and future only* the percent to trail away from the current market price, rate can not be greater than 10
|
|
44694
45005
|
* @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
|
|
44695
45006
|
* @param {string} [params.triggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
|
|
45007
|
+
* @param {boolean} [params.oneWayMode] *swap and future only* required to set this to true in one_way_mode and you can leave this as undefined in hedge_mode, can adjust the mode using the setPositionMode() method
|
|
44696
45008
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
44697
45009
|
*/
|
|
44698
45010
|
await this.loadMarkets();
|
|
@@ -44886,15 +45198,23 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
44886
45198
|
}
|
|
44887
45199
|
const marginModeRequest = (marginMode === 'cross') ? 'crossed' : 'isolated';
|
|
44888
45200
|
request['marginMode'] = marginModeRequest;
|
|
45201
|
+
const oneWayMode = this.safeValue(params, 'oneWayMode', false);
|
|
45202
|
+
params = this.omit(params, 'oneWayMode');
|
|
44889
45203
|
let requestSide = side;
|
|
44890
45204
|
if (reduceOnly) {
|
|
44891
|
-
|
|
44892
|
-
|
|
44893
|
-
|
|
44894
|
-
|
|
45205
|
+
if (oneWayMode) {
|
|
45206
|
+
request['reduceOnly'] = 'YES';
|
|
45207
|
+
}
|
|
45208
|
+
else {
|
|
45209
|
+
// on bitget hedge mode if the position is long the side is always buy, and if the position is short the side is always sell
|
|
45210
|
+
requestSide = (side === 'buy') ? 'sell' : 'buy';
|
|
45211
|
+
request['tradeSide'] = 'Close';
|
|
45212
|
+
}
|
|
44895
45213
|
}
|
|
44896
45214
|
else {
|
|
44897
|
-
|
|
45215
|
+
if (!oneWayMode) {
|
|
45216
|
+
request['tradeSide'] = 'Open';
|
|
45217
|
+
}
|
|
44898
45218
|
}
|
|
44899
45219
|
request['side'] = requestSide;
|
|
44900
45220
|
}
|
|
@@ -50096,6 +50416,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
50096
50416
|
'createMarketBuyOrderWithCost': true,
|
|
50097
50417
|
'createMarketOrderWithCost': false,
|
|
50098
50418
|
'createMarketSellOrderWithCost': false,
|
|
50419
|
+
'createTrailingPercentOrder': true,
|
|
50099
50420
|
'createOrder': true,
|
|
50100
50421
|
'createPostOnlyOrder': true,
|
|
50101
50422
|
'createStopLimitOrder': false,
|
|
@@ -53569,14 +53890,13 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
53569
53890
|
// "repay_id": "2afcc16d99bd4707818c5a355dc89bed",
|
|
53570
53891
|
// }
|
|
53571
53892
|
//
|
|
53572
|
-
const timestamp = this.milliseconds();
|
|
53573
53893
|
return {
|
|
53574
53894
|
'id': this.safeString2(info, 'borrow_id', 'repay_id'),
|
|
53575
53895
|
'currency': this.safeCurrencyCode(undefined, currency),
|
|
53576
53896
|
'amount': undefined,
|
|
53577
53897
|
'symbol': undefined,
|
|
53578
|
-
'timestamp':
|
|
53579
|
-
'datetime':
|
|
53898
|
+
'timestamp': undefined,
|
|
53899
|
+
'datetime': undefined,
|
|
53580
53900
|
'info': info,
|
|
53581
53901
|
};
|
|
53582
53902
|
}
|
|
@@ -54563,6 +54883,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
54563
54883
|
'closePosition': true,
|
|
54564
54884
|
'createOrder': true,
|
|
54565
54885
|
'createReduceOnlyOrder': true,
|
|
54886
|
+
'createTrailingAmountOrder': true,
|
|
54566
54887
|
'editOrder': true,
|
|
54567
54888
|
'fetchBalance': true,
|
|
54568
54889
|
'fetchClosedOrders': true,
|
|
@@ -78044,6 +78365,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
78044
78365
|
'closePosition': false,
|
|
78045
78366
|
'createMarketBuyOrderWithCost': true,
|
|
78046
78367
|
'createMarketSellOrderWithCost': false,
|
|
78368
|
+
'createTrailingAmountOrder': true,
|
|
78047
78369
|
'createOrder': true,
|
|
78048
78370
|
'createOrders': true,
|
|
78049
78371
|
'createPostOnlyOrder': true,
|
|
@@ -78297,6 +78619,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
78297
78619
|
'v5/account/wallet-balance': 1,
|
|
78298
78620
|
'v5/account/borrow-history': 1,
|
|
78299
78621
|
'v5/account/set-collateral-switch': 5,
|
|
78622
|
+
'v5/account/set-collateral-switch-batch': 5,
|
|
78300
78623
|
'v5/account/collateral-info': 1,
|
|
78301
78624
|
'v5/asset/coin-greeks': 1,
|
|
78302
78625
|
'v5/account/fee-rate': 10,
|
|
@@ -78321,7 +78644,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
78321
78644
|
'v5/asset/deposit/query-internal-record': 5,
|
|
78322
78645
|
'v5/asset/deposit/query-address': 10,
|
|
78323
78646
|
'v5/asset/deposit/query-sub-member-address': 10,
|
|
78324
|
-
'v5/asset/coin/query-info':
|
|
78647
|
+
'v5/asset/coin/query-info': 28,
|
|
78325
78648
|
'v5/asset/withdraw/query-record': 10,
|
|
78326
78649
|
'v5/asset/withdraw/withdrawable-amount': 5,
|
|
78327
78650
|
// user
|
|
@@ -99912,11 +100235,10 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
99912
100235
|
// "net_liquidation_value_usd": "string"
|
|
99913
100236
|
// }
|
|
99914
100237
|
//
|
|
99915
|
-
const timestamp = this.milliseconds();
|
|
99916
100238
|
const result = {
|
|
99917
100239
|
'info': response,
|
|
99918
|
-
'timestamp':
|
|
99919
|
-
'datetime':
|
|
100240
|
+
'timestamp': undefined,
|
|
100241
|
+
'datetime': undefined,
|
|
99920
100242
|
};
|
|
99921
100243
|
const totalBalances = this.safeValue(response, 'asset_balances', {});
|
|
99922
100244
|
const usedBalances = this.safeValue(response, 'asset_holds', {});
|
|
@@ -104398,11 +104720,10 @@ class coinsph extends _abstract_coinsph_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
104398
104720
|
}
|
|
104399
104721
|
parseBalance(response) {
|
|
104400
104722
|
const balances = this.safeValue(response, 'balances', []);
|
|
104401
|
-
const timestamp = this.milliseconds();
|
|
104402
104723
|
const result = {
|
|
104403
104724
|
'info': response,
|
|
104404
|
-
'timestamp':
|
|
104405
|
-
'datetime':
|
|
104725
|
+
'timestamp': undefined,
|
|
104726
|
+
'datetime': undefined,
|
|
104406
104727
|
};
|
|
104407
104728
|
for (let i = 0; i < balances.length; i++) {
|
|
104408
104729
|
const balance = balances[i];
|
|
@@ -114184,6 +114505,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
114184
114505
|
'cancelOrder': true,
|
|
114185
114506
|
'cancelOrders': false,
|
|
114186
114507
|
'createDepositAddress': true,
|
|
114508
|
+
'createTrailingAmountOrder': true,
|
|
114187
114509
|
'createOrder': true,
|
|
114188
114510
|
'createStopLimitOrder': true,
|
|
114189
114511
|
'createStopMarketOrder': true,
|
|
@@ -124929,6 +125251,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
124929
125251
|
'{settle}/orders': 0.4,
|
|
124930
125252
|
'{settle}/batch_orders': 0.4,
|
|
124931
125253
|
'{settle}/countdown_cancel_all': 0.4,
|
|
125254
|
+
'{settle}/batch_cancel_orders': 0.4,
|
|
124932
125255
|
'{settle}/price_orders': 0.4,
|
|
124933
125256
|
},
|
|
124934
125257
|
'put': {
|
|
@@ -125019,11 +125342,21 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
125019
125342
|
'collateral/total_amount': 20 / 15,
|
|
125020
125343
|
'collateral/ltv': 20 / 15,
|
|
125021
125344
|
'collateral/currencies': 20 / 15,
|
|
125345
|
+
'multi_collateral/orders': 20 / 15,
|
|
125346
|
+
'multi_collateral/orders/{order_id}': 20 / 15,
|
|
125347
|
+
'multi_collateral/repay': 20 / 15,
|
|
125348
|
+
'multi_collateral/mortgage': 20 / 15,
|
|
125349
|
+
'multi_collateral/currency_quota': 20 / 15,
|
|
125350
|
+
'multi_collateral/currencies': 20 / 15,
|
|
125351
|
+
'multi_collateral/ltv': 20 / 15,
|
|
125022
125352
|
},
|
|
125023
125353
|
'post': {
|
|
125024
125354
|
'collateral/orders': 20 / 15,
|
|
125025
125355
|
'collateral/repay': 20 / 15,
|
|
125026
125356
|
'collateral/collaterals': 20 / 15,
|
|
125357
|
+
'multi_collateral/orders': 20 / 15,
|
|
125358
|
+
'multi_collateral/repay': 20 / 15,
|
|
125359
|
+
'multi_collateral/mortgage': 20 / 15,
|
|
125027
125360
|
},
|
|
125028
125361
|
},
|
|
125029
125362
|
'account': {
|
|
@@ -129649,11 +129982,19 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
129649
129982
|
return this.parseTransfer(response, currency);
|
|
129650
129983
|
}
|
|
129651
129984
|
parseTransfer(transfer, currency = undefined) {
|
|
129652
|
-
|
|
129985
|
+
//
|
|
129986
|
+
// {
|
|
129987
|
+
// "currency": "BTC",
|
|
129988
|
+
// "from": "spot",
|
|
129989
|
+
// "to": "margin",
|
|
129990
|
+
// "amount": "1",
|
|
129991
|
+
// "currency_pair": "BTC_USDT"
|
|
129992
|
+
// }
|
|
129993
|
+
//
|
|
129653
129994
|
return {
|
|
129654
129995
|
'id': this.safeString(transfer, 'tx_id'),
|
|
129655
|
-
'timestamp':
|
|
129656
|
-
'datetime':
|
|
129996
|
+
'timestamp': undefined,
|
|
129997
|
+
'datetime': undefined,
|
|
129657
129998
|
'currency': this.safeCurrencyCode(undefined, currency),
|
|
129658
129999
|
'amount': undefined,
|
|
129659
130000
|
'fromAccount': undefined,
|
|
@@ -136010,11 +136351,10 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
136010
136351
|
// "2db6ebab-fb26-4537-9ef8-1a689472d236"
|
|
136011
136352
|
// ]
|
|
136012
136353
|
//
|
|
136013
|
-
const timestamp = this.milliseconds();
|
|
136014
136354
|
return {
|
|
136015
136355
|
'id': this.safeString(transfer, 0),
|
|
136016
|
-
'timestamp':
|
|
136017
|
-
'datetime':
|
|
136356
|
+
'timestamp': undefined,
|
|
136357
|
+
'datetime': undefined,
|
|
136018
136358
|
'currency': this.safeCurrencyCode(undefined, currency),
|
|
136019
136359
|
'amount': undefined,
|
|
136020
136360
|
'fromAccount': undefined,
|
|
@@ -139009,6 +139349,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
139009
139349
|
'createMarketBuyOrderWithCost': true,
|
|
139010
139350
|
'createMarketOrderWithCost': false,
|
|
139011
139351
|
'createMarketSellOrderWithCost': false,
|
|
139352
|
+
'createTrailingPercentOrder': true,
|
|
139012
139353
|
'createOrder': true,
|
|
139013
139354
|
'createOrders': true,
|
|
139014
139355
|
'createReduceOnlyOrder': false,
|
|
@@ -144148,15 +144489,11 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
144148
144489
|
}
|
|
144149
144490
|
}
|
|
144150
144491
|
if (!isStopLossTriggerOrder && !isTakeProfitTriggerOrder) {
|
|
144151
|
-
const leverRate = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
|
|
144152
144492
|
const reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only', false);
|
|
144153
|
-
const openOrClose = (reduceOnly) ? 'close' : 'open';
|
|
144154
|
-
const offset = this.safeString(params, 'offset', openOrClose);
|
|
144155
|
-
request['offset'] = offset;
|
|
144156
144493
|
if (reduceOnly) {
|
|
144157
144494
|
request['reduce_only'] = 1;
|
|
144158
144495
|
}
|
|
144159
|
-
request['lever_rate'] = leverRate;
|
|
144496
|
+
request['lever_rate'] = this.safeIntegerN(params, ['leverRate', 'lever_rate', 'leverage'], 1);
|
|
144160
144497
|
if (!isTrailingPercentOrder) {
|
|
144161
144498
|
request['order_price_type'] = type;
|
|
144162
144499
|
}
|
|
@@ -144220,10 +144557,10 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
144220
144557
|
response = await this.spotPrivatePostV1OrderOrdersPlace(spotRequest);
|
|
144221
144558
|
}
|
|
144222
144559
|
else {
|
|
144223
|
-
|
|
144560
|
+
let contractRequest = this.createContractOrderRequest(symbol, type, side, amount, price, params);
|
|
144224
144561
|
if (market['linear']) {
|
|
144225
144562
|
let marginMode = undefined;
|
|
144226
|
-
[marginMode,
|
|
144563
|
+
[marginMode, contractRequest] = this.handleMarginModeAndParams('createOrder', contractRequest);
|
|
144227
144564
|
marginMode = (marginMode === undefined) ? 'cross' : marginMode;
|
|
144228
144565
|
if (marginMode === 'isolated') {
|
|
144229
144566
|
if (isStop) {
|
|
@@ -149475,13 +149812,12 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
149475
149812
|
}
|
|
149476
149813
|
const method = this.options['createOrderMethod'];
|
|
149477
149814
|
const response = await this[method](this.extend(request, params));
|
|
149478
|
-
const timestamp = this.milliseconds();
|
|
149479
149815
|
const id = this.safeString(response, 'data');
|
|
149480
149816
|
return this.safeOrder({
|
|
149481
149817
|
'info': response,
|
|
149482
149818
|
'id': id,
|
|
149483
|
-
'timestamp':
|
|
149484
|
-
'datetime':
|
|
149819
|
+
'timestamp': undefined,
|
|
149820
|
+
'datetime': undefined,
|
|
149485
149821
|
'lastTradeTimestamp': undefined,
|
|
149486
149822
|
'status': undefined,
|
|
149487
149823
|
'symbol': symbol,
|
|
@@ -153624,6 +153960,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
153624
153960
|
'createOrder': true,
|
|
153625
153961
|
'createStopLimitOrder': true,
|
|
153626
153962
|
'createStopMarketOrder': true,
|
|
153963
|
+
'createTrailingAmountOrder': true,
|
|
153627
153964
|
'createStopOrder': true,
|
|
153628
153965
|
'editOrder': true,
|
|
153629
153966
|
'fetchBalance': true,
|
|
@@ -162319,10 +162656,12 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162319
162656
|
* @name kucoin#fetchBalance
|
|
162320
162657
|
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
162321
162658
|
* @see https://docs.kucoin.com/#list-accounts
|
|
162659
|
+
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-list-spot-margin-trade_hf
|
|
162322
162660
|
* @see https://docs.kucoin.com/#query-isolated-margin-account-info
|
|
162323
162661
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
162324
162662
|
* @param {object} [params.marginMode] 'cross' or 'isolated', margin type for fetching margin balance
|
|
162325
162663
|
* @param {object} [params.type] extra parameters specific to the exchange API endpoint
|
|
162664
|
+
* @param {object} [params.hf] *default if false* if true, the result includes the balance of the high frequency account
|
|
162326
162665
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
162327
162666
|
*/
|
|
162328
162667
|
await this.loadMarkets();
|
|
@@ -162334,8 +162673,13 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162334
162673
|
const defaultType = this.safeString2(this.options, 'fetchBalance', 'defaultType', 'spot');
|
|
162335
162674
|
const requestedType = this.safeString(params, 'type', defaultType);
|
|
162336
162675
|
const accountsByType = this.safeValue(this.options, 'accountsByType');
|
|
162337
|
-
|
|
162676
|
+
let type = this.safeString(accountsByType, requestedType, requestedType);
|
|
162338
162677
|
params = this.omit(params, 'type');
|
|
162678
|
+
const isHf = this.safeValue(params, 'hf', false);
|
|
162679
|
+
if (isHf) {
|
|
162680
|
+
type = 'trade_hf';
|
|
162681
|
+
}
|
|
162682
|
+
params = this.omit(params, 'hf');
|
|
162339
162683
|
const [marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
162340
162684
|
let response = undefined;
|
|
162341
162685
|
const request = {};
|
|
@@ -162417,7 +162761,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162417
162761
|
'datetime': undefined,
|
|
162418
162762
|
};
|
|
162419
162763
|
if (isolated) {
|
|
162420
|
-
const assets = this.safeValue(data, 'assets',
|
|
162764
|
+
const assets = this.safeValue(data, 'assets', data);
|
|
162421
162765
|
for (let i = 0; i < assets.length; i++) {
|
|
162422
162766
|
const entry = assets[i];
|
|
162423
162767
|
const marketId = this.safeString(entry, 'symbol');
|
|
@@ -162748,12 +163092,14 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162748
163092
|
* @method
|
|
162749
163093
|
* @name kucoin#fetchLedger
|
|
162750
163094
|
* @see https://docs.kucoin.com/#get-account-ledgers
|
|
163095
|
+
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-trade_hf
|
|
163096
|
+
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-margin_hf
|
|
162751
163097
|
* @description fetch the history of changes, actions done by the user or operations that altered balance of the user
|
|
162752
|
-
* @see https://docs.kucoin.com/#get-account-ledgers
|
|
162753
163098
|
* @param {string} code unified currency code, default is undefined
|
|
162754
163099
|
* @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
|
|
162755
163100
|
* @param {int} [limit] max number of ledger entrys to return, default is undefined
|
|
162756
163101
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
163102
|
+
* @param {boolean} [params.hf] default false, when true will fetch ledger entries for the high frequency trading account
|
|
162757
163103
|
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
162758
163104
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
162759
163105
|
* @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
|
|
@@ -162762,6 +163108,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162762
163108
|
await this.loadAccounts();
|
|
162763
163109
|
let paginate = false;
|
|
162764
163110
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchLedger', 'paginate');
|
|
163111
|
+
const isHf = this.safeValue(params, 'hf');
|
|
163112
|
+
params = this.omit(params, 'hf');
|
|
162765
163113
|
if (paginate) {
|
|
162766
163114
|
return await this.fetchPaginatedCallDynamic('fetchLedger', code, since, limit, params);
|
|
162767
163115
|
}
|
|
@@ -162782,7 +163130,20 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162782
163130
|
request['currency'] = currency['id'];
|
|
162783
163131
|
}
|
|
162784
163132
|
[request, params] = this.handleUntilOption('endAt', request, params);
|
|
162785
|
-
|
|
163133
|
+
let marginMode = undefined;
|
|
163134
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchLedger', params);
|
|
163135
|
+
let response = undefined;
|
|
163136
|
+
if (isHf) {
|
|
163137
|
+
if (marginMode !== undefined) {
|
|
163138
|
+
response = await this.privateGetHfMarginAccountLedgers(this.extend(request, params));
|
|
163139
|
+
}
|
|
163140
|
+
else {
|
|
163141
|
+
response = await this.privateGetHfAccountsLedgers(this.extend(request, params));
|
|
163142
|
+
}
|
|
163143
|
+
}
|
|
163144
|
+
else {
|
|
163145
|
+
response = await this.privateGetAccountsLedgers(this.extend(request, params));
|
|
163146
|
+
}
|
|
162786
163147
|
//
|
|
162787
163148
|
// {
|
|
162788
163149
|
// "code":"200000",
|
|
@@ -162821,7 +163182,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
162821
163182
|
// }
|
|
162822
163183
|
//
|
|
162823
163184
|
const data = this.safeValue(response, 'data');
|
|
162824
|
-
const items = this.safeValue(data, 'items');
|
|
163185
|
+
const items = this.safeValue(data, 'items', data);
|
|
162825
163186
|
return this.parseLedger(items, currency, since, limit);
|
|
162826
163187
|
}
|
|
162827
163188
|
calculateRateLimiterCost(api, method, path, params, config = {}) {
|
|
@@ -176964,7 +177325,8 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
176964
177325
|
// ]
|
|
176965
177326
|
// }
|
|
176966
177327
|
//
|
|
176967
|
-
|
|
177328
|
+
const spotTimestamp = this.safeInteger(response, 'timestamp');
|
|
177329
|
+
orderbook = this.parseOrderBook(response, symbol, spotTimestamp);
|
|
176968
177330
|
orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
|
|
176969
177331
|
}
|
|
176970
177332
|
else if (market['swap']) {
|
|
@@ -189221,6 +189583,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
189221
189583
|
'createDepositAddress': false,
|
|
189222
189584
|
'createMarketBuyOrderWithCost': true,
|
|
189223
189585
|
'createMarketSellOrderWithCost': true,
|
|
189586
|
+
'createTrailingPercentOrder': true,
|
|
189224
189587
|
'createOrder': true,
|
|
189225
189588
|
'createOrders': true,
|
|
189226
189589
|
'createPostOnlyOrder': true,
|
|
@@ -189340,8 +189703,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
189340
189703
|
'referral': {
|
|
189341
189704
|
// old reflink 0% discount https://www.okx.com/join/1888677
|
|
189342
189705
|
// new reflink 20% discount https://www.okx.com/join/CCXT2023
|
|
189343
|
-
|
|
189344
|
-
'url': 'https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023',
|
|
189706
|
+
'url': 'https://www.okx.com/join/CCXT2023',
|
|
189345
189707
|
'discount': 0.2,
|
|
189346
189708
|
},
|
|
189347
189709
|
'test': {
|
|
@@ -190398,10 +190760,20 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
190398
190760
|
for (let i = 0; i < data.length; i++) {
|
|
190399
190761
|
const event = data[i];
|
|
190400
190762
|
const state = this.safeString(event, 'state');
|
|
190763
|
+
update['eta'] = this.safeInteger(event, 'end');
|
|
190764
|
+
update['url'] = this.safeString(event, 'href');
|
|
190401
190765
|
if (state === 'ongoing') {
|
|
190402
|
-
update['eta'] = this.safeInteger(event, 'end');
|
|
190403
190766
|
update['status'] = 'maintenance';
|
|
190404
190767
|
}
|
|
190768
|
+
else if (state === 'scheduled') {
|
|
190769
|
+
update['status'] = 'ok';
|
|
190770
|
+
}
|
|
190771
|
+
else if (state === 'completed') {
|
|
190772
|
+
update['status'] = 'ok';
|
|
190773
|
+
}
|
|
190774
|
+
else if (state === 'canceled') {
|
|
190775
|
+
update['status'] = 'ok';
|
|
190776
|
+
}
|
|
190405
190777
|
}
|
|
190406
190778
|
return update;
|
|
190407
190779
|
}
|
|
@@ -209066,6 +209438,12 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209066
209438
|
'future': 50,
|
|
209067
209439
|
'delivery': 50, // max 200
|
|
209068
209440
|
},
|
|
209441
|
+
'subscriptionLimitByStream': {
|
|
209442
|
+
'spot': 200,
|
|
209443
|
+
'margin': 200,
|
|
209444
|
+
'future': 200,
|
|
209445
|
+
'delivery': 200,
|
|
209446
|
+
},
|
|
209069
209447
|
'streamBySubscriptionsHash': {},
|
|
209070
209448
|
'streamIndex': -1,
|
|
209071
209449
|
// get updates every 1000ms or 100ms
|
|
@@ -209114,7 +209492,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209114
209492
|
this.options['requestId'][url] = newValue;
|
|
209115
209493
|
return newValue;
|
|
209116
209494
|
}
|
|
209117
|
-
stream(type, subscriptionHash) {
|
|
209495
|
+
stream(type, subscriptionHash, numSubscriptions = 1) {
|
|
209118
209496
|
const streamBySubscriptionsHash = this.safeValue(this.options, 'streamBySubscriptionsHash', {});
|
|
209119
209497
|
let stream = this.safeString(streamBySubscriptionsHash, subscriptionHash);
|
|
209120
209498
|
if (stream === undefined) {
|
|
@@ -209126,6 +209504,17 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209126
209504
|
this.options['streamIndex'] = streamIndex;
|
|
209127
209505
|
stream = this.numberToString(normalizedIndex);
|
|
209128
209506
|
this.options['streamBySubscriptionsHash'][subscriptionHash] = stream;
|
|
209507
|
+
const subscriptionsByStreams = this.safeValue(this.options, 'numSubscriptionsByStream');
|
|
209508
|
+
if (subscriptionsByStreams === undefined) {
|
|
209509
|
+
this.options['numSubscriptionsByStream'] = {};
|
|
209510
|
+
}
|
|
209511
|
+
const subscriptionsByStream = this.safeInteger(this.options['numSubscriptionsByStream'], stream, 0);
|
|
209512
|
+
const newNumSubscriptions = subscriptionsByStream + numSubscriptions;
|
|
209513
|
+
const subscriptionLimitByStream = this.safeInteger(this.options, 'subscriptionLimitByStream', 200);
|
|
209514
|
+
if (newNumSubscriptions > subscriptionLimitByStream) {
|
|
209515
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.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.');
|
|
209516
|
+
}
|
|
209517
|
+
this.options['numSubscriptionsByStream'][stream] = subscriptionsByStream + numSubscriptions;
|
|
209129
209518
|
}
|
|
209130
209519
|
return stream;
|
|
209131
209520
|
}
|
|
@@ -209196,8 +209585,14 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209196
209585
|
type = firstMarket['linear'] ? 'future' : 'delivery';
|
|
209197
209586
|
}
|
|
209198
209587
|
const name = 'depth';
|
|
209199
|
-
|
|
209200
|
-
|
|
209588
|
+
let streamHash = 'multipleOrderbook';
|
|
209589
|
+
if (symbols !== undefined) {
|
|
209590
|
+
const symbolsLength = symbols.length;
|
|
209591
|
+
if (symbolsLength > 200) {
|
|
209592
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' watchOrderBookForSymbols() accepts 200 symbols at most. To watch more symbols call watchOrderBookForSymbols() multiple times');
|
|
209593
|
+
}
|
|
209594
|
+
streamHash += '::' + symbols.join(',');
|
|
209595
|
+
}
|
|
209201
209596
|
const watchOrderBookRate = this.safeString(this.options, 'watchOrderBookRate', '100');
|
|
209202
209597
|
const subParams = [];
|
|
209203
209598
|
const messageHashes = [];
|
|
@@ -209209,6 +209604,9 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209209
209604
|
const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
|
|
209210
209605
|
subParams.push(symbolHash);
|
|
209211
209606
|
}
|
|
209607
|
+
const messageHashesLength = messageHashes.length;
|
|
209608
|
+
const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, messageHashesLength);
|
|
209609
|
+
const requestId = this.requestId(url);
|
|
209212
209610
|
const request = {
|
|
209213
209611
|
'method': 'SUBSCRIBE',
|
|
209214
209612
|
'params': subParams,
|
|
@@ -209452,6 +209850,14 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209452
209850
|
*/
|
|
209453
209851
|
await this.loadMarkets();
|
|
209454
209852
|
symbols = this.marketSymbols(symbols, undefined, false, true, true);
|
|
209853
|
+
let streamHash = 'multipleTrades';
|
|
209854
|
+
if (symbols !== undefined) {
|
|
209855
|
+
const symbolsLength = symbols.length;
|
|
209856
|
+
if (symbolsLength > 200) {
|
|
209857
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' watchTradesForSymbols() accepts 200 symbols at most. To watch more symbols call watchTradesForSymbols() multiple times');
|
|
209858
|
+
}
|
|
209859
|
+
streamHash += '::' + symbols.join(',');
|
|
209860
|
+
}
|
|
209455
209861
|
const options = this.safeValue(this.options, 'watchTradesForSymbols', {});
|
|
209456
209862
|
const name = this.safeString(options, 'name', 'trade');
|
|
209457
209863
|
const firstMarket = this.market(symbols[0]);
|
|
@@ -209467,7 +209873,8 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209467
209873
|
subParams.push(currentMessageHash);
|
|
209468
209874
|
}
|
|
209469
209875
|
const query = this.omit(params, 'type');
|
|
209470
|
-
const
|
|
209876
|
+
const subParamsLength = subParams.length;
|
|
209877
|
+
const url = this.urls['api']['ws'][type] + '/' + this.stream(type, streamHash, subParamsLength);
|
|
209471
209878
|
const requestId = this.requestId(url);
|
|
209472
209879
|
const request = {
|
|
209473
209880
|
'method': 'SUBSCRIBE',
|
|
@@ -209951,30 +210358,30 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
209951
210358
|
}
|
|
209952
210359
|
const marketId = this.safeString(message, 's');
|
|
209953
210360
|
const symbol = this.safeSymbol(marketId, undefined, undefined, marketType);
|
|
209954
|
-
const
|
|
209955
|
-
const
|
|
210361
|
+
const market = this.safeMarket(marketId, undefined, undefined, marketType);
|
|
210362
|
+
const last = this.safeString(message, 'c');
|
|
210363
|
+
return this.safeTicker({
|
|
209956
210364
|
'symbol': symbol,
|
|
209957
210365
|
'timestamp': timestamp,
|
|
209958
210366
|
'datetime': this.iso8601(timestamp),
|
|
209959
|
-
'high': this.
|
|
209960
|
-
'low': this.
|
|
209961
|
-
'bid': this.
|
|
209962
|
-
'bidVolume': this.
|
|
209963
|
-
'ask': this.
|
|
209964
|
-
'askVolume': this.
|
|
209965
|
-
'vwap': this.
|
|
209966
|
-
'open': this.
|
|
210367
|
+
'high': this.safeString(message, 'h'),
|
|
210368
|
+
'low': this.safeString(message, 'l'),
|
|
210369
|
+
'bid': this.safeString(message, 'b'),
|
|
210370
|
+
'bidVolume': this.safeString(message, 'B'),
|
|
210371
|
+
'ask': this.safeString(message, 'a'),
|
|
210372
|
+
'askVolume': this.safeString(message, 'A'),
|
|
210373
|
+
'vwap': this.safeString(message, 'w'),
|
|
210374
|
+
'open': this.safeString(message, 'o'),
|
|
209967
210375
|
'close': last,
|
|
209968
210376
|
'last': last,
|
|
209969
|
-
'previousClose': this.
|
|
209970
|
-
'change': this.
|
|
209971
|
-
'percentage': this.
|
|
210377
|
+
'previousClose': this.safeString(message, 'x'),
|
|
210378
|
+
'change': this.safeString(message, 'p'),
|
|
210379
|
+
'percentage': this.safeString(message, 'P'),
|
|
209972
210380
|
'average': undefined,
|
|
209973
|
-
'baseVolume': this.
|
|
209974
|
-
'quoteVolume': this.
|
|
210381
|
+
'baseVolume': this.safeString(message, 'v'),
|
|
210382
|
+
'quoteVolume': this.safeString(message, 'q'),
|
|
209975
210383
|
'info': message,
|
|
209976
|
-
};
|
|
209977
|
-
return ticker;
|
|
210384
|
+
}, market);
|
|
209978
210385
|
}
|
|
209979
210386
|
handleTicker(client, message) {
|
|
209980
210387
|
//
|
|
@@ -211239,7 +211646,8 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
211239
211646
|
market = this.getMarketFromSymbols(symbols);
|
|
211240
211647
|
messageHash = '::' + symbols.join(',');
|
|
211241
211648
|
}
|
|
211242
|
-
let type =
|
|
211649
|
+
let type = undefined;
|
|
211650
|
+
[type, params] = this.handleMarketTypeAndParams('watchPositions', market, params);
|
|
211243
211651
|
if (type === 'spot' || type === 'margin') {
|
|
211244
211652
|
type = 'future';
|
|
211245
211653
|
}
|
|
@@ -227263,7 +227671,10 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
227263
227671
|
}
|
|
227264
227672
|
const name = 'ticker_batch';
|
|
227265
227673
|
const tickers = await this.subscribe(name, symbols, params);
|
|
227266
|
-
|
|
227674
|
+
if (this.newUpdates) {
|
|
227675
|
+
return tickers;
|
|
227676
|
+
}
|
|
227677
|
+
return this.tickers;
|
|
227267
227678
|
}
|
|
227268
227679
|
handleTickers(client, message) {
|
|
227269
227680
|
//
|
|
@@ -272520,11 +272931,11 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272520
272931
|
else if ((locked !== undefined) && locked) {
|
|
272521
272932
|
active = false;
|
|
272522
272933
|
}
|
|
272523
|
-
const maxOnetimeWithdrawal = this.
|
|
272524
|
-
const maxDailyWithdrawal = this.
|
|
272525
|
-
const remainingDailyWithdrawal = this.
|
|
272934
|
+
const maxOnetimeWithdrawal = this.safeString(withdrawLimits, 'onetime');
|
|
272935
|
+
const maxDailyWithdrawal = this.safeString(withdrawLimits, 'daily', maxOnetimeWithdrawal);
|
|
272936
|
+
const remainingDailyWithdrawal = this.safeString(withdrawLimits, 'remaining_daily', maxDailyWithdrawal);
|
|
272526
272937
|
let maxWithdrawLimit = undefined;
|
|
272527
|
-
if (remainingDailyWithdrawal
|
|
272938
|
+
if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringGt(remainingDailyWithdrawal, '0')) {
|
|
272528
272939
|
maxWithdrawLimit = remainingDailyWithdrawal;
|
|
272529
272940
|
}
|
|
272530
272941
|
else {
|
|
@@ -272543,7 +272954,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272543
272954
|
'limits': {
|
|
272544
272955
|
'withdraw': {
|
|
272545
272956
|
'min': this.safeNumber(withdrawLimits, 'minimum'),
|
|
272546
|
-
'max': maxWithdrawLimit,
|
|
272957
|
+
'max': this.parseNumber(maxWithdrawLimit),
|
|
272547
272958
|
},
|
|
272548
272959
|
},
|
|
272549
272960
|
};
|
|
@@ -272603,10 +273014,10 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272603
273014
|
const base = this.safeCurrencyCode(baseId);
|
|
272604
273015
|
const quote = this.safeCurrencyCode(quoteId);
|
|
272605
273016
|
const state = this.safeString(marketInfo, 'state');
|
|
272606
|
-
const bidFee = this.
|
|
272607
|
-
const askFee = this.
|
|
272608
|
-
const fee =
|
|
272609
|
-
return {
|
|
273017
|
+
const bidFee = this.safeString(response, 'bid_fee');
|
|
273018
|
+
const askFee = this.safeString(response, 'ask_fee');
|
|
273019
|
+
const fee = this.parseNumber(_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMax(bidFee, askFee));
|
|
273020
|
+
return this.safeMarketStructure({
|
|
272610
273021
|
'id': marketId,
|
|
272611
273022
|
'symbol': base + '/' + quote,
|
|
272612
273023
|
'base': base,
|
|
@@ -272655,7 +273066,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272655
273066
|
},
|
|
272656
273067
|
'info': response,
|
|
272657
273068
|
},
|
|
272658
|
-
};
|
|
273069
|
+
});
|
|
272659
273070
|
}
|
|
272660
273071
|
async fetchMarkets(params = {}) {
|
|
272661
273072
|
/**
|
|
@@ -272684,7 +273095,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272684
273095
|
const [quoteId, baseId] = id.split('-');
|
|
272685
273096
|
const base = this.safeCurrencyCode(baseId);
|
|
272686
273097
|
const quote = this.safeCurrencyCode(quoteId);
|
|
272687
|
-
return {
|
|
273098
|
+
return this.safeMarketStructure({
|
|
272688
273099
|
'id': id,
|
|
272689
273100
|
'symbol': base + '/' + quote,
|
|
272690
273101
|
'base': base,
|
|
@@ -272734,7 +273145,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
272734
273145
|
},
|
|
272735
273146
|
'created': undefined,
|
|
272736
273147
|
'info': market,
|
|
272737
|
-
};
|
|
273148
|
+
});
|
|
272738
273149
|
}
|
|
272739
273150
|
parseBalance(response) {
|
|
272740
273151
|
const result = {
|
|
@@ -280053,6 +280464,8 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
280053
280464
|
'createMarketOrder': false,
|
|
280054
280465
|
'createMarketOrderWithCost': false,
|
|
280055
280466
|
'createMarketSellOrderWithCost': false,
|
|
280467
|
+
'createTrailingAmountOrder': true,
|
|
280468
|
+
'createTrailingPercentOrder': true,
|
|
280056
280469
|
'createOrder': true,
|
|
280057
280470
|
'createReduceOnlyOrder': true,
|
|
280058
280471
|
'createStopLimitOrder': false,
|
|
@@ -292241,7 +292654,7 @@ SOFTWARE.
|
|
|
292241
292654
|
|
|
292242
292655
|
//-----------------------------------------------------------------------------
|
|
292243
292656
|
// this is updated by vss.js when building
|
|
292244
|
-
const version = '4.2.
|
|
292657
|
+
const version = '4.2.12';
|
|
292245
292658
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
292246
292659
|
//-----------------------------------------------------------------------------
|
|
292247
292660
|
|