ccxt 4.4.70 → 4.4.72
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 -8
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +1 -6
- package/dist/cjs/src/abstract/ace.js +1 -1
- package/dist/cjs/src/abstract/alpaca.js +1 -1
- package/dist/cjs/src/abstract/ascendex.js +1 -1
- package/dist/cjs/src/abstract/bigone.js +1 -1
- package/dist/cjs/src/abstract/binance.js +1 -1
- package/dist/cjs/src/abstract/bingx.js +1 -1
- package/dist/cjs/src/abstract/bit2c.js +1 -1
- package/dist/cjs/src/abstract/bitbank.js +1 -1
- package/dist/cjs/src/abstract/bitbns.js +1 -1
- package/dist/cjs/src/abstract/bitfinex.js +1 -1
- package/dist/cjs/src/abstract/bitfinex1.js +1 -1
- package/dist/cjs/src/abstract/bitflyer.js +1 -1
- package/dist/cjs/src/abstract/bitget.js +1 -1
- package/dist/cjs/src/abstract/bithumb.js +1 -1
- package/dist/cjs/src/abstract/bitmart.js +1 -1
- package/dist/cjs/src/abstract/bitmex.js +1 -1
- package/dist/cjs/src/abstract/bitopro.js +1 -1
- package/dist/cjs/src/abstract/bitrue.js +1 -1
- package/dist/cjs/src/abstract/bitso.js +1 -1
- package/dist/cjs/src/abstract/bitstamp.js +1 -1
- package/dist/cjs/src/abstract/bitteam.js +1 -1
- package/dist/cjs/src/abstract/bitvavo.js +1 -1
- package/dist/cjs/src/abstract/bl3p.js +1 -1
- package/dist/cjs/src/abstract/blockchaincom.js +1 -1
- package/dist/cjs/src/abstract/blofin.js +1 -1
- package/dist/cjs/src/abstract/btcalpha.js +1 -1
- package/dist/cjs/src/abstract/btcbox.js +1 -1
- package/dist/cjs/src/abstract/btcmarkets.js +1 -1
- package/dist/cjs/src/abstract/btcturk.js +1 -1
- package/dist/cjs/src/abstract/bybit.js +1 -1
- package/dist/cjs/src/abstract/cex.js +1 -1
- package/dist/cjs/src/abstract/coinbase.js +1 -1
- package/dist/cjs/src/abstract/coinbaseexchange.js +1 -1
- package/dist/cjs/src/abstract/coinbaseinternational.js +1 -1
- package/dist/cjs/src/abstract/coincatch.js +1 -1
- package/dist/cjs/src/abstract/coincheck.js +1 -1
- package/dist/cjs/src/abstract/coinex.js +1 -1
- package/dist/cjs/src/abstract/coinlist.js +1 -1
- package/dist/cjs/src/abstract/coinmate.js +1 -1
- package/dist/cjs/src/abstract/coinmetro.js +1 -1
- package/dist/cjs/src/abstract/coinone.js +1 -1
- package/dist/cjs/src/abstract/coinsph.js +1 -1
- package/dist/cjs/src/abstract/coinspot.js +1 -1
- package/dist/cjs/src/abstract/cryptocom.js +1 -1
- package/dist/cjs/src/abstract/cryptomus.js +1 -1
- package/dist/cjs/src/abstract/defx.js +1 -1
- package/dist/cjs/src/abstract/delta.js +1 -1
- package/dist/cjs/src/abstract/deribit.js +1 -1
- package/dist/cjs/src/abstract/derive.js +1 -1
- package/dist/cjs/src/abstract/digifinex.js +1 -1
- package/dist/cjs/src/abstract/ellipx.js +1 -1
- package/dist/cjs/src/abstract/exmo.js +1 -1
- package/dist/cjs/src/abstract/gate.js +1 -1
- package/dist/cjs/src/abstract/gemini.js +1 -1
- package/dist/cjs/src/abstract/hashkey.js +1 -1
- package/dist/cjs/src/abstract/hitbtc.js +1 -1
- package/dist/cjs/src/abstract/hollaex.js +1 -1
- package/dist/cjs/src/abstract/htx.js +1 -1
- package/dist/cjs/src/abstract/huobijp.js +1 -1
- package/dist/cjs/src/abstract/hyperliquid.js +1 -1
- package/dist/cjs/src/abstract/idex.js +1 -1
- package/dist/cjs/src/abstract/independentreserve.js +1 -1
- package/dist/cjs/src/abstract/indodax.js +1 -1
- package/dist/cjs/src/abstract/kraken.js +1 -1
- package/dist/cjs/src/abstract/krakenfutures.js +1 -1
- package/dist/cjs/src/abstract/kucoin.js +1 -1
- package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
- package/dist/cjs/src/abstract/kuna.js +1 -1
- package/dist/cjs/src/abstract/latoken.js +1 -1
- package/dist/cjs/src/abstract/lbank.js +1 -1
- package/dist/cjs/src/abstract/luno.js +1 -1
- package/dist/cjs/src/abstract/mercado.js +1 -1
- package/dist/cjs/src/abstract/mexc.js +1 -1
- package/dist/cjs/src/abstract/ndax.js +1 -1
- package/dist/cjs/src/abstract/novadax.js +1 -1
- package/dist/cjs/src/abstract/oceanex.js +1 -1
- package/dist/cjs/src/abstract/okcoin.js +1 -1
- package/dist/cjs/src/abstract/okx.js +1 -1
- package/dist/cjs/src/abstract/onetrading.js +1 -1
- package/dist/cjs/src/abstract/oxfun.js +1 -1
- package/dist/cjs/src/abstract/p2b.js +1 -1
- package/dist/cjs/src/abstract/paradex.js +1 -1
- package/dist/cjs/src/abstract/paymium.js +1 -1
- package/dist/cjs/src/abstract/phemex.js +1 -1
- package/dist/cjs/src/abstract/poloniex.js +1 -1
- package/dist/cjs/src/abstract/poloniexfutures.js +1 -1
- package/dist/cjs/src/abstract/probit.js +1 -1
- package/dist/cjs/src/abstract/timex.js +1 -1
- package/dist/cjs/src/abstract/tokocrypto.js +1 -1
- package/dist/cjs/src/abstract/tradeogre.js +1 -1
- package/dist/cjs/src/abstract/upbit.js +1 -1
- package/dist/cjs/src/abstract/vertex.js +1 -1
- package/dist/cjs/src/abstract/wavesexchange.js +1 -1
- package/dist/cjs/src/abstract/whitebit.js +1 -1
- package/dist/cjs/src/abstract/woo.js +1 -1
- package/dist/cjs/src/abstract/woofipro.js +1 -1
- package/dist/cjs/src/abstract/xt.js +1 -1
- package/dist/cjs/src/abstract/yobit.js +1 -1
- package/dist/cjs/src/abstract/zaif.js +1 -1
- package/dist/cjs/src/abstract/zonda.js +1 -1
- package/dist/cjs/src/ace.js +1 -1
- package/dist/cjs/src/alpaca.js +1 -1
- package/dist/cjs/src/ascendex.js +2 -2
- package/dist/cjs/src/base/Exchange.js +33 -1
- package/dist/cjs/src/base/Precise.js +6 -0
- package/dist/cjs/src/base/errors.js +6 -0
- package/dist/cjs/src/base/functions/crypto.js +1 -1
- package/dist/cjs/src/base/functions/encode.js +1 -1
- package/dist/cjs/src/base/functions/misc.js +1 -0
- package/dist/cjs/src/base/functions/number.js +6 -0
- package/dist/cjs/src/base/functions/platform.js +6 -0
- package/dist/cjs/src/base/functions/rsa.js +1 -0
- package/dist/cjs/src/base/functions/string.js +6 -0
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/base/functions/time.js +6 -0
- package/dist/cjs/src/base/functions/totp.js +1 -0
- package/dist/cjs/src/base/functions/type.js +6 -0
- package/dist/cjs/src/base/functions.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +6 -0
- package/dist/cjs/src/base/ws/Client.js +1 -0
- package/dist/cjs/src/base/ws/Future.js +1 -1
- package/dist/cjs/src/base/ws/OrderBook.js +1 -1
- package/dist/cjs/src/base/ws/OrderBookSide.js +6 -0
- package/dist/cjs/src/base/ws/WsClient.js +1 -1
- package/dist/cjs/src/bequant.js +1 -1
- package/dist/cjs/src/bigone.js +1 -1
- package/dist/cjs/src/binance.js +108 -103
- package/dist/cjs/src/binancecoinm.js +1 -1
- package/dist/cjs/src/binanceus.js +1 -1
- package/dist/cjs/src/binanceusdm.js +1 -1
- package/dist/cjs/src/bingx.js +66 -44
- package/dist/cjs/src/bit2c.js +1 -1
- package/dist/cjs/src/bitbank.js +1 -1
- package/dist/cjs/src/bitbns.js +1 -1
- package/dist/cjs/src/bitcoincom.js +1 -1
- package/dist/cjs/src/bitfinex.js +1 -1
- package/dist/cjs/src/bitfinex1.js +1 -1
- package/dist/cjs/src/bitflyer.js +1 -1
- package/dist/cjs/src/bitget.js +2 -6
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +16 -2
- package/dist/cjs/src/bitmex.js +1 -1
- package/dist/cjs/src/bitopro.js +2 -1
- package/dist/cjs/src/bitpanda.js +1 -1
- package/dist/cjs/src/bitrue.js +2 -1
- package/dist/cjs/src/bitso.js +1 -1
- package/dist/cjs/src/bitstamp.js +1 -1
- package/dist/cjs/src/bitteam.js +1 -1
- package/dist/cjs/src/bl3p.js +1 -1
- package/dist/cjs/src/blockchaincom.js +1 -1
- package/dist/cjs/src/blofin.js +1 -1
- package/dist/cjs/src/btcalpha.js +1 -1
- package/dist/cjs/src/btcbox.js +1 -1
- package/dist/cjs/src/btcmarkets.js +1 -1
- package/dist/cjs/src/btcturk.js +1 -1
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/cex.js +3 -1
- package/dist/cjs/src/coinbase.js +2 -1
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/coinbaseexchange.js +2 -0
- package/dist/cjs/src/coinbaseinternational.js +1 -0
- package/dist/cjs/src/coincatch.js +1 -1
- package/dist/cjs/src/coincheck.js +1 -1
- package/dist/cjs/src/coinex.js +1 -1
- package/dist/cjs/src/coinlist.js +1 -0
- package/dist/cjs/src/coinmate.js +1 -1
- package/dist/cjs/src/coinmetro.js +1 -1
- package/dist/cjs/src/coinone.js +1 -1
- package/dist/cjs/src/coinsph.js +1 -0
- package/dist/cjs/src/coinspot.js +1 -1
- package/dist/cjs/src/cryptocom.js +1 -1
- package/dist/cjs/src/cryptomus.js +1 -1
- package/dist/cjs/src/defx.js +1 -1
- package/dist/cjs/src/delta.js +1 -1
- package/dist/cjs/src/deribit.js +3 -1
- package/dist/cjs/src/derive.js +14 -8
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/ellipx.js +1 -1
- package/dist/cjs/src/exmo.js +1 -1
- package/dist/cjs/src/fmfwio.js +1 -1
- package/dist/cjs/src/gate.js +5 -1
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +2 -1
- package/dist/cjs/src/hashkey.js +5 -3
- package/dist/cjs/src/hitbtc.js +1 -0
- package/dist/cjs/src/hollaex.js +1 -1
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/huobi.js +1 -1
- package/dist/cjs/src/huobijp.js +1 -1
- package/dist/cjs/src/hyperliquid.js +41 -1
- package/dist/cjs/src/idex.js +1 -1
- package/dist/cjs/src/independentreserve.js +1 -1
- package/dist/cjs/src/indodax.js +1 -1
- package/dist/cjs/src/kraken.js +84 -7
- package/dist/cjs/src/krakenfutures.js +5 -1
- package/dist/cjs/src/kucoin.js +5 -3
- package/dist/cjs/src/kucoinfutures.js +1 -1
- package/dist/cjs/src/kuna.js +1 -1
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/lbank.js +1 -1
- package/dist/cjs/src/luno.js +1 -1
- package/dist/cjs/src/mercado.js +1 -1
- package/dist/cjs/src/mexc.js +9 -5
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +1 -1
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okcoin.js +5 -1
- package/dist/cjs/src/okx.js +81 -79
- package/dist/cjs/src/onetrading.js +1 -1
- package/dist/cjs/src/oxfun.js +1 -1
- package/dist/cjs/src/p2b.js +1 -1
- package/dist/cjs/src/paradex.js +70 -10
- package/dist/cjs/src/paymium.js +1 -1
- package/dist/cjs/src/poloniex.js +1313 -82
- package/dist/cjs/src/poloniexfutures.js +1 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/ascendex.js +1 -1
- package/dist/cjs/src/pro/bequant.js +1 -1
- package/dist/cjs/src/pro/binance.js +94 -94
- package/dist/cjs/src/pro/binancecoinm.js +1 -1
- package/dist/cjs/src/pro/binanceus.js +1 -1
- package/dist/cjs/src/pro/binanceusdm.js +1 -1
- package/dist/cjs/src/pro/bingx.js +64 -53
- package/dist/cjs/src/pro/bitcoincom.js +1 -1
- package/dist/cjs/src/pro/bitfinex.js +1 -1
- package/dist/cjs/src/pro/bitfinex1.js +1 -1
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bithumb.js +1 -1
- package/dist/cjs/src/pro/bitmart.js +20 -8
- package/dist/cjs/src/pro/bitmex.js +1 -1
- package/dist/cjs/src/pro/bitpanda.js +1 -1
- package/dist/cjs/src/pro/bitrue.js +1 -1
- package/dist/cjs/src/pro/bitstamp.js +1 -1
- package/dist/cjs/src/pro/bitvavo.js +1 -1
- package/dist/cjs/src/pro/blockchaincom.js +1 -1
- package/dist/cjs/src/pro/blofin.js +1 -1
- package/dist/cjs/src/pro/bybit.js +1 -1
- package/dist/cjs/src/pro/cex.js +1 -1
- package/dist/cjs/src/pro/coinbase.js +1 -1
- package/dist/cjs/src/pro/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/pro/coinbaseexchange.js +1 -1
- package/dist/cjs/src/pro/coinbaseinternational.js +1 -1
- package/dist/cjs/src/pro/coincatch.js +1 -1
- package/dist/cjs/src/pro/coincheck.js +1 -1
- package/dist/cjs/src/pro/coinex.js +1 -1
- package/dist/cjs/src/pro/coinone.js +1 -1
- package/dist/cjs/src/pro/cryptocom.js +1 -1
- package/dist/cjs/src/pro/defx.js +1 -1
- package/dist/cjs/src/pro/deribit.js +1 -1
- package/dist/cjs/src/pro/derive.js +2 -2
- package/dist/cjs/src/pro/exmo.js +1 -1
- package/dist/cjs/src/pro/gate.js +1 -1
- package/dist/cjs/src/pro/gateio.js +1 -1
- package/dist/cjs/src/pro/gemini.js +1 -1
- package/dist/cjs/src/pro/hashkey.js +1 -1
- package/dist/cjs/src/pro/hitbtc.js +1 -1
- package/dist/cjs/src/pro/hollaex.js +1 -1
- package/dist/cjs/src/pro/htx.js +1 -1
- package/dist/cjs/src/pro/huobi.js +1 -1
- package/dist/cjs/src/pro/hyperliquid.js +1 -1
- package/dist/cjs/src/pro/idex.js +1 -1
- package/dist/cjs/src/pro/independentreserve.js +1 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/krakenfutures.js +2 -2
- package/dist/cjs/src/pro/kucoin.js +1 -1
- package/dist/cjs/src/pro/kucoinfutures.js +1 -1
- package/dist/cjs/src/pro/lbank.js +1 -0
- package/dist/cjs/src/pro/luno.js +1 -1
- package/dist/cjs/src/pro/mexc.js +1 -1
- package/dist/cjs/src/pro/myokx.js +1 -1
- package/dist/cjs/src/pro/ndax.js +1 -1
- package/dist/cjs/src/pro/okcoin.js +1 -1
- package/dist/cjs/src/pro/okx.js +1 -1
- package/dist/cjs/src/pro/onetrading.js +1 -1
- package/dist/cjs/src/pro/oxfun.js +1 -1
- package/dist/cjs/src/pro/p2b.js +1 -1
- package/dist/cjs/src/pro/paradex.js +1 -1
- package/dist/cjs/src/pro/phemex.js +1 -1
- package/dist/cjs/src/pro/poloniex.js +1 -1
- package/dist/cjs/src/pro/poloniexfutures.js +1 -1
- package/dist/cjs/src/pro/probit.js +1 -1
- package/dist/cjs/src/pro/upbit.js +1 -1
- package/dist/cjs/src/pro/whitebit.js +1 -1
- package/dist/cjs/src/pro/xt.js +1 -1
- package/dist/cjs/src/probit.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +1 -0
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/index.js +1 -10
- package/dist/cjs/src/static_dependencies/ethers/interface.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/typed.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +1 -13
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +1 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +1 -9
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -7
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +1 -5
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +6 -0
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +1 -8
- package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +1 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/_shortw_utils.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/curve.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/edwards.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/modular.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/montgomery.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/ed25519.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/p256.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-curves/secp256k1.js +1 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/_assert.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +6 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +1 -0
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
- package/dist/cjs/src/static_dependencies/node-fetch/body.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +1 -0
- package/dist/cjs/src/static_dependencies/node-fetch/headers.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/index.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +1 -7
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +1 -5
- package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +6 -0
- package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +1 -0
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-base/index.js +6 -0
- package/dist/cjs/src/static_dependencies/scure-starknet/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/constants.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +1 -4
- package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +1 -3
- package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/num.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +1 -0
- package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
- package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +6 -0
- package/dist/cjs/src/timex.js +1 -0
- package/dist/cjs/src/tokocrypto.js +1 -1
- package/dist/cjs/src/tradeogre.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/vertex.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +102 -4
- package/dist/cjs/src/woo.js +4 -2
- package/dist/cjs/src/woofipro.js +2 -2
- package/dist/cjs/src/xt.js +1 -1
- package/dist/cjs/src/yobit.js +2 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zonda.js +1 -1
- package/js/ccxt.d.ts +3 -9
- package/js/ccxt.js +8 -6
- package/js/src/abstract/ace.js +6 -0
- package/js/src/abstract/alpaca.js +6 -0
- package/js/src/abstract/ascendex.js +6 -0
- package/js/src/abstract/bequant.js +6 -0
- package/js/src/abstract/bigone.js +6 -0
- package/js/src/abstract/binance.js +6 -0
- package/js/src/abstract/binancecoinm.js +6 -0
- package/js/src/abstract/binanceus.js +6 -0
- package/js/src/abstract/binanceusdm.js +6 -0
- package/js/src/abstract/bingx.d.ts +1 -0
- package/js/src/abstract/bingx.js +6 -0
- package/js/src/abstract/bit2c.js +6 -0
- package/js/src/abstract/bitbank.js +6 -0
- package/js/src/abstract/bitbns.js +6 -0
- package/js/src/abstract/bitcoincom.js +6 -0
- package/js/src/abstract/bitfinex.js +6 -0
- package/js/src/abstract/bitfinex1.js +6 -0
- package/js/src/abstract/bitflyer.js +6 -0
- package/js/src/abstract/bitget.js +6 -0
- package/js/src/abstract/bithumb.js +6 -0
- package/js/src/abstract/bitmart.d.ts +1 -0
- package/js/src/abstract/bitmart.js +6 -0
- package/js/src/abstract/bitmex.js +6 -0
- package/js/src/abstract/bitopro.js +6 -0
- package/js/src/abstract/bitpanda.js +6 -0
- package/js/src/abstract/bitrue.js +6 -0
- package/js/src/abstract/bitso.js +6 -0
- package/js/src/abstract/bitstamp.js +6 -0
- package/js/src/abstract/bitteam.js +6 -0
- package/js/src/abstract/bitvavo.js +6 -0
- package/js/src/abstract/bl3p.js +6 -0
- package/js/src/abstract/blockchaincom.js +6 -0
- package/js/src/abstract/blofin.js +6 -0
- package/js/src/abstract/btcalpha.js +6 -0
- package/js/src/abstract/btcbox.js +6 -0
- package/js/src/abstract/btcmarkets.js +6 -0
- package/js/src/abstract/btcturk.js +6 -0
- package/js/src/abstract/bybit.js +6 -0
- package/js/src/abstract/cex.js +6 -0
- package/js/src/abstract/coinbase.js +6 -0
- package/js/src/abstract/coinbaseadvanced.js +6 -0
- package/js/src/abstract/coinbaseexchange.js +6 -0
- package/js/src/abstract/coinbaseinternational.js +6 -0
- package/js/src/abstract/coincatch.js +6 -0
- package/js/src/abstract/coincheck.js +6 -0
- package/js/src/abstract/coinex.js +6 -0
- package/js/src/abstract/coinlist.js +6 -0
- package/js/src/abstract/coinmate.js +6 -0
- package/js/src/abstract/coinmetro.js +6 -0
- package/js/src/abstract/coinone.js +6 -0
- package/js/src/abstract/coinsph.js +6 -0
- package/js/src/abstract/coinspot.js +6 -0
- package/js/src/abstract/cryptocom.js +6 -0
- package/js/src/abstract/cryptomus.js +6 -0
- package/js/src/abstract/defx.js +6 -0
- package/js/src/abstract/delta.js +6 -0
- package/js/src/abstract/deribit.js +6 -0
- package/js/src/abstract/derive.js +6 -0
- package/js/src/abstract/digifinex.js +6 -0
- package/js/src/abstract/ellipx.js +6 -0
- package/js/src/abstract/exmo.js +6 -0
- package/js/src/abstract/fmfwio.js +6 -0
- package/js/src/abstract/gate.js +6 -0
- package/js/src/abstract/gateio.js +6 -0
- package/js/src/abstract/gemini.js +6 -0
- package/js/src/abstract/hashkey.js +6 -0
- package/js/src/abstract/hitbtc.js +6 -0
- package/js/src/abstract/hollaex.js +6 -0
- package/js/src/abstract/htx.js +6 -0
- package/js/src/abstract/huobi.js +6 -0
- package/js/src/abstract/huobijp.js +6 -0
- package/js/src/abstract/hyperliquid.js +6 -0
- package/js/src/abstract/idex.js +6 -0
- package/js/src/abstract/independentreserve.js +6 -0
- package/js/src/abstract/indodax.js +6 -0
- package/js/src/abstract/kraken.js +6 -0
- package/js/src/abstract/krakenfutures.js +6 -0
- package/js/src/abstract/kucoin.js +6 -0
- package/js/src/abstract/kucoinfutures.js +6 -0
- package/js/src/abstract/kuna.js +6 -0
- package/js/src/abstract/latoken.js +6 -0
- package/js/src/abstract/lbank.js +6 -0
- package/js/src/abstract/luno.js +6 -0
- package/js/src/abstract/mercado.js +6 -0
- package/js/src/abstract/mexc.js +6 -0
- package/js/src/abstract/myokx.js +6 -0
- package/js/src/abstract/ndax.js +6 -0
- package/js/src/abstract/novadax.js +6 -0
- package/js/src/abstract/oceanex.js +6 -0
- package/js/src/abstract/okcoin.js +6 -0
- package/js/src/abstract/okx.js +6 -0
- package/js/src/abstract/onetrading.js +6 -0
- package/js/src/abstract/oxfun.js +6 -0
- package/js/src/abstract/p2b.js +6 -0
- package/js/src/abstract/paradex.js +6 -0
- package/js/src/abstract/paymium.js +6 -0
- package/js/src/abstract/phemex.js +6 -0
- package/js/src/abstract/poloniex.d.ts +36 -0
- package/js/src/abstract/poloniex.js +6 -0
- package/js/src/abstract/poloniexfutures.js +6 -0
- package/js/src/abstract/probit.js +6 -0
- package/js/src/abstract/timex.js +6 -0
- package/js/src/abstract/tokocrypto.js +6 -0
- package/js/src/abstract/tradeogre.js +6 -0
- package/js/src/abstract/upbit.js +6 -0
- package/js/src/abstract/vertex.js +6 -0
- package/js/src/abstract/wavesexchange.js +6 -0
- package/js/src/abstract/whitebit.js +6 -0
- package/js/src/abstract/woo.js +6 -0
- package/js/src/abstract/woofipro.js +6 -0
- package/js/src/abstract/xt.js +6 -0
- package/js/src/abstract/yobit.js +6 -0
- package/js/src/abstract/zaif.js +6 -0
- package/js/src/abstract/zonda.js +6 -0
- package/js/src/ace.js +6 -0
- package/js/src/alpaca.js +6 -0
- package/js/src/ascendex.js +7 -1
- package/js/src/base/Exchange.d.ts +14 -5
- package/js/src/base/Exchange.js +39 -1
- package/js/src/base/Precise.js +6 -0
- package/js/src/base/errorHierarchy.js +6 -0
- package/js/src/base/errors.js +6 -0
- package/js/src/base/functions/crypto.js +6 -0
- package/js/src/base/functions/encode.js +6 -0
- package/js/src/base/functions/generic.js +6 -0
- package/js/src/base/functions/misc.js +6 -0
- package/js/src/base/functions/number.js +6 -0
- package/js/src/base/functions/platform.js +6 -0
- package/js/src/base/functions/rsa.js +6 -0
- package/js/src/base/functions/string.js +6 -0
- package/js/src/base/functions/throttle.js +6 -0
- package/js/src/base/functions/time.js +6 -0
- package/js/src/base/functions/totp.js +6 -0
- package/js/src/base/functions/type.js +6 -0
- package/js/src/base/functions.js +6 -0
- package/js/src/base/types.d.ts +31 -6
- package/js/src/base/types.js +6 -0
- package/js/src/base/ws/Cache.js +6 -0
- package/js/src/base/ws/Client.js +6 -0
- package/js/src/base/ws/Future.js +6 -0
- package/js/src/base/ws/OrderBook.js +6 -0
- package/js/src/base/ws/OrderBookSide.js +6 -0
- package/js/src/base/ws/WsClient.js +6 -0
- package/js/src/base/ws/functions.js +6 -0
- package/js/src/bequant.js +6 -0
- package/js/src/bigone.js +6 -0
- package/js/src/binance.d.ts +98 -97
- package/js/src/binance.js +113 -102
- package/js/src/binancecoinm.js +6 -0
- package/js/src/binanceus.js +6 -0
- package/js/src/binanceusdm.js +6 -0
- package/js/src/bingx.js +71 -43
- package/js/src/bit2c.js +6 -0
- package/js/src/bitbank.js +6 -0
- package/js/src/bitbns.js +6 -0
- package/js/src/bitcoincom.js +6 -0
- package/js/src/bitfinex.js +6 -0
- package/js/src/bitfinex1.js +6 -0
- package/js/src/bitflyer.js +6 -0
- package/js/src/bitget.js +7 -5
- package/js/src/bithumb.js +6 -0
- package/js/src/bitmart.d.ts +1 -0
- package/js/src/bitmart.js +21 -1
- package/js/src/bitmex.js +6 -0
- package/js/src/bitopro.js +7 -0
- package/js/src/bitpanda.js +6 -0
- package/js/src/bitrue.js +7 -0
- package/js/src/bitso.js +6 -0
- package/js/src/bitstamp.js +6 -0
- package/js/src/bitteam.js +6 -0
- package/js/src/bitvavo.js +6 -0
- package/js/src/bl3p.d.ts +2 -8
- package/js/src/bl3p.js +6 -0
- package/js/src/blockchaincom.js +6 -0
- package/js/src/blofin.js +6 -0
- package/js/src/btcalpha.js +6 -0
- package/js/src/btcbox.js +6 -0
- package/js/src/btcmarkets.js +6 -0
- package/js/src/btcturk.js +6 -0
- package/js/src/bybit.js +6 -0
- package/js/src/cex.js +8 -0
- package/js/src/coinbase.d.ts +1 -6
- package/js/src/coinbase.js +8 -1
- package/js/src/coinbaseadvanced.js +6 -0
- package/js/src/coinbaseexchange.d.ts +2 -7
- package/js/src/coinbaseexchange.js +8 -0
- package/js/src/coinbaseinternational.d.ts +2 -7
- package/js/src/coinbaseinternational.js +7 -0
- package/js/src/coincatch.js +6 -0
- package/js/src/coincheck.js +6 -0
- package/js/src/coinex.js +6 -0
- package/js/src/coinlist.js +6 -0
- package/js/src/coinmate.js +6 -0
- package/js/src/coinmetro.js +6 -0
- package/js/src/coinone.js +6 -0
- package/js/src/coinsph.js +6 -0
- package/js/src/coinspot.js +6 -0
- package/js/src/cryptocom.js +6 -0
- package/js/src/cryptomus.js +6 -0
- package/js/src/defx.js +6 -0
- package/js/src/delta.js +6 -0
- package/js/src/deribit.d.ts +1 -6
- package/js/src/deribit.js +8 -0
- package/js/src/derive.js +19 -7
- package/js/src/digifinex.js +6 -0
- package/js/src/ellipx.js +6 -0
- package/js/src/exmo.js +6 -0
- package/js/src/fmfwio.js +6 -0
- package/js/src/gate.js +10 -0
- package/js/src/gateio.js +6 -0
- package/js/src/gemini.d.ts +1 -6
- package/js/src/gemini.js +7 -0
- package/js/src/hashkey.js +10 -2
- package/js/src/hitbtc.d.ts +1 -7
- package/js/src/hitbtc.js +6 -0
- package/js/src/hollaex.js +6 -0
- package/js/src/htx.js +6 -0
- package/js/src/huobi.js +6 -0
- package/js/src/huobijp.js +6 -0
- package/js/src/hyperliquid.d.ts +11 -0
- package/js/src/hyperliquid.js +46 -0
- package/js/src/idex.js +6 -0
- package/js/src/independentreserve.js +6 -0
- package/js/src/indodax.js +6 -0
- package/js/src/kraken.d.ts +1 -0
- package/js/src/kraken.js +89 -6
- package/js/src/krakenfutures.js +10 -0
- package/js/src/kucoin.js +10 -2
- package/js/src/kucoinfutures.js +6 -0
- package/js/src/kuna.js +6 -0
- package/js/src/latoken.js +6 -0
- package/js/src/lbank.js +6 -0
- package/js/src/luno.js +6 -0
- package/js/src/mercado.js +6 -0
- package/js/src/mexc.js +14 -4
- package/js/src/myokx.js +6 -0
- package/js/src/ndax.js +6 -0
- package/js/src/novadax.js +6 -0
- package/js/src/oceanex.js +6 -0
- package/js/src/okcoin.js +10 -0
- package/js/src/okx.js +86 -78
- package/js/src/onetrading.js +6 -0
- package/js/src/oxfun.js +6 -0
- package/js/src/p2b.js +6 -0
- package/js/src/paradex.js +75 -9
- package/js/src/paymium.js +6 -0
- package/js/src/phemex.js +6 -0
- package/js/src/poloniex.d.ts +110 -8
- package/js/src/poloniex.js +1318 -81
- package/js/src/poloniexfutures.js +6 -0
- package/js/src/pro/alpaca.js +6 -0
- package/js/src/pro/ascendex.js +6 -0
- package/js/src/pro/bequant.js +6 -0
- package/js/src/pro/binance.d.ts +94 -94
- package/js/src/pro/binance.js +100 -94
- package/js/src/pro/binancecoinm.js +6 -0
- package/js/src/pro/binanceus.js +6 -0
- package/js/src/pro/binanceusdm.js +6 -0
- package/js/src/pro/bingx.js +69 -52
- package/js/src/pro/bitcoincom.js +6 -0
- package/js/src/pro/bitfinex.js +6 -0
- package/js/src/pro/bitfinex1.js +6 -0
- package/js/src/pro/bitget.js +6 -0
- package/js/src/pro/bithumb.js +6 -0
- package/js/src/pro/bitmart.js +25 -7
- package/js/src/pro/bitmex.js +6 -0
- package/js/src/pro/bitopro.js +6 -0
- package/js/src/pro/bitpanda.js +6 -0
- package/js/src/pro/bitrue.js +6 -0
- package/js/src/pro/bitstamp.js +6 -0
- package/js/src/pro/bitvavo.js +6 -0
- package/js/src/pro/blockchaincom.js +6 -0
- package/js/src/pro/blofin.js +6 -0
- package/js/src/pro/bybit.js +6 -0
- package/js/src/pro/cex.js +6 -0
- package/js/src/pro/coinbase.js +6 -0
- package/js/src/pro/coinbaseadvanced.js +6 -0
- package/js/src/pro/coinbaseexchange.js +6 -0
- package/js/src/pro/coinbaseinternational.js +6 -0
- package/js/src/pro/coincatch.js +6 -0
- package/js/src/pro/coincheck.js +6 -0
- package/js/src/pro/coinex.js +6 -0
- package/js/src/pro/coinone.js +6 -0
- package/js/src/pro/cryptocom.js +6 -0
- package/js/src/pro/defx.js +6 -0
- package/js/src/pro/deribit.js +6 -0
- package/js/src/pro/derive.js +8 -2
- package/js/src/pro/exmo.js +6 -0
- package/js/src/pro/gate.js +6 -0
- package/js/src/pro/gateio.js +6 -0
- package/js/src/pro/gemini.js +6 -0
- package/js/src/pro/hashkey.js +6 -0
- package/js/src/pro/hitbtc.js +6 -0
- package/js/src/pro/hollaex.js +6 -0
- package/js/src/pro/htx.js +6 -0
- package/js/src/pro/huobi.js +6 -0
- package/js/src/pro/huobijp.js +6 -0
- package/js/src/pro/hyperliquid.js +6 -0
- package/js/src/pro/idex.js +6 -0
- package/js/src/pro/independentreserve.js +6 -0
- package/js/src/pro/kraken.js +6 -0
- package/js/src/pro/krakenfutures.js +7 -1
- package/js/src/pro/kucoin.js +6 -0
- package/js/src/pro/kucoinfutures.js +6 -0
- package/js/src/pro/lbank.js +6 -0
- package/js/src/pro/luno.js +6 -0
- package/js/src/pro/mexc.js +6 -0
- package/js/src/pro/myokx.js +6 -0
- package/js/src/pro/ndax.js +6 -0
- package/js/src/pro/okcoin.js +6 -0
- package/js/src/pro/okx.js +6 -0
- package/js/src/pro/onetrading.js +6 -0
- package/js/src/pro/oxfun.js +6 -0
- package/js/src/pro/p2b.js +6 -0
- package/js/src/pro/paradex.js +6 -0
- package/js/src/pro/phemex.js +6 -0
- package/js/src/pro/poloniex.js +6 -0
- package/js/src/pro/poloniexfutures.js +6 -0
- package/js/src/pro/probit.js +6 -0
- package/js/src/pro/upbit.js +6 -0
- package/js/src/pro/vertex.js +6 -0
- package/js/src/pro/whitebit.js +6 -0
- package/js/src/pro/woo.js +6 -0
- package/js/src/pro/woofipro.js +6 -0
- package/js/src/pro/xt.js +6 -0
- package/js/src/probit.js +6 -0
- package/js/src/static_dependencies/ethers/abi-coder.js +6 -0
- package/js/src/static_dependencies/ethers/address/address.js +6 -0
- package/js/src/static_dependencies/ethers/address/checks.js +6 -0
- package/js/src/static_dependencies/ethers/address/contract-address.js +6 -0
- package/js/src/static_dependencies/ethers/address/index.js +6 -0
- package/js/src/static_dependencies/ethers/bytes32.js +6 -0
- package/js/src/static_dependencies/ethers/coders/abstract-coder.js +6 -0
- package/js/src/static_dependencies/ethers/coders/address.js +6 -0
- package/js/src/static_dependencies/ethers/coders/anonymous.js +6 -0
- package/js/src/static_dependencies/ethers/coders/array.js +6 -0
- package/js/src/static_dependencies/ethers/coders/boolean.js +6 -0
- package/js/src/static_dependencies/ethers/coders/bytes.js +6 -0
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +6 -0
- package/js/src/static_dependencies/ethers/coders/null.js +6 -0
- package/js/src/static_dependencies/ethers/coders/number.js +6 -0
- package/js/src/static_dependencies/ethers/coders/string.js +6 -0
- package/js/src/static_dependencies/ethers/coders/tuple.js +6 -0
- package/js/src/static_dependencies/ethers/fragments.js +6 -0
- package/js/src/static_dependencies/ethers/hash/index.js +6 -0
- package/js/src/static_dependencies/ethers/hash/solidity.js +6 -0
- package/js/src/static_dependencies/ethers/hash/typed-data.js +6 -0
- package/js/src/static_dependencies/ethers/index.js +6 -0
- package/js/src/static_dependencies/ethers/interface.js +6 -0
- package/js/src/static_dependencies/ethers/typed.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base58.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base64-browser.js +6 -0
- package/js/src/static_dependencies/ethers/utils/base64.js +6 -0
- package/js/src/static_dependencies/ethers/utils/data.js +6 -0
- package/js/src/static_dependencies/ethers/utils/errors.js +6 -0
- package/js/src/static_dependencies/ethers/utils/events.js +6 -0
- package/js/src/static_dependencies/ethers/utils/fixednumber.js +6 -0
- package/js/src/static_dependencies/ethers/utils/index.js +6 -0
- package/js/src/static_dependencies/ethers/utils/maths.js +6 -0
- package/js/src/static_dependencies/ethers/utils/properties.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp-decode.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp-encode.js +6 -0
- package/js/src/static_dependencies/ethers/utils/rlp.js +6 -0
- package/js/src/static_dependencies/ethers/utils/units.js +6 -0
- package/js/src/static_dependencies/ethers/utils/utf8.js +6 -0
- package/js/src/static_dependencies/ethers/utils/uuid.js +6 -0
- package/js/src/static_dependencies/fflake/browser.js +6 -0
- package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +6 -0
- package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +6 -0
- package/js/src/static_dependencies/jsencrypt/index.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +6 -0
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +6 -0
- package/js/src/static_dependencies/messagepack/msgpack.js +6 -0
- package/js/src/static_dependencies/noble-curves/_shortw_utils.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/curve.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/edwards.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/modular.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/utils.js +6 -0
- package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +6 -0
- package/js/src/static_dependencies/noble-curves/bn.js +6 -0
- package/js/src/static_dependencies/noble-curves/ed25519.js +6 -0
- package/js/src/static_dependencies/noble-curves/ed448.js +6 -0
- package/js/src/static_dependencies/noble-curves/index.js +6 -0
- package/js/src/static_dependencies/noble-curves/jubjub.js +6 -0
- package/js/src/static_dependencies/noble-curves/p256.js +6 -0
- package/js/src/static_dependencies/noble-curves/p384.js +6 -0
- package/js/src/static_dependencies/noble-curves/p521.js +6 -0
- package/js/src/static_dependencies/noble-curves/pasta.js +6 -0
- package/js/src/static_dependencies/noble-curves/secp256k1.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_assert.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_blake2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_sha2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/_u64.js +6 -0
- package/js/src/static_dependencies/noble-hashes/argon2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake2b.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake2s.js +6 -0
- package/js/src/static_dependencies/noble-hashes/blake3.js +6 -0
- package/js/src/static_dependencies/noble-hashes/crypto.js +6 -0
- package/js/src/static_dependencies/noble-hashes/cryptoNode.js +6 -0
- package/js/src/static_dependencies/noble-hashes/eskdf.js +6 -0
- package/js/src/static_dependencies/noble-hashes/hkdf.js +6 -0
- package/js/src/static_dependencies/noble-hashes/hmac.js +6 -0
- package/js/src/static_dependencies/noble-hashes/index.js +6 -0
- package/js/src/static_dependencies/noble-hashes/md5.js +6 -0
- package/js/src/static_dependencies/noble-hashes/pbkdf2.js +6 -0
- package/js/src/static_dependencies/noble-hashes/ripemd160.js +6 -0
- package/js/src/static_dependencies/noble-hashes/scrypt.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha1.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha256.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha3-addons.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha3.js +6 -0
- package/js/src/static_dependencies/noble-hashes/sha512.js +6 -0
- package/js/src/static_dependencies/noble-hashes/utils.js +6 -0
- package/js/src/static_dependencies/node-fetch/body.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/abort-error.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/base.js +6 -0
- package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +6 -0
- package/js/src/static_dependencies/node-fetch/headers.js +6 -0
- package/js/src/static_dependencies/node-fetch/index.js +6 -0
- package/js/src/static_dependencies/node-fetch/request.js +6 -0
- package/js/src/static_dependencies/node-fetch/response.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/get-search.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/is.js +6 -0
- package/js/src/static_dependencies/node-fetch/utils/referrer.js +6 -0
- package/js/src/static_dependencies/proxies/agent-base/helpers.js +6 -0
- package/js/src/static_dependencies/proxies/agent-base/index.js +6 -0
- package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +6 -0
- package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +6 -0
- package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +6 -0
- package/js/src/static_dependencies/qs/formats.cjs +6 -0
- package/js/src/static_dependencies/qs/index.cjs +6 -0
- package/js/src/static_dependencies/qs/parse.cjs +6 -0
- package/js/src/static_dependencies/qs/stringify.cjs +6 -0
- package/js/src/static_dependencies/qs/utils.cjs +6 -0
- package/js/src/static_dependencies/scure-base/index.js +6 -0
- package/js/src/static_dependencies/scure-starknet/index.js +6 -0
- package/js/src/static_dependencies/starknet/constants.js +6 -0
- package/js/src/static_dependencies/starknet/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/cairoEnum.js +6 -0
- package/js/src/static_dependencies/starknet/types/calldata.js +6 -0
- package/js/src/static_dependencies/starknet/types/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +6 -0
- package/js/src/static_dependencies/starknet/types/lib/index.js +6 -0
- package/js/src/static_dependencies/starknet/types/typedData.js +6 -0
- package/js/src/static_dependencies/starknet/utils/address.js +6 -0
- package/js/src/static_dependencies/starknet/utils/assert.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +6 -0
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +6 -0
- package/js/src/static_dependencies/starknet/utils/calldata/validate.js +6 -0
- package/js/src/static_dependencies/starknet/utils/encode.js +6 -0
- package/js/src/static_dependencies/starknet/utils/hash/classHash.js +6 -0
- package/js/src/static_dependencies/starknet/utils/hash/index.js +6 -0
- package/js/src/static_dependencies/starknet/utils/merkle.js +6 -0
- package/js/src/static_dependencies/starknet/utils/num.js +6 -0
- package/js/src/static_dependencies/starknet/utils/selector.js +6 -0
- package/js/src/static_dependencies/starknet/utils/shortString.js +6 -0
- package/js/src/static_dependencies/starknet/utils/starknetId.js +6 -0
- package/js/src/static_dependencies/starknet/utils/typedData.js +6 -0
- package/js/src/static_dependencies/starknet/utils/uint256.js +6 -0
- package/js/src/static_dependencies/starknet/utils/url.js +6 -0
- package/js/src/static_dependencies/watchable/src/index.js +6 -0
- package/js/src/static_dependencies/watchable/src/types.js +6 -0
- package/js/src/static_dependencies/watchable/src/unpromise.js +6 -0
- package/js/src/timex.js +6 -0
- package/js/src/tokocrypto.js +6 -0
- package/js/src/tradeogre.js +6 -0
- package/js/src/upbit.js +6 -0
- package/js/src/vertex.js +6 -0
- package/js/src/wavesexchange.js +6 -0
- package/js/src/whitebit.d.ts +36 -1
- package/js/src/whitebit.js +107 -3
- package/js/src/woo.js +9 -1
- package/js/src/woofipro.js +7 -1
- package/js/src/xt.js +6 -0
- package/js/src/yobit.d.ts +1 -6
- package/js/src/yobit.js +7 -0
- package/js/src/zaif.js +6 -0
- package/js/src/zonda.js +6 -0
- package/package.json +1 -1
package/js/src/poloniex.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
// ----------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
|
|
4
|
+
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
|
5
|
+
// EDIT THE CORRESPONDENT .ts FILE INSTEAD
|
|
6
|
+
|
|
1
7
|
// ---------------------------------------------------------------------------
|
|
2
8
|
import Exchange from './abstract/poloniex.js';
|
|
3
9
|
import { ArgumentsRequired, ExchangeError, ExchangeNotAvailable, NotSupported, RequestTimeout, AuthenticationError, PermissionDenied, InsufficientFunds, OrderNotFound, InvalidOrder, AccountSuspended, OnMaintenance, BadSymbol, BadRequest } from './base/errors.js';
|
|
@@ -23,21 +29,25 @@ export default class poloniex extends Exchange {
|
|
|
23
29
|
'CORS': undefined,
|
|
24
30
|
'spot': true,
|
|
25
31
|
'margin': undefined,
|
|
26
|
-
'swap':
|
|
27
|
-
'future':
|
|
32
|
+
'swap': true,
|
|
33
|
+
'future': true,
|
|
28
34
|
'option': false,
|
|
35
|
+
'addMargin': true,
|
|
29
36
|
'cancelAllOrders': true,
|
|
30
37
|
'cancelOrder': true,
|
|
38
|
+
'cancelOrders': undefined,
|
|
31
39
|
'createDepositAddress': true,
|
|
32
40
|
'createMarketBuyOrderWithCost': true,
|
|
33
41
|
'createMarketOrderWithCost': false,
|
|
34
42
|
'createMarketSellOrderWithCost': false,
|
|
35
43
|
'createOrder': true,
|
|
44
|
+
'createOrders': undefined,
|
|
36
45
|
'createStopOrder': true,
|
|
37
46
|
'createTriggerOrder': true,
|
|
38
47
|
'editOrder': true,
|
|
39
48
|
'fetchBalance': true,
|
|
40
49
|
'fetchClosedOrder': false,
|
|
50
|
+
'fetchClosedOrders': true,
|
|
41
51
|
'fetchCurrencies': true,
|
|
42
52
|
'fetchDepositAddress': true,
|
|
43
53
|
'fetchDepositAddresses': false,
|
|
@@ -51,7 +61,10 @@ export default class poloniex extends Exchange {
|
|
|
51
61
|
'fetchFundingIntervals': false,
|
|
52
62
|
'fetchFundingRate': false,
|
|
53
63
|
'fetchFundingRateHistory': false,
|
|
54
|
-
'fetchFundingRates':
|
|
64
|
+
'fetchFundingRates': undefined,
|
|
65
|
+
'fetchLedger': undefined,
|
|
66
|
+
'fetchLeverage': true,
|
|
67
|
+
'fetchLiquidations': undefined,
|
|
55
68
|
'fetchMarginMode': false,
|
|
56
69
|
'fetchMarkets': true,
|
|
57
70
|
'fetchMyTrades': true,
|
|
@@ -64,7 +77,8 @@ export default class poloniex extends Exchange {
|
|
|
64
77
|
'fetchOrderBooks': false,
|
|
65
78
|
'fetchOrderTrades': true,
|
|
66
79
|
'fetchPosition': false,
|
|
67
|
-
'fetchPositionMode':
|
|
80
|
+
'fetchPositionMode': true,
|
|
81
|
+
'fetchPositions': true,
|
|
68
82
|
'fetchTicker': true,
|
|
69
83
|
'fetchTickers': true,
|
|
70
84
|
'fetchTime': true,
|
|
@@ -75,7 +89,10 @@ export default class poloniex extends Exchange {
|
|
|
75
89
|
'fetchTransfer': false,
|
|
76
90
|
'fetchTransfers': false,
|
|
77
91
|
'fetchWithdrawals': true,
|
|
92
|
+
'reduceMargin': true,
|
|
78
93
|
'sandbox': true,
|
|
94
|
+
'setLeverage': true,
|
|
95
|
+
'setPositionMode': true,
|
|
79
96
|
'transfer': true,
|
|
80
97
|
'withdraw': true,
|
|
81
98
|
},
|
|
@@ -93,15 +110,16 @@ export default class poloniex extends Exchange {
|
|
|
93
110
|
'1d': 'DAY_1',
|
|
94
111
|
'3d': 'DAY_3',
|
|
95
112
|
'1w': 'WEEK_1',
|
|
96
|
-
'1M': 'MONTH_1',
|
|
113
|
+
'1M': 'MONTH_1', // not in swap
|
|
97
114
|
},
|
|
98
115
|
'urls': {
|
|
99
116
|
'logo': 'https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg',
|
|
100
117
|
'api': {
|
|
101
|
-
'
|
|
118
|
+
'spot': 'https://api.poloniex.com',
|
|
119
|
+
'swap': 'https://api.poloniex.com',
|
|
102
120
|
},
|
|
103
121
|
'test': {
|
|
104
|
-
'
|
|
122
|
+
'spot': 'https://sand-spot-api-gateway.poloniex.com',
|
|
105
123
|
},
|
|
106
124
|
'www': 'https://www.poloniex.com',
|
|
107
125
|
'doc': 'https://api-docs.poloniex.com/spot/',
|
|
@@ -188,6 +206,55 @@ export default class poloniex extends Exchange {
|
|
|
188
206
|
'smartorders/{id}': 20,
|
|
189
207
|
},
|
|
190
208
|
},
|
|
209
|
+
'swapPublic': {
|
|
210
|
+
'get': {
|
|
211
|
+
// 300 calls / second
|
|
212
|
+
'v3/market/allInstruments': 2 / 3,
|
|
213
|
+
'v3/market/instruments': 2 / 3,
|
|
214
|
+
'v3/market/orderBook': 2 / 3,
|
|
215
|
+
'v3/market/candles': 10,
|
|
216
|
+
'v3/market/indexPriceCandlesticks': 10,
|
|
217
|
+
'v3/market/premiumIndexCandlesticks': 10,
|
|
218
|
+
'v3/market/markPriceCandlesticks': 10,
|
|
219
|
+
'v3/market/trades': 2 / 3,
|
|
220
|
+
'v3/market/liquidationOrder': 2 / 3,
|
|
221
|
+
'v3/market/tickers': 2 / 3,
|
|
222
|
+
'v3/market/markPrice': 2 / 3,
|
|
223
|
+
'v3/market/indexPrice': 2 / 3,
|
|
224
|
+
'v3/market/indexPriceComponents': 2 / 3,
|
|
225
|
+
'v3/market/fundingRate': 2 / 3,
|
|
226
|
+
'v3/market/openInterest': 2 / 3,
|
|
227
|
+
'v3/market/insurance': 2 / 3,
|
|
228
|
+
'v3/market/riskLimit': 2 / 3,
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
'swapPrivate': {
|
|
232
|
+
'get': {
|
|
233
|
+
'v3/account/balance': 4,
|
|
234
|
+
'v3/account/bills': 20,
|
|
235
|
+
'v3/trade/order/opens': 20,
|
|
236
|
+
'v3/trade/order/trades': 20,
|
|
237
|
+
'v3/trade/order/history': 20,
|
|
238
|
+
'v3/trade/position/opens': 20,
|
|
239
|
+
'v3/trade/position/history': 20,
|
|
240
|
+
'v3/position/leverages': 20,
|
|
241
|
+
'v3/position/mode': 20,
|
|
242
|
+
},
|
|
243
|
+
'post': {
|
|
244
|
+
'v3/trade/order': 4,
|
|
245
|
+
'v3/trade/orders': 40,
|
|
246
|
+
'v3/trade/position': 20,
|
|
247
|
+
'v3/trade/positionAll': 100,
|
|
248
|
+
'v3/position/leverage': 20,
|
|
249
|
+
'v3/position/mode': 20,
|
|
250
|
+
'v3/trade/position/margin': 20,
|
|
251
|
+
},
|
|
252
|
+
'delete': {
|
|
253
|
+
'v3/trade/order': 2,
|
|
254
|
+
'v3/trade/batchOrders': 20,
|
|
255
|
+
'v3/trade/allOrders': 20,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
191
258
|
},
|
|
192
259
|
'fees': {
|
|
193
260
|
'trading': {
|
|
@@ -236,6 +303,7 @@ export default class poloniex extends Exchange {
|
|
|
236
303
|
'UST': 'USTC',
|
|
237
304
|
},
|
|
238
305
|
'options': {
|
|
306
|
+
'defaultType': 'spot',
|
|
239
307
|
'createMarketBuyOrderRequiresPrice': true,
|
|
240
308
|
'networks': {
|
|
241
309
|
'BEP20': 'BSC',
|
|
@@ -282,7 +350,7 @@ export default class poloniex extends Exchange {
|
|
|
282
350
|
'timeInForce': {
|
|
283
351
|
'IOC': true,
|
|
284
352
|
'FOK': true,
|
|
285
|
-
'PO':
|
|
353
|
+
'PO': true,
|
|
286
354
|
'GTD': false,
|
|
287
355
|
},
|
|
288
356
|
'hedged': false,
|
|
@@ -293,7 +361,9 @@ export default class poloniex extends Exchange {
|
|
|
293
361
|
'trailing': false,
|
|
294
362
|
'iceberg': false,
|
|
295
363
|
},
|
|
296
|
-
'createOrders':
|
|
364
|
+
'createOrders': {
|
|
365
|
+
'max': 20,
|
|
366
|
+
},
|
|
297
367
|
'fetchMyTrades': {
|
|
298
368
|
'marginMode': false,
|
|
299
369
|
'limit': 1000,
|
|
@@ -323,13 +393,51 @@ export default class poloniex extends Exchange {
|
|
|
323
393
|
'spot': {
|
|
324
394
|
'extends': 'default',
|
|
325
395
|
},
|
|
396
|
+
'forContracts': {
|
|
397
|
+
'extends': 'default',
|
|
398
|
+
'createOrder': {
|
|
399
|
+
'marginMode': true,
|
|
400
|
+
'triggerPrice': false,
|
|
401
|
+
'hedged': true,
|
|
402
|
+
'stpMode': true,
|
|
403
|
+
'marketBuyByCost': false,
|
|
404
|
+
},
|
|
405
|
+
'createOrders': {
|
|
406
|
+
'max': 10,
|
|
407
|
+
},
|
|
408
|
+
'fetchOpenOrders': {
|
|
409
|
+
'limit': 100,
|
|
410
|
+
},
|
|
411
|
+
'fetchClosedOrders': {
|
|
412
|
+
'marginMode': false,
|
|
413
|
+
'limit': 100,
|
|
414
|
+
'daysBack': undefined,
|
|
415
|
+
'daysBackCanceled': 1 / 6,
|
|
416
|
+
'untilDays': undefined,
|
|
417
|
+
'trigger': false,
|
|
418
|
+
'trailing': false,
|
|
419
|
+
'symbolRequired': false,
|
|
420
|
+
},
|
|
421
|
+
'fetchMyTrades': {
|
|
422
|
+
'limit': 100,
|
|
423
|
+
'untilDays': 90,
|
|
424
|
+
},
|
|
425
|
+
},
|
|
326
426
|
'swap': {
|
|
327
|
-
'linear':
|
|
328
|
-
|
|
427
|
+
'linear': {
|
|
428
|
+
'extends': 'forContracts',
|
|
429
|
+
},
|
|
430
|
+
'inverse': {
|
|
431
|
+
'extends': 'forContracts',
|
|
432
|
+
},
|
|
329
433
|
},
|
|
330
434
|
'future': {
|
|
331
|
-
'linear':
|
|
332
|
-
|
|
435
|
+
'linear': {
|
|
436
|
+
'extends': 'forContracts',
|
|
437
|
+
},
|
|
438
|
+
'inverse': {
|
|
439
|
+
'extends': 'forContracts',
|
|
440
|
+
},
|
|
333
441
|
},
|
|
334
442
|
},
|
|
335
443
|
'precisionMode': TICK_SIZE,
|
|
@@ -448,6 +556,8 @@ export default class poloniex extends Exchange {
|
|
|
448
556
|
});
|
|
449
557
|
}
|
|
450
558
|
parseOHLCV(ohlcv, market = undefined) {
|
|
559
|
+
//
|
|
560
|
+
// spot:
|
|
451
561
|
//
|
|
452
562
|
// [
|
|
453
563
|
// [
|
|
@@ -468,6 +578,32 @@ export default class poloniex extends Exchange {
|
|
|
468
578
|
// ]
|
|
469
579
|
// ]
|
|
470
580
|
//
|
|
581
|
+
// contract:
|
|
582
|
+
//
|
|
583
|
+
// [
|
|
584
|
+
// "84207.02",
|
|
585
|
+
// "84320.85",
|
|
586
|
+
// "84207.02",
|
|
587
|
+
// "84253.83",
|
|
588
|
+
// "3707.5395",
|
|
589
|
+
// "44",
|
|
590
|
+
// "14",
|
|
591
|
+
// "1740770040000",
|
|
592
|
+
// "1740770099999",
|
|
593
|
+
// ],
|
|
594
|
+
//
|
|
595
|
+
const ohlcvLength = ohlcv.length;
|
|
596
|
+
const isContract = ohlcvLength === 9;
|
|
597
|
+
if (isContract) {
|
|
598
|
+
return [
|
|
599
|
+
this.safeInteger(ohlcv, 7),
|
|
600
|
+
this.safeNumber(ohlcv, 2),
|
|
601
|
+
this.safeNumber(ohlcv, 1),
|
|
602
|
+
this.safeNumber(ohlcv, 0),
|
|
603
|
+
this.safeNumber(ohlcv, 3),
|
|
604
|
+
this.safeNumber(ohlcv, 5),
|
|
605
|
+
];
|
|
606
|
+
}
|
|
471
607
|
return [
|
|
472
608
|
this.safeInteger(ohlcv, 12),
|
|
473
609
|
this.safeNumber(ohlcv, 2),
|
|
@@ -482,6 +618,7 @@ export default class poloniex extends Exchange {
|
|
|
482
618
|
* @name poloniex#fetchOHLCV
|
|
483
619
|
* @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
|
484
620
|
* @see https://api-docs.poloniex.com/spot/api/public/market-data#candles
|
|
621
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-kline-data
|
|
485
622
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
486
623
|
* @param {string} timeframe the length of time each candle represents
|
|
487
624
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
@@ -503,14 +640,41 @@ export default class poloniex extends Exchange {
|
|
|
503
640
|
'symbol': market['id'],
|
|
504
641
|
'interval': this.safeString(this.timeframes, timeframe, timeframe),
|
|
505
642
|
};
|
|
643
|
+
const keyStart = market['spot'] ? 'startTime' : 'sTime';
|
|
644
|
+
const keyEnd = market['spot'] ? 'endTime' : 'eTime';
|
|
506
645
|
if (since !== undefined) {
|
|
507
|
-
request[
|
|
646
|
+
request[keyStart] = since;
|
|
508
647
|
}
|
|
509
648
|
if (limit !== undefined) {
|
|
510
649
|
// limit should in between 100 and 500
|
|
511
650
|
request['limit'] = limit;
|
|
512
651
|
}
|
|
513
|
-
[request, params] = this.handleUntilOption(
|
|
652
|
+
[request, params] = this.handleUntilOption(keyEnd, request, params);
|
|
653
|
+
if (market['contract']) {
|
|
654
|
+
if (this.inArray(timeframe, ['10m', '1M'])) {
|
|
655
|
+
throw new NotSupported(this.id + ' ' + timeframe + ' ' + market['type'] + ' fetchOHLCV is not supported');
|
|
656
|
+
}
|
|
657
|
+
const responseRaw = await this.swapPublicGetV3MarketCandles(this.extend(request, params));
|
|
658
|
+
//
|
|
659
|
+
// {
|
|
660
|
+
// code: "200",
|
|
661
|
+
// msg: "Success",
|
|
662
|
+
// data: [
|
|
663
|
+
// [
|
|
664
|
+
// "84207.02",
|
|
665
|
+
// "84320.85",
|
|
666
|
+
// "84207.02",
|
|
667
|
+
// "84253.83",
|
|
668
|
+
// "3707.5395",
|
|
669
|
+
// "44",
|
|
670
|
+
// "14",
|
|
671
|
+
// "1740770040000",
|
|
672
|
+
// "1740770099999",
|
|
673
|
+
// ],
|
|
674
|
+
//
|
|
675
|
+
const data = this.safeList(responseRaw, 'data');
|
|
676
|
+
return this.parseOHLCVs(data, market, timeframe, since, limit);
|
|
677
|
+
}
|
|
514
678
|
const response = await this.publicGetMarketsSymbolCandles(this.extend(request, params));
|
|
515
679
|
//
|
|
516
680
|
// [
|
|
@@ -547,10 +711,16 @@ export default class poloniex extends Exchange {
|
|
|
547
711
|
* @name poloniex#fetchMarkets
|
|
548
712
|
* @description retrieves data on all markets for poloniex
|
|
549
713
|
* @see https://api-docs.poloniex.com/spot/api/public/reference-data#symbol-information
|
|
714
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-all-product-info
|
|
550
715
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
551
716
|
* @returns {object[]} an array of objects representing market data
|
|
552
717
|
*/
|
|
553
718
|
async fetchMarkets(params = {}) {
|
|
719
|
+
const promises = [this.fetchSpotMarkets(params), this.fetchSwapMarkets(params)];
|
|
720
|
+
const results = await Promise.all(promises);
|
|
721
|
+
return this.arrayConcat(results[0], results[1]);
|
|
722
|
+
}
|
|
723
|
+
async fetchSpotMarkets(params = {}) {
|
|
554
724
|
const markets = await this.publicGetMarkets(params);
|
|
555
725
|
//
|
|
556
726
|
// [
|
|
@@ -577,7 +747,59 @@ export default class poloniex extends Exchange {
|
|
|
577
747
|
//
|
|
578
748
|
return this.parseMarkets(markets);
|
|
579
749
|
}
|
|
750
|
+
async fetchSwapMarkets(params = {}) {
|
|
751
|
+
// do similar as spot per https://api-docs.poloniex.com/v3/futures/api/market/get-product-info
|
|
752
|
+
const response = await this.swapPublicGetV3MarketAllInstruments(params);
|
|
753
|
+
//
|
|
754
|
+
// {
|
|
755
|
+
// "code": "200",
|
|
756
|
+
// "msg": "Success",
|
|
757
|
+
// "data": [
|
|
758
|
+
// {
|
|
759
|
+
// "symbol": "BNB_USDT_PERP",
|
|
760
|
+
// "bAsset": ".PBNBUSDT",
|
|
761
|
+
// "bCcy": "BNB",
|
|
762
|
+
// "qCcy": "USDT",
|
|
763
|
+
// "visibleStartTime": "1620390600000",
|
|
764
|
+
// "tradableStartTime": "1620390600000",
|
|
765
|
+
// "sCcy": "USDT",
|
|
766
|
+
// "tSz": "0.001",
|
|
767
|
+
// "pxScale": "0.001,0.01,0.1,1,10",
|
|
768
|
+
// "lotSz": "1",
|
|
769
|
+
// "minSz": "1",
|
|
770
|
+
// "ctVal": "0.1",
|
|
771
|
+
// "status": "OPEN",
|
|
772
|
+
// "oDate": "1620287590000",
|
|
773
|
+
// "maxPx": "1000000",
|
|
774
|
+
// "minPx": "0.001",
|
|
775
|
+
// "maxQty": "1000000",
|
|
776
|
+
// "minQty": "1",
|
|
777
|
+
// "maxLever": "50",
|
|
778
|
+
// "lever": "10",
|
|
779
|
+
// "ctType": "LINEAR",
|
|
780
|
+
// "alias": "",
|
|
781
|
+
// "iM": "0.02",
|
|
782
|
+
// "mM": "0.0115",
|
|
783
|
+
// "mR": "2000",
|
|
784
|
+
// "buyLmt": "",
|
|
785
|
+
// "sellLmt": "",
|
|
786
|
+
// "ordPxRange": "0.05",
|
|
787
|
+
// "marketMaxQty": "2800",
|
|
788
|
+
// "limitMaxQty": "1000000"
|
|
789
|
+
// },
|
|
790
|
+
//
|
|
791
|
+
const markets = this.safeList(response, 'data');
|
|
792
|
+
return this.parseMarkets(markets);
|
|
793
|
+
}
|
|
580
794
|
parseMarket(market) {
|
|
795
|
+
if ('ctType' in market) {
|
|
796
|
+
return this.parseSwapMarket(market);
|
|
797
|
+
}
|
|
798
|
+
else {
|
|
799
|
+
return this.parseSpotMarket(market);
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
parseSpotMarket(market) {
|
|
581
803
|
const id = this.safeString(market, 'symbol');
|
|
582
804
|
const baseId = this.safeString(market, 'baseCurrencyName');
|
|
583
805
|
const quoteId = this.safeString(market, 'quoteCurrencyName');
|
|
@@ -633,6 +855,116 @@ export default class poloniex extends Exchange {
|
|
|
633
855
|
'info': market,
|
|
634
856
|
};
|
|
635
857
|
}
|
|
858
|
+
parseSwapMarket(market) {
|
|
859
|
+
//
|
|
860
|
+
// {
|
|
861
|
+
// "symbol": "BNB_USDT_PERP",
|
|
862
|
+
// "bAsset": ".PBNBUSDT",
|
|
863
|
+
// "bCcy": "BNB",
|
|
864
|
+
// "qCcy": "USDT",
|
|
865
|
+
// "visibleStartTime": "1620390600000",
|
|
866
|
+
// "tradableStartTime": "1620390600000",
|
|
867
|
+
// "sCcy": "USDT",
|
|
868
|
+
// "tSz": "0.001",
|
|
869
|
+
// "pxScale": "0.001,0.01,0.1,1,10",
|
|
870
|
+
// "lotSz": "1",
|
|
871
|
+
// "minSz": "1",
|
|
872
|
+
// "ctVal": "0.1",
|
|
873
|
+
// "status": "OPEN",
|
|
874
|
+
// "oDate": "1620287590000",
|
|
875
|
+
// "maxPx": "1000000",
|
|
876
|
+
// "minPx": "0.001",
|
|
877
|
+
// "maxQty": "1000000",
|
|
878
|
+
// "minQty": "1",
|
|
879
|
+
// "maxLever": "50",
|
|
880
|
+
// "lever": "10",
|
|
881
|
+
// "ctType": "LINEAR",
|
|
882
|
+
// "alias": "",
|
|
883
|
+
// "iM": "0.02",
|
|
884
|
+
// "mM": "0.0115",
|
|
885
|
+
// "mR": "2000",
|
|
886
|
+
// "buyLmt": "",
|
|
887
|
+
// "sellLmt": "",
|
|
888
|
+
// "ordPxRange": "0.05",
|
|
889
|
+
// "marketMaxQty": "2800",
|
|
890
|
+
// "limitMaxQty": "1000000"
|
|
891
|
+
// },
|
|
892
|
+
//
|
|
893
|
+
const id = this.safeString(market, 'symbol');
|
|
894
|
+
const baseId = this.safeString(market, 'bCcy');
|
|
895
|
+
const quoteId = this.safeString(market, 'qCcy');
|
|
896
|
+
const settleId = this.safeString(market, 'sCcy');
|
|
897
|
+
const base = this.safeCurrencyCode(baseId);
|
|
898
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
899
|
+
const settle = this.safeCurrencyCode(settleId);
|
|
900
|
+
const status = this.safeString(market, 'status');
|
|
901
|
+
const active = status === 'OPEN';
|
|
902
|
+
const linear = market['ctType'] === 'LINEAR';
|
|
903
|
+
let symbol = base + '/' + quote;
|
|
904
|
+
if (linear) {
|
|
905
|
+
symbol += ':' + settle;
|
|
906
|
+
}
|
|
907
|
+
else {
|
|
908
|
+
// actually, exchange does not have any inverse future now
|
|
909
|
+
symbol += ':' + base;
|
|
910
|
+
}
|
|
911
|
+
const alias = this.safeString(market, 'alias');
|
|
912
|
+
let type = 'swap';
|
|
913
|
+
if (alias !== undefined) {
|
|
914
|
+
type = 'future';
|
|
915
|
+
}
|
|
916
|
+
return {
|
|
917
|
+
'id': id,
|
|
918
|
+
'symbol': symbol,
|
|
919
|
+
'base': base,
|
|
920
|
+
'quote': quote,
|
|
921
|
+
'settle': settle,
|
|
922
|
+
'baseId': baseId,
|
|
923
|
+
'quoteId': quoteId,
|
|
924
|
+
'settleId': settleId,
|
|
925
|
+
'type': (type === 'future') ? 'future' : 'swap',
|
|
926
|
+
'spot': false,
|
|
927
|
+
'margin': false,
|
|
928
|
+
'swap': type === 'swap',
|
|
929
|
+
'future': type === 'future',
|
|
930
|
+
'option': false,
|
|
931
|
+
'active': active,
|
|
932
|
+
'contract': true,
|
|
933
|
+
'linear': linear,
|
|
934
|
+
'inverse': !linear,
|
|
935
|
+
'contractSize': this.safeNumber(market, 'ctVal'),
|
|
936
|
+
'expiry': undefined,
|
|
937
|
+
'expiryDatetime': undefined,
|
|
938
|
+
'strike': undefined,
|
|
939
|
+
'optionType': undefined,
|
|
940
|
+
'taker': this.safeNumber(market, 'tFee'),
|
|
941
|
+
'maker': this.safeNumber(market, 'mFee'),
|
|
942
|
+
'precision': {
|
|
943
|
+
'amount': this.safeNumber(market, 'lotSz'),
|
|
944
|
+
'price': this.safeNumber(market, 'tSz'),
|
|
945
|
+
},
|
|
946
|
+
'limits': {
|
|
947
|
+
'amount': {
|
|
948
|
+
'min': this.safeNumber(market, 'minSz'),
|
|
949
|
+
'max': this.safeNumber(market, 'limitMaxQty'),
|
|
950
|
+
},
|
|
951
|
+
'price': {
|
|
952
|
+
'min': this.safeNumber(market, 'minPx'),
|
|
953
|
+
'max': this.safeNumber(market, 'maxPx'),
|
|
954
|
+
},
|
|
955
|
+
'cost': {
|
|
956
|
+
'min': undefined,
|
|
957
|
+
'max': undefined,
|
|
958
|
+
},
|
|
959
|
+
'leverage': {
|
|
960
|
+
'max': this.safeNumber(market, 'maxLever'),
|
|
961
|
+
'min': undefined,
|
|
962
|
+
},
|
|
963
|
+
},
|
|
964
|
+
'created': this.safeInteger(market, 'oDate'),
|
|
965
|
+
'info': market,
|
|
966
|
+
};
|
|
967
|
+
}
|
|
636
968
|
/**
|
|
637
969
|
* @method
|
|
638
970
|
* @name poloniex#fetchTime
|
|
@@ -646,6 +978,8 @@ export default class poloniex extends Exchange {
|
|
|
646
978
|
return this.safeInteger(response, 'serverTime');
|
|
647
979
|
}
|
|
648
980
|
parseTicker(ticker, market = undefined) {
|
|
981
|
+
//
|
|
982
|
+
// spot:
|
|
649
983
|
//
|
|
650
984
|
// {
|
|
651
985
|
// "symbol" : "BTC_USDT",
|
|
@@ -668,36 +1002,56 @@ export default class poloniex extends Exchange {
|
|
|
668
1002
|
// "markPrice" : "26444.11"
|
|
669
1003
|
// }
|
|
670
1004
|
//
|
|
671
|
-
|
|
672
|
-
|
|
1005
|
+
// swap:
|
|
1006
|
+
//
|
|
1007
|
+
// {
|
|
1008
|
+
// "s": "XRP_USDT_PERP",
|
|
1009
|
+
// "o": "2.0503",
|
|
1010
|
+
// "l": "2.0066",
|
|
1011
|
+
// "h": "2.216",
|
|
1012
|
+
// "c": "2.1798",
|
|
1013
|
+
// "qty": "21090",
|
|
1014
|
+
// "amt": "451339.65",
|
|
1015
|
+
// "tC": "3267",
|
|
1016
|
+
// "sT": "1740736380000",
|
|
1017
|
+
// "cT": "1740822777559",
|
|
1018
|
+
// "dN": "XRP/USDT/PERP",
|
|
1019
|
+
// "dC": "0.0632",
|
|
1020
|
+
// "bPx": "2.175",
|
|
1021
|
+
// "bSz": "3",
|
|
1022
|
+
// "aPx": "2.1831",
|
|
1023
|
+
// "aSz": "111",
|
|
1024
|
+
// "mPx": "2.1798",
|
|
1025
|
+
// "iPx": "2.1834"
|
|
1026
|
+
// },
|
|
1027
|
+
//
|
|
1028
|
+
const timestamp = this.safeInteger2(ticker, 'ts', 'cT');
|
|
1029
|
+
const marketId = this.safeString2(ticker, 'symbol', 's');
|
|
673
1030
|
market = this.safeMarket(marketId);
|
|
674
|
-
const
|
|
675
|
-
const relativeChange = this.safeString(ticker, 'dailyChange');
|
|
1031
|
+
const relativeChange = this.safeString2(ticker, 'dailyChange', 'dc');
|
|
676
1032
|
const percentage = Precise.stringMul(relativeChange, '100');
|
|
677
|
-
const bidVolume = this.safeString(ticker, 'bidQuantity');
|
|
678
|
-
const askVolume = this.safeString(ticker, 'askQuantity');
|
|
679
1033
|
return this.safeTicker({
|
|
680
1034
|
'id': marketId,
|
|
681
1035
|
'symbol': market['symbol'],
|
|
682
1036
|
'timestamp': timestamp,
|
|
683
1037
|
'datetime': this.iso8601(timestamp),
|
|
684
|
-
'high': this.
|
|
685
|
-
'low': this.
|
|
686
|
-
'bid': this.
|
|
687
|
-
'bidVolume':
|
|
688
|
-
'ask': this.
|
|
689
|
-
'askVolume':
|
|
1038
|
+
'high': this.safeString2(ticker, 'high', 'h'),
|
|
1039
|
+
'low': this.safeString2(ticker, 'low', 'l'),
|
|
1040
|
+
'bid': this.safeString2(ticker, 'bid', 'bPx'),
|
|
1041
|
+
'bidVolume': this.safeString2(ticker, 'bidQuantity', 'bSz'),
|
|
1042
|
+
'ask': this.safeString2(ticker, 'ask', 'aPx'),
|
|
1043
|
+
'askVolume': this.safeString2(ticker, 'askQuantity', 'aSz'),
|
|
690
1044
|
'vwap': undefined,
|
|
691
|
-
'open': this.
|
|
692
|
-
'close': close,
|
|
693
|
-
'last': close,
|
|
1045
|
+
'open': this.safeString2(ticker, 'open', 'o'),
|
|
1046
|
+
'close': this.safeString2(ticker, 'close', 'c'),
|
|
694
1047
|
'previousClose': undefined,
|
|
695
1048
|
'change': undefined,
|
|
696
1049
|
'percentage': percentage,
|
|
697
1050
|
'average': undefined,
|
|
698
|
-
'baseVolume': this.
|
|
699
|
-
'quoteVolume': this.
|
|
700
|
-
'markPrice': this.
|
|
1051
|
+
'baseVolume': this.safeString2(ticker, 'quantity', 'qty'),
|
|
1052
|
+
'quoteVolume': this.safeString2(ticker, 'amount', 'amt'),
|
|
1053
|
+
'markPrice': this.safeString2(ticker, 'markPrice', 'mPx'),
|
|
1054
|
+
'indexPrice': this.safeString(ticker, 'iPx'),
|
|
701
1055
|
'info': ticker,
|
|
702
1056
|
}, market);
|
|
703
1057
|
}
|
|
@@ -706,13 +1060,58 @@ export default class poloniex extends Exchange {
|
|
|
706
1060
|
* @name poloniex#fetchTickers
|
|
707
1061
|
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
708
1062
|
* @see https://api-docs.poloniex.com/spot/api/public/market-data#ticker
|
|
1063
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-market-info
|
|
709
1064
|
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
710
1065
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
711
1066
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
712
1067
|
*/
|
|
713
1068
|
async fetchTickers(symbols = undefined, params = {}) {
|
|
714
1069
|
await this.loadMarkets();
|
|
715
|
-
|
|
1070
|
+
let market = undefined;
|
|
1071
|
+
const request = {};
|
|
1072
|
+
if (symbols !== undefined) {
|
|
1073
|
+
symbols = this.marketSymbols(symbols, undefined, true, true, false);
|
|
1074
|
+
const symbolsLength = symbols.length;
|
|
1075
|
+
if (symbolsLength > 0) {
|
|
1076
|
+
market = this.market(symbols[0]);
|
|
1077
|
+
if (symbolsLength === 1) {
|
|
1078
|
+
request['symbol'] = market['id'];
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
let marketType = undefined;
|
|
1083
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchTickers', market, params);
|
|
1084
|
+
if (marketType === 'swap') {
|
|
1085
|
+
const responseRaw = await this.swapPublicGetV3MarketTickers(this.extend(request, params));
|
|
1086
|
+
//
|
|
1087
|
+
// {
|
|
1088
|
+
// "code": "200",
|
|
1089
|
+
// "msg": "Success",
|
|
1090
|
+
// "data": [
|
|
1091
|
+
// {
|
|
1092
|
+
// "s": "XRP_USDT_PERP",
|
|
1093
|
+
// "o": "2.0503",
|
|
1094
|
+
// "l": "2.0066",
|
|
1095
|
+
// "h": "2.216",
|
|
1096
|
+
// "c": "2.1798",
|
|
1097
|
+
// "qty": "21090",
|
|
1098
|
+
// "amt": "451339.65",
|
|
1099
|
+
// "tC": "3267",
|
|
1100
|
+
// "sT": "1740736380000",
|
|
1101
|
+
// "cT": "1740822777559",
|
|
1102
|
+
// "dN": "XRP/USDT/PERP",
|
|
1103
|
+
// "dC": "0.0632",
|
|
1104
|
+
// "bPx": "2.175",
|
|
1105
|
+
// "bSz": "3",
|
|
1106
|
+
// "aPx": "2.1831",
|
|
1107
|
+
// "aSz": "111",
|
|
1108
|
+
// "mPx": "2.1798",
|
|
1109
|
+
// "iPx": "2.1834"
|
|
1110
|
+
// },
|
|
1111
|
+
//
|
|
1112
|
+
const data = this.safeList(responseRaw, 'data');
|
|
1113
|
+
return this.parseTickers(data, symbols);
|
|
1114
|
+
}
|
|
716
1115
|
const response = await this.publicGetMarketsTicker24h(params);
|
|
717
1116
|
//
|
|
718
1117
|
// [
|
|
@@ -883,6 +1282,7 @@ export default class poloniex extends Exchange {
|
|
|
883
1282
|
* @name poloniex#fetchTicker
|
|
884
1283
|
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
885
1284
|
* @see https://api-docs.poloniex.com/spot/api/public/market-data#ticker
|
|
1285
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-market-info
|
|
886
1286
|
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
887
1287
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
888
1288
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
@@ -893,6 +1293,10 @@ export default class poloniex extends Exchange {
|
|
|
893
1293
|
const request = {
|
|
894
1294
|
'symbol': market['id'],
|
|
895
1295
|
};
|
|
1296
|
+
if (market['contract']) {
|
|
1297
|
+
const tickers = await this.fetchTickers([market['symbol']], params);
|
|
1298
|
+
return this.safeDict(tickers, symbol);
|
|
1299
|
+
}
|
|
896
1300
|
const response = await this.publicGetMarketsSymbolTicker24h(this.extend(request, params));
|
|
897
1301
|
//
|
|
898
1302
|
// {
|
|
@@ -922,6 +1326,8 @@ export default class poloniex extends Exchange {
|
|
|
922
1326
|
//
|
|
923
1327
|
// fetchTrades
|
|
924
1328
|
//
|
|
1329
|
+
// spot:
|
|
1330
|
+
//
|
|
925
1331
|
// {
|
|
926
1332
|
// "id" : "60014521",
|
|
927
1333
|
// "price" : "23162.94",
|
|
@@ -932,8 +1338,21 @@ export default class poloniex extends Exchange {
|
|
|
932
1338
|
// "createTime" : 1659684602036
|
|
933
1339
|
// }
|
|
934
1340
|
//
|
|
1341
|
+
// swap:
|
|
1342
|
+
//
|
|
1343
|
+
// {
|
|
1344
|
+
// "id": "105807376",
|
|
1345
|
+
// "side": "buy",
|
|
1346
|
+
// "px": "84410.57",
|
|
1347
|
+
// "qty": "1",
|
|
1348
|
+
// "amt": "84.41057",
|
|
1349
|
+
// "cT": "1740777563557",
|
|
1350
|
+
// }
|
|
1351
|
+
//
|
|
935
1352
|
// fetchMyTrades
|
|
936
1353
|
//
|
|
1354
|
+
// spot:
|
|
1355
|
+
//
|
|
937
1356
|
// {
|
|
938
1357
|
// "id": "32164924331503616",
|
|
939
1358
|
// "symbol": "LINK_USDT",
|
|
@@ -952,6 +1371,34 @@ export default class poloniex extends Exchange {
|
|
|
952
1371
|
// "clientOrderId": "myOwnId-321"
|
|
953
1372
|
// }
|
|
954
1373
|
//
|
|
1374
|
+
// swap:
|
|
1375
|
+
//
|
|
1376
|
+
// {
|
|
1377
|
+
// "symbol": "BTC_USDT_PERP",
|
|
1378
|
+
// "trdId": "105813553",
|
|
1379
|
+
// "side": "SELL",
|
|
1380
|
+
// "type": "TRADE",
|
|
1381
|
+
// "mgnMode": "CROSS",
|
|
1382
|
+
// "ordType": "MARKET",
|
|
1383
|
+
// "clOrdId": "polo418912106147315112",
|
|
1384
|
+
// "role": "TAKER",
|
|
1385
|
+
// "px": "84704.9",
|
|
1386
|
+
// "qty": "1",
|
|
1387
|
+
// "cTime": "1740842829430",
|
|
1388
|
+
// "uTime": "1740842829450",
|
|
1389
|
+
// "feeCcy": "USDT",
|
|
1390
|
+
// "feeAmt": "0.04235245",
|
|
1391
|
+
// "deductCcy": "",
|
|
1392
|
+
// "deductAmt": "0",
|
|
1393
|
+
// "feeRate": "0.0005",
|
|
1394
|
+
// "id": "418912106342654592",
|
|
1395
|
+
// "posSide": "BOTH",
|
|
1396
|
+
// "ordId": "418912106147315112",
|
|
1397
|
+
// "qCcy": "USDT",
|
|
1398
|
+
// "value": "84.7049",
|
|
1399
|
+
// "actType": "TRADING"
|
|
1400
|
+
// },
|
|
1401
|
+
//
|
|
955
1402
|
// fetchOrderTrades (taker trades)
|
|
956
1403
|
//
|
|
957
1404
|
// {
|
|
@@ -972,20 +1419,19 @@ export default class poloniex extends Exchange {
|
|
|
972
1419
|
// "clientOrderId": ""
|
|
973
1420
|
// }
|
|
974
1421
|
//
|
|
975
|
-
|
|
976
|
-
const
|
|
977
|
-
const
|
|
978
|
-
const timestamp = this.safeInteger2(trade, 'ts', 'createTime');
|
|
1422
|
+
const id = this.safeStringN(trade, ['id', 'tradeID', 'trdId']);
|
|
1423
|
+
const orderId = this.safeString2(trade, 'orderId', 'ordId');
|
|
1424
|
+
const timestamp = this.safeIntegerN(trade, ['ts', 'createTime', 'cT', 'cTime']);
|
|
979
1425
|
const marketId = this.safeString(trade, 'symbol');
|
|
980
1426
|
market = this.safeMarket(marketId, market, '_');
|
|
981
1427
|
const symbol = market['symbol'];
|
|
982
1428
|
const side = this.safeStringLower2(trade, 'side', 'takerSide');
|
|
983
1429
|
let fee = undefined;
|
|
984
|
-
const priceString = this.
|
|
985
|
-
const amountString = this.
|
|
986
|
-
const costString = this.
|
|
987
|
-
const feeCurrencyId = this.
|
|
988
|
-
const feeCostString = this.
|
|
1430
|
+
const priceString = this.safeString2(trade, 'price', 'px');
|
|
1431
|
+
const amountString = this.safeString2(trade, 'quantity', 'qty');
|
|
1432
|
+
const costString = this.safeString2(trade, 'amount', 'amt');
|
|
1433
|
+
const feeCurrencyId = this.safeString2(trade, 'feeCurrency', 'feeCcy');
|
|
1434
|
+
const feeCostString = this.safeString2(trade, 'feeAmount', 'feeAmt');
|
|
989
1435
|
if (feeCostString !== undefined) {
|
|
990
1436
|
const feeCurrencyCode = this.safeCurrencyCode(feeCurrencyId);
|
|
991
1437
|
fee = {
|
|
@@ -1000,9 +1446,9 @@ export default class poloniex extends Exchange {
|
|
|
1000
1446
|
'datetime': this.iso8601(timestamp),
|
|
1001
1447
|
'symbol': symbol,
|
|
1002
1448
|
'order': orderId,
|
|
1003
|
-
'type': this.
|
|
1449
|
+
'type': this.safeStringLower2(trade, 'ordType', 'type'),
|
|
1004
1450
|
'side': side,
|
|
1005
|
-
'takerOrMaker': this.
|
|
1451
|
+
'takerOrMaker': this.safeStringLower2(trade, 'matchRole', 'role'),
|
|
1006
1452
|
'price': priceString,
|
|
1007
1453
|
'amount': amountString,
|
|
1008
1454
|
'cost': costString,
|
|
@@ -1014,6 +1460,7 @@ export default class poloniex extends Exchange {
|
|
|
1014
1460
|
* @name poloniex#fetchTrades
|
|
1015
1461
|
* @description get the list of most recent trades for a particular symbol
|
|
1016
1462
|
* @see https://api-docs.poloniex.com/spot/api/public/market-data#trades
|
|
1463
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-execution-info
|
|
1017
1464
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
1018
1465
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
1019
1466
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
@@ -1027,7 +1474,26 @@ export default class poloniex extends Exchange {
|
|
|
1027
1474
|
'symbol': market['id'],
|
|
1028
1475
|
};
|
|
1029
1476
|
if (limit !== undefined) {
|
|
1030
|
-
request['limit'] = limit;
|
|
1477
|
+
request['limit'] = limit; // max 1000, for spot & swap
|
|
1478
|
+
}
|
|
1479
|
+
if (market['contract']) {
|
|
1480
|
+
const response = await this.swapPublicGetV3MarketTrades(this.extend(request, params));
|
|
1481
|
+
//
|
|
1482
|
+
// {
|
|
1483
|
+
// code: "200",
|
|
1484
|
+
// msg: "Success",
|
|
1485
|
+
// data: [
|
|
1486
|
+
// {
|
|
1487
|
+
// id: "105807320", // descending order
|
|
1488
|
+
// side: "sell",
|
|
1489
|
+
// px: "84383.93",
|
|
1490
|
+
// qty: "1",
|
|
1491
|
+
// amt: "84.38393",
|
|
1492
|
+
// cT: "1740777074704",
|
|
1493
|
+
// },
|
|
1494
|
+
//
|
|
1495
|
+
const tradesList = this.safeList(response, 'data');
|
|
1496
|
+
return this.parseTrades(tradesList, market, since, limit);
|
|
1031
1497
|
}
|
|
1032
1498
|
const trades = await this.publicGetMarketsSymbolTrades(this.extend(request, params));
|
|
1033
1499
|
//
|
|
@@ -1050,6 +1516,7 @@ export default class poloniex extends Exchange {
|
|
|
1050
1516
|
* @name poloniex#fetchMyTrades
|
|
1051
1517
|
* @description fetch all trades made by the user
|
|
1052
1518
|
* @see https://api-docs.poloniex.com/spot/api/private/trade#trade-history
|
|
1519
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/trade/get-execution-details
|
|
1053
1520
|
* @param {string} symbol unified market symbol
|
|
1054
1521
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
1055
1522
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
@@ -1069,17 +1536,61 @@ export default class poloniex extends Exchange {
|
|
|
1069
1536
|
if (symbol !== undefined) {
|
|
1070
1537
|
market = this.market(symbol);
|
|
1071
1538
|
}
|
|
1539
|
+
let marketType = undefined;
|
|
1540
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params);
|
|
1541
|
+
const isContract = this.inArray(marketType, ['swap', 'future']);
|
|
1072
1542
|
let request = {
|
|
1073
1543
|
// 'from': 12345678, // A 'trade Id'. The query begins at ‘from'.
|
|
1074
1544
|
// 'direction': 'PRE', // PRE, NEXT The direction before or after ‘from'.
|
|
1075
1545
|
};
|
|
1546
|
+
const startKey = isContract ? 'sTime' : 'startTime';
|
|
1547
|
+
const endKey = isContract ? 'eTime' : 'endTime';
|
|
1076
1548
|
if (since !== undefined) {
|
|
1077
|
-
request[
|
|
1549
|
+
request[startKey] = since;
|
|
1078
1550
|
}
|
|
1079
1551
|
if (limit !== undefined) {
|
|
1080
1552
|
request['limit'] = limit;
|
|
1081
1553
|
}
|
|
1082
|
-
|
|
1554
|
+
if (isContract && symbol !== undefined) {
|
|
1555
|
+
request['symbol'] = market['id'];
|
|
1556
|
+
}
|
|
1557
|
+
[request, params] = this.handleUntilOption(endKey, request, params);
|
|
1558
|
+
if (isContract) {
|
|
1559
|
+
const raw = await this.swapPrivateGetV3TradeOrderTrades(this.extend(request, params));
|
|
1560
|
+
//
|
|
1561
|
+
// {
|
|
1562
|
+
// "code": "200",
|
|
1563
|
+
// "msg": "",
|
|
1564
|
+
// "data": [
|
|
1565
|
+
// {
|
|
1566
|
+
// "symbol": "BTC_USDT_PERP",
|
|
1567
|
+
// "trdId": "105813553",
|
|
1568
|
+
// "side": "SELL",
|
|
1569
|
+
// "type": "TRADE",
|
|
1570
|
+
// "mgnMode": "CROSS",
|
|
1571
|
+
// "ordType": "MARKET",
|
|
1572
|
+
// "clOrdId": "polo418912106147315112",
|
|
1573
|
+
// "role": "TAKER",
|
|
1574
|
+
// "px": "84704.9",
|
|
1575
|
+
// "qty": "1",
|
|
1576
|
+
// "cTime": "1740842829430",
|
|
1577
|
+
// "uTime": "1740842829450",
|
|
1578
|
+
// "feeCcy": "USDT",
|
|
1579
|
+
// "feeAmt": "0.04235245",
|
|
1580
|
+
// "deductCcy": "",
|
|
1581
|
+
// "deductAmt": "0",
|
|
1582
|
+
// "feeRate": "0.0005",
|
|
1583
|
+
// "id": "418912106342654592",
|
|
1584
|
+
// "posSide": "BOTH",
|
|
1585
|
+
// "ordId": "418912106147315112",
|
|
1586
|
+
// "qCcy": "USDT",
|
|
1587
|
+
// "value": "84.7049",
|
|
1588
|
+
// "actType": "TRADING"
|
|
1589
|
+
// },
|
|
1590
|
+
//
|
|
1591
|
+
const data = this.safeList(raw, 'data');
|
|
1592
|
+
return this.parseTrades(data, market, since, limit);
|
|
1593
|
+
}
|
|
1083
1594
|
const response = await this.privateGetTrades(this.extend(request, params));
|
|
1084
1595
|
//
|
|
1085
1596
|
// [
|
|
@@ -1140,7 +1651,9 @@ export default class poloniex extends Exchange {
|
|
|
1140
1651
|
// "updateTime" : 16xxxxxxxxx36
|
|
1141
1652
|
// }
|
|
1142
1653
|
//
|
|
1143
|
-
// fetchOpenOrders
|
|
1654
|
+
// fetchOpenOrders (and fetchClosedOrders same for contracts)
|
|
1655
|
+
//
|
|
1656
|
+
// spot:
|
|
1144
1657
|
//
|
|
1145
1658
|
// {
|
|
1146
1659
|
// "id": "24993088082542592",
|
|
@@ -1161,14 +1674,60 @@ export default class poloniex extends Exchange {
|
|
|
1161
1674
|
// "updateTime": 1646925216548
|
|
1162
1675
|
// }
|
|
1163
1676
|
//
|
|
1677
|
+
// contract:
|
|
1678
|
+
//
|
|
1679
|
+
// {
|
|
1680
|
+
// "symbol": "BTC_USDT_PERP",
|
|
1681
|
+
// "side": "BUY",
|
|
1682
|
+
// "type": "LIMIT",
|
|
1683
|
+
// "ordId": "418890767248232148",
|
|
1684
|
+
// "clOrdId": "polo418890767248232148",
|
|
1685
|
+
// "mgnMode": "CROSS",
|
|
1686
|
+
// "px": "81130.13",
|
|
1687
|
+
// "reduceOnly": false,
|
|
1688
|
+
// "lever": "20",
|
|
1689
|
+
// "state": "NEW",
|
|
1690
|
+
// "source": "WEB",
|
|
1691
|
+
// "timeInForce": "GTC",
|
|
1692
|
+
// "tpTrgPx": "",
|
|
1693
|
+
// "tpPx": "",
|
|
1694
|
+
// "tpTrgPxType": "",
|
|
1695
|
+
// "slTrgPx": "",
|
|
1696
|
+
// "slPx": "",
|
|
1697
|
+
// "slTrgPxType": "",
|
|
1698
|
+
// "avgPx": "0",
|
|
1699
|
+
// "execQty": "0",
|
|
1700
|
+
// "execAmt": "0",
|
|
1701
|
+
// "feeCcy": "",
|
|
1702
|
+
// "feeAmt": "0",
|
|
1703
|
+
// "deductCcy": "0",
|
|
1704
|
+
// "deductAmt": "0",
|
|
1705
|
+
// "stpMode": "NONE", // todo: selfTradePrevention
|
|
1706
|
+
// "cTime": "1740837741523",
|
|
1707
|
+
// "uTime": "1740840846882",
|
|
1708
|
+
// "sz": "1",
|
|
1709
|
+
// "posSide": "BOTH",
|
|
1710
|
+
// "qCcy": "USDT"
|
|
1711
|
+
// "cancelReason": "", // this field can only be in closed orders
|
|
1712
|
+
// },
|
|
1713
|
+
//
|
|
1164
1714
|
// createOrder, editOrder
|
|
1165
1715
|
//
|
|
1716
|
+
// spot:
|
|
1717
|
+
//
|
|
1166
1718
|
// {
|
|
1167
1719
|
// "id": "29772698821328896",
|
|
1168
1720
|
// "clientOrderId": "1234Abc"
|
|
1169
1721
|
// }
|
|
1170
1722
|
//
|
|
1171
|
-
|
|
1723
|
+
// contract:
|
|
1724
|
+
//
|
|
1725
|
+
// {
|
|
1726
|
+
// "ordId":"418876147745775616",
|
|
1727
|
+
// "clOrdId":"polo418876147745775616"
|
|
1728
|
+
// }
|
|
1729
|
+
//
|
|
1730
|
+
let timestamp = this.safeIntegerN(order, ['timestamp', 'createTime', 'cTime']);
|
|
1172
1731
|
if (timestamp === undefined) {
|
|
1173
1732
|
timestamp = this.parse8601(this.safeString(order, 'date'));
|
|
1174
1733
|
}
|
|
@@ -1181,16 +1740,16 @@ export default class poloniex extends Exchange {
|
|
|
1181
1740
|
resultingTrades = this.safeValue(resultingTrades, this.safeString(market, 'id', marketId));
|
|
1182
1741
|
}
|
|
1183
1742
|
}
|
|
1184
|
-
const price = this.
|
|
1185
|
-
const amount = this.
|
|
1186
|
-
const filled = this.
|
|
1743
|
+
const price = this.safeStringN(order, ['price', 'rate', 'px']);
|
|
1744
|
+
const amount = this.safeString2(order, 'quantity', 'sz');
|
|
1745
|
+
const filled = this.safeString2(order, 'filledQuantity', 'execQty');
|
|
1187
1746
|
const status = this.parseOrderStatus(this.safeString(order, 'state'));
|
|
1188
1747
|
const side = this.safeStringLower(order, 'side');
|
|
1189
1748
|
const rawType = this.safeString(order, 'type');
|
|
1190
1749
|
const type = this.parseOrderType(rawType);
|
|
1191
|
-
const id = this.safeStringN(order, ['orderNumber', 'id', 'orderId']);
|
|
1750
|
+
const id = this.safeStringN(order, ['orderNumber', 'id', 'orderId', 'ordId']);
|
|
1192
1751
|
let fee = undefined;
|
|
1193
|
-
const feeCurrency = this.
|
|
1752
|
+
const feeCurrency = this.safeString2(order, 'tokenFeeCurrency', 'feeCcy');
|
|
1194
1753
|
let feeCost = undefined;
|
|
1195
1754
|
let feeCurrencyCode = undefined;
|
|
1196
1755
|
const rate = this.safeString(order, 'fee');
|
|
@@ -1200,7 +1759,7 @@ export default class poloniex extends Exchange {
|
|
|
1200
1759
|
else {
|
|
1201
1760
|
// poloniex accepts a 30% discount to pay fees in TRX
|
|
1202
1761
|
feeCurrencyCode = this.safeCurrencyCode(feeCurrency);
|
|
1203
|
-
feeCost = this.
|
|
1762
|
+
feeCost = this.safeString2(order, 'tokenFee', 'feeAmt');
|
|
1204
1763
|
}
|
|
1205
1764
|
if (feeCost !== undefined) {
|
|
1206
1765
|
fee = {
|
|
@@ -1209,7 +1768,11 @@ export default class poloniex extends Exchange {
|
|
|
1209
1768
|
'currency': feeCurrencyCode,
|
|
1210
1769
|
};
|
|
1211
1770
|
}
|
|
1212
|
-
const clientOrderId = this.
|
|
1771
|
+
const clientOrderId = this.safeString2(order, 'clientOrderId', 'clOrdId');
|
|
1772
|
+
const marginMode = this.safeStringLower(order, 'mgnMode');
|
|
1773
|
+
const reduceOnly = this.safeBool(order, 'reduceOnly');
|
|
1774
|
+
const leverage = this.safeInteger(order, 'lever');
|
|
1775
|
+
const hedged = this.safeString(order, 'posSide') !== 'BOTH';
|
|
1213
1776
|
return this.safeOrder({
|
|
1214
1777
|
'info': order,
|
|
1215
1778
|
'id': id,
|
|
@@ -1221,23 +1784,28 @@ export default class poloniex extends Exchange {
|
|
|
1221
1784
|
'symbol': symbol,
|
|
1222
1785
|
'type': type,
|
|
1223
1786
|
'timeInForce': this.safeString(order, 'timeInForce'),
|
|
1224
|
-
'postOnly':
|
|
1787
|
+
'postOnly': rawType === 'LIMIT_MAKER',
|
|
1225
1788
|
'side': side,
|
|
1226
1789
|
'price': price,
|
|
1227
1790
|
'triggerPrice': this.safeString2(order, 'triggerPrice', 'stopPrice'),
|
|
1228
|
-
'cost':
|
|
1229
|
-
'average': this.
|
|
1791
|
+
'cost': this.safeString(order, 'execAmt'),
|
|
1792
|
+
'average': this.safeString2(order, 'avgPrice', 'avgPx'),
|
|
1230
1793
|
'amount': amount,
|
|
1231
1794
|
'filled': filled,
|
|
1232
1795
|
'remaining': undefined,
|
|
1233
1796
|
'trades': resultingTrades,
|
|
1234
1797
|
'fee': fee,
|
|
1798
|
+
'marginMode': marginMode,
|
|
1799
|
+
'reduceOnly': reduceOnly,
|
|
1800
|
+
'leverage': leverage,
|
|
1801
|
+
'hedged': hedged,
|
|
1235
1802
|
}, market);
|
|
1236
1803
|
}
|
|
1237
1804
|
parseOrderType(status) {
|
|
1238
1805
|
const statuses = {
|
|
1239
1806
|
'MARKET': 'market',
|
|
1240
1807
|
'LIMIT': 'limit',
|
|
1808
|
+
'LIMIT_MAKER': 'limit',
|
|
1241
1809
|
'STOP-LIMIT': 'limit',
|
|
1242
1810
|
'STOP-MARKET': 'market',
|
|
1243
1811
|
};
|
|
@@ -1262,6 +1830,7 @@ export default class poloniex extends Exchange {
|
|
|
1262
1830
|
* @description fetch all unfilled currently open orders
|
|
1263
1831
|
* @see https://api-docs.poloniex.com/spot/api/private/order#open-orders
|
|
1264
1832
|
* @see https://api-docs.poloniex.com/spot/api/private/smart-order#open-orders // trigger orders
|
|
1833
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/trade/get-current-orders
|
|
1265
1834
|
* @param {string} symbol unified market symbol
|
|
1266
1835
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
1267
1836
|
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
@@ -1277,13 +1846,59 @@ export default class poloniex extends Exchange {
|
|
|
1277
1846
|
market = this.market(symbol);
|
|
1278
1847
|
request['symbol'] = market['id'];
|
|
1279
1848
|
}
|
|
1849
|
+
let marketType = undefined;
|
|
1850
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
|
|
1280
1851
|
if (limit !== undefined) {
|
|
1281
|
-
|
|
1852
|
+
const max = (marketType === 'spot') ? 2000 : 100;
|
|
1853
|
+
request['limit'] = Math.max(limit, max);
|
|
1282
1854
|
}
|
|
1283
1855
|
const isTrigger = this.safeValue2(params, 'trigger', 'stop');
|
|
1284
1856
|
params = this.omit(params, ['trigger', 'stop']);
|
|
1285
1857
|
let response = undefined;
|
|
1286
|
-
if (
|
|
1858
|
+
if (!market['spot']) {
|
|
1859
|
+
const raw = await this.swapPrivateGetV3TradeOrderOpens(this.extend(request, params));
|
|
1860
|
+
//
|
|
1861
|
+
// {
|
|
1862
|
+
// "code": "200",
|
|
1863
|
+
// "msg": "",
|
|
1864
|
+
// "data": [
|
|
1865
|
+
// {
|
|
1866
|
+
// "symbol": "BTC_USDT_PERP",
|
|
1867
|
+
// "side": "BUY",
|
|
1868
|
+
// "type": "LIMIT",
|
|
1869
|
+
// "ordId": "418890767248232148",
|
|
1870
|
+
// "clOrdId": "polo418890767248232148",
|
|
1871
|
+
// "mgnMode": "CROSS",
|
|
1872
|
+
// "px": "81130.13",
|
|
1873
|
+
// "reduceOnly": false,
|
|
1874
|
+
// "lever": "20",
|
|
1875
|
+
// "state": "NEW",
|
|
1876
|
+
// "source": "WEB",
|
|
1877
|
+
// "timeInForce": "GTC",
|
|
1878
|
+
// "tpTrgPx": "",
|
|
1879
|
+
// "tpPx": "",
|
|
1880
|
+
// "tpTrgPxType": "",
|
|
1881
|
+
// "slTrgPx": "",
|
|
1882
|
+
// "slPx": "",
|
|
1883
|
+
// "slTrgPxType": "",
|
|
1884
|
+
// "avgPx": "0",
|
|
1885
|
+
// "execQty": "0",
|
|
1886
|
+
// "execAmt": "0",
|
|
1887
|
+
// "feeCcy": "",
|
|
1888
|
+
// "feeAmt": "0",
|
|
1889
|
+
// "deductCcy": "0",
|
|
1890
|
+
// "deductAmt": "0",
|
|
1891
|
+
// "stpMode": "NONE",
|
|
1892
|
+
// "cTime": "1740837741523",
|
|
1893
|
+
// "uTime": "1740840846882",
|
|
1894
|
+
// "sz": "1",
|
|
1895
|
+
// "posSide": "BOTH",
|
|
1896
|
+
// "qCcy": "USDT"
|
|
1897
|
+
// },
|
|
1898
|
+
//
|
|
1899
|
+
response = this.safeList(raw, 'data');
|
|
1900
|
+
}
|
|
1901
|
+
else if (isTrigger) {
|
|
1287
1902
|
response = await this.privateGetSmartorders(this.extend(request, params));
|
|
1288
1903
|
}
|
|
1289
1904
|
else {
|
|
@@ -1315,6 +1930,82 @@ export default class poloniex extends Exchange {
|
|
|
1315
1930
|
const extension = { 'status': 'open' };
|
|
1316
1931
|
return this.parseOrders(response, market, since, limit, extension);
|
|
1317
1932
|
}
|
|
1933
|
+
/**
|
|
1934
|
+
* @method
|
|
1935
|
+
* @name poloniex#fetchClosedOrders
|
|
1936
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/trade/get-order-history
|
|
1937
|
+
* @description fetches information on multiple closed orders made by the user
|
|
1938
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
1939
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
1940
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
1941
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1942
|
+
* @param {int} [params.until] timestamp in ms of the latest entry
|
|
1943
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1944
|
+
*/
|
|
1945
|
+
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
1946
|
+
await this.loadMarkets();
|
|
1947
|
+
let market = undefined;
|
|
1948
|
+
let request = {};
|
|
1949
|
+
if (symbol !== undefined) {
|
|
1950
|
+
market = this.market(symbol);
|
|
1951
|
+
request['symbol'] = market['id'];
|
|
1952
|
+
}
|
|
1953
|
+
let marketType = undefined;
|
|
1954
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchClosedOrders', market, params, 'swap');
|
|
1955
|
+
if (marketType === 'spot') {
|
|
1956
|
+
throw new NotSupported(this.id + ' fetchClosedOrders() is not supported for spot markets yet');
|
|
1957
|
+
}
|
|
1958
|
+
if (limit !== undefined) {
|
|
1959
|
+
request['limit'] = Math.min(200, limit);
|
|
1960
|
+
}
|
|
1961
|
+
if (since !== undefined) {
|
|
1962
|
+
request['sTime'] = since;
|
|
1963
|
+
}
|
|
1964
|
+
[request, params] = this.handleUntilOption('eTime', request, params);
|
|
1965
|
+
const response = await this.swapPrivateGetV3TradeOrderHistory(this.extend(request, params));
|
|
1966
|
+
//
|
|
1967
|
+
// {
|
|
1968
|
+
// "code": "200",
|
|
1969
|
+
// "msg": "",
|
|
1970
|
+
// "data": [
|
|
1971
|
+
// {
|
|
1972
|
+
// "symbol": "BTC_USDT_PERP",
|
|
1973
|
+
// "side": "SELL",
|
|
1974
|
+
// "type": "MARKET",
|
|
1975
|
+
// "ordId": "418912106147315712",
|
|
1976
|
+
// "clOrdId": "polo418912106147315712",
|
|
1977
|
+
// "mgnMode": "CROSS",
|
|
1978
|
+
// "px": "0",
|
|
1979
|
+
// "sz": "2",
|
|
1980
|
+
// "lever": "20",
|
|
1981
|
+
// "state": "FILLED",
|
|
1982
|
+
// "cancelReason": "",
|
|
1983
|
+
// "source": "WEB",
|
|
1984
|
+
// "reduceOnly": "true",
|
|
1985
|
+
// "timeInForce": "GTC",
|
|
1986
|
+
// "tpTrgPx": "",
|
|
1987
|
+
// "tpPx": "",
|
|
1988
|
+
// "tpTrgPxType": "",
|
|
1989
|
+
// "slTrgPx": "",
|
|
1990
|
+
// "slPx": "",
|
|
1991
|
+
// "slTrgPxType": "",
|
|
1992
|
+
// "avgPx": "84705.56",
|
|
1993
|
+
// "execQty": "2",
|
|
1994
|
+
// "execAmt": "169.41112",
|
|
1995
|
+
// "feeCcy": "USDT",
|
|
1996
|
+
// "feeAmt": "0.08470556",
|
|
1997
|
+
// "deductCcy": "0",
|
|
1998
|
+
// "deductAmt": "0",
|
|
1999
|
+
// "stpMode": "NONE",
|
|
2000
|
+
// "cTime": "1740842829116",
|
|
2001
|
+
// "uTime": "1740842829130",
|
|
2002
|
+
// "posSide": "BOTH",
|
|
2003
|
+
// "qCcy": "USDT"
|
|
2004
|
+
// },
|
|
2005
|
+
//
|
|
2006
|
+
const data = this.safeList(response, 'data', []);
|
|
2007
|
+
return this.parseOrders(data, market, since, limit);
|
|
2008
|
+
}
|
|
1318
2009
|
/**
|
|
1319
2010
|
* @method
|
|
1320
2011
|
* @name poloniex#createOrder
|
|
@@ -1334,20 +2025,24 @@ export default class poloniex extends Exchange {
|
|
|
1334
2025
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
1335
2026
|
await this.loadMarkets();
|
|
1336
2027
|
const market = this.market(symbol);
|
|
1337
|
-
if (!market['spot']) {
|
|
1338
|
-
throw new NotSupported(this.id + ' createOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted');
|
|
1339
|
-
}
|
|
1340
2028
|
let request = {
|
|
1341
2029
|
'symbol': market['id'],
|
|
1342
|
-
'side': side,
|
|
1343
|
-
// 'timeInForce': timeInForce,
|
|
2030
|
+
'side': side.toUpperCase(), // uppercase, both for spot & swap
|
|
2031
|
+
// 'timeInForce': timeInForce, // matches unified values
|
|
1344
2032
|
// 'accountType': 'SPOT',
|
|
1345
2033
|
// 'amount': amount,
|
|
1346
2034
|
};
|
|
1347
2035
|
const triggerPrice = this.safeNumber2(params, 'stopPrice', 'triggerPrice');
|
|
1348
2036
|
[request, params] = this.orderRequest(symbol, type, side, amount, request, price, params);
|
|
1349
2037
|
let response = undefined;
|
|
1350
|
-
if (
|
|
2038
|
+
if (market['swap'] || market['future']) {
|
|
2039
|
+
const responseInitial = await this.swapPrivatePostV3TradeOrder(this.extend(request, params));
|
|
2040
|
+
//
|
|
2041
|
+
// {"code":200,"msg":"Success","data":{"ordId":"418876147745775616","clOrdId":"polo418876147745775616"}}
|
|
2042
|
+
//
|
|
2043
|
+
response = this.safeDict(responseInitial, 'data');
|
|
2044
|
+
}
|
|
2045
|
+
else if (triggerPrice !== undefined) {
|
|
1351
2046
|
response = await this.privatePostSmartorders(this.extend(request, params));
|
|
1352
2047
|
}
|
|
1353
2048
|
else {
|
|
@@ -1359,19 +2054,37 @@ export default class poloniex extends Exchange {
|
|
|
1359
2054
|
// "clientOrderId" : ""
|
|
1360
2055
|
// }
|
|
1361
2056
|
//
|
|
1362
|
-
response = this.extend(response, {
|
|
1363
|
-
'type': type,
|
|
1364
|
-
'side': side,
|
|
1365
|
-
});
|
|
1366
2057
|
return this.parseOrder(response, market);
|
|
1367
2058
|
}
|
|
1368
2059
|
orderRequest(symbol, type, side, amount, request, price = undefined, params = {}) {
|
|
2060
|
+
const triggerPrice = this.safeNumber2(params, 'stopPrice', 'triggerPrice');
|
|
2061
|
+
const market = this.market(symbol);
|
|
2062
|
+
if (market['contract']) {
|
|
2063
|
+
let marginMode = undefined;
|
|
2064
|
+
[marginMode, params] = this.handleParamString(params, 'marginMode');
|
|
2065
|
+
if (marginMode !== undefined) {
|
|
2066
|
+
this.checkRequiredArgument('createOrder', marginMode, 'marginMode', ['cross', 'isolated']);
|
|
2067
|
+
request['mgnMode'] = marginMode.toUpperCase();
|
|
2068
|
+
}
|
|
2069
|
+
let hedged = undefined;
|
|
2070
|
+
[hedged, params] = this.handleParamString(params, 'hedged');
|
|
2071
|
+
if (hedged) {
|
|
2072
|
+
if (marginMode === undefined) {
|
|
2073
|
+
throw new ArgumentsRequired(this.id + ' createOrder() requires a marginMode parameter "cross" or "isolated" for hedged orders');
|
|
2074
|
+
}
|
|
2075
|
+
if (!('posSide' in params)) {
|
|
2076
|
+
throw new ArgumentsRequired(this.id + ' createOrder() requires a posSide parameter "LONG" or "SHORT" for hedged orders');
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
1369
2080
|
let upperCaseType = type.toUpperCase();
|
|
1370
2081
|
const isMarket = upperCaseType === 'MARKET';
|
|
1371
2082
|
const isPostOnly = this.isPostOnly(isMarket, upperCaseType === 'LIMIT_MAKER', params);
|
|
1372
|
-
const triggerPrice = this.safeNumber2(params, 'stopPrice', 'triggerPrice');
|
|
1373
2083
|
params = this.omit(params, ['postOnly', 'triggerPrice', 'stopPrice']);
|
|
1374
2084
|
if (triggerPrice !== undefined) {
|
|
2085
|
+
if (!market['spot']) {
|
|
2086
|
+
throw new InvalidOrder(this.id + ' createOrder() does not support trigger orders for ' + market['type'] + ' markets');
|
|
2087
|
+
}
|
|
1375
2088
|
upperCaseType = (price === undefined) ? 'STOP' : 'STOP_LIMIT';
|
|
1376
2089
|
request['stopPrice'] = triggerPrice;
|
|
1377
2090
|
}
|
|
@@ -1389,7 +2102,7 @@ export default class poloniex extends Exchange {
|
|
|
1389
2102
|
if (cost !== undefined) {
|
|
1390
2103
|
quoteAmount = this.costToPrecision(symbol, cost);
|
|
1391
2104
|
}
|
|
1392
|
-
else if (createMarketBuyOrderRequiresPrice) {
|
|
2105
|
+
else if (createMarketBuyOrderRequiresPrice && market['spot']) {
|
|
1393
2106
|
if (price === undefined) {
|
|
1394
2107
|
throw new InvalidOrder(this.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend (quote quantity) in the amount argument');
|
|
1395
2108
|
}
|
|
@@ -1403,15 +2116,19 @@ export default class poloniex extends Exchange {
|
|
|
1403
2116
|
else {
|
|
1404
2117
|
quoteAmount = this.costToPrecision(symbol, amount);
|
|
1405
2118
|
}
|
|
1406
|
-
|
|
2119
|
+
const amountKey = market['spot'] ? 'amount' : 'sz';
|
|
2120
|
+
request[amountKey] = quoteAmount;
|
|
1407
2121
|
}
|
|
1408
2122
|
else {
|
|
1409
|
-
|
|
2123
|
+
const amountKey = market['spot'] ? 'quantity' : 'sz';
|
|
2124
|
+
request[amountKey] = this.amountToPrecision(symbol, amount);
|
|
1410
2125
|
}
|
|
1411
2126
|
}
|
|
1412
2127
|
else {
|
|
1413
|
-
|
|
1414
|
-
request[
|
|
2128
|
+
const amountKey = market['spot'] ? 'quantity' : 'sz';
|
|
2129
|
+
request[amountKey] = this.amountToPrecision(symbol, amount);
|
|
2130
|
+
const priceKey = market['spot'] ? 'price' : 'px';
|
|
2131
|
+
request[priceKey] = this.priceToPrecision(symbol, price);
|
|
1415
2132
|
}
|
|
1416
2133
|
const clientOrderId = this.safeString(params, 'clientOrderId');
|
|
1417
2134
|
if (clientOrderId !== undefined) {
|
|
@@ -1482,7 +2199,27 @@ export default class poloniex extends Exchange {
|
|
|
1482
2199
|
// @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
1483
2200
|
//
|
|
1484
2201
|
await this.loadMarkets();
|
|
2202
|
+
if (symbol === undefined) {
|
|
2203
|
+
throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
|
|
2204
|
+
}
|
|
2205
|
+
const market = this.market(symbol);
|
|
1485
2206
|
const request = {};
|
|
2207
|
+
if (!market['spot']) {
|
|
2208
|
+
request['symbol'] = market['id'];
|
|
2209
|
+
request['ordId'] = id;
|
|
2210
|
+
const raw = await this.swapPrivateDeleteV3TradeOrder(this.extend(request, params));
|
|
2211
|
+
//
|
|
2212
|
+
// {
|
|
2213
|
+
// "code": "200",
|
|
2214
|
+
// "msg": "Success",
|
|
2215
|
+
// "data": {
|
|
2216
|
+
// "ordId": "418886099910612040",
|
|
2217
|
+
// "clOrdId": "polo418886099910612040"
|
|
2218
|
+
// }
|
|
2219
|
+
// }
|
|
2220
|
+
//
|
|
2221
|
+
return this.parseOrder(this.safeDict(raw, 'data'));
|
|
2222
|
+
}
|
|
1486
2223
|
const clientOrderId = this.safeValue(params, 'clientOrderId');
|
|
1487
2224
|
if (clientOrderId !== undefined) {
|
|
1488
2225
|
id = clientOrderId;
|
|
@@ -1514,6 +2251,7 @@ export default class poloniex extends Exchange {
|
|
|
1514
2251
|
* @description cancel all open orders
|
|
1515
2252
|
* @see https://api-docs.poloniex.com/spot/api/private/order#cancel-all-orders
|
|
1516
2253
|
* @see https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-all-orders // trigger orders
|
|
2254
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/trade/cancel-all-orders - contract markets
|
|
1517
2255
|
* @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
|
|
1518
2256
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1519
2257
|
* @param {boolean} [params.trigger] true if canceling trigger orders
|
|
@@ -1532,9 +2270,30 @@ export default class poloniex extends Exchange {
|
|
|
1532
2270
|
market['id'],
|
|
1533
2271
|
];
|
|
1534
2272
|
}
|
|
2273
|
+
let response = undefined;
|
|
2274
|
+
let marketType = undefined;
|
|
2275
|
+
[marketType, params] = this.handleMarketTypeAndParams('cancelAllOrders', market, params);
|
|
2276
|
+
if (marketType === 'swap' || marketType === 'future') {
|
|
2277
|
+
const raw = await this.swapPrivateDeleteV3TradeAllOrders(this.extend(request, params));
|
|
2278
|
+
//
|
|
2279
|
+
// {
|
|
2280
|
+
// "code": "200",
|
|
2281
|
+
// "msg": "Success",
|
|
2282
|
+
// "data": [
|
|
2283
|
+
// {
|
|
2284
|
+
// "code": "200",
|
|
2285
|
+
// "msg": "Success",
|
|
2286
|
+
// "ordId": "418885787866388511",
|
|
2287
|
+
// "clOrdId": "polo418885787866388511"
|
|
2288
|
+
// }
|
|
2289
|
+
// ]
|
|
2290
|
+
// }
|
|
2291
|
+
//
|
|
2292
|
+
response = this.safeList(raw, 'data');
|
|
2293
|
+
return this.parseOrders(response, market);
|
|
2294
|
+
}
|
|
1535
2295
|
const isTrigger = this.safeValue2(params, 'trigger', 'stop');
|
|
1536
2296
|
params = this.omit(params, ['trigger', 'stop']);
|
|
1537
|
-
let response = undefined;
|
|
1538
2297
|
if (isTrigger) {
|
|
1539
2298
|
response = await this.privateDeleteSmartorders(this.extend(request, params));
|
|
1540
2299
|
}
|
|
@@ -1578,6 +2337,16 @@ export default class poloniex extends Exchange {
|
|
|
1578
2337
|
const request = {
|
|
1579
2338
|
'id': id,
|
|
1580
2339
|
};
|
|
2340
|
+
let market = undefined;
|
|
2341
|
+
if (symbol !== undefined) {
|
|
2342
|
+
market = this.market(symbol);
|
|
2343
|
+
request['symbol'] = market['id'];
|
|
2344
|
+
}
|
|
2345
|
+
let marketType = undefined;
|
|
2346
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchOrder', market, params);
|
|
2347
|
+
if (marketType !== 'spot') {
|
|
2348
|
+
throw new NotSupported(this.id + ' fetchOrder() is not supported for ' + marketType + ' markets yet');
|
|
2349
|
+
}
|
|
1581
2350
|
const isTrigger = this.safeValue2(params, 'trigger', 'stop');
|
|
1582
2351
|
params = this.omit(params, ['trigger', 'stop']);
|
|
1583
2352
|
let response = undefined;
|
|
@@ -1666,6 +2435,24 @@ export default class poloniex extends Exchange {
|
|
|
1666
2435
|
'timestamp': undefined,
|
|
1667
2436
|
'datetime': undefined,
|
|
1668
2437
|
};
|
|
2438
|
+
// for swap
|
|
2439
|
+
if (!Array.isArray(response)) {
|
|
2440
|
+
const ts = this.safeInteger(response, 'uTime');
|
|
2441
|
+
result['timestamp'] = ts;
|
|
2442
|
+
result['datetime'] = this.iso8601(ts);
|
|
2443
|
+
const details = this.safeList(response, 'details', []);
|
|
2444
|
+
for (let i = 0; i < details.length; i++) {
|
|
2445
|
+
const balance = details[i];
|
|
2446
|
+
const currencyId = this.safeString(balance, 'ccy');
|
|
2447
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
2448
|
+
const account = this.account();
|
|
2449
|
+
account['total'] = this.safeString(balance, 'avail');
|
|
2450
|
+
account['used'] = this.safeString(balance, 'im');
|
|
2451
|
+
result[code] = account;
|
|
2452
|
+
}
|
|
2453
|
+
return this.safeBalance(result);
|
|
2454
|
+
}
|
|
2455
|
+
// for spot
|
|
1669
2456
|
for (let i = 0; i < response.length; i++) {
|
|
1670
2457
|
const account = this.safeValue(response, i, {});
|
|
1671
2458
|
const balances = this.safeValue(account, 'balances');
|
|
@@ -1686,11 +2473,56 @@ export default class poloniex extends Exchange {
|
|
|
1686
2473
|
* @name poloniex#fetchBalance
|
|
1687
2474
|
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
1688
2475
|
* @see https://api-docs.poloniex.com/spot/api/private/account#all-account-balances
|
|
2476
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/account/balance
|
|
1689
2477
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1690
2478
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
1691
2479
|
*/
|
|
1692
2480
|
async fetchBalance(params = {}) {
|
|
1693
2481
|
await this.loadMarkets();
|
|
2482
|
+
let marketType = undefined;
|
|
2483
|
+
[marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
2484
|
+
if (marketType !== 'spot') {
|
|
2485
|
+
const responseRaw = await this.swapPrivateGetV3AccountBalance(params);
|
|
2486
|
+
//
|
|
2487
|
+
// {
|
|
2488
|
+
// "code": "200",
|
|
2489
|
+
// "msg": "",
|
|
2490
|
+
// "data": {
|
|
2491
|
+
// "state": "NORMAL",
|
|
2492
|
+
// "eq": "9.98571622",
|
|
2493
|
+
// "isoEq": "0",
|
|
2494
|
+
// "im": "0",
|
|
2495
|
+
// "mm": "0",
|
|
2496
|
+
// "mmr": "0",
|
|
2497
|
+
// "upl": "0",
|
|
2498
|
+
// "availMgn": "9.98571622",
|
|
2499
|
+
// "cTime": "1738093601775",
|
|
2500
|
+
// "uTime": "1740829116236",
|
|
2501
|
+
// "details": [
|
|
2502
|
+
// {
|
|
2503
|
+
// "ccy": "USDT",
|
|
2504
|
+
// "eq": "9.98571622",
|
|
2505
|
+
// "isoEq": "0",
|
|
2506
|
+
// "avail": "9.98571622",
|
|
2507
|
+
// "trdHold": "0",
|
|
2508
|
+
// "upl": "0",
|
|
2509
|
+
// "isoAvail": "0",
|
|
2510
|
+
// "isoHold": "0",
|
|
2511
|
+
// "isoUpl": "0",
|
|
2512
|
+
// "im": "0",
|
|
2513
|
+
// "mm": "0",
|
|
2514
|
+
// "mmr": "0",
|
|
2515
|
+
// "imr": "0",
|
|
2516
|
+
// "cTime": "1740829116236",
|
|
2517
|
+
// "uTime": "1740829116236"
|
|
2518
|
+
// }
|
|
2519
|
+
// ]
|
|
2520
|
+
// }
|
|
2521
|
+
// }
|
|
2522
|
+
//
|
|
2523
|
+
const data = this.safeDict(responseRaw, 'data', {});
|
|
2524
|
+
return this.parseBalance(data);
|
|
2525
|
+
}
|
|
1694
2526
|
const request = {
|
|
1695
2527
|
'accountType': 'SPOT',
|
|
1696
2528
|
};
|
|
@@ -1751,6 +2583,7 @@ export default class poloniex extends Exchange {
|
|
|
1751
2583
|
* @name poloniex#fetchOrderBook
|
|
1752
2584
|
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
1753
2585
|
* @see https://api-docs.poloniex.com/spot/api/public/market-data#order-book
|
|
2586
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/market/get-order-book
|
|
1754
2587
|
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
1755
2588
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
1756
2589
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -1764,6 +2597,27 @@ export default class poloniex extends Exchange {
|
|
|
1764
2597
|
};
|
|
1765
2598
|
if (limit !== undefined) {
|
|
1766
2599
|
request['limit'] = limit; // The default value of limit is 10. Valid limit values are: 5, 10, 20, 50, 100, 150.
|
|
2600
|
+
if (market['contract']) {
|
|
2601
|
+
request['limit'] = this.findNearestCeiling([5, 10, 20, 100, 150], limit);
|
|
2602
|
+
}
|
|
2603
|
+
}
|
|
2604
|
+
if (market['contract']) {
|
|
2605
|
+
const responseRaw = await this.swapPublicGetV3MarketOrderBook(this.extend(request, params));
|
|
2606
|
+
//
|
|
2607
|
+
// {
|
|
2608
|
+
// "code": 200,
|
|
2609
|
+
// "data": {
|
|
2610
|
+
// "asks": [ ["58700", "9934"], ..],
|
|
2611
|
+
// "bids": [ ["58600", "9952"], ..],
|
|
2612
|
+
// "s": "100",
|
|
2613
|
+
// "ts": 1719974138333
|
|
2614
|
+
// },
|
|
2615
|
+
// "msg": "Success"
|
|
2616
|
+
// }
|
|
2617
|
+
//
|
|
2618
|
+
const data = this.safeDict(responseRaw, 'data', {});
|
|
2619
|
+
const ts = this.safeInteger(data, 'ts');
|
|
2620
|
+
return this.parseOrderBook(data, symbol, ts);
|
|
1767
2621
|
}
|
|
1768
2622
|
const response = await this.publicGetMarketsSymbolOrderBook(this.extend(request, params));
|
|
1769
2623
|
//
|
|
@@ -2363,14 +3217,397 @@ export default class poloniex extends Exchange {
|
|
|
2363
3217
|
},
|
|
2364
3218
|
};
|
|
2365
3219
|
}
|
|
3220
|
+
/**
|
|
3221
|
+
* @method
|
|
3222
|
+
* @name poloniex#setLeverage
|
|
3223
|
+
* @description set the level of leverage for a market
|
|
3224
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/positions/set-leverage
|
|
3225
|
+
* @param {int} leverage the rate of leverage
|
|
3226
|
+
* @param {string} symbol unified market symbol
|
|
3227
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3228
|
+
* @param {string} [params.marginMode] 'cross' or 'isolated'
|
|
3229
|
+
* @returns {object} response from the exchange
|
|
3230
|
+
*/
|
|
3231
|
+
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
3232
|
+
if (symbol === undefined) {
|
|
3233
|
+
throw new ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
|
|
3234
|
+
}
|
|
3235
|
+
await this.loadMarkets();
|
|
3236
|
+
const market = this.market(symbol);
|
|
3237
|
+
let marginMode = undefined;
|
|
3238
|
+
[marginMode, params] = this.handleMarginModeAndParams('setLeverage', params);
|
|
3239
|
+
if (marginMode === undefined) {
|
|
3240
|
+
throw new ArgumentsRequired(this.id + ' setLeverage() requires a marginMode parameter "cross" or "isolated"');
|
|
3241
|
+
}
|
|
3242
|
+
let hedged = undefined;
|
|
3243
|
+
[hedged, params] = this.handleParamBool(params, 'hedged', false);
|
|
3244
|
+
if (hedged) {
|
|
3245
|
+
if (!('posSide' in params)) {
|
|
3246
|
+
throw new ArgumentsRequired(this.id + ' setLeverage() requires a posSide parameter for hedged mode: "LONG" or "SHORT"');
|
|
3247
|
+
}
|
|
3248
|
+
}
|
|
3249
|
+
const request = {
|
|
3250
|
+
'lever': leverage,
|
|
3251
|
+
'mgnMode': marginMode.toUpperCase(),
|
|
3252
|
+
'symbol': market['id'],
|
|
3253
|
+
};
|
|
3254
|
+
const response = await this.swapPrivatePostV3PositionLeverage(this.extend(request, params));
|
|
3255
|
+
return response;
|
|
3256
|
+
}
|
|
3257
|
+
/**
|
|
3258
|
+
* @method
|
|
3259
|
+
* @name poloniex#fetchLeverage
|
|
3260
|
+
* @description fetch the set leverage for a market
|
|
3261
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/positions/get-leverages
|
|
3262
|
+
* @param {string} symbol unified market symbol
|
|
3263
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3264
|
+
* @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
|
|
3265
|
+
*/
|
|
3266
|
+
async fetchLeverage(symbol, params = {}) {
|
|
3267
|
+
await this.loadMarkets();
|
|
3268
|
+
const market = this.market(symbol);
|
|
3269
|
+
const request = {
|
|
3270
|
+
'symbol': market['id'],
|
|
3271
|
+
};
|
|
3272
|
+
let marginMode = undefined;
|
|
3273
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchLeverage', params);
|
|
3274
|
+
if (marginMode === undefined) {
|
|
3275
|
+
throw new ArgumentsRequired(this.id + ' fetchLeverage() requires a marginMode parameter "cross" or "isolated"');
|
|
3276
|
+
}
|
|
3277
|
+
request['mgnMode'] = marginMode.toUpperCase();
|
|
3278
|
+
const response = await this.swapPrivateGetV3PositionLeverages(this.extend(request, params));
|
|
3279
|
+
//
|
|
3280
|
+
// for one-way mode:
|
|
3281
|
+
//
|
|
3282
|
+
// {
|
|
3283
|
+
// "code": "200",
|
|
3284
|
+
// "msg": "",
|
|
3285
|
+
// "data": [
|
|
3286
|
+
// {
|
|
3287
|
+
// "symbol": "BTC_USDT_PERP",
|
|
3288
|
+
// "lever": "10",
|
|
3289
|
+
// "mgnMode": "CROSS",
|
|
3290
|
+
// "posSide": "BOTH"
|
|
3291
|
+
// }
|
|
3292
|
+
// ]
|
|
3293
|
+
// }
|
|
3294
|
+
//
|
|
3295
|
+
// for hedge:
|
|
3296
|
+
//
|
|
3297
|
+
// {
|
|
3298
|
+
// "code": "200",
|
|
3299
|
+
// "msg": "",
|
|
3300
|
+
// "data": [
|
|
3301
|
+
// {
|
|
3302
|
+
// "symbol": "BTC_USDT_PERP",
|
|
3303
|
+
// "lever": "20",
|
|
3304
|
+
// "mgnMode": "CROSS",
|
|
3305
|
+
// "posSide": "SHORT"
|
|
3306
|
+
// },
|
|
3307
|
+
// {
|
|
3308
|
+
// "symbol": "BTC_USDT_PERP",
|
|
3309
|
+
// "lever": "20",
|
|
3310
|
+
// "mgnMode": "CROSS",
|
|
3311
|
+
// "posSide": "LONG"
|
|
3312
|
+
// }
|
|
3313
|
+
// ]
|
|
3314
|
+
// }
|
|
3315
|
+
//
|
|
3316
|
+
return this.parseLeverage(response, market);
|
|
3317
|
+
}
|
|
3318
|
+
parseLeverage(leverage, market = undefined) {
|
|
3319
|
+
let shortLeverage = undefined;
|
|
3320
|
+
let longLeverage = undefined;
|
|
3321
|
+
let marketId = undefined;
|
|
3322
|
+
let marginMode = undefined;
|
|
3323
|
+
const data = this.safeList(leverage, 'data');
|
|
3324
|
+
for (let i = 0; i < data.length; i++) {
|
|
3325
|
+
const entry = data[i];
|
|
3326
|
+
marketId = this.safeString(entry, 'symbol');
|
|
3327
|
+
marginMode = this.safeString(entry, 'mgnMode');
|
|
3328
|
+
const lever = this.safeInteger(entry, 'lever');
|
|
3329
|
+
const posSide = this.safeString(entry, 'posSide');
|
|
3330
|
+
if (posSide === 'LONG') {
|
|
3331
|
+
longLeverage = lever;
|
|
3332
|
+
}
|
|
3333
|
+
else if (posSide === 'SHORT') {
|
|
3334
|
+
shortLeverage = lever;
|
|
3335
|
+
}
|
|
3336
|
+
else {
|
|
3337
|
+
longLeverage = lever;
|
|
3338
|
+
shortLeverage = lever;
|
|
3339
|
+
}
|
|
3340
|
+
}
|
|
3341
|
+
return {
|
|
3342
|
+
'info': leverage,
|
|
3343
|
+
'symbol': this.safeSymbol(marketId, market),
|
|
3344
|
+
'marginMode': marginMode,
|
|
3345
|
+
'longLeverage': longLeverage,
|
|
3346
|
+
'shortLeverage': shortLeverage,
|
|
3347
|
+
};
|
|
3348
|
+
}
|
|
3349
|
+
/**
|
|
3350
|
+
* @method
|
|
3351
|
+
* @name poloniex#fetchPositionMode
|
|
3352
|
+
* @description fetchs the position mode, hedged or one way, hedged for binance is set identically for all linear markets or all inverse markets
|
|
3353
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/positions/position-mode-switch
|
|
3354
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
3355
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3356
|
+
* @returns {object} an object detailing whether the market is in hedged or one-way mode
|
|
3357
|
+
*/
|
|
3358
|
+
async fetchPositionMode(symbol = undefined, params = {}) {
|
|
3359
|
+
const response = await this.swapPrivateGetV3PositionMode(params);
|
|
3360
|
+
//
|
|
3361
|
+
// {
|
|
3362
|
+
// "code": "200",
|
|
3363
|
+
// "msg": "Success",
|
|
3364
|
+
// "data": {
|
|
3365
|
+
// "posMode": "ONE_WAY"
|
|
3366
|
+
// }
|
|
3367
|
+
// }
|
|
3368
|
+
//
|
|
3369
|
+
const data = this.safeDict(response, 'data', {});
|
|
3370
|
+
const posMode = this.safeString(data, 'posMode');
|
|
3371
|
+
const hedged = posMode === 'HEDGE';
|
|
3372
|
+
return {
|
|
3373
|
+
'info': response,
|
|
3374
|
+
'hedged': hedged,
|
|
3375
|
+
};
|
|
3376
|
+
}
|
|
3377
|
+
/**
|
|
3378
|
+
* @method
|
|
3379
|
+
* @name poloniex#setPositionMode
|
|
3380
|
+
* @description set hedged to true or false for a market
|
|
3381
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/positions/position-mode-switch
|
|
3382
|
+
* @param {bool} hedged set to true to use dualSidePosition
|
|
3383
|
+
* @param {string} symbol not used by binance setPositionMode ()
|
|
3384
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3385
|
+
* @returns {object} response from the exchange
|
|
3386
|
+
*/
|
|
3387
|
+
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
3388
|
+
const mode = hedged ? 'HEDGE' : 'ONE_WAY';
|
|
3389
|
+
const request = {
|
|
3390
|
+
'posMode': mode,
|
|
3391
|
+
};
|
|
3392
|
+
const response = await this.swapPrivatePostV3PositionMode(this.extend(request, params));
|
|
3393
|
+
//
|
|
3394
|
+
// {
|
|
3395
|
+
// "code": "200",
|
|
3396
|
+
// "msg": "Success",
|
|
3397
|
+
// "data": {}
|
|
3398
|
+
// }
|
|
3399
|
+
//
|
|
3400
|
+
return response;
|
|
3401
|
+
}
|
|
3402
|
+
/**
|
|
3403
|
+
* @method
|
|
3404
|
+
* @name poloniex#fetchPositions
|
|
3405
|
+
* @description fetch all open positions
|
|
3406
|
+
* @see https://api-docs.poloniex.com/v3/futures/api/positions/get-current-position
|
|
3407
|
+
* @param {string[]|undefined} symbols list of unified market symbols
|
|
3408
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3409
|
+
* @param {boolean} [params.standard] whether to fetch standard contract positions
|
|
3410
|
+
* @returns {object[]} a list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
3411
|
+
*/
|
|
3412
|
+
async fetchPositions(symbols = undefined, params = {}) {
|
|
3413
|
+
await this.loadMarkets();
|
|
3414
|
+
symbols = this.marketSymbols(symbols);
|
|
3415
|
+
const response = await this.swapPrivateGetV3TradePositionOpens(params);
|
|
3416
|
+
//
|
|
3417
|
+
// {
|
|
3418
|
+
// "code": "200",
|
|
3419
|
+
// "msg": "",
|
|
3420
|
+
// "data": [
|
|
3421
|
+
// {
|
|
3422
|
+
// "symbol": "BTC_USDT_PERP",
|
|
3423
|
+
// "posSide": "LONG",
|
|
3424
|
+
// "side": "BUY",
|
|
3425
|
+
// "mgnMode": "CROSS",
|
|
3426
|
+
// "openAvgPx": "94193.42",
|
|
3427
|
+
// "qty": "1",
|
|
3428
|
+
// "availQty": "1",
|
|
3429
|
+
// "lever": "20",
|
|
3430
|
+
// "adl": "0.3007",
|
|
3431
|
+
// "liqPx": "84918.201844064386317906",
|
|
3432
|
+
// "im": "4.7047795",
|
|
3433
|
+
// "mm": "0.56457354",
|
|
3434
|
+
// "upl": "-0.09783",
|
|
3435
|
+
// "uplRatio": "-0.0207",
|
|
3436
|
+
// "pnl": "0",
|
|
3437
|
+
// "markPx": "94095.59",
|
|
3438
|
+
// "mgnRatio": "0.0582",
|
|
3439
|
+
// "state": "NORMAL",
|
|
3440
|
+
// "cTime": "1740950344401",
|
|
3441
|
+
// "uTime": "1740950344401",
|
|
3442
|
+
// "mgn": "4.7047795",
|
|
3443
|
+
// "actType": "TRADING",
|
|
3444
|
+
// "maxWAmt": "0",
|
|
3445
|
+
// "tpTrgPx": "",
|
|
3446
|
+
// "slTrgPx": ""
|
|
3447
|
+
// }
|
|
3448
|
+
// ]
|
|
3449
|
+
// }
|
|
3450
|
+
//
|
|
3451
|
+
const positions = this.safeList(response, 'data', []);
|
|
3452
|
+
return this.parsePositions(positions, symbols);
|
|
3453
|
+
}
|
|
3454
|
+
parsePosition(position, market = undefined) {
|
|
3455
|
+
//
|
|
3456
|
+
// {
|
|
3457
|
+
// "symbol": "BTC_USDT_PERP",
|
|
3458
|
+
// "posSide": "LONG",
|
|
3459
|
+
// "side": "BUY",
|
|
3460
|
+
// "mgnMode": "CROSS",
|
|
3461
|
+
// "openAvgPx": "94193.42",
|
|
3462
|
+
// "qty": "1",
|
|
3463
|
+
// "availQty": "1",
|
|
3464
|
+
// "lever": "20",
|
|
3465
|
+
// "adl": "0.3007",
|
|
3466
|
+
// "liqPx": "84918.201844064386317906",
|
|
3467
|
+
// "im": "4.7047795",
|
|
3468
|
+
// "mm": "0.56457354",
|
|
3469
|
+
// "upl": "-0.09783",
|
|
3470
|
+
// "uplRatio": "-0.0207",
|
|
3471
|
+
// "pnl": "0",
|
|
3472
|
+
// "markPx": "94095.59",
|
|
3473
|
+
// "mgnRatio": "0.0582",
|
|
3474
|
+
// "state": "NORMAL",
|
|
3475
|
+
// "cTime": "1740950344401",
|
|
3476
|
+
// "uTime": "1740950344401",
|
|
3477
|
+
// "mgn": "4.7047795",
|
|
3478
|
+
// "actType": "TRADING",
|
|
3479
|
+
// "maxWAmt": "0",
|
|
3480
|
+
// "tpTrgPx": "",
|
|
3481
|
+
// "slTrgPx": ""
|
|
3482
|
+
// }
|
|
3483
|
+
//
|
|
3484
|
+
const marketId = this.safeString(position, 'symbol');
|
|
3485
|
+
market = this.safeMarket(marketId, market);
|
|
3486
|
+
const timestamp = this.safeInteger(position, 'cTime');
|
|
3487
|
+
const marginMode = this.safeStringLower(position, 'mgnMode');
|
|
3488
|
+
const leverage = this.safeString(position, 'lever');
|
|
3489
|
+
const initialMargin = this.safeString(position, 'im');
|
|
3490
|
+
const notional = Precise.stringMul(leverage, initialMargin);
|
|
3491
|
+
const qty = this.safeString(position, 'qty');
|
|
3492
|
+
const avgPrice = this.safeString(position, 'openAvgPx');
|
|
3493
|
+
const collateral = Precise.stringMul(qty, avgPrice);
|
|
3494
|
+
// todo: some more fields
|
|
3495
|
+
return this.safePosition({
|
|
3496
|
+
'info': position,
|
|
3497
|
+
'id': undefined,
|
|
3498
|
+
'symbol': market['symbol'],
|
|
3499
|
+
'notional': notional,
|
|
3500
|
+
'marginMode': marginMode,
|
|
3501
|
+
'liquidationPrice': this.safeNumber(position, 'liqPx'),
|
|
3502
|
+
'entryPrice': this.safeNumber(position, 'openAvgPx'),
|
|
3503
|
+
'unrealizedPnl': this.safeNumber(position, 'upl'),
|
|
3504
|
+
'percentage': undefined,
|
|
3505
|
+
'contracts': this.safeNumber(position, 'qty'),
|
|
3506
|
+
'contractSize': undefined,
|
|
3507
|
+
'markPrice': this.safeNumber(position, 'markPx'),
|
|
3508
|
+
'lastPrice': undefined,
|
|
3509
|
+
'side': this.safeStringLower(position, 'posSide'),
|
|
3510
|
+
'hedged': undefined,
|
|
3511
|
+
'timestamp': timestamp,
|
|
3512
|
+
'datetime': this.iso8601(timestamp),
|
|
3513
|
+
'lastUpdateTimestamp': undefined,
|
|
3514
|
+
'maintenanceMargin': this.safeNumber(position, 'mm'),
|
|
3515
|
+
'maintenanceMarginPercentage': undefined,
|
|
3516
|
+
'collateral': collateral,
|
|
3517
|
+
'initialMargin': initialMargin,
|
|
3518
|
+
'initialMarginPercentage': undefined,
|
|
3519
|
+
'leverage': parseInt(leverage),
|
|
3520
|
+
'marginRatio': this.safeNumber(position, 'mgnRatio'),
|
|
3521
|
+
'stopLossPrice': this.safeNumber(position, 'slTrgPx'),
|
|
3522
|
+
'takeProfitPrice': this.safeNumber(position, 'tpTrgPx'),
|
|
3523
|
+
});
|
|
3524
|
+
}
|
|
3525
|
+
async modifyMarginHelper(symbol, amount, type, params = {}) {
|
|
3526
|
+
await this.loadMarkets();
|
|
3527
|
+
const market = this.market(symbol);
|
|
3528
|
+
amount = this.amountToPrecision(symbol, amount);
|
|
3529
|
+
const request = {
|
|
3530
|
+
'symbol': market['id'],
|
|
3531
|
+
'amt': Precise.stringAbs(amount),
|
|
3532
|
+
'type': type.toUpperCase(), // 'ADD' or 'REDUCE'
|
|
3533
|
+
};
|
|
3534
|
+
// todo: hedged handling, tricky
|
|
3535
|
+
if (!('posMode' in params)) {
|
|
3536
|
+
request['posMode'] = 'BOTH';
|
|
3537
|
+
}
|
|
3538
|
+
const response = await this.swapPrivatePostV3TradePositionMargin(this.extend(request, params));
|
|
3539
|
+
//
|
|
3540
|
+
// {
|
|
3541
|
+
// "code": 200,
|
|
3542
|
+
// "data": {
|
|
3543
|
+
// "amt": "50",
|
|
3544
|
+
// "lever": "20",
|
|
3545
|
+
// "symbol": "DOT_USDT_PERP",
|
|
3546
|
+
// "posSide": "BOTH",
|
|
3547
|
+
// "type": "ADD"
|
|
3548
|
+
// },
|
|
3549
|
+
// "msg": "Success"
|
|
3550
|
+
// }
|
|
3551
|
+
//
|
|
3552
|
+
if (type === 'reduce') {
|
|
3553
|
+
amount = Precise.stringAbs(amount);
|
|
3554
|
+
}
|
|
3555
|
+
const data = this.safeDict(response, 'data');
|
|
3556
|
+
return this.parseMarginModification(data, market);
|
|
3557
|
+
}
|
|
3558
|
+
parseMarginModification(data, market = undefined) {
|
|
3559
|
+
const marketId = this.safeString(data, 'symbol');
|
|
3560
|
+
market = this.safeMarket(marketId, market);
|
|
3561
|
+
const rawType = this.safeString(data, 'type');
|
|
3562
|
+
const type = (rawType === 'ADD') ? 'add' : 'reduce';
|
|
3563
|
+
return {
|
|
3564
|
+
'info': data,
|
|
3565
|
+
'symbol': market['symbol'],
|
|
3566
|
+
'type': type,
|
|
3567
|
+
'marginMode': undefined,
|
|
3568
|
+
'amount': this.safeNumber(data, 'amt'),
|
|
3569
|
+
'total': undefined,
|
|
3570
|
+
'code': undefined,
|
|
3571
|
+
'status': 'ok',
|
|
3572
|
+
'timestamp': undefined,
|
|
3573
|
+
'datetime': undefined,
|
|
3574
|
+
};
|
|
3575
|
+
}
|
|
3576
|
+
/**
|
|
3577
|
+
* @method
|
|
3578
|
+
* @name poloniex#reduceMargin
|
|
3579
|
+
* @description remove margin from a position
|
|
3580
|
+
* @param {string} symbol unified market symbol
|
|
3581
|
+
* @param {float} amount the amount of margin to remove
|
|
3582
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3583
|
+
* @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=reduce-margin-structure}
|
|
3584
|
+
*/
|
|
3585
|
+
async reduceMargin(symbol, amount, params = {}) {
|
|
3586
|
+
return await this.modifyMarginHelper(symbol, -amount, 'reduce', params);
|
|
3587
|
+
}
|
|
3588
|
+
/**
|
|
3589
|
+
* @method
|
|
3590
|
+
* @name poloniex#addMargin
|
|
3591
|
+
* @description add margin
|
|
3592
|
+
* @param {string} symbol unified market symbol
|
|
3593
|
+
* @param {float} amount amount of margin to add
|
|
3594
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3595
|
+
* @returns {object} a [margin structure]{@link https://docs.ccxt.com/#/?id=add-margin-structure}
|
|
3596
|
+
*/
|
|
3597
|
+
async addMargin(symbol, amount, params = {}) {
|
|
3598
|
+
return await this.modifyMarginHelper(symbol, amount, 'add', params);
|
|
3599
|
+
}
|
|
2366
3600
|
nonce() {
|
|
2367
3601
|
return this.milliseconds();
|
|
2368
3602
|
}
|
|
2369
3603
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
2370
|
-
let url = this.urls['api']['
|
|
3604
|
+
let url = this.urls['api']['spot'];
|
|
3605
|
+
if (this.inArray(api, ['swapPublic', 'swapPrivate'])) {
|
|
3606
|
+
url = this.urls['api']['swap'];
|
|
3607
|
+
}
|
|
2371
3608
|
const query = this.omit(params, this.extractParams(path));
|
|
2372
3609
|
const implodedPath = this.implodeParams(path, params);
|
|
2373
|
-
if (api === 'public') {
|
|
3610
|
+
if (api === 'public' || api === 'swapPublic') {
|
|
2374
3611
|
url += '/' + implodedPath;
|
|
2375
3612
|
if (Object.keys(query).length) {
|
|
2376
3613
|
url += '?' + this.urlencode(query);
|