ccxt 4.4.98 → 4.4.99
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 +6 -5
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/alpaca.js +1 -1
- package/dist/cjs/src/abstract/apex.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/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/bittrade.js +1 -1
- package/dist/cjs/src/abstract/bitvavo.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/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/foxbit.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/hibachi.js +9 -0
- 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/hyperliquid.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/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/modetrade.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/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/alpaca.js +1 -1
- package/dist/cjs/src/apex.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/base/Precise.js +0 -6
- package/dist/cjs/src/base/errors.js +0 -6
- 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 +0 -1
- package/dist/cjs/src/base/functions/number.js +0 -6
- package/dist/cjs/src/base/functions/platform.js +0 -6
- package/dist/cjs/src/base/functions/rsa.js +0 -1
- package/dist/cjs/src/base/functions/string.js +0 -6
- package/dist/cjs/src/base/functions/throttle.js +1 -1
- package/dist/cjs/src/base/functions/time.js +0 -6
- package/dist/cjs/src/base/functions/totp.js +0 -1
- package/dist/cjs/src/base/functions/type.js +0 -6
- package/dist/cjs/src/base/functions.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +0 -6
- package/dist/cjs/src/base/ws/Client.js +0 -1
- 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 +0 -6
- 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 +9 -7
- 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 +1 -1
- 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/bitfinex.js +1 -1
- package/dist/cjs/src/bitflyer.js +1 -1
- package/dist/cjs/src/bitget.js +2135 -536
- package/dist/cjs/src/bithumb.js +1 -1
- package/dist/cjs/src/bitmart.js +1 -1
- package/dist/cjs/src/bitmex.js +1 -1
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitrue.js +1 -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/bittrade.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 +7 -2
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbaseadvanced.js +1 -1
- package/dist/cjs/src/coincatch.js +1 -1
- package/dist/cjs/src/coincheck.js +1 -1
- package/dist/cjs/src/coinex.js +68 -4
- 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 +0 -1
- package/dist/cjs/src/coinspot.js +1 -1
- package/dist/cjs/src/cryptocom.js +2 -2
- 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 +1 -1
- package/dist/cjs/src/derive.js +1 -1
- 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/foxbit.js +1 -1
- package/dist/cjs/src/gate.js +2 -3
- package/dist/cjs/src/gateio.js +1 -1
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hashkey.js +1 -1
- package/dist/cjs/src/hibachi.js +2136 -0
- package/dist/cjs/src/hitbtc.js +0 -1
- 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/hyperliquid.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 +1 -1
- package/dist/cjs/src/krakenfutures.js +1 -1
- package/dist/cjs/src/kucoin.js +1 -1
- package/dist/cjs/src/kucoinfutures.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 +1 -1
- package/dist/cjs/src/modetrade.js +1 -1
- package/dist/cjs/src/myokx.js +1 -1
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +35 -1
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okcoin.js +1 -1
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/okxus.js +1 -1
- 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 +1 -1
- package/dist/cjs/src/paymium.js +1 -1
- package/dist/cjs/src/poloniex.js +1 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/apex.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 +2 -5
- 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 +1 -1
- package/dist/cjs/src/pro/bitfinex.js +1 -1
- package/dist/cjs/src/pro/bitget.js +2 -2
- package/dist/cjs/src/pro/bithumb.js +1 -1
- package/dist/cjs/src/pro/bitmart.js +1 -1
- package/dist/cjs/src/pro/bitmex.js +2 -2
- package/dist/cjs/src/pro/bitrue.js +1 -1
- package/dist/cjs/src/pro/bitstamp.js +2 -2
- package/dist/cjs/src/pro/bitvavo.js +3 -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 +2 -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 +3 -3
- 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/exmo.js +1 -1
- package/dist/cjs/src/pro/gate.js +2 -2
- 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 +2 -2
- package/dist/cjs/src/pro/huobi.js +1 -1
- package/dist/cjs/src/pro/hyperliquid.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 +3 -2
- package/dist/cjs/src/pro/kucoin.js +2 -1
- package/dist/cjs/src/pro/kucoinfutures.js +2 -1
- package/dist/cjs/src/pro/lbank.js +0 -1
- 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 +4 -4
- package/dist/cjs/src/pro/okxus.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/probit.js +1 -1
- package/dist/cjs/src/pro/tradeogre.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 +0 -6
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/coders/address.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/anonymous.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/array.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/boolean.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/null.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/number.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/string.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/tuple.js +0 -1
- package/dist/cjs/src/static_dependencies/ethers/fragments.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
- package/dist/cjs/src/static_dependencies/ethers/interface.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/typed.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/base58.js +13 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/data.js +6 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/errors.js +9 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/events.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/index.js +7 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/maths.js +5 -1
- package/dist/cjs/src/static_dependencies/ethers/utils/properties.js +0 -6
- package/dist/cjs/src/static_dependencies/ethers/utils/utf8.js +8 -1
- package/dist/cjs/src/static_dependencies/fflake/browser.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1 -1
- package/dist/cjs/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
- 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 +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/messagepack/msgpack.js +0 -6
- 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 +0 -1
- 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 +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/_sha2.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/_u64.js +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/crypto.js +0 -6
- package/dist/cjs/src/static_dependencies/noble-hashes/hmac.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/md5.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha1.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha256.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha3.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/sha512.js +0 -1
- package/dist/cjs/src/static_dependencies/noble-hashes/utils.js +1 -1
- package/dist/cjs/src/static_dependencies/node-fetch/body.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/errors/abort-error.js +0 -1
- package/dist/cjs/src/static_dependencies/node-fetch/errors/base.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -1
- package/dist/cjs/src/static_dependencies/node-fetch/headers.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/index.js +7 -1
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +5 -1
- package/dist/cjs/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/is.js +0 -6
- package/dist/cjs/src/static_dependencies/node-fetch/utils/referrer.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/agent-base/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -1
- package/dist/cjs/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
- package/dist/cjs/src/static_dependencies/scure-base/index.js +0 -6
- 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 +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +0 -6
- 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 +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -1
- 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 +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +1 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +4 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +3 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/num.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +0 -1
- package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +1 -1
- package/dist/cjs/src/static_dependencies/watchable/src/unpromise.js +0 -6
- package/dist/cjs/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
- package/dist/cjs/src/timex.js +0 -1
- 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 +1 -1
- package/dist/cjs/src/woo.js +1 -1
- package/dist/cjs/src/woofipro.js +1 -1
- package/dist/cjs/src/xt.js +1 -1
- package/dist/cjs/src/yobit.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/dist/cjs/src/zonda.js +1 -1
- package/js/ccxt.d.ts +5 -2
- package/js/ccxt.js +4 -8
- package/js/src/abstract/alpaca.js +0 -6
- package/js/src/abstract/apex.js +0 -6
- package/js/src/abstract/ascendex.js +0 -6
- package/js/src/abstract/bequant.js +0 -6
- package/js/src/abstract/bigone.js +0 -6
- package/js/src/abstract/binance.js +0 -6
- package/js/src/abstract/binancecoinm.js +0 -6
- package/js/src/abstract/binanceus.js +0 -6
- package/js/src/abstract/binanceusdm.js +0 -6
- package/js/src/abstract/bingx.js +0 -6
- package/js/src/abstract/bit2c.js +0 -6
- package/js/src/abstract/bitbank.js +0 -6
- package/js/src/abstract/bitbns.js +0 -6
- package/js/src/abstract/bitfinex.js +0 -6
- package/js/src/abstract/bitflyer.js +0 -6
- package/js/src/abstract/bitget.d.ts +6 -0
- package/js/src/abstract/bitget.js +0 -6
- package/js/src/abstract/bithumb.js +0 -6
- package/js/src/abstract/bitmart.js +0 -6
- package/js/src/abstract/bitmex.js +0 -6
- package/js/src/abstract/bitopro.js +0 -6
- package/js/src/abstract/bitrue.js +0 -6
- package/js/src/abstract/bitso.js +0 -6
- package/js/src/abstract/bitstamp.js +0 -6
- package/js/src/abstract/bitteam.js +0 -6
- package/js/src/abstract/bittrade.js +0 -6
- package/js/src/abstract/bitvavo.js +0 -6
- package/js/src/abstract/blockchaincom.js +0 -6
- package/js/src/abstract/blofin.js +0 -6
- package/js/src/abstract/btcalpha.js +0 -6
- package/js/src/abstract/btcbox.js +0 -6
- package/js/src/abstract/btcmarkets.js +0 -6
- package/js/src/abstract/btcturk.js +0 -6
- package/js/src/abstract/bybit.js +0 -6
- package/js/src/abstract/cex.js +0 -6
- package/js/src/abstract/coinbase.js +0 -6
- package/js/src/abstract/coinbaseadvanced.js +0 -6
- package/js/src/abstract/coinbaseexchange.js +0 -6
- package/js/src/abstract/coinbaseinternational.js +0 -6
- package/js/src/abstract/coincatch.js +0 -6
- package/js/src/abstract/coincheck.js +0 -6
- package/js/src/abstract/coinex.js +0 -6
- package/js/src/abstract/coinmate.js +0 -6
- package/js/src/abstract/coinmetro.js +0 -6
- package/js/src/abstract/coinone.js +0 -6
- package/js/src/abstract/coinsph.js +0 -6
- package/js/src/abstract/coinspot.js +0 -6
- package/js/src/abstract/cryptocom.js +0 -6
- package/js/src/abstract/cryptomus.js +0 -6
- package/js/src/abstract/defx.js +0 -6
- package/js/src/abstract/delta.js +0 -6
- package/js/src/abstract/deribit.js +0 -6
- package/js/src/abstract/derive.js +0 -6
- package/js/src/abstract/digifinex.js +0 -6
- package/js/src/abstract/ellipx.js +0 -6
- package/js/src/abstract/exmo.js +0 -6
- package/js/src/abstract/fmfwio.js +0 -6
- package/js/src/abstract/foxbit.js +0 -6
- package/js/src/abstract/gate.js +0 -6
- package/js/src/abstract/gateio.js +0 -6
- package/js/src/abstract/gemini.js +0 -6
- package/js/src/abstract/hashkey.js +0 -6
- package/js/src/abstract/hibachi.d.ts +29 -0
- package/js/src/abstract/hibachi.js +5 -0
- package/js/src/abstract/hitbtc.js +0 -6
- package/js/src/abstract/hollaex.js +0 -6
- package/js/src/abstract/htx.js +0 -6
- package/js/src/abstract/huobi.js +0 -6
- package/js/src/abstract/hyperliquid.js +0 -6
- package/js/src/abstract/independentreserve.js +0 -6
- package/js/src/abstract/indodax.js +0 -6
- package/js/src/abstract/kraken.js +0 -6
- package/js/src/abstract/krakenfutures.js +0 -6
- package/js/src/abstract/kucoin.js +0 -6
- package/js/src/abstract/kucoinfutures.js +0 -6
- package/js/src/abstract/latoken.js +0 -6
- package/js/src/abstract/lbank.js +0 -6
- package/js/src/abstract/luno.js +0 -6
- package/js/src/abstract/mercado.js +0 -6
- package/js/src/abstract/mexc.js +0 -6
- package/js/src/abstract/modetrade.js +0 -6
- package/js/src/abstract/myokx.js +0 -6
- package/js/src/abstract/ndax.js +0 -6
- package/js/src/abstract/novadax.js +0 -6
- package/js/src/abstract/oceanex.js +0 -6
- package/js/src/abstract/okcoin.js +0 -6
- package/js/src/abstract/okx.js +0 -6
- package/js/src/abstract/okxus.js +0 -6
- package/js/src/abstract/onetrading.js +0 -6
- package/js/src/abstract/oxfun.js +0 -6
- package/js/src/abstract/p2b.js +0 -6
- package/js/src/abstract/paradex.js +0 -6
- package/js/src/abstract/paymium.js +0 -6
- package/js/src/abstract/phemex.js +0 -6
- package/js/src/abstract/poloniex.js +0 -6
- package/js/src/abstract/probit.js +0 -6
- package/js/src/abstract/timex.js +0 -6
- package/js/src/abstract/tokocrypto.js +0 -6
- package/js/src/abstract/tradeogre.js +0 -6
- package/js/src/abstract/upbit.js +0 -6
- package/js/src/abstract/vertex.js +0 -6
- package/js/src/abstract/wavesexchange.js +0 -6
- package/js/src/abstract/whitebit.js +0 -6
- package/js/src/abstract/woo.js +0 -6
- package/js/src/abstract/woofipro.js +0 -6
- package/js/src/abstract/xt.js +0 -6
- package/js/src/abstract/yobit.js +0 -6
- package/js/src/abstract/zaif.js +0 -6
- package/js/src/abstract/zonda.js +0 -6
- package/js/src/alpaca.js +0 -6
- package/js/src/apex.js +0 -6
- package/js/src/ascendex.js +0 -6
- package/js/src/base/Exchange.js +0 -6
- package/js/src/base/Precise.js +0 -6
- package/js/src/base/errorHierarchy.js +0 -6
- package/js/src/base/errors.js +0 -6
- package/js/src/base/functions/crypto.js +0 -6
- package/js/src/base/functions/encode.js +0 -6
- package/js/src/base/functions/generic.js +0 -6
- package/js/src/base/functions/misc.js +0 -6
- package/js/src/base/functions/number.js +0 -6
- package/js/src/base/functions/platform.js +0 -6
- package/js/src/base/functions/rsa.js +0 -6
- package/js/src/base/functions/string.js +0 -6
- package/js/src/base/functions/throttle.js +0 -6
- package/js/src/base/functions/time.js +0 -6
- package/js/src/base/functions/totp.js +0 -6
- package/js/src/base/functions/type.js +0 -6
- package/js/src/base/functions.js +0 -6
- package/js/src/base/types.js +0 -6
- package/js/src/base/ws/Cache.js +0 -6
- package/js/src/base/ws/Client.js +0 -6
- package/js/src/base/ws/Future.js +0 -6
- package/js/src/base/ws/OrderBook.js +0 -6
- package/js/src/base/ws/OrderBookSide.js +0 -6
- package/js/src/base/ws/WsClient.js +0 -6
- package/js/src/base/ws/functions.js +0 -6
- package/js/src/bequant.js +0 -6
- package/js/src/bigone.js +0 -6
- package/js/src/binance.js +8 -12
- package/js/src/binancecoinm.js +0 -6
- package/js/src/binanceus.js +0 -6
- package/js/src/binanceusdm.js +0 -6
- package/js/src/bingx.js +0 -6
- package/js/src/bit2c.js +0 -6
- package/js/src/bitbank.js +0 -6
- package/js/src/bitbns.js +0 -6
- package/js/src/bitfinex.js +0 -6
- package/js/src/bitflyer.js +0 -6
- package/js/src/bitget.d.ts +73 -7
- package/js/src/bitget.js +2135 -542
- package/js/src/bithumb.js +0 -6
- package/js/src/bitmart.js +0 -6
- package/js/src/bitmex.js +0 -6
- package/js/src/bitopro.js +0 -6
- package/js/src/bitrue.js +0 -6
- package/js/src/bitso.js +0 -6
- package/js/src/bitstamp.js +0 -6
- package/js/src/bitteam.js +0 -6
- package/js/src/bittrade.js +0 -6
- package/js/src/bitvavo.js +0 -6
- package/js/src/blockchaincom.js +0 -6
- package/js/src/blofin.js +0 -6
- package/js/src/btcalpha.js +0 -6
- package/js/src/btcbox.js +0 -6
- package/js/src/btcmarkets.js +0 -6
- package/js/src/btcturk.js +0 -6
- package/js/src/bybit.js +6 -7
- package/js/src/cex.js +0 -6
- package/js/src/coinbase.js +0 -6
- package/js/src/coinbaseadvanced.js +0 -6
- package/js/src/coinbaseexchange.js +0 -6
- package/js/src/coinbaseinternational.js +0 -6
- package/js/src/coincatch.js +0 -6
- package/js/src/coincheck.js +0 -6
- package/js/src/coinex.d.ts +10 -0
- package/js/src/coinex.js +67 -9
- package/js/src/coinmate.js +0 -6
- package/js/src/coinmetro.js +0 -6
- package/js/src/coinone.js +0 -6
- package/js/src/coinsph.js +0 -6
- package/js/src/coinspot.js +0 -6
- package/js/src/cryptocom.js +1 -7
- package/js/src/cryptomus.js +0 -6
- package/js/src/defx.js +0 -6
- package/js/src/delta.js +0 -6
- package/js/src/deribit.js +0 -6
- package/js/src/derive.js +0 -6
- package/js/src/digifinex.js +0 -6
- package/js/src/ellipx.js +0 -6
- package/js/src/exmo.js +0 -6
- package/js/src/fmfwio.js +0 -6
- package/js/src/foxbit.js +0 -6
- package/js/src/gate.js +1 -8
- package/js/src/gateio.js +0 -6
- package/js/src/gemini.js +0 -6
- package/js/src/hashkey.js +0 -6
- package/js/src/hibachi.d.ts +346 -0
- package/js/src/hibachi.js +2131 -0
- package/js/src/hitbtc.js +0 -6
- package/js/src/hollaex.js +0 -6
- package/js/src/htx.js +0 -6
- package/js/src/huobi.js +0 -6
- package/js/src/hyperliquid.js +0 -6
- package/js/src/independentreserve.js +0 -6
- package/js/src/indodax.js +0 -6
- package/js/src/kraken.js +0 -6
- package/js/src/krakenfutures.js +0 -6
- package/js/src/kucoin.js +0 -6
- package/js/src/kucoinfutures.js +0 -6
- package/js/src/latoken.js +0 -6
- package/js/src/lbank.js +0 -6
- package/js/src/luno.js +0 -6
- package/js/src/mercado.js +0 -6
- package/js/src/mexc.js +0 -6
- package/js/src/modetrade.js +0 -6
- package/js/src/myokx.js +0 -6
- package/js/src/ndax.js +0 -6
- package/js/src/novadax.js +34 -6
- package/js/src/oceanex.js +0 -6
- package/js/src/okcoin.js +0 -6
- package/js/src/okx.js +0 -6
- package/js/src/okxus.js +0 -6
- package/js/src/onetrading.js +0 -6
- package/js/src/oxfun.js +0 -6
- package/js/src/p2b.js +0 -6
- package/js/src/paradex.js +0 -6
- package/js/src/paymium.js +0 -6
- package/js/src/phemex.js +0 -6
- package/js/src/poloniex.js +0 -6
- package/js/src/pro/alpaca.d.ts +2 -2
- package/js/src/pro/alpaca.js +0 -6
- package/js/src/pro/apex.d.ts +2 -2
- package/js/src/pro/apex.js +0 -6
- package/js/src/pro/ascendex.d.ts +2 -2
- package/js/src/pro/ascendex.js +0 -6
- package/js/src/pro/bequant.js +0 -6
- package/js/src/pro/binance.d.ts +2 -2
- package/js/src/pro/binance.js +2 -11
- package/js/src/pro/binancecoinm.js +0 -6
- package/js/src/pro/binanceus.js +0 -6
- package/js/src/pro/binanceusdm.js +0 -6
- package/js/src/pro/bingx.js +0 -6
- package/js/src/pro/bitfinex.js +0 -6
- package/js/src/pro/bitget.d.ts +2 -2
- package/js/src/pro/bitget.js +1 -7
- package/js/src/pro/bithumb.d.ts +2 -2
- package/js/src/pro/bithumb.js +0 -6
- package/js/src/pro/bitmart.d.ts +2 -2
- package/js/src/pro/bitmart.js +0 -6
- package/js/src/pro/bitmex.d.ts +3 -3
- package/js/src/pro/bitmex.js +1 -7
- package/js/src/pro/bitopro.js +0 -6
- package/js/src/pro/bitrue.js +0 -6
- package/js/src/pro/bitstamp.d.ts +2 -2
- package/js/src/pro/bitstamp.js +1 -7
- package/js/src/pro/bittrade.d.ts +2 -2
- package/js/src/pro/bittrade.js +0 -6
- package/js/src/pro/bitvavo.d.ts +2 -2
- package/js/src/pro/bitvavo.js +2 -6
- package/js/src/pro/blockchaincom.js +0 -6
- package/js/src/pro/blofin.js +0 -6
- package/js/src/pro/bybit.d.ts +4 -4
- package/js/src/pro/bybit.js +0 -6
- package/js/src/pro/cex.d.ts +2 -2
- package/js/src/pro/cex.js +1 -6
- package/js/src/pro/coinbase.js +0 -6
- package/js/src/pro/coinbaseadvanced.js +0 -6
- package/js/src/pro/coinbaseexchange.d.ts +4 -4
- package/js/src/pro/coinbaseexchange.js +2 -8
- package/js/src/pro/coinbaseinternational.d.ts +2 -2
- package/js/src/pro/coinbaseinternational.js +0 -6
- package/js/src/pro/coincatch.d.ts +2 -2
- package/js/src/pro/coincatch.js +0 -6
- package/js/src/pro/coincheck.js +0 -6
- package/js/src/pro/coinex.js +0 -6
- package/js/src/pro/coinone.d.ts +2 -2
- package/js/src/pro/coinone.js +0 -6
- package/js/src/pro/cryptocom.d.ts +2 -2
- package/js/src/pro/cryptocom.js +0 -6
- package/js/src/pro/defx.js +0 -6
- package/js/src/pro/deribit.js +0 -6
- package/js/src/pro/derive.d.ts +2 -2
- package/js/src/pro/derive.js +0 -6
- package/js/src/pro/exmo.js +0 -6
- package/js/src/pro/gate.d.ts +3 -3
- package/js/src/pro/gate.js +1 -7
- package/js/src/pro/gateio.js +0 -6
- package/js/src/pro/gemini.js +0 -6
- package/js/src/pro/hashkey.js +0 -6
- package/js/src/pro/hitbtc.js +0 -6
- package/js/src/pro/hollaex.d.ts +2 -2
- package/js/src/pro/hollaex.js +0 -6
- package/js/src/pro/htx.d.ts +2 -2
- package/js/src/pro/htx.js +1 -7
- package/js/src/pro/huobi.js +0 -6
- package/js/src/pro/hyperliquid.d.ts +2 -2
- package/js/src/pro/hyperliquid.js +0 -6
- package/js/src/pro/independentreserve.js +0 -6
- package/js/src/pro/kraken.d.ts +2 -2
- package/js/src/pro/kraken.js +0 -6
- package/js/src/pro/krakenfutures.d.ts +3 -3
- package/js/src/pro/krakenfutures.js +2 -7
- package/js/src/pro/kucoin.d.ts +2 -2
- package/js/src/pro/kucoin.js +1 -6
- package/js/src/pro/kucoinfutures.d.ts +2 -2
- package/js/src/pro/kucoinfutures.js +1 -6
- package/js/src/pro/lbank.js +0 -6
- package/js/src/pro/luno.js +0 -6
- package/js/src/pro/mexc.js +0 -6
- package/js/src/pro/modetrade.d.ts +2 -2
- package/js/src/pro/modetrade.js +0 -6
- package/js/src/pro/myokx.js +0 -6
- package/js/src/pro/ndax.js +0 -6
- package/js/src/pro/okcoin.d.ts +2 -2
- package/js/src/pro/okcoin.js +0 -6
- package/js/src/pro/okx.d.ts +4 -4
- package/js/src/pro/okx.js +3 -9
- package/js/src/pro/okxus.js +0 -6
- package/js/src/pro/onetrading.d.ts +2 -2
- package/js/src/pro/onetrading.js +0 -6
- package/js/src/pro/oxfun.js +0 -6
- package/js/src/pro/p2b.d.ts +2 -2
- package/js/src/pro/p2b.js +0 -6
- package/js/src/pro/paradex.d.ts +2 -2
- package/js/src/pro/paradex.js +0 -6
- package/js/src/pro/phemex.js +0 -6
- package/js/src/pro/poloniex.d.ts +2 -2
- package/js/src/pro/poloniex.js +0 -6
- package/js/src/pro/probit.d.ts +2 -2
- package/js/src/pro/probit.js +0 -6
- package/js/src/pro/tradeogre.js +0 -6
- package/js/src/pro/upbit.js +0 -6
- package/js/src/pro/vertex.d.ts +2 -2
- package/js/src/pro/vertex.js +0 -6
- package/js/src/pro/whitebit.d.ts +2 -2
- package/js/src/pro/whitebit.js +0 -6
- package/js/src/pro/woo.d.ts +2 -2
- package/js/src/pro/woo.js +0 -6
- package/js/src/pro/woofipro.d.ts +2 -2
- package/js/src/pro/woofipro.js +0 -6
- package/js/src/pro/xt.js +0 -6
- package/js/src/probit.js +0 -6
- package/js/src/static_dependencies/ethers/abi-coder.js +0 -6
- package/js/src/static_dependencies/ethers/address/address.js +0 -6
- package/js/src/static_dependencies/ethers/address/checks.js +0 -6
- package/js/src/static_dependencies/ethers/address/contract-address.js +0 -6
- package/js/src/static_dependencies/ethers/address/index.js +0 -6
- package/js/src/static_dependencies/ethers/bytes32.js +0 -6
- package/js/src/static_dependencies/ethers/coders/abstract-coder.js +0 -6
- package/js/src/static_dependencies/ethers/coders/address.js +0 -6
- package/js/src/static_dependencies/ethers/coders/anonymous.js +0 -6
- package/js/src/static_dependencies/ethers/coders/array.js +0 -6
- package/js/src/static_dependencies/ethers/coders/boolean.js +0 -6
- package/js/src/static_dependencies/ethers/coders/bytes.js +0 -6
- package/js/src/static_dependencies/ethers/coders/fixed-bytes.js +0 -6
- package/js/src/static_dependencies/ethers/coders/null.js +0 -6
- package/js/src/static_dependencies/ethers/coders/number.js +0 -6
- package/js/src/static_dependencies/ethers/coders/string.js +0 -6
- package/js/src/static_dependencies/ethers/coders/tuple.js +0 -6
- package/js/src/static_dependencies/ethers/fragments.js +0 -6
- package/js/src/static_dependencies/ethers/hash/index.js +0 -6
- package/js/src/static_dependencies/ethers/hash/solidity.js +0 -6
- package/js/src/static_dependencies/ethers/hash/typed-data.js +0 -6
- package/js/src/static_dependencies/ethers/index.js +0 -6
- package/js/src/static_dependencies/ethers/interface.js +0 -6
- package/js/src/static_dependencies/ethers/typed.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base58.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base64-browser.js +0 -6
- package/js/src/static_dependencies/ethers/utils/base64.js +0 -6
- package/js/src/static_dependencies/ethers/utils/data.js +0 -6
- package/js/src/static_dependencies/ethers/utils/errors.js +0 -6
- package/js/src/static_dependencies/ethers/utils/events.js +0 -6
- package/js/src/static_dependencies/ethers/utils/fixednumber.js +0 -6
- package/js/src/static_dependencies/ethers/utils/index.js +0 -6
- package/js/src/static_dependencies/ethers/utils/maths.js +0 -6
- package/js/src/static_dependencies/ethers/utils/properties.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp-decode.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp-encode.js +0 -6
- package/js/src/static_dependencies/ethers/utils/rlp.js +0 -6
- package/js/src/static_dependencies/ethers/utils/units.js +0 -6
- package/js/src/static_dependencies/ethers/utils/utf8.js +0 -6
- package/js/src/static_dependencies/ethers/utils/uuid.js +0 -6
- package/js/src/static_dependencies/fflake/browser.js +0 -6
- package/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -6
- package/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -6
- package/js/src/static_dependencies/jsencrypt/index.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/asn1js/oids.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -6
- package/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -6
- package/js/src/static_dependencies/messagepack/msgpack.js +0 -6
- package/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/poseidon.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -6
- package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -6
- package/js/src/static_dependencies/noble-curves/bn.js +0 -6
- package/js/src/static_dependencies/noble-curves/ed25519.js +0 -6
- package/js/src/static_dependencies/noble-curves/ed448.js +0 -6
- package/js/src/static_dependencies/noble-curves/index.js +0 -6
- package/js/src/static_dependencies/noble-curves/jubjub.js +0 -6
- package/js/src/static_dependencies/noble-curves/p256.js +0 -6
- package/js/src/static_dependencies/noble-curves/p384.js +0 -6
- package/js/src/static_dependencies/noble-curves/p521.js +0 -6
- package/js/src/static_dependencies/noble-curves/pasta.js +0 -6
- package/js/src/static_dependencies/noble-curves/secp256k1.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_assert.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_blake2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_sha2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/_u64.js +0 -6
- package/js/src/static_dependencies/noble-hashes/argon2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake2b.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake2s.js +0 -6
- package/js/src/static_dependencies/noble-hashes/blake3.js +0 -6
- package/js/src/static_dependencies/noble-hashes/crypto.js +0 -6
- package/js/src/static_dependencies/noble-hashes/cryptoNode.js +0 -6
- package/js/src/static_dependencies/noble-hashes/eskdf.js +0 -6
- package/js/src/static_dependencies/noble-hashes/hkdf.js +0 -6
- package/js/src/static_dependencies/noble-hashes/hmac.js +0 -6
- package/js/src/static_dependencies/noble-hashes/index.js +0 -6
- package/js/src/static_dependencies/noble-hashes/md5.js +0 -6
- package/js/src/static_dependencies/noble-hashes/pbkdf2.js +0 -6
- package/js/src/static_dependencies/noble-hashes/ripemd160.js +0 -6
- package/js/src/static_dependencies/noble-hashes/scrypt.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha1.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha256.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha3-addons.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha3.js +0 -6
- package/js/src/static_dependencies/noble-hashes/sha512.js +0 -6
- package/js/src/static_dependencies/noble-hashes/utils.js +0 -6
- package/js/src/static_dependencies/node-fetch/body.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/base.js +0 -6
- package/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -6
- package/js/src/static_dependencies/node-fetch/headers.js +0 -6
- package/js/src/static_dependencies/node-fetch/index.js +0 -6
- package/js/src/static_dependencies/node-fetch/request.js +0 -6
- package/js/src/static_dependencies/node-fetch/response.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/is.js +0 -6
- package/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -6
- package/js/src/static_dependencies/proxies/agent-base/helpers.js +0 -6
- package/js/src/static_dependencies/proxies/agent-base/index.js +0 -6
- package/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -6
- package/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -6
- package/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -6
- package/js/src/static_dependencies/qs/formats.cjs +0 -6
- package/js/src/static_dependencies/qs/index.cjs +0 -6
- package/js/src/static_dependencies/qs/parse.cjs +0 -6
- package/js/src/static_dependencies/qs/stringify.cjs +0 -6
- package/js/src/static_dependencies/qs/utils.cjs +0 -6
- package/js/src/static_dependencies/scure-base/index.js +0 -6
- package/js/src/static_dependencies/scure-starknet/index.js +0 -6
- package/js/src/static_dependencies/starknet/constants.js +0 -6
- package/js/src/static_dependencies/starknet/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/cairoEnum.js +0 -6
- package/js/src/static_dependencies/starknet/types/calldata.js +0 -6
- package/js/src/static_dependencies/starknet/types/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +0 -6
- package/js/src/static_dependencies/starknet/types/lib/index.js +0 -6
- package/js/src/static_dependencies/starknet/types/typedData.js +0 -6
- package/js/src/static_dependencies/starknet/utils/address.js +0 -6
- package/js/src/static_dependencies/starknet/utils/assert.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +0 -6
- package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +0 -6
- package/js/src/static_dependencies/starknet/utils/calldata/validate.js +0 -6
- package/js/src/static_dependencies/starknet/utils/encode.js +0 -6
- package/js/src/static_dependencies/starknet/utils/hash/classHash.js +0 -6
- package/js/src/static_dependencies/starknet/utils/hash/index.js +0 -6
- package/js/src/static_dependencies/starknet/utils/merkle.js +0 -6
- package/js/src/static_dependencies/starknet/utils/num.js +0 -6
- package/js/src/static_dependencies/starknet/utils/selector.js +0 -6
- package/js/src/static_dependencies/starknet/utils/shortString.js +0 -6
- package/js/src/static_dependencies/starknet/utils/starknetId.js +0 -6
- package/js/src/static_dependencies/starknet/utils/typedData.js +0 -6
- package/js/src/static_dependencies/starknet/utils/uint256.js +0 -6
- package/js/src/static_dependencies/starknet/utils/url.js +0 -6
- package/js/src/static_dependencies/watchable/src/index.js +0 -6
- package/js/src/static_dependencies/watchable/src/types.js +0 -6
- package/js/src/static_dependencies/watchable/src/unpromise.js +0 -6
- package/js/src/static_dependencies/zklink/zklink-sdk-web.js +0 -6
- package/js/src/timex.js +0 -6
- package/js/src/tokocrypto.js +0 -6
- package/js/src/tradeogre.js +0 -6
- package/js/src/upbit.js +0 -6
- package/js/src/vertex.js +0 -6
- package/js/src/wavesexchange.js +0 -6
- package/js/src/whitebit.js +0 -6
- package/js/src/woo.js +0 -6
- package/js/src/woofipro.js +0 -6
- package/js/src/xt.js +0 -6
- package/js/src/yobit.js +0 -6
- package/js/src/zaif.js +0 -6
- package/js/src/zonda.js +0 -6
- package/package.json +2 -2
package/dist/cjs/src/bitget.js
CHANGED
|
@@ -6,7 +6,7 @@ var Precise = require('./base/Precise.js');
|
|
|
6
6
|
var number = require('./base/functions/number.js');
|
|
7
7
|
var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
|
|
8
8
|
|
|
9
|
-
//
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
11
|
/**
|
|
12
12
|
* @class bitget
|
|
@@ -805,6 +805,7 @@ class bitget extends bitget$1 {
|
|
|
805
805
|
'get': {
|
|
806
806
|
'v3/account/assets': 1,
|
|
807
807
|
'v3/account/settings': 1,
|
|
808
|
+
'v3/account/deposit-records': 2,
|
|
808
809
|
'v3/account/financial-records': 1,
|
|
809
810
|
'v3/account/repayable-coins': 2,
|
|
810
811
|
'v3/account/payment-coins': 2,
|
|
@@ -823,7 +824,9 @@ class bitget extends bitget$1 {
|
|
|
823
824
|
'v3/position/history-position': 1,
|
|
824
825
|
'v3/trade/order-info': 1,
|
|
825
826
|
'v3/trade/unfilled-orders': 1,
|
|
827
|
+
'v3/trade/unfilled-strategy-orders': 1,
|
|
826
828
|
'v3/trade/history-orders': 1,
|
|
829
|
+
'v3/trade/history-strategy-orders': 1,
|
|
827
830
|
'v3/trade/fills': 1,
|
|
828
831
|
'v3/user/sub-list': 2,
|
|
829
832
|
'v3/user/sub-api-list': 2,
|
|
@@ -837,8 +840,11 @@ class bitget extends bitget$1 {
|
|
|
837
840
|
'v3/account/max-open-available': 4,
|
|
838
841
|
'v3/ins-loan/bind-uid': 6.6667,
|
|
839
842
|
'v3/trade/place-order': 2,
|
|
843
|
+
'v3/trade/place-strategy-order': 2,
|
|
840
844
|
'v3/trade/modify-order': 2,
|
|
845
|
+
'v3/trade/modify-strategy-order': 2,
|
|
841
846
|
'v3/trade/cancel-order': 2,
|
|
847
|
+
'v3/trade/cancel-strategy-order': 2,
|
|
842
848
|
'v3/trade/place-batch': 4,
|
|
843
849
|
'v3/trade/batch-modify-order': 2,
|
|
844
850
|
'v3/trade/cancel-batch': 4,
|
|
@@ -884,6 +890,7 @@ class bitget extends bitget$1 {
|
|
|
884
890
|
// '0': ExchangeError, // 200 successful,when the order placement / cancellation / operation is successful
|
|
885
891
|
'4001': errors.ExchangeError,
|
|
886
892
|
'4002': errors.ExchangeError,
|
|
893
|
+
'40020': errors.BadRequest,
|
|
887
894
|
// --------------------------------------------------------
|
|
888
895
|
'30001': errors.AuthenticationError,
|
|
889
896
|
'30002': errors.AuthenticationError,
|
|
@@ -1428,6 +1435,19 @@ class bitget extends bitget$1 {
|
|
|
1428
1435
|
'1w': '1Wutc',
|
|
1429
1436
|
'1M': '1Mutc',
|
|
1430
1437
|
},
|
|
1438
|
+
'uta': {
|
|
1439
|
+
'1m': '1m',
|
|
1440
|
+
'3m': '3m',
|
|
1441
|
+
'5m': '5m',
|
|
1442
|
+
'15m': '15m',
|
|
1443
|
+
'30m': '30m',
|
|
1444
|
+
'1h': '1H',
|
|
1445
|
+
'2h': '2H',
|
|
1446
|
+
'4h': '4H',
|
|
1447
|
+
'6h': '6H',
|
|
1448
|
+
'12h': '12H',
|
|
1449
|
+
'1d': '1D',
|
|
1450
|
+
},
|
|
1431
1451
|
},
|
|
1432
1452
|
'fetchMarkets': {
|
|
1433
1453
|
'types': ['spot', 'swap'], // there is future markets but they use the same endpoints as swap
|
|
@@ -1517,7 +1537,6 @@ class bitget extends bitget$1 {
|
|
|
1517
1537
|
'ERC20': 'ERC20',
|
|
1518
1538
|
'BEP20': 'BSC',
|
|
1519
1539
|
// 'BEP20': 'BEP20', // different for BEP20
|
|
1520
|
-
'BSC': 'BEP20',
|
|
1521
1540
|
'ATOM': 'ATOM',
|
|
1522
1541
|
'ACA': 'AcalaToken',
|
|
1523
1542
|
'APT': 'Aptos',
|
|
@@ -1771,10 +1790,20 @@ class bitget extends bitget$1 {
|
|
|
1771
1790
|
defaultProductType = (subType === 'linear') ? 'USDT-FUTURES' : 'COIN-FUTURES';
|
|
1772
1791
|
// }
|
|
1773
1792
|
}
|
|
1774
|
-
let productType = this.
|
|
1793
|
+
let productType = this.safeString2(params, 'productType', 'category', defaultProductType);
|
|
1775
1794
|
if ((productType === undefined) && (market !== undefined)) {
|
|
1776
1795
|
const settle = market['settle'];
|
|
1777
|
-
if (
|
|
1796
|
+
if (market['spot']) {
|
|
1797
|
+
let marginMode = undefined;
|
|
1798
|
+
[marginMode, params] = this.handleMarginModeAndParams('handleProductTypeAndParams', params);
|
|
1799
|
+
if (marginMode !== undefined) {
|
|
1800
|
+
productType = 'MARGIN';
|
|
1801
|
+
}
|
|
1802
|
+
else {
|
|
1803
|
+
productType = 'SPOT';
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
else if (settle === 'USDT') {
|
|
1778
1807
|
productType = 'USDT-FUTURES';
|
|
1779
1808
|
}
|
|
1780
1809
|
else if (settle === 'USDC') {
|
|
@@ -1794,9 +1823,9 @@ class bitget extends bitget$1 {
|
|
|
1794
1823
|
}
|
|
1795
1824
|
}
|
|
1796
1825
|
if (productType === undefined) {
|
|
1797
|
-
throw new errors.ArgumentsRequired(this.id + ' requires a productType param, one of "USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES", "SUSDT-FUTURES", "SUSDC-FUTURES"
|
|
1826
|
+
throw new errors.ArgumentsRequired(this.id + ' requires a productType param, one of "USDT-FUTURES", "USDC-FUTURES", "COIN-FUTURES", "SUSDT-FUTURES", "SUSDC-FUTURES", "SCOIN-FUTURES" or for uta only "SPOT"');
|
|
1798
1827
|
}
|
|
1799
|
-
params = this.omit(params, 'productType');
|
|
1828
|
+
params = this.omit(params, ['productType', 'category']);
|
|
1800
1829
|
return [productType, params];
|
|
1801
1830
|
}
|
|
1802
1831
|
/**
|
|
@@ -1829,9 +1858,9 @@ class bitget extends bitget$1 {
|
|
|
1829
1858
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Symbols
|
|
1830
1859
|
* @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbols-Contracts
|
|
1831
1860
|
* @see https://www.bitget.com/api-doc/margin/common/support-currencies
|
|
1832
|
-
* @see https://www.bitget.
|
|
1861
|
+
* @see https://www.bitget.com/api-doc/uta/public/Instruments
|
|
1833
1862
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1834
|
-
* @param {
|
|
1863
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
1835
1864
|
* @returns {object[]} an array of objects representing market data
|
|
1836
1865
|
*/
|
|
1837
1866
|
async fetchMarkets(params = {}) {
|
|
@@ -2477,11 +2506,13 @@ class bitget extends bitget$1 {
|
|
|
2477
2506
|
* @see https://www.bitget.com/api-doc/contract/position/Get-Query-Position-Lever
|
|
2478
2507
|
* @see https://www.bitget.com/api-doc/margin/cross/account/Cross-Tier-Data
|
|
2479
2508
|
* @see https://www.bitget.com/api-doc/margin/isolated/account/Isolated-Tier-Data
|
|
2509
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Position-Tier-Data
|
|
2480
2510
|
* @param {string} symbol unified market symbol
|
|
2481
2511
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2482
2512
|
* @param {string} [params.marginMode] for spot margin 'cross' or 'isolated', default is 'isolated'
|
|
2483
2513
|
* @param {string} [params.code] required for cross spot margin
|
|
2484
|
-
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
2514
|
+
* @param {string} [params.productType] *contract and uta only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
2515
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
2485
2516
|
* @returns {object} a [leverage tiers structure]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}
|
|
2486
2517
|
*/
|
|
2487
2518
|
async fetchMarketLeverageTiers(symbol, params = {}) {
|
|
@@ -2490,10 +2521,22 @@ class bitget extends bitget$1 {
|
|
|
2490
2521
|
const request = {};
|
|
2491
2522
|
let response = undefined;
|
|
2492
2523
|
let marginMode = undefined;
|
|
2524
|
+
let productType = undefined;
|
|
2525
|
+
let uta = undefined;
|
|
2493
2526
|
[marginMode, params] = this.handleMarginModeAndParams('fetchMarketLeverageTiers', params, 'isolated');
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2527
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
2528
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchMarketLeverageTiers', 'uta', false);
|
|
2529
|
+
if (uta) {
|
|
2530
|
+
if (productType === 'SPOT') {
|
|
2531
|
+
if (marginMode !== undefined) {
|
|
2532
|
+
productType = 'MARGIN';
|
|
2533
|
+
}
|
|
2534
|
+
}
|
|
2535
|
+
request['symbol'] = market['id'];
|
|
2536
|
+
request['category'] = productType;
|
|
2537
|
+
response = await this.publicUtaGetV3MarketPositionTier(this.extend(request, params));
|
|
2538
|
+
}
|
|
2539
|
+
else if ((market['swap']) || (market['future'])) {
|
|
2497
2540
|
request['productType'] = productType;
|
|
2498
2541
|
request['symbol'] = market['id'];
|
|
2499
2542
|
response = await this.publicMixGetV2MixMarketQueryPositionLever(this.extend(request, params));
|
|
@@ -2572,6 +2615,23 @@ class bitget extends bitget$1 {
|
|
|
2572
2615
|
// ]
|
|
2573
2616
|
// }
|
|
2574
2617
|
//
|
|
2618
|
+
// uta
|
|
2619
|
+
//
|
|
2620
|
+
// {
|
|
2621
|
+
// "code": "00000",
|
|
2622
|
+
// "msg": "success",
|
|
2623
|
+
// "requestTime": 1752735673127,
|
|
2624
|
+
// "data": [
|
|
2625
|
+
// {
|
|
2626
|
+
// "tier": "1",
|
|
2627
|
+
// "minTierValue": "0",
|
|
2628
|
+
// "maxTierValue": "150000",
|
|
2629
|
+
// "leverage": "125",
|
|
2630
|
+
// "mmr": "0.004"
|
|
2631
|
+
// },
|
|
2632
|
+
// ]
|
|
2633
|
+
// }
|
|
2634
|
+
//
|
|
2575
2635
|
const result = this.safeValue(response, 'data', []);
|
|
2576
2636
|
return this.parseMarketLeverageTiers(result, market);
|
|
2577
2637
|
}
|
|
@@ -2612,15 +2672,25 @@ class bitget extends bitget$1 {
|
|
|
2612
2672
|
// "maintainMarginRate": "0.1"
|
|
2613
2673
|
// }
|
|
2614
2674
|
//
|
|
2675
|
+
// uta
|
|
2676
|
+
//
|
|
2677
|
+
// {
|
|
2678
|
+
// "tier": "1",
|
|
2679
|
+
// "minTierValue": "0",
|
|
2680
|
+
// "maxTierValue": "150000",
|
|
2681
|
+
// "leverage": "125",
|
|
2682
|
+
// "mmr": "0.004"
|
|
2683
|
+
// }
|
|
2684
|
+
//
|
|
2615
2685
|
const tiers = [];
|
|
2616
2686
|
let minNotional = 0;
|
|
2617
2687
|
for (let i = 0; i < info.length; i++) {
|
|
2618
2688
|
const item = info[i];
|
|
2619
|
-
const minimumNotional = this.
|
|
2689
|
+
const minimumNotional = this.safeNumber2(item, 'startUnit', 'minTierValue');
|
|
2620
2690
|
if (minimumNotional !== undefined) {
|
|
2621
2691
|
minNotional = minimumNotional;
|
|
2622
2692
|
}
|
|
2623
|
-
const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount']);
|
|
2693
|
+
const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount', 'maxTierValue']);
|
|
2624
2694
|
const marginCurrency = this.safeString2(item, 'coin', 'baseCoin');
|
|
2625
2695
|
const currencyId = (marginCurrency !== undefined) ? marginCurrency : market['base'];
|
|
2626
2696
|
const marketId = this.safeString(item, 'symbol');
|
|
@@ -2630,7 +2700,7 @@ class bitget extends bitget$1 {
|
|
|
2630
2700
|
'currency': this.safeCurrencyCode(currencyId),
|
|
2631
2701
|
'minNotional': minNotional,
|
|
2632
2702
|
'maxNotional': maxNotional,
|
|
2633
|
-
'maintenanceMarginRate': this.
|
|
2703
|
+
'maintenanceMarginRate': this.safeNumberN(item, ['keepMarginRate', 'maintainMarginRate', 'mmr']),
|
|
2634
2704
|
'maxLeverage': this.safeNumber(item, 'leverage'),
|
|
2635
2705
|
'info': item,
|
|
2636
2706
|
});
|
|
@@ -2989,9 +3059,11 @@ class bitget extends bitget$1 {
|
|
|
2989
3059
|
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
2990
3060
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Orderbook
|
|
2991
3061
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Merge-Depth
|
|
3062
|
+
* @see https://www.bitget.com/api-doc/uta/public/OrderBook
|
|
2992
3063
|
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
2993
3064
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
2994
3065
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3066
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
2995
3067
|
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
2996
3068
|
*/
|
|
2997
3069
|
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
@@ -3003,13 +3075,19 @@ class bitget extends bitget$1 {
|
|
|
3003
3075
|
if (limit !== undefined) {
|
|
3004
3076
|
request['limit'] = limit;
|
|
3005
3077
|
}
|
|
3078
|
+
let productType = undefined;
|
|
3079
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3006
3080
|
let response = undefined;
|
|
3007
|
-
|
|
3081
|
+
let uta = undefined;
|
|
3082
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'uta', false);
|
|
3083
|
+
if (uta) {
|
|
3084
|
+
request['category'] = productType;
|
|
3085
|
+
response = await this.publicUtaGetV3MarketOrderbook(this.extend(request, params));
|
|
3086
|
+
}
|
|
3087
|
+
else if (market['spot']) {
|
|
3008
3088
|
response = await this.publicSpotGetV2SpotMarketOrderbook(this.extend(request, params));
|
|
3009
3089
|
}
|
|
3010
3090
|
else {
|
|
3011
|
-
let productType = undefined;
|
|
3012
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3013
3091
|
request['productType'] = productType;
|
|
3014
3092
|
response = await this.publicMixGetV2MixMarketMergeDepth(this.extend(request, params));
|
|
3015
3093
|
}
|
|
@@ -3025,9 +3103,24 @@ class bitget extends bitget$1 {
|
|
|
3025
3103
|
// }
|
|
3026
3104
|
// }
|
|
3027
3105
|
//
|
|
3106
|
+
// uta
|
|
3107
|
+
//
|
|
3108
|
+
// {
|
|
3109
|
+
// "code": "00000",
|
|
3110
|
+
// "msg": "success",
|
|
3111
|
+
// "requestTime": 1750329437753,
|
|
3112
|
+
// "data": {
|
|
3113
|
+
// "a": [ [ 104992.60, 0.018411 ] ],
|
|
3114
|
+
// "b":[ [104927.40, 0.229914 ] ],
|
|
3115
|
+
// "ts": "1750329437763"
|
|
3116
|
+
// }
|
|
3117
|
+
// }
|
|
3118
|
+
//
|
|
3028
3119
|
const data = this.safeValue(response, 'data', {});
|
|
3120
|
+
const bidsKey = uta ? 'b' : 'bids';
|
|
3121
|
+
const asksKey = uta ? 'a' : 'asks';
|
|
3029
3122
|
const timestamp = this.safeInteger(data, 'ts');
|
|
3030
|
-
return this.parseOrderBook(data, market['symbol'], timestamp);
|
|
3123
|
+
return this.parseOrderBook(data, market['symbol'], timestamp, bidsKey, asksKey);
|
|
3031
3124
|
}
|
|
3032
3125
|
parseTicker(ticker, market = undefined) {
|
|
3033
3126
|
//
|
|
@@ -3039,7 +3132,7 @@ class bitget extends bitget$1 {
|
|
|
3039
3132
|
// "ts": "1695793390482"
|
|
3040
3133
|
// }
|
|
3041
3134
|
//
|
|
3042
|
-
// spot
|
|
3135
|
+
// spot
|
|
3043
3136
|
//
|
|
3044
3137
|
// {
|
|
3045
3138
|
// "open": "37202.46",
|
|
@@ -3060,92 +3153,118 @@ class bitget extends bitget$1 {
|
|
|
3060
3153
|
// "change24h": "0.00321"
|
|
3061
3154
|
// }
|
|
3062
3155
|
//
|
|
3063
|
-
// swap and future
|
|
3156
|
+
// swap and future
|
|
3064
3157
|
//
|
|
3065
3158
|
// {
|
|
3066
3159
|
// "symbol": "BTCUSDT",
|
|
3067
|
-
// "lastPr": "
|
|
3068
|
-
// "askPr": "
|
|
3069
|
-
// "bidPr": "
|
|
3070
|
-
// "bidSz": "
|
|
3071
|
-
// "askSz": "
|
|
3072
|
-
// "high24h": "
|
|
3073
|
-
// "low24h": "
|
|
3074
|
-
// "ts": "
|
|
3075
|
-
// "change24h": "0.
|
|
3076
|
-
// "baseVolume": "
|
|
3077
|
-
// "quoteVolume": "
|
|
3078
|
-
// "usdtVolume": "
|
|
3079
|
-
// "openUtc": "
|
|
3080
|
-
// "changeUtc24h": "0.
|
|
3081
|
-
// "indexPrice": "
|
|
3082
|
-
// "fundingRate": "0.
|
|
3083
|
-
// "holdingAmount": "
|
|
3160
|
+
// "lastPr": "104823.8",
|
|
3161
|
+
// "askPr": "104823.8",
|
|
3162
|
+
// "bidPr": "104823.5",
|
|
3163
|
+
// "bidSz": "0.703",
|
|
3164
|
+
// "askSz": "13.894",
|
|
3165
|
+
// "high24h": "105289.3",
|
|
3166
|
+
// "low24h": "103447.9",
|
|
3167
|
+
// "ts": "1750332210370",
|
|
3168
|
+
// "change24h": "0.00471",
|
|
3169
|
+
// "baseVolume": "79089.5675",
|
|
3170
|
+
// "quoteVolume": "8274870921.80485",
|
|
3171
|
+
// "usdtVolume": "8274870921.80485",
|
|
3172
|
+
// "openUtc": "104833",
|
|
3173
|
+
// "changeUtc24h": "-0.00009",
|
|
3174
|
+
// "indexPrice": "104881.953125",
|
|
3175
|
+
// "fundingRate": "-0.000014",
|
|
3176
|
+
// "holdingAmount": "7452.6421",
|
|
3084
3177
|
// "deliveryStartTime": null,
|
|
3085
3178
|
// "deliveryTime": null,
|
|
3086
3179
|
// "deliveryStatus": "",
|
|
3087
|
-
// "open24h": "
|
|
3180
|
+
// "open24h": "104332.3",
|
|
3181
|
+
// "markPrice": "104824.2"
|
|
3182
|
+
// }
|
|
3183
|
+
//
|
|
3184
|
+
// spot uta
|
|
3185
|
+
//
|
|
3186
|
+
// {
|
|
3187
|
+
// "category": "SPOT",
|
|
3188
|
+
// "symbol": "BTCUSDT",
|
|
3189
|
+
// "ts": "1750330651972",
|
|
3190
|
+
// "lastPrice": "104900.2",
|
|
3191
|
+
// "openPrice24h": "104321.2",
|
|
3192
|
+
// "highPrice24h": "107956.8",
|
|
3193
|
+
// "lowPrice24h": "103600.1",
|
|
3194
|
+
// "ask1Price": "104945.8",
|
|
3195
|
+
// "bid1Price": "104880.6",
|
|
3196
|
+
// "bid1Size": "0.266534",
|
|
3197
|
+
// "ask1Size": "0.014001",
|
|
3198
|
+
// "price24hPcnt": "0.00555",
|
|
3199
|
+
// "volume24h": "355.941109",
|
|
3200
|
+
// "turnover24h": "37302936.008134"
|
|
3088
3201
|
// }
|
|
3089
3202
|
//
|
|
3090
|
-
// swap and future
|
|
3203
|
+
// swap and future uta
|
|
3091
3204
|
//
|
|
3092
3205
|
// {
|
|
3093
|
-
// "
|
|
3094
|
-
// "symbol": "
|
|
3095
|
-
// "
|
|
3096
|
-
// "
|
|
3097
|
-
// "
|
|
3098
|
-
// "
|
|
3099
|
-
// "
|
|
3100
|
-
// "
|
|
3101
|
-
// "
|
|
3102
|
-
// "
|
|
3103
|
-
// "
|
|
3104
|
-
// "
|
|
3105
|
-
// "
|
|
3106
|
-
// "
|
|
3107
|
-
// "
|
|
3108
|
-
// "
|
|
3206
|
+
// "category": "USDT-FUTURES",
|
|
3207
|
+
// "symbol": "BTCUSDT",
|
|
3208
|
+
// "ts": "1750332730472",
|
|
3209
|
+
// "lastPrice": "104738",
|
|
3210
|
+
// "openPrice24h": "104374",
|
|
3211
|
+
// "highPrice24h": "105289.3",
|
|
3212
|
+
// "lowPrice24h": "103447.9",
|
|
3213
|
+
// "ask1Price": "104738",
|
|
3214
|
+
// "bid1Price": "104737.7",
|
|
3215
|
+
// "bid1Size": "2.036",
|
|
3216
|
+
// "ask1Size": "8.094",
|
|
3217
|
+
// "price24hPcnt": "0.00349",
|
|
3218
|
+
// "volume24h": "79101.6477",
|
|
3219
|
+
// "turnover24h": "8276293391.45973",
|
|
3220
|
+
// "indexPrice": "104785.956168",
|
|
3221
|
+
// "markPrice": "104738",
|
|
3222
|
+
// "fundingRate": "-0.000007",
|
|
3223
|
+
// "openInterest": "7465.5938",
|
|
3224
|
+
// "deliveryStartTime": "",
|
|
3225
|
+
// "deliveryTime": "",
|
|
3226
|
+
// "deliveryStatus": ""
|
|
3109
3227
|
// }
|
|
3110
3228
|
//
|
|
3111
3229
|
const marketId = this.safeString(ticker, 'symbol');
|
|
3112
|
-
const close = this.
|
|
3230
|
+
const close = this.safeString2(ticker, 'lastPr', 'lastPrice');
|
|
3113
3231
|
const timestamp = this.safeIntegerOmitZero(ticker, 'ts'); // exchange bitget provided 0
|
|
3114
3232
|
const change = this.safeString(ticker, 'change24h');
|
|
3115
|
-
const
|
|
3116
|
-
const
|
|
3117
|
-
let
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
symbol = this.safeSymbol(marketId, market, undefined, 'contract');
|
|
3121
|
-
openValue = open24;
|
|
3233
|
+
const category = this.safeString(ticker, 'category');
|
|
3234
|
+
const markPrice = this.safeString(ticker, 'markPrice');
|
|
3235
|
+
let marketType;
|
|
3236
|
+
if ((markPrice !== undefined) && (category !== 'SPOT')) {
|
|
3237
|
+
marketType = 'contract';
|
|
3122
3238
|
}
|
|
3123
3239
|
else {
|
|
3124
|
-
|
|
3125
|
-
|
|
3240
|
+
marketType = 'spot';
|
|
3241
|
+
}
|
|
3242
|
+
let percentage = this.safeString(ticker, 'price24hPcnt');
|
|
3243
|
+
if (percentage === undefined) {
|
|
3244
|
+
percentage = Precise["default"].stringMul(change, '100');
|
|
3126
3245
|
}
|
|
3127
3246
|
return this.safeTicker({
|
|
3128
|
-
'symbol':
|
|
3247
|
+
'symbol': this.safeSymbol(marketId, market, undefined, marketType),
|
|
3129
3248
|
'timestamp': timestamp,
|
|
3130
3249
|
'datetime': this.iso8601(timestamp),
|
|
3131
|
-
'high': this.
|
|
3132
|
-
'low': this.
|
|
3133
|
-
'bid': this.
|
|
3134
|
-
'bidVolume': this.
|
|
3135
|
-
'ask': this.
|
|
3136
|
-
'askVolume': this.
|
|
3250
|
+
'high': this.safeString2(ticker, 'high24h', 'highPrice24h'),
|
|
3251
|
+
'low': this.safeString2(ticker, 'low24h', 'lowPrice24h'),
|
|
3252
|
+
'bid': this.safeString2(ticker, 'bidPr', 'bid1Price'),
|
|
3253
|
+
'bidVolume': this.safeString2(ticker, 'bidSz', 'bid1Size'),
|
|
3254
|
+
'ask': this.safeString2(ticker, 'askPr', 'ask1Price'),
|
|
3255
|
+
'askVolume': this.safeString2(ticker, 'askSz', 'ask1Size'),
|
|
3137
3256
|
'vwap': undefined,
|
|
3138
|
-
'open':
|
|
3257
|
+
'open': this.safeStringN(ticker, ['open', 'open24h', 'openPrice24h']),
|
|
3139
3258
|
'close': close,
|
|
3140
3259
|
'last': close,
|
|
3141
3260
|
'previousClose': undefined,
|
|
3142
3261
|
'change': change,
|
|
3143
|
-
'percentage':
|
|
3262
|
+
'percentage': percentage,
|
|
3144
3263
|
'average': undefined,
|
|
3145
|
-
'baseVolume': this.
|
|
3146
|
-
'quoteVolume': this.
|
|
3264
|
+
'baseVolume': this.safeString2(ticker, 'baseVolume', 'volume24h'),
|
|
3265
|
+
'quoteVolume': this.safeString2(ticker, 'quoteVolume', 'turnover24h'),
|
|
3147
3266
|
'indexPrice': this.safeString(ticker, 'indexPrice'),
|
|
3148
|
-
'markPrice':
|
|
3267
|
+
'markPrice': markPrice,
|
|
3149
3268
|
'info': ticker,
|
|
3150
3269
|
}, market);
|
|
3151
3270
|
}
|
|
@@ -3155,8 +3274,10 @@ class bitget extends bitget$1 {
|
|
|
3155
3274
|
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
3156
3275
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
|
|
3157
3276
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Ticker
|
|
3277
|
+
* @see https://www.bitget.com/api-doc/uta/public/Tickers
|
|
3158
3278
|
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
3159
3279
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3280
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3160
3281
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
3161
3282
|
*/
|
|
3162
3283
|
async fetchTicker(symbol, params = {}) {
|
|
@@ -3165,13 +3286,19 @@ class bitget extends bitget$1 {
|
|
|
3165
3286
|
const request = {
|
|
3166
3287
|
'symbol': market['id'],
|
|
3167
3288
|
};
|
|
3289
|
+
let productType = undefined;
|
|
3290
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3168
3291
|
let response = undefined;
|
|
3169
|
-
|
|
3292
|
+
let uta = undefined;
|
|
3293
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTicker', 'uta', false);
|
|
3294
|
+
if (uta) {
|
|
3295
|
+
request['category'] = productType;
|
|
3296
|
+
response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
|
|
3297
|
+
}
|
|
3298
|
+
else if (market['spot']) {
|
|
3170
3299
|
response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
|
|
3171
3300
|
}
|
|
3172
3301
|
else {
|
|
3173
|
-
let productType = undefined;
|
|
3174
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3175
3302
|
request['productType'] = productType;
|
|
3176
3303
|
response = await this.publicMixGetV2MixMarketTicker(this.extend(request, params));
|
|
3177
3304
|
}
|
|
@@ -3206,34 +3333,94 @@ class bitget extends bitget$1 {
|
|
|
3206
3333
|
//
|
|
3207
3334
|
// swap and future
|
|
3208
3335
|
//
|
|
3209
|
-
//
|
|
3336
|
+
// {
|
|
3210
3337
|
// "code": "00000",
|
|
3211
3338
|
// "msg": "success",
|
|
3212
|
-
// "requestTime":
|
|
3339
|
+
// "requestTime": 1750332210369,
|
|
3213
3340
|
// "data": [
|
|
3214
3341
|
// {
|
|
3215
3342
|
// "symbol": "BTCUSDT",
|
|
3216
|
-
// "lastPr": "
|
|
3217
|
-
// "askPr": "
|
|
3218
|
-
// "bidPr": "
|
|
3219
|
-
// "bidSz": "
|
|
3220
|
-
// "askSz": "
|
|
3221
|
-
// "high24h": "
|
|
3222
|
-
// "low24h": "
|
|
3223
|
-
// "ts": "
|
|
3224
|
-
// "change24h": "0.
|
|
3225
|
-
// "baseVolume": "
|
|
3226
|
-
// "quoteVolume": "
|
|
3227
|
-
// "usdtVolume": "
|
|
3228
|
-
// "openUtc": "
|
|
3229
|
-
// "changeUtc24h": "0.
|
|
3230
|
-
// "indexPrice": "
|
|
3231
|
-
// "fundingRate": "0.
|
|
3232
|
-
// "holdingAmount": "
|
|
3343
|
+
// "lastPr": "104823.8",
|
|
3344
|
+
// "askPr": "104823.8",
|
|
3345
|
+
// "bidPr": "104823.5",
|
|
3346
|
+
// "bidSz": "0.703",
|
|
3347
|
+
// "askSz": "13.894",
|
|
3348
|
+
// "high24h": "105289.3",
|
|
3349
|
+
// "low24h": "103447.9",
|
|
3350
|
+
// "ts": "1750332210370",
|
|
3351
|
+
// "change24h": "0.00471",
|
|
3352
|
+
// "baseVolume": "79089.5675",
|
|
3353
|
+
// "quoteVolume": "8274870921.80485",
|
|
3354
|
+
// "usdtVolume": "8274870921.80485",
|
|
3355
|
+
// "openUtc": "104833",
|
|
3356
|
+
// "changeUtc24h": "-0.00009",
|
|
3357
|
+
// "indexPrice": "104881.953125",
|
|
3358
|
+
// "fundingRate": "-0.000014",
|
|
3359
|
+
// "holdingAmount": "7452.6421",
|
|
3233
3360
|
// "deliveryStartTime": null,
|
|
3234
3361
|
// "deliveryTime": null,
|
|
3235
3362
|
// "deliveryStatus": "",
|
|
3236
|
-
// "open24h": "
|
|
3363
|
+
// "open24h": "104332.3",
|
|
3364
|
+
// "markPrice": "104824.2"
|
|
3365
|
+
// }
|
|
3366
|
+
// ]
|
|
3367
|
+
// }
|
|
3368
|
+
//
|
|
3369
|
+
// spot uta
|
|
3370
|
+
//
|
|
3371
|
+
// {
|
|
3372
|
+
// "code": "00000",
|
|
3373
|
+
// "msg": "success",
|
|
3374
|
+
// "requestTime": 1750330653575,
|
|
3375
|
+
// "data": [
|
|
3376
|
+
// {
|
|
3377
|
+
// "category": "SPOT",
|
|
3378
|
+
// "symbol": "BTCUSDT",
|
|
3379
|
+
// "ts": "1750330651972",
|
|
3380
|
+
// "lastPrice": "104900.2",
|
|
3381
|
+
// "openPrice24h": "104321.2",
|
|
3382
|
+
// "highPrice24h": "107956.8",
|
|
3383
|
+
// "lowPrice24h": "103600.1",
|
|
3384
|
+
// "ask1Price": "104945.8",
|
|
3385
|
+
// "bid1Price": "104880.6",
|
|
3386
|
+
// "bid1Size": "0.266534",
|
|
3387
|
+
// "ask1Size": "0.014001",
|
|
3388
|
+
// "price24hPcnt": "0.00555",
|
|
3389
|
+
// "volume24h": "355.941109",
|
|
3390
|
+
// "turnover24h": "37302936.008134"
|
|
3391
|
+
// }
|
|
3392
|
+
// ]
|
|
3393
|
+
// }
|
|
3394
|
+
//
|
|
3395
|
+
// swap and future uta
|
|
3396
|
+
//
|
|
3397
|
+
// {
|
|
3398
|
+
// "code": "00000",
|
|
3399
|
+
// "msg": "success",
|
|
3400
|
+
// "requestTime": 1750332731203,
|
|
3401
|
+
// "data": [
|
|
3402
|
+
// {
|
|
3403
|
+
// "category": "USDT-FUTURES",
|
|
3404
|
+
// "symbol": "BTCUSDT",
|
|
3405
|
+
// "ts": "1750332730472",
|
|
3406
|
+
// "lastPrice": "104738",
|
|
3407
|
+
// "openPrice24h": "104374",
|
|
3408
|
+
// "highPrice24h": "105289.3",
|
|
3409
|
+
// "lowPrice24h": "103447.9",
|
|
3410
|
+
// "ask1Price": "104738",
|
|
3411
|
+
// "bid1Price": "104737.7",
|
|
3412
|
+
// "bid1Size": "2.036",
|
|
3413
|
+
// "ask1Size": "8.094",
|
|
3414
|
+
// "price24hPcnt": "0.00349",
|
|
3415
|
+
// "volume24h": "79101.6477",
|
|
3416
|
+
// "turnover24h": "8276293391.45973",
|
|
3417
|
+
// "indexPrice": "104785.956168",
|
|
3418
|
+
// "markPrice": "104738",
|
|
3419
|
+
// "fundingRate": "-0.000007",
|
|
3420
|
+
// "openInterest": "7465.5938",
|
|
3421
|
+
// "deliveryStartTime": "",
|
|
3422
|
+
// "deliveryTime": "",
|
|
3423
|
+
// "deliveryStatus": ""
|
|
3237
3424
|
// }
|
|
3238
3425
|
// ]
|
|
3239
3426
|
// }
|
|
@@ -3275,8 +3462,10 @@ class bitget extends bitget$1 {
|
|
|
3275
3462
|
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
3276
3463
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
|
|
3277
3464
|
* @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbol-Ticker
|
|
3465
|
+
* @see https://www.bitget.com/api-doc/uta/public/Tickers
|
|
3278
3466
|
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
3279
3467
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3468
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3280
3469
|
* @param {string} [params.subType] *contract only* 'linear', 'inverse'
|
|
3281
3470
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
3282
3471
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
@@ -3299,7 +3488,17 @@ class bitget extends bitget$1 {
|
|
|
3299
3488
|
let productType = undefined;
|
|
3300
3489
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3301
3490
|
// only if passedSubType && productType is undefined, then use spot
|
|
3302
|
-
|
|
3491
|
+
let uta = undefined;
|
|
3492
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTickers', 'uta', false);
|
|
3493
|
+
if (uta) {
|
|
3494
|
+
const symbolsLength = symbols.length;
|
|
3495
|
+
if ((symbols !== undefined) && (symbolsLength === 1)) {
|
|
3496
|
+
request['symbol'] = market['id'];
|
|
3497
|
+
}
|
|
3498
|
+
request['category'] = productType;
|
|
3499
|
+
response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
|
|
3500
|
+
}
|
|
3501
|
+
else if (type === 'spot' && passedSubType === undefined) {
|
|
3303
3502
|
response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
|
|
3304
3503
|
}
|
|
3305
3504
|
else {
|
|
@@ -3363,6 +3562,65 @@ class bitget extends bitget$1 {
|
|
|
3363
3562
|
// ]
|
|
3364
3563
|
// }
|
|
3365
3564
|
//
|
|
3565
|
+
// spot uta
|
|
3566
|
+
//
|
|
3567
|
+
// {
|
|
3568
|
+
// "code": "00000",
|
|
3569
|
+
// "msg": "success",
|
|
3570
|
+
// "requestTime": 1750330653575,
|
|
3571
|
+
// "data": [
|
|
3572
|
+
// {
|
|
3573
|
+
// "category": "SPOT",
|
|
3574
|
+
// "symbol": "BTCUSDT",
|
|
3575
|
+
// "ts": "1750330651972",
|
|
3576
|
+
// "lastPrice": "104900.2",
|
|
3577
|
+
// "openPrice24h": "104321.2",
|
|
3578
|
+
// "highPrice24h": "107956.8",
|
|
3579
|
+
// "lowPrice24h": "103600.1",
|
|
3580
|
+
// "ask1Price": "104945.8",
|
|
3581
|
+
// "bid1Price": "104880.6",
|
|
3582
|
+
// "bid1Size": "0.266534",
|
|
3583
|
+
// "ask1Size": "0.014001",
|
|
3584
|
+
// "price24hPcnt": "0.00555",
|
|
3585
|
+
// "volume24h": "355.941109",
|
|
3586
|
+
// "turnover24h": "37302936.008134"
|
|
3587
|
+
// }
|
|
3588
|
+
// ]
|
|
3589
|
+
// }
|
|
3590
|
+
//
|
|
3591
|
+
// swap and future uta
|
|
3592
|
+
//
|
|
3593
|
+
// {
|
|
3594
|
+
// "code": "00000",
|
|
3595
|
+
// "msg": "success",
|
|
3596
|
+
// "requestTime": 1750332731203,
|
|
3597
|
+
// "data": [
|
|
3598
|
+
// {
|
|
3599
|
+
// "category": "USDT-FUTURES",
|
|
3600
|
+
// "symbol": "BTCUSDT",
|
|
3601
|
+
// "ts": "1750332730472",
|
|
3602
|
+
// "lastPrice": "104738",
|
|
3603
|
+
// "openPrice24h": "104374",
|
|
3604
|
+
// "highPrice24h": "105289.3",
|
|
3605
|
+
// "lowPrice24h": "103447.9",
|
|
3606
|
+
// "ask1Price": "104738",
|
|
3607
|
+
// "bid1Price": "104737.7",
|
|
3608
|
+
// "bid1Size": "2.036",
|
|
3609
|
+
// "ask1Size": "8.094",
|
|
3610
|
+
// "price24hPcnt": "0.00349",
|
|
3611
|
+
// "volume24h": "79101.6477",
|
|
3612
|
+
// "turnover24h": "8276293391.45973",
|
|
3613
|
+
// "indexPrice": "104785.956168",
|
|
3614
|
+
// "markPrice": "104738",
|
|
3615
|
+
// "fundingRate": "-0.000007",
|
|
3616
|
+
// "openInterest": "7465.5938",
|
|
3617
|
+
// "deliveryStartTime": "",
|
|
3618
|
+
// "deliveryTime": "",
|
|
3619
|
+
// "deliveryStatus": ""
|
|
3620
|
+
// }
|
|
3621
|
+
// ]
|
|
3622
|
+
// }
|
|
3623
|
+
//
|
|
3366
3624
|
const data = this.safeList(response, 'data', []);
|
|
3367
3625
|
return this.parseTickers(data, symbols);
|
|
3368
3626
|
}
|
|
@@ -3449,19 +3707,53 @@ class bitget extends bitget$1 {
|
|
|
3449
3707
|
// "cTime": "1700720700342"
|
|
3450
3708
|
// }
|
|
3451
3709
|
//
|
|
3710
|
+
// uta fetchTrades
|
|
3711
|
+
//
|
|
3712
|
+
// {
|
|
3713
|
+
// "execId": "1319896716324937729",
|
|
3714
|
+
// "price": "105909.1",
|
|
3715
|
+
// "size": "6.3090",
|
|
3716
|
+
// "side": "sell",
|
|
3717
|
+
// "ts": "1750413820344"
|
|
3718
|
+
// }
|
|
3719
|
+
//
|
|
3720
|
+
// uta fetchMyTrades
|
|
3721
|
+
//
|
|
3722
|
+
// {
|
|
3723
|
+
// "execId": "1322441401010528257",
|
|
3724
|
+
// "orderId": "1322441400976261120",
|
|
3725
|
+
// "category": "USDT-FUTURES",
|
|
3726
|
+
// "symbol": "BTCUSDT",
|
|
3727
|
+
// "orderType": "market",
|
|
3728
|
+
// "side": "sell",
|
|
3729
|
+
// "execPrice": "107005.4",
|
|
3730
|
+
// "execQty": "0.0001",
|
|
3731
|
+
// "execValue": "10.7005",
|
|
3732
|
+
// "tradeScope": "taker",
|
|
3733
|
+
// "feeDetail": [{
|
|
3734
|
+
// "feeCoin": "USDT",
|
|
3735
|
+
// "fee":"0.00642032"
|
|
3736
|
+
// }],
|
|
3737
|
+
// "createdTime": "1751020520451",
|
|
3738
|
+
// "updatedTime": "1751020520458",
|
|
3739
|
+
// "execPnl": "0.00017"
|
|
3740
|
+
// }
|
|
3741
|
+
//
|
|
3452
3742
|
const marketId = this.safeString(trade, 'symbol');
|
|
3453
3743
|
const symbol = this.safeSymbol(marketId, market);
|
|
3454
|
-
const timestamp = this.
|
|
3744
|
+
const timestamp = this.safeIntegerN(trade, ['cTime', 'ts', 'createdTime']);
|
|
3455
3745
|
let fee = undefined;
|
|
3456
3746
|
const feeDetail = this.safeValue(trade, 'feeDetail');
|
|
3457
3747
|
const posMode = this.safeString(trade, 'posMode');
|
|
3458
|
-
const
|
|
3748
|
+
const category = this.safeString(trade, 'category');
|
|
3749
|
+
const isFeeStructure = (posMode !== undefined) || (category !== undefined);
|
|
3750
|
+
const feeStructure = isFeeStructure ? feeDetail[0] : feeDetail;
|
|
3459
3751
|
if (feeStructure !== undefined) {
|
|
3460
3752
|
const currencyCode = this.safeCurrencyCode(this.safeString(feeStructure, 'feeCoin'));
|
|
3461
3753
|
fee = {
|
|
3462
3754
|
'currency': currencyCode,
|
|
3463
3755
|
};
|
|
3464
|
-
const feeCostString = this.
|
|
3756
|
+
const feeCostString = this.safeString2(feeStructure, 'totalFee', 'fee');
|
|
3465
3757
|
const deduction = this.safeString(feeStructure, 'deduction') === 'yes' ? true : false;
|
|
3466
3758
|
if (deduction) {
|
|
3467
3759
|
fee['cost'] = feeCostString;
|
|
@@ -3472,15 +3764,15 @@ class bitget extends bitget$1 {
|
|
|
3472
3764
|
}
|
|
3473
3765
|
return this.safeTrade({
|
|
3474
3766
|
'info': trade,
|
|
3475
|
-
'id': this.
|
|
3767
|
+
'id': this.safeString2(trade, 'tradeId', 'execId'),
|
|
3476
3768
|
'order': this.safeString(trade, 'orderId'),
|
|
3477
3769
|
'symbol': symbol,
|
|
3478
3770
|
'side': this.safeStringLower(trade, 'side'),
|
|
3479
3771
|
'type': this.safeString(trade, 'orderType'),
|
|
3480
3772
|
'takerOrMaker': this.safeString(trade, 'tradeScope'),
|
|
3481
|
-
'price': this.
|
|
3482
|
-
'amount': this.
|
|
3483
|
-
'cost': this.
|
|
3773
|
+
'price': this.safeStringN(trade, ['priceAvg', 'price', 'execPrice']),
|
|
3774
|
+
'amount': this.safeStringN(trade, ['baseVolume', 'size', 'execQty']),
|
|
3775
|
+
'cost': this.safeStringN(trade, ['quoteVolume', 'amount', 'execValue']),
|
|
3484
3776
|
'timestamp': timestamp,
|
|
3485
3777
|
'datetime': this.iso8601(timestamp),
|
|
3486
3778
|
'fee': fee,
|
|
@@ -3494,10 +3786,12 @@ class bitget extends bitget$1 {
|
|
|
3494
3786
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Market-Trades
|
|
3495
3787
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Recent-Fills
|
|
3496
3788
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Fills-History
|
|
3789
|
+
* @see https://www.bitget.com/api-doc/uta/public/Fills
|
|
3497
3790
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
3498
3791
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
3499
3792
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
3500
3793
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3794
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3501
3795
|
* @param {int} [params.until] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* the latest time in ms to fetch trades for
|
|
3502
3796
|
* @param {boolean} [params.paginate] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* default false, when true will automatically paginate by calling this endpoint multiple times
|
|
3503
3797
|
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
@@ -3513,8 +3807,13 @@ class bitget extends bitget$1 {
|
|
|
3513
3807
|
let request = {
|
|
3514
3808
|
'symbol': market['id'],
|
|
3515
3809
|
};
|
|
3810
|
+
let uta = undefined;
|
|
3811
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTrades', 'uta', false);
|
|
3516
3812
|
if (limit !== undefined) {
|
|
3517
|
-
if (
|
|
3813
|
+
if (uta) {
|
|
3814
|
+
request['limit'] = Math.min(limit, 100);
|
|
3815
|
+
}
|
|
3816
|
+
else if (market['contract']) {
|
|
3518
3817
|
request['limit'] = Math.min(limit, 1000);
|
|
3519
3818
|
}
|
|
3520
3819
|
else {
|
|
@@ -3523,7 +3822,20 @@ class bitget extends bitget$1 {
|
|
|
3523
3822
|
}
|
|
3524
3823
|
const options = this.safeValue(this.options, 'fetchTrades', {});
|
|
3525
3824
|
let response = undefined;
|
|
3526
|
-
|
|
3825
|
+
let productType = undefined;
|
|
3826
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3827
|
+
if (uta) {
|
|
3828
|
+
if (productType === 'SPOT') {
|
|
3829
|
+
let marginMode = undefined;
|
|
3830
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
|
|
3831
|
+
if (marginMode !== undefined) {
|
|
3832
|
+
productType = 'MARGIN';
|
|
3833
|
+
}
|
|
3834
|
+
}
|
|
3835
|
+
request['category'] = productType;
|
|
3836
|
+
response = await this.publicUtaGetV3MarketFills(this.extend(request, params));
|
|
3837
|
+
}
|
|
3838
|
+
else if (market['spot']) {
|
|
3527
3839
|
const spotOptions = this.safeValue(options, 'spot', {});
|
|
3528
3840
|
const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketFillsHistory');
|
|
3529
3841
|
const spotMethod = this.safeString(params, 'method', defaultSpotMethod);
|
|
@@ -3544,8 +3856,6 @@ class bitget extends bitget$1 {
|
|
|
3544
3856
|
const defaultSwapMethod = this.safeString(swapOptions, 'method', 'publicMixGetV2MixMarketFillsHistory');
|
|
3545
3857
|
const swapMethod = this.safeString(params, 'method', defaultSwapMethod);
|
|
3546
3858
|
params = this.omit(params, 'method');
|
|
3547
|
-
let productType = undefined;
|
|
3548
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3549
3859
|
request['productType'] = productType;
|
|
3550
3860
|
if (swapMethod === 'publicMixGetV2MixMarketFillsHistory') {
|
|
3551
3861
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
@@ -3595,6 +3905,23 @@ class bitget extends bitget$1 {
|
|
|
3595
3905
|
// ]
|
|
3596
3906
|
// }
|
|
3597
3907
|
//
|
|
3908
|
+
// uta
|
|
3909
|
+
//
|
|
3910
|
+
// {
|
|
3911
|
+
// "code": "00000",
|
|
3912
|
+
// "msg": "success",
|
|
3913
|
+
// "requestTime": 1750413823980,
|
|
3914
|
+
// "data": [
|
|
3915
|
+
// {
|
|
3916
|
+
// "execId": "1319896716324937729",
|
|
3917
|
+
// "price": "105909.1",
|
|
3918
|
+
// "size": "6.3090",
|
|
3919
|
+
// "side": "sell",
|
|
3920
|
+
// "ts": "1750413820344"
|
|
3921
|
+
// }
|
|
3922
|
+
// ]
|
|
3923
|
+
// }
|
|
3924
|
+
//
|
|
3598
3925
|
const data = this.safeList(response, 'data', []);
|
|
3599
3926
|
return this.parseTrades(data, market, since, limit);
|
|
3600
3927
|
}
|
|
@@ -3786,13 +4113,15 @@ class bitget extends bitget$1 {
|
|
|
3786
4113
|
// "1399132.341"
|
|
3787
4114
|
// ]
|
|
3788
4115
|
//
|
|
4116
|
+
const inverse = this.safeBool(market, 'inverse');
|
|
4117
|
+
const volumeIndex = inverse ? 6 : 5;
|
|
3789
4118
|
return [
|
|
3790
4119
|
this.safeInteger(ohlcv, 0),
|
|
3791
4120
|
this.safeNumber(ohlcv, 1),
|
|
3792
4121
|
this.safeNumber(ohlcv, 2),
|
|
3793
4122
|
this.safeNumber(ohlcv, 3),
|
|
3794
4123
|
this.safeNumber(ohlcv, 4),
|
|
3795
|
-
this.safeNumber(ohlcv,
|
|
4124
|
+
this.safeNumber(ohlcv, volumeIndex),
|
|
3796
4125
|
];
|
|
3797
4126
|
}
|
|
3798
4127
|
/**
|
|
@@ -3805,11 +4134,13 @@ class bitget extends bitget$1 {
|
|
|
3805
4134
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Candle-Data
|
|
3806
4135
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Index-Candle-Data
|
|
3807
4136
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Mark-Candle-Data
|
|
4137
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Candle-Data
|
|
3808
4138
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
3809
4139
|
* @param {string} timeframe the length of time each candle represents
|
|
3810
4140
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
3811
4141
|
* @param {int} [limit] the maximum amount of candles to fetch
|
|
3812
4142
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
4143
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3813
4144
|
* @param {int} [params.until] timestamp in ms of the latest candle to fetch
|
|
3814
4145
|
* @param {boolean} [params.useHistoryEndpoint] whether to force to use historical endpoint (it has max limit of 200)
|
|
3815
4146
|
* @param {boolean} [params.useHistoryEndpointForPagination] whether to force to use historical endpoint for pagination (default true)
|
|
@@ -3831,12 +4162,22 @@ class bitget extends bitget$1 {
|
|
|
3831
4162
|
return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, limitForPagination);
|
|
3832
4163
|
}
|
|
3833
4164
|
const market = this.market(symbol);
|
|
3834
|
-
const marketType = market['spot'] ? 'spot' : 'swap';
|
|
3835
|
-
const timeframes = this.options['timeframes'][marketType];
|
|
3836
4165
|
const request = {
|
|
3837
4166
|
'symbol': market['id'],
|
|
3838
|
-
'granularity': this.safeString(timeframes, timeframe, timeframe),
|
|
3839
4167
|
};
|
|
4168
|
+
let marketType = undefined;
|
|
4169
|
+
let timeframes = undefined;
|
|
4170
|
+
let uta = undefined;
|
|
4171
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'uta', false);
|
|
4172
|
+
if (uta) {
|
|
4173
|
+
timeframes = this.options['timeframes']['uta'];
|
|
4174
|
+
request['interval'] = this.safeString(timeframes, timeframe, timeframe);
|
|
4175
|
+
}
|
|
4176
|
+
else {
|
|
4177
|
+
marketType = market['spot'] ? 'spot' : 'swap';
|
|
4178
|
+
timeframes = this.options['timeframes'][marketType];
|
|
4179
|
+
request['granularity'] = this.safeString(timeframes, timeframe, timeframe);
|
|
4180
|
+
}
|
|
3840
4181
|
const msInDay = 86400000;
|
|
3841
4182
|
const now = this.milliseconds();
|
|
3842
4183
|
const duration = this.parseTimeframe(timeframe) * 1000;
|
|
@@ -3906,7 +4247,23 @@ class bitget extends bitget$1 {
|
|
|
3906
4247
|
request['limit'] = limit;
|
|
3907
4248
|
// make request
|
|
3908
4249
|
let response = undefined;
|
|
3909
|
-
|
|
4250
|
+
let productType = undefined;
|
|
4251
|
+
let priceType = undefined;
|
|
4252
|
+
[priceType, params] = this.handleParamString(params, 'price');
|
|
4253
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
4254
|
+
if (uta) {
|
|
4255
|
+
if (priceType !== undefined) {
|
|
4256
|
+
if (priceType === 'mark') {
|
|
4257
|
+
request['type'] = 'MARK';
|
|
4258
|
+
}
|
|
4259
|
+
else if (priceType === 'index') {
|
|
4260
|
+
request['type'] = 'INDEX';
|
|
4261
|
+
}
|
|
4262
|
+
}
|
|
4263
|
+
request['category'] = productType;
|
|
4264
|
+
response = await this.publicUtaGetV3MarketCandles(this.extend(request, params));
|
|
4265
|
+
}
|
|
4266
|
+
else if (market['spot']) {
|
|
3910
4267
|
// checks if we need history endpoint
|
|
3911
4268
|
if (historicalEndpointNeeded) {
|
|
3912
4269
|
response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
|
|
@@ -3920,10 +4277,6 @@ class bitget extends bitget$1 {
|
|
|
3920
4277
|
}
|
|
3921
4278
|
}
|
|
3922
4279
|
else {
|
|
3923
|
-
let priceType = undefined;
|
|
3924
|
-
[priceType, params] = this.handleParamString(params, 'price');
|
|
3925
|
-
let productType = undefined;
|
|
3926
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3927
4280
|
request['productType'] = productType;
|
|
3928
4281
|
const extended = this.extend(request, params);
|
|
3929
4282
|
if (!historicalEndpointNeeded && (priceType === 'mark' || priceType === 'index')) {
|
|
@@ -3971,8 +4324,10 @@ class bitget extends bitget$1 {
|
|
|
3971
4324
|
* @see https://www.bitget.com/api-doc/margin/isolated/account/Get-Isolated-Assets
|
|
3972
4325
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-assets
|
|
3973
4326
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-assets
|
|
4327
|
+
* @see https://www.bitget.com/api-doc/uta/account/Get-Account
|
|
3974
4328
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3975
4329
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
4330
|
+
* @param {string} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3976
4331
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
3977
4332
|
*/
|
|
3978
4333
|
async fetchBalance(params = {}) {
|
|
@@ -3981,9 +4336,17 @@ class bitget extends bitget$1 {
|
|
|
3981
4336
|
let marketType = undefined;
|
|
3982
4337
|
let marginMode = undefined;
|
|
3983
4338
|
let response = undefined;
|
|
4339
|
+
let uta = undefined;
|
|
4340
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchBalance', 'uta', false);
|
|
3984
4341
|
[marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
3985
4342
|
[marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
3986
|
-
if (
|
|
4343
|
+
if (uta) {
|
|
4344
|
+
response = await this.privateUtaGetV3AccountAssets(this.extend(request, params));
|
|
4345
|
+
const results = this.safeDict(response, 'data', {});
|
|
4346
|
+
const assets = this.safeList(results, 'assets', []);
|
|
4347
|
+
return this.parseUtaBalance(assets);
|
|
4348
|
+
}
|
|
4349
|
+
else if ((marketType === 'swap') || (marketType === 'future')) {
|
|
3987
4350
|
let productType = undefined;
|
|
3988
4351
|
[productType, params] = this.handleProductTypeAndParams(undefined, params);
|
|
3989
4352
|
request['productType'] = productType;
|
|
@@ -4088,9 +4451,67 @@ class bitget extends bitget$1 {
|
|
|
4088
4451
|
// ]
|
|
4089
4452
|
// }
|
|
4090
4453
|
//
|
|
4454
|
+
// uta
|
|
4455
|
+
//
|
|
4456
|
+
// {
|
|
4457
|
+
// "code": "00000",
|
|
4458
|
+
// "msg": "success",
|
|
4459
|
+
// "requestTime": 1749980065089,
|
|
4460
|
+
// "data": {
|
|
4461
|
+
// "accountEquity": "11.13919278",
|
|
4462
|
+
// "usdtEquity": "11.13921165",
|
|
4463
|
+
// "btcEquity": "0.00011256",
|
|
4464
|
+
// "unrealisedPnl": "0",
|
|
4465
|
+
// "usdtUnrealisedPnl": "0",
|
|
4466
|
+
// "btcUnrealizedPnl": "0",
|
|
4467
|
+
// "effEquity": "6.19299777",
|
|
4468
|
+
// "mmr": "0",
|
|
4469
|
+
// "imr": "0",
|
|
4470
|
+
// "mgnRatio": "0",
|
|
4471
|
+
// "positionMgnRatio": "0",
|
|
4472
|
+
// "assets": [
|
|
4473
|
+
// {
|
|
4474
|
+
// "coin": "USDT",
|
|
4475
|
+
// "equity": "6.19300826",
|
|
4476
|
+
// "usdValue": "6.19299777",
|
|
4477
|
+
// "balance": "6.19300826",
|
|
4478
|
+
// "available": "6.19300826",
|
|
4479
|
+
// "debt": "0",
|
|
4480
|
+
// "locked": "0"
|
|
4481
|
+
// }
|
|
4482
|
+
// ]
|
|
4483
|
+
// }
|
|
4484
|
+
// }
|
|
4485
|
+
//
|
|
4091
4486
|
const data = this.safeValue(response, 'data', []);
|
|
4092
4487
|
return this.parseBalance(data);
|
|
4093
4488
|
}
|
|
4489
|
+
parseUtaBalance(balance) {
|
|
4490
|
+
const result = { 'info': balance };
|
|
4491
|
+
//
|
|
4492
|
+
// {
|
|
4493
|
+
// "coin": "USDT",
|
|
4494
|
+
// "equity": "6.19300826",
|
|
4495
|
+
// "usdValue": "6.19299777",
|
|
4496
|
+
// "balance": "6.19300826",
|
|
4497
|
+
// "available": "6.19300826",
|
|
4498
|
+
// "debt": "0",
|
|
4499
|
+
// "locked": "0"
|
|
4500
|
+
// }
|
|
4501
|
+
//
|
|
4502
|
+
for (let i = 0; i < balance.length; i++) {
|
|
4503
|
+
const entry = balance[i];
|
|
4504
|
+
const account = this.account();
|
|
4505
|
+
const currencyId = this.safeString(entry, 'coin');
|
|
4506
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
4507
|
+
account['debt'] = this.safeString(entry, 'debt');
|
|
4508
|
+
account['used'] = this.safeString(entry, 'locked');
|
|
4509
|
+
account['free'] = this.safeString(entry, 'available');
|
|
4510
|
+
account['total'] = this.safeString(entry, 'balance');
|
|
4511
|
+
result[code] = account;
|
|
4512
|
+
}
|
|
4513
|
+
return this.safeBalance(result);
|
|
4514
|
+
}
|
|
4094
4515
|
parseBalance(balance) {
|
|
4095
4516
|
const result = { 'info': balance };
|
|
4096
4517
|
//
|
|
@@ -4229,7 +4650,7 @@ class bitget extends bitget$1 {
|
|
|
4229
4650
|
// },
|
|
4230
4651
|
// ]
|
|
4231
4652
|
//
|
|
4232
|
-
// spot, swap, future
|
|
4653
|
+
// spot, swap, future, spot margin and uta: cancelOrder, cancelOrders, cancelAllOrders
|
|
4233
4654
|
//
|
|
4234
4655
|
// {
|
|
4235
4656
|
// "orderId": "1098758604547850241",
|
|
@@ -4358,6 +4779,66 @@ class bitget extends bitget$1 {
|
|
|
4358
4779
|
// "stopLossTriggerType": "fill_price",
|
|
4359
4780
|
// }
|
|
4360
4781
|
//
|
|
4782
|
+
// uta: fetchOrder, fetchOpenOrders, fetchCanceledAndClosedOrders
|
|
4783
|
+
//
|
|
4784
|
+
// {
|
|
4785
|
+
// "orderId": "1320244799629316096",
|
|
4786
|
+
// "clientOid": "1320244799633510400",
|
|
4787
|
+
// "category": "USDT-FUTURES",
|
|
4788
|
+
// "symbol": "BTCUSDT",
|
|
4789
|
+
// "orderType": "limit",
|
|
4790
|
+
// "side": "buy",
|
|
4791
|
+
// "price": "50000",
|
|
4792
|
+
// "qty": "0.001",
|
|
4793
|
+
// "amount": "0",
|
|
4794
|
+
// "cumExecQty": "0",
|
|
4795
|
+
// "cumExecValue": "0",
|
|
4796
|
+
// "avgPrice": "0",
|
|
4797
|
+
// "timeInForce": "gtc",
|
|
4798
|
+
// "orderStatus": "live",
|
|
4799
|
+
// "posSide": "long",
|
|
4800
|
+
// "holdMode": "hedge_mode",
|
|
4801
|
+
// "reduceOnly": "NO",
|
|
4802
|
+
// "feeDetail": [{
|
|
4803
|
+
// "feeCoin": "",
|
|
4804
|
+
// "fee": ""
|
|
4805
|
+
// }],
|
|
4806
|
+
// "createdTime": "1750496809871",
|
|
4807
|
+
// "updatedTime": "1750496809886",
|
|
4808
|
+
// "cancelReason": "",
|
|
4809
|
+
// "execType": "normal",
|
|
4810
|
+
// "stpMode": "none",
|
|
4811
|
+
// "tpTriggerBy": null,
|
|
4812
|
+
// "slTriggerBy": null,
|
|
4813
|
+
// "takeProfit": null,
|
|
4814
|
+
// "stopLoss": null,
|
|
4815
|
+
// "tpOrderType": null,
|
|
4816
|
+
// "slOrderType": null,
|
|
4817
|
+
// "tpLimitPrice": null,
|
|
4818
|
+
// "slLimitPrice": null
|
|
4819
|
+
// }
|
|
4820
|
+
//
|
|
4821
|
+
// uta trigger: fetchClosedOrders, fetchCanceledOrders
|
|
4822
|
+
//
|
|
4823
|
+
// {
|
|
4824
|
+
// "orderId": "1330984742276198400",
|
|
4825
|
+
// "clientOid": "1330984742276198400",
|
|
4826
|
+
// "symbol": "BTCUSDT",
|
|
4827
|
+
// "category": "USDT-FUTURES",
|
|
4828
|
+
// "qty": "0.001",
|
|
4829
|
+
// "posSide": "long",
|
|
4830
|
+
// "tpTriggerBy": "market",
|
|
4831
|
+
// "slTriggerBy": "mark",
|
|
4832
|
+
// "takeProfit": "",
|
|
4833
|
+
// "stopLoss": "112000",
|
|
4834
|
+
// "tpOrderType": "market",
|
|
4835
|
+
// "slOrderType": "limit",
|
|
4836
|
+
// "tpLimitPrice": "",
|
|
4837
|
+
// "slLimitPrice": "111000",
|
|
4838
|
+
// "createdTime": "1753057411736",
|
|
4839
|
+
// "updatedTime": "1753058267412"
|
|
4840
|
+
// }
|
|
4841
|
+
//
|
|
4361
4842
|
const errorMessage = this.safeString(order, 'errorMsg');
|
|
4362
4843
|
if (errorMessage !== undefined) {
|
|
4363
4844
|
return this.safeOrder({
|
|
@@ -4367,17 +4848,17 @@ class bitget extends bitget$1 {
|
|
|
4367
4848
|
'status': 'rejected',
|
|
4368
4849
|
}, market);
|
|
4369
4850
|
}
|
|
4370
|
-
const
|
|
4851
|
+
const posSide = this.safeString(order, 'posSide');
|
|
4852
|
+
const isContractOrder = (posSide !== undefined);
|
|
4371
4853
|
let marketType = isContractOrder ? 'contract' : 'spot';
|
|
4372
4854
|
if (market !== undefined) {
|
|
4373
4855
|
marketType = market['type'];
|
|
4374
4856
|
}
|
|
4375
4857
|
const marketId = this.safeString(order, 'symbol');
|
|
4376
4858
|
market = this.safeMarket(marketId, market, undefined, marketType);
|
|
4377
|
-
const timestamp = this.
|
|
4378
|
-
const updateTimestamp = this.
|
|
4379
|
-
|
|
4380
|
-
rawStatus = this.safeString(order, 'planStatus', rawStatus);
|
|
4859
|
+
const timestamp = this.safeIntegerN(order, ['cTime', 'ctime', 'createdTime']);
|
|
4860
|
+
const updateTimestamp = this.safeInteger2(order, 'uTime', 'updatedTime');
|
|
4861
|
+
const rawStatus = this.safeStringN(order, ['status', 'state', 'orderStatus', 'planStatus']);
|
|
4381
4862
|
let fee = undefined;
|
|
4382
4863
|
const feeCostString = this.safeString(order, 'fee');
|
|
4383
4864
|
if (feeCostString !== undefined) {
|
|
@@ -4388,27 +4869,38 @@ class bitget extends bitget$1 {
|
|
|
4388
4869
|
};
|
|
4389
4870
|
}
|
|
4390
4871
|
const feeDetail = this.safeValue(order, 'feeDetail');
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
const
|
|
4394
|
-
|
|
4395
|
-
for (let i = 0; i < feeValues.length; i++) {
|
|
4396
|
-
const feeValue = feeValues[i];
|
|
4397
|
-
if (this.safeValue(feeValue, 'feeCoinCode') !== undefined) {
|
|
4398
|
-
feeObject = feeValue;
|
|
4399
|
-
break;
|
|
4400
|
-
}
|
|
4401
|
-
}
|
|
4872
|
+
const uta = this.safeString(order, 'category') !== undefined;
|
|
4873
|
+
if (uta) {
|
|
4874
|
+
const feeResult = this.safeDict(feeDetail, 0, {});
|
|
4875
|
+
const utaFee = this.safeString(feeResult, 'fee');
|
|
4402
4876
|
fee = {
|
|
4403
|
-
'cost': this.parseNumber(Precise["default"].stringNeg(
|
|
4404
|
-
'currency':
|
|
4877
|
+
'cost': this.parseNumber(Precise["default"].stringNeg(utaFee)),
|
|
4878
|
+
'currency': market['settle'],
|
|
4405
4879
|
};
|
|
4406
4880
|
}
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4881
|
+
else {
|
|
4882
|
+
if (feeDetail !== undefined) {
|
|
4883
|
+
const parsedFeeDetail = JSON.parse(feeDetail);
|
|
4884
|
+
const feeValues = Object.values(parsedFeeDetail);
|
|
4885
|
+
let feeObject = undefined;
|
|
4886
|
+
for (let i = 0; i < feeValues.length; i++) {
|
|
4887
|
+
const feeValue = feeValues[i];
|
|
4888
|
+
if (this.safeValue(feeValue, 'feeCoinCode') !== undefined) {
|
|
4889
|
+
feeObject = feeValue;
|
|
4890
|
+
break;
|
|
4891
|
+
}
|
|
4892
|
+
}
|
|
4893
|
+
fee = {
|
|
4894
|
+
'cost': this.parseNumber(Precise["default"].stringNeg(this.safeString(feeObject, 'totalFee'))),
|
|
4895
|
+
'currency': this.safeCurrencyCode(this.safeString(feeObject, 'feeCoinCode')),
|
|
4896
|
+
};
|
|
4897
|
+
}
|
|
4898
|
+
}
|
|
4899
|
+
let postOnly = undefined;
|
|
4900
|
+
let timeInForce = this.safeStringUpper2(order, 'force', 'timeInForce');
|
|
4901
|
+
if (timeInForce === 'POST_ONLY') {
|
|
4902
|
+
postOnly = true;
|
|
4903
|
+
timeInForce = 'PO';
|
|
4412
4904
|
}
|
|
4413
4905
|
let reduceOnly = undefined;
|
|
4414
4906
|
const reduceOnlyRaw = this.safeString(order, 'reduceOnly');
|
|
@@ -4424,7 +4916,7 @@ class bitget extends bitget$1 {
|
|
|
4424
4916
|
average = this.safeString(order, 'basePrice');
|
|
4425
4917
|
}
|
|
4426
4918
|
else {
|
|
4427
|
-
price = this.
|
|
4919
|
+
price = this.safeStringN(order, ['price', 'executePrice', 'slLimitPrice', 'tpLimitPrice']);
|
|
4428
4920
|
average = this.safeString(order, 'priceAvg');
|
|
4429
4921
|
}
|
|
4430
4922
|
let size = undefined;
|
|
@@ -4436,8 +4928,8 @@ class bitget extends bitget$1 {
|
|
|
4436
4928
|
filled = this.safeString(order, 'size');
|
|
4437
4929
|
}
|
|
4438
4930
|
else {
|
|
4439
|
-
size = this.
|
|
4440
|
-
filled = this.
|
|
4931
|
+
size = this.safeString2(order, 'size', 'qty');
|
|
4932
|
+
filled = this.safeString2(order, 'baseVolume', 'cumExecQty');
|
|
4441
4933
|
}
|
|
4442
4934
|
let side = this.safeString(order, 'side');
|
|
4443
4935
|
const posMode = this.safeString(order, 'posMode');
|
|
@@ -4473,8 +4965,8 @@ class bitget extends bitget$1 {
|
|
|
4473
4965
|
'postOnly': postOnly,
|
|
4474
4966
|
'reduceOnly': reduceOnly,
|
|
4475
4967
|
'triggerPrice': this.safeNumber(order, 'triggerPrice'),
|
|
4476
|
-
'takeProfitPrice': this.
|
|
4477
|
-
'stopLossPrice': this.
|
|
4968
|
+
'takeProfitPrice': this.safeNumberN(order, ['presetStopSurplusPrice', 'stopSurplusTriggerPrice', 'takeProfit']),
|
|
4969
|
+
'stopLossPrice': this.safeNumberN(order, ['presetStopLossPrice', 'stopLossTriggerPrice', 'stopLoss']),
|
|
4478
4970
|
'status': this.parseOrderStatus(rawStatus),
|
|
4479
4971
|
'fee': fee,
|
|
4480
4972
|
'trades': undefined,
|
|
@@ -4514,6 +5006,8 @@ class bitget extends bitget$1 {
|
|
|
4514
5006
|
* @see https://www.bitget.com/api-doc/contract/plan/Place-Plan-Order
|
|
4515
5007
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Place-Order
|
|
4516
5008
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Place-Order
|
|
5009
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Place-Order
|
|
5010
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Place-Strategy-Order
|
|
4517
5011
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
4518
5012
|
* @param {string} type 'market' or 'limit'
|
|
4519
5013
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -4542,6 +5036,8 @@ class bitget extends bitget$1 {
|
|
|
4542
5036
|
* @param {boolean} [params.oneWayMode] *swap and future only* required to set this to true in one_way_mode and you can leave this as undefined in hedge_mode, can adjust the mode using the setPositionMode() method
|
|
4543
5037
|
* @param {bool} [params.hedged] *swap and future only* true for hedged mode, false for one way mode, default is false
|
|
4544
5038
|
* @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
|
|
5039
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5040
|
+
* @param {string} [params.posSide] *uta only* hedged two-way position side, long or short
|
|
4545
5041
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4546
5042
|
*/
|
|
4547
5043
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
@@ -4558,31 +5054,44 @@ class bitget extends bitget$1 {
|
|
|
4558
5054
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
4559
5055
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
4560
5056
|
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
4561
|
-
const request = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
4562
5057
|
let response = undefined;
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
response = await this.
|
|
4569
|
-
}
|
|
4570
|
-
else if (marginMode === 'cross') {
|
|
4571
|
-
response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
|
|
5058
|
+
let uta = undefined;
|
|
5059
|
+
[uta, params] = this.handleOptionAndParams(params, 'createOrder', 'uta', false);
|
|
5060
|
+
if (uta) {
|
|
5061
|
+
const request = this.createUtaOrderRequest(symbol, type, side, amount, price, params);
|
|
5062
|
+
if (isStopLossOrTakeProfitTrigger) {
|
|
5063
|
+
response = await this.privateUtaPostV3TradePlaceStrategyOrder(request);
|
|
4572
5064
|
}
|
|
4573
5065
|
else {
|
|
4574
|
-
response = await this.
|
|
5066
|
+
response = await this.privateUtaPostV3TradePlaceOrder(request);
|
|
4575
5067
|
}
|
|
4576
5068
|
}
|
|
4577
5069
|
else {
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
5070
|
+
const request = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
5071
|
+
if (market['spot']) {
|
|
5072
|
+
if (isTriggerOrder) {
|
|
5073
|
+
response = await this.privateSpotPostV2SpotTradePlacePlanOrder(request);
|
|
5074
|
+
}
|
|
5075
|
+
else if (marginMode === 'isolated') {
|
|
5076
|
+
response = await this.privateMarginPostV2MarginIsolatedPlaceOrder(request);
|
|
5077
|
+
}
|
|
5078
|
+
else if (marginMode === 'cross') {
|
|
5079
|
+
response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
|
|
5080
|
+
}
|
|
5081
|
+
else {
|
|
5082
|
+
response = await this.privateSpotPostV2SpotTradePlaceOrder(request);
|
|
5083
|
+
}
|
|
4583
5084
|
}
|
|
4584
5085
|
else {
|
|
4585
|
-
|
|
5086
|
+
if (isTriggerOrder || isTrailingPercentOrder) {
|
|
5087
|
+
response = await this.privateMixPostV2MixOrderPlacePlanOrder(request);
|
|
5088
|
+
}
|
|
5089
|
+
else if (isStopLossOrTakeProfitTrigger) {
|
|
5090
|
+
response = await this.privateMixPostV2MixOrderPlaceTpslOrder(request);
|
|
5091
|
+
}
|
|
5092
|
+
else {
|
|
5093
|
+
response = await this.privateMixPostV2MixOrderPlaceOrder(request);
|
|
5094
|
+
}
|
|
4586
5095
|
}
|
|
4587
5096
|
}
|
|
4588
5097
|
//
|
|
@@ -4599,6 +5108,133 @@ class bitget extends bitget$1 {
|
|
|
4599
5108
|
const data = this.safeDict(response, 'data', {});
|
|
4600
5109
|
return this.parseOrder(data, market);
|
|
4601
5110
|
}
|
|
5111
|
+
createUtaOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
5112
|
+
const market = this.market(symbol);
|
|
5113
|
+
let productType = undefined;
|
|
5114
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5115
|
+
if (productType === 'SPOT') {
|
|
5116
|
+
let marginMode = undefined;
|
|
5117
|
+
[marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
|
|
5118
|
+
if (marginMode !== undefined) {
|
|
5119
|
+
productType = 'MARGIN';
|
|
5120
|
+
}
|
|
5121
|
+
}
|
|
5122
|
+
const request = {
|
|
5123
|
+
'category': productType,
|
|
5124
|
+
'symbol': market['id'],
|
|
5125
|
+
'qty': this.amountToPrecision(symbol, amount),
|
|
5126
|
+
'side': side,
|
|
5127
|
+
};
|
|
5128
|
+
const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
|
|
5129
|
+
if (clientOrderId !== undefined) {
|
|
5130
|
+
request['clientOid'] = clientOrderId;
|
|
5131
|
+
params = this.omit(params, 'clientOrderId');
|
|
5132
|
+
}
|
|
5133
|
+
const stopLossTriggerPrice = this.safeNumber(params, 'stopLossPrice');
|
|
5134
|
+
const takeProfitTriggerPrice = this.safeNumber(params, 'takeProfitPrice');
|
|
5135
|
+
const stopLoss = this.safeValue(params, 'stopLoss');
|
|
5136
|
+
const takeProfit = this.safeValue(params, 'takeProfit');
|
|
5137
|
+
const isStopLoss = stopLoss !== undefined;
|
|
5138
|
+
const isTakeProfit = takeProfit !== undefined;
|
|
5139
|
+
const isStopLossTrigger = stopLossTriggerPrice !== undefined;
|
|
5140
|
+
const isTakeProfitTrigger = takeProfitTriggerPrice !== undefined;
|
|
5141
|
+
const isStopLossOrTakeProfitTrigger = isStopLossTrigger || isTakeProfitTrigger;
|
|
5142
|
+
if (isStopLossOrTakeProfitTrigger) {
|
|
5143
|
+
if (isStopLossTrigger) {
|
|
5144
|
+
const slType = this.safeString(params, 'slTriggerBy', 'mark');
|
|
5145
|
+
request['slTriggerBy'] = slType;
|
|
5146
|
+
request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
|
|
5147
|
+
if (price !== undefined) {
|
|
5148
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5149
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5150
|
+
}
|
|
5151
|
+
else {
|
|
5152
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5153
|
+
}
|
|
5154
|
+
}
|
|
5155
|
+
else if (isTakeProfitTrigger) {
|
|
5156
|
+
const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
|
|
5157
|
+
request['tpTriggerBy'] = tpType;
|
|
5158
|
+
request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
|
|
5159
|
+
if (price !== undefined) {
|
|
5160
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5161
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5162
|
+
}
|
|
5163
|
+
else {
|
|
5164
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5165
|
+
}
|
|
5166
|
+
}
|
|
5167
|
+
params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
|
|
5168
|
+
}
|
|
5169
|
+
else {
|
|
5170
|
+
if (isStopLoss) {
|
|
5171
|
+
const slTriggerPrice = this.safeNumber2(stopLoss, 'triggerPrice', 'stopPrice');
|
|
5172
|
+
const slLimitPrice = this.safeNumber(stopLoss, 'price');
|
|
5173
|
+
request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
|
|
5174
|
+
if (slLimitPrice !== undefined) {
|
|
5175
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, slLimitPrice);
|
|
5176
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5177
|
+
}
|
|
5178
|
+
else {
|
|
5179
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5180
|
+
}
|
|
5181
|
+
}
|
|
5182
|
+
if (isTakeProfit) {
|
|
5183
|
+
const tpTriggerPrice = this.safeNumber2(takeProfit, 'triggerPrice', 'stopPrice');
|
|
5184
|
+
const tpLimitPrice = this.safeNumber(takeProfit, 'price');
|
|
5185
|
+
request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
5186
|
+
if (tpLimitPrice !== undefined) {
|
|
5187
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, tpLimitPrice);
|
|
5188
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5189
|
+
}
|
|
5190
|
+
else {
|
|
5191
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5192
|
+
}
|
|
5193
|
+
}
|
|
5194
|
+
const isMarketOrder = type === 'market';
|
|
5195
|
+
if (!isMarketOrder) {
|
|
5196
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
5197
|
+
}
|
|
5198
|
+
request['orderType'] = type;
|
|
5199
|
+
const exchangeSpecificTifParam = this.safeString(params, 'timeInForce');
|
|
5200
|
+
let postOnly = undefined;
|
|
5201
|
+
[postOnly, params] = this.handlePostOnly(isMarketOrder, exchangeSpecificTifParam === 'post_only', params);
|
|
5202
|
+
const defaultTimeInForce = this.safeStringUpper(this.options, 'defaultTimeInForce');
|
|
5203
|
+
const timeInForce = this.safeStringUpper(params, 'timeInForce', defaultTimeInForce);
|
|
5204
|
+
if (postOnly) {
|
|
5205
|
+
request['timeInForce'] = 'post_only';
|
|
5206
|
+
}
|
|
5207
|
+
else if (timeInForce === 'GTC') {
|
|
5208
|
+
request['timeInForce'] = 'gtc';
|
|
5209
|
+
}
|
|
5210
|
+
else if (timeInForce === 'FOK') {
|
|
5211
|
+
request['timeInForce'] = 'fok';
|
|
5212
|
+
}
|
|
5213
|
+
else if (timeInForce === 'IOC') {
|
|
5214
|
+
request['timeInForce'] = 'ioc';
|
|
5215
|
+
}
|
|
5216
|
+
}
|
|
5217
|
+
const reduceOnly = this.safeBool(params, 'reduceOnly', false);
|
|
5218
|
+
let hedged = undefined;
|
|
5219
|
+
[hedged, params] = this.handleParamBool(params, 'hedged', false);
|
|
5220
|
+
if (reduceOnly) {
|
|
5221
|
+
if (hedged || isStopLossOrTakeProfitTrigger) {
|
|
5222
|
+
const reduceOnlyPosSide = (side === 'sell') ? 'long' : 'short';
|
|
5223
|
+
request['posSide'] = reduceOnlyPosSide;
|
|
5224
|
+
}
|
|
5225
|
+
else if (!isStopLossOrTakeProfitTrigger) {
|
|
5226
|
+
request['reduceOnly'] = 'yes';
|
|
5227
|
+
}
|
|
5228
|
+
}
|
|
5229
|
+
else {
|
|
5230
|
+
if (hedged) {
|
|
5231
|
+
const posSide = (side === 'buy') ? 'long' : 'short';
|
|
5232
|
+
request['posSide'] = posSide;
|
|
5233
|
+
}
|
|
5234
|
+
}
|
|
5235
|
+
params = this.omit(params, ['stopLoss', 'takeProfit', 'postOnly', 'reduceOnly', 'hedged']);
|
|
5236
|
+
return this.extend(request, params);
|
|
5237
|
+
}
|
|
4602
5238
|
createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
4603
5239
|
const market = this.market(symbol);
|
|
4604
5240
|
let marketType = undefined;
|
|
@@ -4682,17 +5318,17 @@ class bitget extends bitget$1 {
|
|
|
4682
5318
|
request['executePrice'] = this.priceToPrecision(symbol, price);
|
|
4683
5319
|
}
|
|
4684
5320
|
if (isStopLoss) {
|
|
4685
|
-
const slTriggerPrice = this.
|
|
5321
|
+
const slTriggerPrice = this.safeString2(stopLoss, 'triggerPrice', 'stopPrice');
|
|
4686
5322
|
request['stopLossTriggerPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
|
|
4687
|
-
const slPrice = this.
|
|
5323
|
+
const slPrice = this.safeString(stopLoss, 'price');
|
|
4688
5324
|
request['stopLossExecutePrice'] = this.priceToPrecision(symbol, slPrice);
|
|
4689
5325
|
const slType = this.safeString(stopLoss, 'type', 'mark_price');
|
|
4690
5326
|
request['stopLossTriggerType'] = slType;
|
|
4691
5327
|
}
|
|
4692
5328
|
if (isTakeProfit) {
|
|
4693
|
-
const tpTriggerPrice = this.
|
|
5329
|
+
const tpTriggerPrice = this.safeString2(takeProfit, 'triggerPrice', 'stopPrice');
|
|
4694
5330
|
request['stopSurplusTriggerPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
4695
|
-
const tpPrice = this.
|
|
5331
|
+
const tpPrice = this.safeString(takeProfit, 'price');
|
|
4696
5332
|
request['stopSurplusExecutePrice'] = this.priceToPrecision(symbol, tpPrice);
|
|
4697
5333
|
const tpType = this.safeString(takeProfit, 'type', 'mark_price');
|
|
4698
5334
|
request['stopSurplusTriggerType'] = tpType;
|
|
@@ -4821,6 +5457,60 @@ class bitget extends bitget$1 {
|
|
|
4821
5457
|
}
|
|
4822
5458
|
return this.extend(request, params);
|
|
4823
5459
|
}
|
|
5460
|
+
async createUtaOrders(orders, params = {}) {
|
|
5461
|
+
await this.loadMarkets();
|
|
5462
|
+
const ordersRequests = [];
|
|
5463
|
+
let symbol = undefined;
|
|
5464
|
+
let marginMode = undefined;
|
|
5465
|
+
for (let i = 0; i < orders.length; i++) {
|
|
5466
|
+
const rawOrder = orders[i];
|
|
5467
|
+
const marketId = this.safeString(rawOrder, 'symbol');
|
|
5468
|
+
if (symbol === undefined) {
|
|
5469
|
+
symbol = marketId;
|
|
5470
|
+
}
|
|
5471
|
+
else {
|
|
5472
|
+
if (symbol !== marketId) {
|
|
5473
|
+
throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
|
|
5474
|
+
}
|
|
5475
|
+
}
|
|
5476
|
+
const type = this.safeString(rawOrder, 'type');
|
|
5477
|
+
const side = this.safeString(rawOrder, 'side');
|
|
5478
|
+
const amount = this.safeValue(rawOrder, 'amount');
|
|
5479
|
+
const price = this.safeValue(rawOrder, 'price');
|
|
5480
|
+
const orderParams = this.safeValue(rawOrder, 'params', {});
|
|
5481
|
+
const marginResult = this.handleMarginModeAndParams('createOrders', orderParams);
|
|
5482
|
+
const currentMarginMode = marginResult[0];
|
|
5483
|
+
if (currentMarginMode !== undefined) {
|
|
5484
|
+
if (marginMode === undefined) {
|
|
5485
|
+
marginMode = currentMarginMode;
|
|
5486
|
+
}
|
|
5487
|
+
else {
|
|
5488
|
+
if (marginMode !== currentMarginMode) {
|
|
5489
|
+
throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same margin mode (isolated or cross)');
|
|
5490
|
+
}
|
|
5491
|
+
}
|
|
5492
|
+
}
|
|
5493
|
+
const orderRequest = this.createUtaOrderRequest(marketId, type, side, amount, price, orderParams);
|
|
5494
|
+
ordersRequests.push(orderRequest);
|
|
5495
|
+
}
|
|
5496
|
+
const market = this.market(symbol);
|
|
5497
|
+
const response = await this.privateUtaPostV3TradePlaceBatch(ordersRequests);
|
|
5498
|
+
//
|
|
5499
|
+
// {
|
|
5500
|
+
// "code": "00000",
|
|
5501
|
+
// "msg": "success",
|
|
5502
|
+
// "requestTime": 1752810184560,
|
|
5503
|
+
// "data": [
|
|
5504
|
+
// {
|
|
5505
|
+
// "orderId": "1329947796441513984",
|
|
5506
|
+
// "clientOid": "1329947796483457024"
|
|
5507
|
+
// },
|
|
5508
|
+
// ]
|
|
5509
|
+
// }
|
|
5510
|
+
//
|
|
5511
|
+
const data = this.safeList(response, 'data', []);
|
|
5512
|
+
return this.parseOrders(data, market);
|
|
5513
|
+
}
|
|
4824
5514
|
/**
|
|
4825
5515
|
* @method
|
|
4826
5516
|
* @name bitget#createOrders
|
|
@@ -4829,12 +5519,19 @@ class bitget extends bitget$1 {
|
|
|
4829
5519
|
* @see https://www.bitget.com/api-doc/contract/trade/Batch-Order
|
|
4830
5520
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Order
|
|
4831
5521
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Order
|
|
5522
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Place-Batch
|
|
4832
5523
|
* @param {Array} orders list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
|
|
4833
5524
|
* @param {object} [params] extra parameters specific to the api endpoint
|
|
5525
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
4834
5526
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4835
5527
|
*/
|
|
4836
5528
|
async createOrders(orders, params = {}) {
|
|
4837
5529
|
await this.loadMarkets();
|
|
5530
|
+
let uta = undefined;
|
|
5531
|
+
[uta, params] = this.handleOptionAndParams(params, 'createOrders', 'uta', false);
|
|
5532
|
+
if (uta) {
|
|
5533
|
+
return await this.createUtaOrders(orders, params);
|
|
5534
|
+
}
|
|
4838
5535
|
const ordersRequests = [];
|
|
4839
5536
|
let symbol = undefined;
|
|
4840
5537
|
let marginMode = undefined;
|
|
@@ -4933,6 +5630,8 @@ class bitget extends bitget$1 {
|
|
|
4933
5630
|
* @see https://www.bitget.com/api-doc/contract/trade/Modify-Order
|
|
4934
5631
|
* @see https://www.bitget.com/api-doc/contract/plan/Modify-Tpsl-Order
|
|
4935
5632
|
* @see https://www.bitget.com/api-doc/contract/plan/Modify-Plan-Order
|
|
5633
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Modify-Order
|
|
5634
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Modify-Strategy-Order
|
|
4936
5635
|
* @param {string} id cancel order id
|
|
4937
5636
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
4938
5637
|
* @param {string} type 'market' or 'limit'
|
|
@@ -4954,6 +5653,7 @@ class bitget extends bitget$1 {
|
|
|
4954
5653
|
* @param {string} [params.trailingPercent] *swap and future only* the percent to trail away from the current market price, rate can not be greater than 10
|
|
4955
5654
|
* @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
|
|
4956
5655
|
* @param {string} [params.newTriggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
|
|
5656
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
4957
5657
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4958
5658
|
*/
|
|
4959
5659
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
@@ -4985,7 +5685,50 @@ class bitget extends bitget$1 {
|
|
|
4985
5685
|
}
|
|
4986
5686
|
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'clientOrderId', 'trailingTriggerPrice', 'trailingPercent']);
|
|
4987
5687
|
let response = undefined;
|
|
4988
|
-
|
|
5688
|
+
let productType = undefined;
|
|
5689
|
+
let uta = undefined;
|
|
5690
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5691
|
+
[uta, params] = this.handleOptionAndParams(params, 'editOrder', 'uta', false);
|
|
5692
|
+
if (uta) {
|
|
5693
|
+
if (amount !== undefined) {
|
|
5694
|
+
request['qty'] = this.amountToPrecision(symbol, amount);
|
|
5695
|
+
}
|
|
5696
|
+
if (isStopLossOrder || isTakeProfitOrder) {
|
|
5697
|
+
if (isStopLossOrder) {
|
|
5698
|
+
const slType = this.safeString(params, 'slTriggerBy', 'mark');
|
|
5699
|
+
request['slTriggerBy'] = slType;
|
|
5700
|
+
request['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
|
|
5701
|
+
if (price !== undefined) {
|
|
5702
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5703
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5704
|
+
}
|
|
5705
|
+
else {
|
|
5706
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5707
|
+
}
|
|
5708
|
+
}
|
|
5709
|
+
else if (isTakeProfitOrder) {
|
|
5710
|
+
const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
|
|
5711
|
+
request['tpTriggerBy'] = tpType;
|
|
5712
|
+
request['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
|
|
5713
|
+
if (price !== undefined) {
|
|
5714
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5715
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5716
|
+
}
|
|
5717
|
+
else {
|
|
5718
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5719
|
+
}
|
|
5720
|
+
}
|
|
5721
|
+
params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
|
|
5722
|
+
response = await this.privateUtaPostV3TradeModifyStrategyOrder(this.extend(request, params));
|
|
5723
|
+
}
|
|
5724
|
+
else {
|
|
5725
|
+
if (price !== undefined) {
|
|
5726
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
5727
|
+
}
|
|
5728
|
+
response = await this.privateUtaPostV3TradeModifyOrder(this.extend(request, params));
|
|
5729
|
+
}
|
|
5730
|
+
}
|
|
5731
|
+
else if (market['spot']) {
|
|
4989
5732
|
if (triggerPrice === undefined) {
|
|
4990
5733
|
throw new errors.NotSupported(this.id + ' editOrder() only supports plan/trigger spot orders');
|
|
4991
5734
|
}
|
|
@@ -5014,8 +5757,6 @@ class bitget extends bitget$1 {
|
|
|
5014
5757
|
throw new errors.NotSupported(this.id + ' editOrder() does not support ' + market['type'] + ' orders');
|
|
5015
5758
|
}
|
|
5016
5759
|
request['symbol'] = market['id'];
|
|
5017
|
-
let productType = undefined;
|
|
5018
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5019
5760
|
request['productType'] = productType;
|
|
5020
5761
|
if (!isTakeProfitOrder && !isStopLossOrder) {
|
|
5021
5762
|
request['newSize'] = this.amountToPrecision(symbol, amount);
|
|
@@ -5107,6 +5848,8 @@ class bitget extends bitget$1 {
|
|
|
5107
5848
|
* @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
|
|
5108
5849
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Cancel-Order
|
|
5109
5850
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Cancel-Order
|
|
5851
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-Order
|
|
5852
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Cancel-Strategy-Order
|
|
5110
5853
|
* @param {string} id order id
|
|
5111
5854
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
5112
5855
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -5114,6 +5857,7 @@ class bitget extends bitget$1 {
|
|
|
5114
5857
|
* @param {boolean} [params.trigger] set to true for canceling trigger orders
|
|
5115
5858
|
* @param {string} [params.planType] *swap only* either profit_plan, loss_plan, normal_plan, pos_profit, pos_loss, moving_plan or track_plan
|
|
5116
5859
|
* @param {boolean} [params.trailing] set to true if you want to cancel a trailing order
|
|
5860
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5117
5861
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5118
5862
|
*/
|
|
5119
5863
|
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
@@ -5135,7 +5879,18 @@ class bitget extends bitget$1 {
|
|
|
5135
5879
|
if (!((market['swap'] || market['future']) && trigger)) {
|
|
5136
5880
|
request['orderId'] = id;
|
|
5137
5881
|
}
|
|
5138
|
-
|
|
5882
|
+
let uta = undefined;
|
|
5883
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelOrder', 'uta', false);
|
|
5884
|
+
if (uta) {
|
|
5885
|
+
request['orderId'] = id;
|
|
5886
|
+
if (trigger) {
|
|
5887
|
+
response = await this.privateUtaPostV3TradeCancelStrategyOrder(this.extend(request, params));
|
|
5888
|
+
}
|
|
5889
|
+
else {
|
|
5890
|
+
response = await this.privateUtaPostV3TradeCancelOrder(this.extend(request, params));
|
|
5891
|
+
}
|
|
5892
|
+
}
|
|
5893
|
+
else if ((market['swap']) || (market['future'])) {
|
|
5139
5894
|
let productType = undefined;
|
|
5140
5895
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5141
5896
|
request['productType'] = productType;
|
|
@@ -5221,17 +5976,66 @@ class bitget extends bitget$1 {
|
|
|
5221
5976
|
// }
|
|
5222
5977
|
// }
|
|
5223
5978
|
//
|
|
5979
|
+
// uta trigger
|
|
5980
|
+
//
|
|
5981
|
+
// {
|
|
5982
|
+
// "code": "00000",
|
|
5983
|
+
// "msg": "success",
|
|
5984
|
+
// "requestTime": "1753058267399",
|
|
5985
|
+
// "data": null
|
|
5986
|
+
// }
|
|
5987
|
+
//
|
|
5224
5988
|
const data = this.safeValue(response, 'data', {});
|
|
5225
5989
|
let order = undefined;
|
|
5226
|
-
if ((market['swap'] || market['future']) && trigger) {
|
|
5990
|
+
if ((market['swap'] || market['future']) && trigger && !uta) {
|
|
5227
5991
|
const orderInfo = this.safeValue(data, 'successList', []);
|
|
5228
5992
|
order = orderInfo[0];
|
|
5229
5993
|
}
|
|
5230
5994
|
else {
|
|
5231
|
-
|
|
5995
|
+
if (uta && trigger) {
|
|
5996
|
+
order = response;
|
|
5997
|
+
}
|
|
5998
|
+
else {
|
|
5999
|
+
order = data;
|
|
6000
|
+
}
|
|
5232
6001
|
}
|
|
5233
6002
|
return this.parseOrder(order, market);
|
|
5234
6003
|
}
|
|
6004
|
+
async cancelUtaOrders(ids, symbol = undefined, params = {}) {
|
|
6005
|
+
if (symbol === undefined) {
|
|
6006
|
+
throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
|
|
6007
|
+
}
|
|
6008
|
+
await this.loadMarkets();
|
|
6009
|
+
const market = this.market(symbol);
|
|
6010
|
+
let productType = undefined;
|
|
6011
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6012
|
+
const requestList = [];
|
|
6013
|
+
for (let i = 0; i < ids.length; i++) {
|
|
6014
|
+
const individualId = ids[i];
|
|
6015
|
+
const order = {
|
|
6016
|
+
'orderId': individualId,
|
|
6017
|
+
'symbol': market['id'],
|
|
6018
|
+
'category': productType,
|
|
6019
|
+
};
|
|
6020
|
+
requestList.push(order);
|
|
6021
|
+
}
|
|
6022
|
+
const response = await this.privateUtaPostV3TradeCancelBatch(requestList);
|
|
6023
|
+
//
|
|
6024
|
+
// {
|
|
6025
|
+
// "code": "00000",
|
|
6026
|
+
// "msg": "success",
|
|
6027
|
+
// "requestTime": 1752813731517,
|
|
6028
|
+
// "data": [
|
|
6029
|
+
// {
|
|
6030
|
+
// "orderId": "1329948909442023424",
|
|
6031
|
+
// "clientOid": "1329948909446217728"
|
|
6032
|
+
// },
|
|
6033
|
+
// ]
|
|
6034
|
+
// }
|
|
6035
|
+
//
|
|
6036
|
+
const data = this.safeList(response, 'data', []);
|
|
6037
|
+
return this.parseOrders(data, market);
|
|
6038
|
+
}
|
|
5235
6039
|
/**
|
|
5236
6040
|
* @method
|
|
5237
6041
|
* @name bitget#cancelOrders
|
|
@@ -5241,11 +6045,13 @@ class bitget extends bitget$1 {
|
|
|
5241
6045
|
* @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
|
|
5242
6046
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Cancel-Order
|
|
5243
6047
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Cancel-Orders
|
|
6048
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-Batch
|
|
5244
6049
|
* @param {string[]} ids order ids
|
|
5245
6050
|
* @param {string} symbol unified market symbol, default is undefined
|
|
5246
6051
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5247
6052
|
* @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
|
|
5248
6053
|
* @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
|
|
6054
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5249
6055
|
* @returns {object} an array of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5250
6056
|
*/
|
|
5251
6057
|
async cancelOrders(ids, symbol = undefined, params = {}) {
|
|
@@ -5254,6 +6060,11 @@ class bitget extends bitget$1 {
|
|
|
5254
6060
|
}
|
|
5255
6061
|
await this.loadMarkets();
|
|
5256
6062
|
const market = this.market(symbol);
|
|
6063
|
+
let uta = undefined;
|
|
6064
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelOrders', 'uta', false);
|
|
6065
|
+
if (uta) {
|
|
6066
|
+
return await this.cancelUtaOrders(ids, symbol, params);
|
|
6067
|
+
}
|
|
5257
6068
|
let marginMode = undefined;
|
|
5258
6069
|
[marginMode, params] = this.handleMarginModeAndParams('cancelOrders', params);
|
|
5259
6070
|
const trigger = this.safeValue2(params, 'stop', 'trigger');
|
|
@@ -5329,10 +6140,12 @@ class bitget extends bitget$1 {
|
|
|
5329
6140
|
* @see https://www.bitget.com/api-doc/contract/trade/Batch-Cancel-Orders
|
|
5330
6141
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-batch-cancel-orders
|
|
5331
6142
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-batch-cancel-order
|
|
6143
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-All-Order
|
|
5332
6144
|
* @param {string} symbol unified market symbol
|
|
5333
6145
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5334
6146
|
* @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
|
|
5335
6147
|
* @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
|
|
6148
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5336
6149
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5337
6150
|
*/
|
|
5338
6151
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -5343,13 +6156,41 @@ class bitget extends bitget$1 {
|
|
|
5343
6156
|
const market = this.market(symbol);
|
|
5344
6157
|
let marginMode = undefined;
|
|
5345
6158
|
[marginMode, params] = this.handleMarginModeAndParams('cancelAllOrders', params);
|
|
6159
|
+
let productType = undefined;
|
|
6160
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5346
6161
|
const request = {
|
|
5347
6162
|
'symbol': market['id'],
|
|
5348
6163
|
};
|
|
5349
6164
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
5350
6165
|
params = this.omit(params, ['stop', 'trigger']);
|
|
5351
6166
|
let response = undefined;
|
|
5352
|
-
|
|
6167
|
+
let uta = undefined;
|
|
6168
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'uta', false);
|
|
6169
|
+
if (uta) {
|
|
6170
|
+
if (productType === 'SPOT') {
|
|
6171
|
+
if (marginMode !== undefined) {
|
|
6172
|
+
productType = 'MARGIN';
|
|
6173
|
+
}
|
|
6174
|
+
}
|
|
6175
|
+
request['category'] = productType;
|
|
6176
|
+
response = await this.privateUtaPostV3TradeCancelSymbolOrder(this.extend(request, params));
|
|
6177
|
+
//
|
|
6178
|
+
// {
|
|
6179
|
+
// "code": "00000",
|
|
6180
|
+
// "msg": "success",
|
|
6181
|
+
// "requestTime": 1750751578138,
|
|
6182
|
+
// "data": {
|
|
6183
|
+
// "list": [
|
|
6184
|
+
// {
|
|
6185
|
+
// "orderId": "1321313242969427968",
|
|
6186
|
+
// "clientOid": "1321313242969427969"
|
|
6187
|
+
// }
|
|
6188
|
+
// ]
|
|
6189
|
+
// }
|
|
6190
|
+
// }
|
|
6191
|
+
//
|
|
6192
|
+
}
|
|
6193
|
+
else if (market['spot']) {
|
|
5353
6194
|
if (marginMode !== undefined) {
|
|
5354
6195
|
if (marginMode === 'cross') {
|
|
5355
6196
|
response = await this.privateMarginPostMarginV1CrossOrderBatchCancelOrder(this.extend(request, params));
|
|
@@ -5408,8 +6249,6 @@ class bitget extends bitget$1 {
|
|
|
5408
6249
|
}
|
|
5409
6250
|
}
|
|
5410
6251
|
else {
|
|
5411
|
-
let productType = undefined;
|
|
5412
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5413
6252
|
request['productType'] = productType;
|
|
5414
6253
|
if (trigger) {
|
|
5415
6254
|
response = await this.privateMixPostV2MixOrderCancelPlanOrder(this.extend(request, params));
|
|
@@ -5433,9 +6272,15 @@ class bitget extends bitget$1 {
|
|
|
5433
6272
|
// }
|
|
5434
6273
|
}
|
|
5435
6274
|
const data = this.safeDict(response, 'data');
|
|
5436
|
-
const resultList = this.
|
|
6275
|
+
const resultList = this.safeListN(data, ['resultList', 'successList', 'list']);
|
|
5437
6276
|
const failureList = this.safeList2(data, 'failure', 'failureList');
|
|
5438
|
-
|
|
6277
|
+
let responseList = undefined;
|
|
6278
|
+
if ((resultList !== undefined) && (failureList !== undefined)) {
|
|
6279
|
+
responseList = this.arrayConcat(resultList, failureList);
|
|
6280
|
+
}
|
|
6281
|
+
else {
|
|
6282
|
+
responseList = resultList;
|
|
6283
|
+
}
|
|
5439
6284
|
return this.parseOrders(responseList);
|
|
5440
6285
|
}
|
|
5441
6286
|
/**
|
|
@@ -5444,9 +6289,11 @@ class bitget extends bitget$1 {
|
|
|
5444
6289
|
* @description fetches information on an order made by the user
|
|
5445
6290
|
* @see https://www.bitget.com/api-doc/spot/trade/Get-Order-Info
|
|
5446
6291
|
* @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Details
|
|
6292
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Details
|
|
5447
6293
|
* @param {string} id the order id
|
|
5448
6294
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
5449
6295
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6296
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5450
6297
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5451
6298
|
*/
|
|
5452
6299
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
@@ -5459,7 +6306,12 @@ class bitget extends bitget$1 {
|
|
|
5459
6306
|
'orderId': id,
|
|
5460
6307
|
};
|
|
5461
6308
|
let response = undefined;
|
|
5462
|
-
|
|
6309
|
+
let uta = undefined;
|
|
6310
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOrder', 'uta', false);
|
|
6311
|
+
if (uta) {
|
|
6312
|
+
response = await this.privateUtaGetV3TradeOrderInfo(this.extend(request, params));
|
|
6313
|
+
}
|
|
6314
|
+
else if (market['spot']) {
|
|
5463
6315
|
response = await this.privateSpotGetV2SpotTradeOrderInfo(this.extend(request, params));
|
|
5464
6316
|
}
|
|
5465
6317
|
else if (market['swap'] || market['future']) {
|
|
@@ -5539,7 +6391,51 @@ class bitget extends bitget$1 {
|
|
|
5539
6391
|
// }
|
|
5540
6392
|
// }
|
|
5541
6393
|
//
|
|
5542
|
-
|
|
6394
|
+
// uta
|
|
6395
|
+
//
|
|
6396
|
+
// {
|
|
6397
|
+
// "code": "00000",
|
|
6398
|
+
// "msg": "success",
|
|
6399
|
+
// "requestTime": 1750496858333,
|
|
6400
|
+
// "data": {
|
|
6401
|
+
// "orderId": "1320244799629316096",
|
|
6402
|
+
// "clientOid": "1320244799633510400",
|
|
6403
|
+
// "category": "USDT-FUTURES",
|
|
6404
|
+
// "symbol": "BTCUSDT",
|
|
6405
|
+
// "orderType": "limit",
|
|
6406
|
+
// "side": "buy",
|
|
6407
|
+
// "price": "50000",
|
|
6408
|
+
// "qty": "0.001",
|
|
6409
|
+
// "amount": "0",
|
|
6410
|
+
// "cumExecQty": "0",
|
|
6411
|
+
// "cumExecValue": "0",
|
|
6412
|
+
// "avgPrice": "0",
|
|
6413
|
+
// "timeInForce": "gtc",
|
|
6414
|
+
// "orderStatus": "live",
|
|
6415
|
+
// "posSide": "long",
|
|
6416
|
+
// "holdMode": "hedge_mode",
|
|
6417
|
+
// "reduceOnly": "NO",
|
|
6418
|
+
// "feeDetail": [{
|
|
6419
|
+
// "feeCoin": "",
|
|
6420
|
+
// "fee": ""
|
|
6421
|
+
// }],
|
|
6422
|
+
// "createdTime": "1750496809871",
|
|
6423
|
+
// "updatedTime": "1750496809886",
|
|
6424
|
+
// "cancelReason": "",
|
|
6425
|
+
// "execType": "normal",
|
|
6426
|
+
// "stpMode": "none",
|
|
6427
|
+
// "tpTriggerBy": null,
|
|
6428
|
+
// "slTriggerBy": null,
|
|
6429
|
+
// "takeProfit": null,
|
|
6430
|
+
// "stopLoss": null,
|
|
6431
|
+
// "tpOrderType": null,
|
|
6432
|
+
// "slOrderType": null,
|
|
6433
|
+
// "tpLimitPrice": null,
|
|
6434
|
+
// "slLimitPrice": null
|
|
6435
|
+
// }
|
|
6436
|
+
// }
|
|
6437
|
+
//
|
|
6438
|
+
if (!uta && (typeof response === 'string')) {
|
|
5543
6439
|
response = JSON.parse(response);
|
|
5544
6440
|
}
|
|
5545
6441
|
const data = this.safeDict(response, 'data');
|
|
@@ -5549,6 +6445,10 @@ class bitget extends bitget$1 {
|
|
|
5549
6445
|
}
|
|
5550
6446
|
}
|
|
5551
6447
|
const dataList = this.safeList(response, 'data', []);
|
|
6448
|
+
const dataListLength = dataList.length;
|
|
6449
|
+
if (dataListLength === 0) {
|
|
6450
|
+
throw new errors.OrderNotFound(this.id + ' fetchOrder() could not find order id ' + id + ' in ' + this.json(response));
|
|
6451
|
+
}
|
|
5552
6452
|
const first = this.safeDict(dataList, 0, {});
|
|
5553
6453
|
return this.parseOrder(first, market);
|
|
5554
6454
|
// const first = this.safeDict (data, 0, data);
|
|
@@ -5564,6 +6464,7 @@ class bitget extends bitget$1 {
|
|
|
5564
6464
|
* @see https://www.bitget.com/api-doc/contract/plan/get-orders-plan-pending
|
|
5565
6465
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Open-Orders
|
|
5566
6466
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Open-Orders
|
|
6467
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Get-Unfilled-Strategy-Orders
|
|
5567
6468
|
* @param {string} symbol unified market symbol
|
|
5568
6469
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
5569
6470
|
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
@@ -5574,6 +6475,7 @@ class bitget extends bitget$1 {
|
|
|
5574
6475
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
5575
6476
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
5576
6477
|
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
6478
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5577
6479
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5578
6480
|
*/
|
|
5579
6481
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -5583,6 +6485,8 @@ class bitget extends bitget$1 {
|
|
|
5583
6485
|
let request = {};
|
|
5584
6486
|
let marginMode = undefined;
|
|
5585
6487
|
[marginMode, params] = this.handleMarginModeAndParams('fetchOpenOrders', params);
|
|
6488
|
+
let uta = undefined;
|
|
6489
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'uta', false);
|
|
5586
6490
|
if (symbol !== undefined) {
|
|
5587
6491
|
market = this.market(symbol);
|
|
5588
6492
|
request['symbol'] = market['id'];
|
|
@@ -5598,22 +6502,28 @@ class bitget extends bitget$1 {
|
|
|
5598
6502
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
|
|
5599
6503
|
if (paginate) {
|
|
5600
6504
|
let cursorReceived = undefined;
|
|
5601
|
-
|
|
6505
|
+
let cursorSent = undefined;
|
|
6506
|
+
if (uta) {
|
|
6507
|
+
cursorReceived = 'cursor';
|
|
6508
|
+
cursorSent = 'cursor';
|
|
6509
|
+
}
|
|
6510
|
+
else if (type === 'spot') {
|
|
5602
6511
|
if (marginMode !== undefined) {
|
|
5603
6512
|
cursorReceived = 'minId';
|
|
6513
|
+
cursorSent = 'idLessThan';
|
|
5604
6514
|
}
|
|
5605
6515
|
}
|
|
5606
6516
|
else {
|
|
5607
6517
|
cursorReceived = 'endId';
|
|
6518
|
+
cursorSent = 'idLessThan';
|
|
5608
6519
|
}
|
|
5609
|
-
return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived,
|
|
6520
|
+
return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, cursorSent);
|
|
5610
6521
|
}
|
|
5611
6522
|
let response = undefined;
|
|
5612
6523
|
const trailing = this.safeBool(params, 'trailing');
|
|
5613
6524
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
5614
6525
|
const planTypeDefined = this.safeString(params, 'planType') !== undefined;
|
|
5615
6526
|
const isTrigger = (trigger || planTypeDefined);
|
|
5616
|
-
params = this.omit(params, ['stop', 'trigger', 'trailing']);
|
|
5617
6527
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
5618
6528
|
if (since !== undefined) {
|
|
5619
6529
|
request['startTime'] = since;
|
|
@@ -5621,53 +6531,66 @@ class bitget extends bitget$1 {
|
|
|
5621
6531
|
if (limit !== undefined) {
|
|
5622
6532
|
request['limit'] = limit;
|
|
5623
6533
|
}
|
|
5624
|
-
if ((type === 'swap') || (type === 'future') || (marginMode !== undefined)) {
|
|
6534
|
+
if (!uta && ((type === 'swap') || (type === 'future') || (marginMode !== undefined))) {
|
|
5625
6535
|
const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
|
|
5626
6536
|
params = this.omit(params, 'clientOrderId');
|
|
5627
6537
|
if (clientOrderId !== undefined) {
|
|
5628
6538
|
request['clientOid'] = clientOrderId;
|
|
5629
6539
|
}
|
|
5630
6540
|
}
|
|
5631
|
-
let
|
|
5632
|
-
|
|
5633
|
-
|
|
6541
|
+
let productType = undefined;
|
|
6542
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6543
|
+
params = this.omit(params, ['type', 'stop', 'trigger', 'trailing']);
|
|
6544
|
+
if (uta) {
|
|
6545
|
+
if (type === 'spot') {
|
|
6546
|
+
if (marginMode !== undefined) {
|
|
6547
|
+
productType = 'MARGIN';
|
|
6548
|
+
}
|
|
6549
|
+
}
|
|
6550
|
+
request['category'] = productType;
|
|
6551
|
+
if (trigger) {
|
|
6552
|
+
response = await this.privateUtaGetV3TradeUnfilledStrategyOrders(this.extend(request, params));
|
|
6553
|
+
}
|
|
6554
|
+
else {
|
|
6555
|
+
response = await this.privateUtaGetV3TradeUnfilledOrders(this.extend(request, params));
|
|
6556
|
+
}
|
|
6557
|
+
}
|
|
6558
|
+
else if (type === 'spot') {
|
|
5634
6559
|
if (marginMode !== undefined) {
|
|
5635
6560
|
if (since === undefined) {
|
|
5636
6561
|
since = this.milliseconds() - 7776000000;
|
|
5637
6562
|
request['startTime'] = since;
|
|
5638
6563
|
}
|
|
5639
6564
|
if (marginMode === 'isolated') {
|
|
5640
|
-
response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request,
|
|
6565
|
+
response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request, params));
|
|
5641
6566
|
}
|
|
5642
6567
|
else if (marginMode === 'cross') {
|
|
5643
|
-
response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request,
|
|
6568
|
+
response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request, params));
|
|
5644
6569
|
}
|
|
5645
6570
|
}
|
|
5646
6571
|
else {
|
|
5647
6572
|
if (trigger) {
|
|
5648
|
-
response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request,
|
|
6573
|
+
response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request, params));
|
|
5649
6574
|
}
|
|
5650
6575
|
else {
|
|
5651
|
-
response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request,
|
|
6576
|
+
response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request, params));
|
|
5652
6577
|
}
|
|
5653
6578
|
}
|
|
5654
6579
|
}
|
|
5655
6580
|
else {
|
|
5656
|
-
let productType = undefined;
|
|
5657
|
-
[productType, query] = this.handleProductTypeAndParams(market, query);
|
|
5658
6581
|
request['productType'] = productType;
|
|
5659
6582
|
if (trailing) {
|
|
5660
6583
|
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
5661
6584
|
request['planType'] = planType;
|
|
5662
|
-
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request,
|
|
6585
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
|
|
5663
6586
|
}
|
|
5664
6587
|
else if (isTrigger) {
|
|
5665
|
-
const planType = this.safeString(
|
|
6588
|
+
const planType = this.safeString(params, 'planType', 'normal_plan');
|
|
5666
6589
|
request['planType'] = planType;
|
|
5667
|
-
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request,
|
|
6590
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
|
|
5668
6591
|
}
|
|
5669
6592
|
else {
|
|
5670
|
-
response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request,
|
|
6593
|
+
response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request, params));
|
|
5671
6594
|
}
|
|
5672
6595
|
}
|
|
5673
6596
|
//
|
|
@@ -5845,8 +6768,95 @@ class bitget extends bitget$1 {
|
|
|
5845
6768
|
// }
|
|
5846
6769
|
// }
|
|
5847
6770
|
//
|
|
6771
|
+
// uta
|
|
6772
|
+
//
|
|
6773
|
+
// {
|
|
6774
|
+
// "code": "00000",
|
|
6775
|
+
// "msg": "success",
|
|
6776
|
+
// "requestTime": 1750753395850,
|
|
6777
|
+
// "data": {
|
|
6778
|
+
// "list": [
|
|
6779
|
+
// {
|
|
6780
|
+
// "orderId": "1321320757371228160",
|
|
6781
|
+
// "clientOid": "1321320757371228161",
|
|
6782
|
+
// "category": "USDT-FUTURES",
|
|
6783
|
+
// "symbol": "BTCUSDT",
|
|
6784
|
+
// "orderType": "limit",
|
|
6785
|
+
// "side": "buy",
|
|
6786
|
+
// "price": "50000",
|
|
6787
|
+
// "qty": "0.001",
|
|
6788
|
+
// "amount": "0",
|
|
6789
|
+
// "cumExecQty": "0",
|
|
6790
|
+
// "cumExecValue": "0",
|
|
6791
|
+
// "avgPrice": "0",
|
|
6792
|
+
// "timeInForce": "gtc",
|
|
6793
|
+
// "orderStatus": "live",
|
|
6794
|
+
// "posSide": "long",
|
|
6795
|
+
// "holdMode": "hedge_mode",
|
|
6796
|
+
// "reduceOnly": "NO",
|
|
6797
|
+
// "feeDetail": [
|
|
6798
|
+
// {
|
|
6799
|
+
// "feeCoin": "",
|
|
6800
|
+
// "fee": ""
|
|
6801
|
+
// }
|
|
6802
|
+
// ],
|
|
6803
|
+
// "createdTime": "1750753338186",
|
|
6804
|
+
// "updatedTime": "1750753338203",
|
|
6805
|
+
// "stpMode": "none",
|
|
6806
|
+
// "tpTriggerBy": null,
|
|
6807
|
+
// "slTriggerBy": null,
|
|
6808
|
+
// "takeProfit": null,
|
|
6809
|
+
// "stopLoss": null,
|
|
6810
|
+
// "tpOrderType": null,
|
|
6811
|
+
// "slOrderType": null,
|
|
6812
|
+
// "tpLimitPrice": null,
|
|
6813
|
+
// "slLimitPrice": null
|
|
6814
|
+
// }
|
|
6815
|
+
// ],
|
|
6816
|
+
// "cursor": "1321320757371228160"
|
|
6817
|
+
// }
|
|
6818
|
+
// }
|
|
6819
|
+
//
|
|
6820
|
+
// uta trigger
|
|
6821
|
+
//
|
|
6822
|
+
// {
|
|
6823
|
+
// "code": "00000",
|
|
6824
|
+
// "msg": "success",
|
|
6825
|
+
// "requestTime": 1753057527060,
|
|
6826
|
+
// "data": [
|
|
6827
|
+
// {
|
|
6828
|
+
// "orderId": "1330984742276198400",
|
|
6829
|
+
// "clientOid": "1330984742276198400",
|
|
6830
|
+
// "symbol": "BTCUSDT",
|
|
6831
|
+
// "category": "USDT-FUTURES",
|
|
6832
|
+
// "qty": "0.001",
|
|
6833
|
+
// "posSide": "long",
|
|
6834
|
+
// "tpTriggerBy": "market",
|
|
6835
|
+
// "slTriggerBy": "mark",
|
|
6836
|
+
// "takeProfit": "",
|
|
6837
|
+
// "stopLoss":"114000",
|
|
6838
|
+
// "tpOrderType": "market",
|
|
6839
|
+
// "slOrderType": "limit",
|
|
6840
|
+
// "tpLimitPrice": "",
|
|
6841
|
+
// "slLimitPrice": "113000",
|
|
6842
|
+
// "createdTime": "1753057411736",
|
|
6843
|
+
// "updatedTime": "1753057411747"
|
|
6844
|
+
// }
|
|
6845
|
+
// ]
|
|
6846
|
+
// }
|
|
6847
|
+
//
|
|
5848
6848
|
const data = this.safeValue(response, 'data');
|
|
5849
|
-
if (
|
|
6849
|
+
if (uta) {
|
|
6850
|
+
let result = undefined;
|
|
6851
|
+
if (trigger) {
|
|
6852
|
+
result = this.safeList(response, 'data', []);
|
|
6853
|
+
}
|
|
6854
|
+
else {
|
|
6855
|
+
result = this.safeList(data, 'list', []);
|
|
6856
|
+
}
|
|
6857
|
+
return this.parseOrders(result, market, since, limit);
|
|
6858
|
+
}
|
|
6859
|
+
else if (type === 'spot') {
|
|
5850
6860
|
if ((marginMode !== undefined) || trigger) {
|
|
5851
6861
|
const resultList = this.safeList(data, 'orderList', []);
|
|
5852
6862
|
return this.parseOrders(resultList, market, since, limit);
|
|
@@ -5868,6 +6878,7 @@ class bitget extends bitget$1 {
|
|
|
5868
6878
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5869
6879
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5870
6880
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6881
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
5871
6882
|
* @param {string} symbol unified market symbol of the closed orders
|
|
5872
6883
|
* @param {int} [since] timestamp in ms of the earliest order
|
|
5873
6884
|
* @param {int} [limit] the max number of closed orders to return
|
|
@@ -5895,6 +6906,7 @@ class bitget extends bitget$1 {
|
|
|
5895
6906
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5896
6907
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5897
6908
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6909
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
5898
6910
|
* @param {string} symbol unified market symbol of the canceled orders
|
|
5899
6911
|
* @param {int} [since] timestamp in ms of the earliest order
|
|
5900
6912
|
* @param {int} [limit] the max number of canceled orders to return
|
|
@@ -5921,6 +6933,8 @@ class bitget extends bitget$1 {
|
|
|
5921
6933
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5922
6934
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5923
6935
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6936
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
6937
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Get-History-Strategy-Orders
|
|
5924
6938
|
* @description fetches information on multiple canceled and closed orders made by the user
|
|
5925
6939
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
5926
6940
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
@@ -5932,9 +6946,15 @@ class bitget extends bitget$1 {
|
|
|
5932
6946
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
5933
6947
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
5934
6948
|
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
6949
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5935
6950
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5936
6951
|
*/
|
|
5937
6952
|
async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
6953
|
+
let uta = undefined;
|
|
6954
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'uta', false);
|
|
6955
|
+
if (uta) {
|
|
6956
|
+
return await this.fetchUtaCanceledAndClosedOrders(symbol, since, limit, params);
|
|
6957
|
+
}
|
|
5938
6958
|
await this.loadMarkets();
|
|
5939
6959
|
let market = undefined;
|
|
5940
6960
|
let request = {};
|
|
@@ -6223,6 +7243,132 @@ class bitget extends bitget$1 {
|
|
|
6223
7243
|
const orders = this.safeList(response, 'data', []);
|
|
6224
7244
|
return this.parseOrders(orders, market, since, limit);
|
|
6225
7245
|
}
|
|
7246
|
+
async fetchUtaCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
7247
|
+
await this.loadMarkets();
|
|
7248
|
+
let market = undefined;
|
|
7249
|
+
if (symbol !== undefined) {
|
|
7250
|
+
market = this.market(symbol);
|
|
7251
|
+
}
|
|
7252
|
+
let productType = undefined;
|
|
7253
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7254
|
+
if (productType === 'SPOT') {
|
|
7255
|
+
let marginMode = undefined;
|
|
7256
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchCanceledAndClosedOrders', params);
|
|
7257
|
+
if (marginMode !== undefined) {
|
|
7258
|
+
productType = 'MARGIN';
|
|
7259
|
+
}
|
|
7260
|
+
}
|
|
7261
|
+
let request = {
|
|
7262
|
+
'category': productType,
|
|
7263
|
+
};
|
|
7264
|
+
let paginate = false;
|
|
7265
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'paginate');
|
|
7266
|
+
if (paginate) {
|
|
7267
|
+
return await this.fetchPaginatedCallCursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, 'cursor', 'cursor');
|
|
7268
|
+
}
|
|
7269
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
7270
|
+
if (since !== undefined) {
|
|
7271
|
+
request['startTime'] = since;
|
|
7272
|
+
}
|
|
7273
|
+
if (limit !== undefined) {
|
|
7274
|
+
request['limit'] = limit;
|
|
7275
|
+
}
|
|
7276
|
+
let response = undefined;
|
|
7277
|
+
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
7278
|
+
params = this.omit(params, ['stop', 'trigger']);
|
|
7279
|
+
if (trigger) {
|
|
7280
|
+
response = await this.privateUtaGetV3TradeHistoryStrategyOrders(this.extend(request, params));
|
|
7281
|
+
}
|
|
7282
|
+
else {
|
|
7283
|
+
response = await this.privateUtaGetV3TradeHistoryOrders(this.extend(request, params));
|
|
7284
|
+
}
|
|
7285
|
+
//
|
|
7286
|
+
// uta
|
|
7287
|
+
//
|
|
7288
|
+
// {
|
|
7289
|
+
// "code": "00000",
|
|
7290
|
+
// "msg": "success",
|
|
7291
|
+
// "requestTime": 1752531592855,
|
|
7292
|
+
// "data": {
|
|
7293
|
+
// "list": [
|
|
7294
|
+
// {
|
|
7295
|
+
// "orderId": "1322441400976261120",
|
|
7296
|
+
// "clientOid": "1322441400976261121",
|
|
7297
|
+
// "category": "USDT-FUTURES",
|
|
7298
|
+
// "symbol": "BTCUSDT",
|
|
7299
|
+
// "orderType": "market",
|
|
7300
|
+
// "side": "sell",
|
|
7301
|
+
// "price": "0",
|
|
7302
|
+
// "qty": "0.0001",
|
|
7303
|
+
// "amount": "0",
|
|
7304
|
+
// "cumExecQty": "0.0001",
|
|
7305
|
+
// "cumExecValue": "10.7005",
|
|
7306
|
+
// "avgPrice": "107005.4",
|
|
7307
|
+
// "timeInForce": "gtc",
|
|
7308
|
+
// "orderStatus": "filled",
|
|
7309
|
+
// "posSide": "long",
|
|
7310
|
+
// "holdMode": "hedge_mode",
|
|
7311
|
+
// "reduceOnly": "NO",
|
|
7312
|
+
// "feeDetail": [
|
|
7313
|
+
// {
|
|
7314
|
+
// "feeCoin": "USDT",
|
|
7315
|
+
// "fee": "0.00642032"
|
|
7316
|
+
// }
|
|
7317
|
+
// ],
|
|
7318
|
+
// "createdTime": "1751020520442",
|
|
7319
|
+
// "updatedTime": "1751020520457",
|
|
7320
|
+
// "cancelReason": "",
|
|
7321
|
+
// "execType": "normal",
|
|
7322
|
+
// "stpMode": "none",
|
|
7323
|
+
// "tpTriggerBy": null,
|
|
7324
|
+
// "slTriggerBy": null,
|
|
7325
|
+
// "takeProfit": null,
|
|
7326
|
+
// "stopLoss": null,
|
|
7327
|
+
// "tpOrderType": null,
|
|
7328
|
+
// "slOrderType": null,
|
|
7329
|
+
// "tpLimitPrice": null,
|
|
7330
|
+
// "slLimitPrice": null
|
|
7331
|
+
// },
|
|
7332
|
+
// ],
|
|
7333
|
+
// "cursor": "1322441328637100035"
|
|
7334
|
+
// }
|
|
7335
|
+
// }
|
|
7336
|
+
//
|
|
7337
|
+
// uta trigger
|
|
7338
|
+
//
|
|
7339
|
+
// {
|
|
7340
|
+
// "code": "00000",
|
|
7341
|
+
// "msg": "success",
|
|
7342
|
+
// "requestTime": 1753058447920,
|
|
7343
|
+
// "data": {
|
|
7344
|
+
// "list": [
|
|
7345
|
+
// {
|
|
7346
|
+
// "orderId": "1330984742276198400",
|
|
7347
|
+
// "clientOid": "1330984742276198400",
|
|
7348
|
+
// "symbol": "BTCUSDT",
|
|
7349
|
+
// "category": "USDT-FUTURES",
|
|
7350
|
+
// "qty": "0.001",
|
|
7351
|
+
// "posSide": "long",
|
|
7352
|
+
// "tpTriggerBy": "market",
|
|
7353
|
+
// "slTriggerBy": "mark",
|
|
7354
|
+
// "takeProfit": "",
|
|
7355
|
+
// "stopLoss": "112000",
|
|
7356
|
+
// "tpOrderType": "market",
|
|
7357
|
+
// "slOrderType": "limit",
|
|
7358
|
+
// "tpLimitPrice": "",
|
|
7359
|
+
// "slLimitPrice": "111000",
|
|
7360
|
+
// "createdTime": "1753057411736",
|
|
7361
|
+
// "updatedTime": "1753058267412"
|
|
7362
|
+
// },
|
|
7363
|
+
// ],
|
|
7364
|
+
// "cursor": 1330960754317619202
|
|
7365
|
+
// }
|
|
7366
|
+
// }
|
|
7367
|
+
//
|
|
7368
|
+
const data = this.safeDict(response, 'data', {});
|
|
7369
|
+
const orders = this.safeList(data, 'list', []);
|
|
7370
|
+
return this.parseOrders(orders, market, since, limit);
|
|
7371
|
+
}
|
|
6226
7372
|
/**
|
|
6227
7373
|
* @method
|
|
6228
7374
|
* @name bitget#fetchLedger
|
|
@@ -6449,69 +7595,84 @@ class bitget extends bitget$1 {
|
|
|
6449
7595
|
* @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Fills
|
|
6450
7596
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-Fills
|
|
6451
7597
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Transaction-Details
|
|
7598
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Fills
|
|
6452
7599
|
* @param {string} symbol unified market symbol
|
|
6453
7600
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
6454
7601
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
6455
7602
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6456
7603
|
* @param {int} [params.until] the latest time in ms to fetch trades for
|
|
7604
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
6457
7605
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
6458
7606
|
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
6459
7607
|
*/
|
|
6460
7608
|
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
6461
|
-
|
|
7609
|
+
let uta = undefined;
|
|
7610
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'uta', false);
|
|
7611
|
+
if (!uta && (symbol === undefined)) {
|
|
6462
7612
|
throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
6463
7613
|
}
|
|
6464
7614
|
await this.loadMarkets();
|
|
6465
7615
|
const market = this.market(symbol);
|
|
6466
|
-
let
|
|
6467
|
-
[
|
|
7616
|
+
let request = {};
|
|
7617
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
7618
|
+
if (since !== undefined) {
|
|
7619
|
+
request['startTime'] = since;
|
|
7620
|
+
}
|
|
7621
|
+
if (limit !== undefined) {
|
|
7622
|
+
request['limit'] = limit;
|
|
7623
|
+
}
|
|
6468
7624
|
let paginate = false;
|
|
7625
|
+
let marginMode = undefined;
|
|
6469
7626
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
|
|
7627
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
6470
7628
|
if (paginate) {
|
|
6471
7629
|
let cursorReceived = undefined;
|
|
6472
|
-
|
|
7630
|
+
let cursorSent = undefined;
|
|
7631
|
+
if (uta) {
|
|
7632
|
+
cursorReceived = 'cursor';
|
|
7633
|
+
cursorSent = 'cursor';
|
|
7634
|
+
}
|
|
7635
|
+
else if (market['spot']) {
|
|
6473
7636
|
if (marginMode !== undefined) {
|
|
6474
7637
|
cursorReceived = 'minId';
|
|
7638
|
+
cursorSent = 'idLessThan';
|
|
6475
7639
|
}
|
|
6476
7640
|
}
|
|
6477
7641
|
else {
|
|
6478
7642
|
cursorReceived = 'endId';
|
|
7643
|
+
cursorSent = 'idLessThan';
|
|
6479
7644
|
}
|
|
6480
|
-
return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived,
|
|
7645
|
+
return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived, cursorSent);
|
|
6481
7646
|
}
|
|
6482
7647
|
let response = undefined;
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
};
|
|
6486
|
-
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
6487
|
-
if (since !== undefined) {
|
|
6488
|
-
request['startTime'] = since;
|
|
6489
|
-
}
|
|
6490
|
-
if (limit !== undefined) {
|
|
6491
|
-
request['limit'] = limit;
|
|
7648
|
+
if (uta) {
|
|
7649
|
+
response = await this.privateUtaGetV3TradeFills(this.extend(request, params));
|
|
6492
7650
|
}
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
|
|
6499
|
-
|
|
7651
|
+
else {
|
|
7652
|
+
request['symbol'] = market['id'];
|
|
7653
|
+
if (market['spot']) {
|
|
7654
|
+
if (marginMode !== undefined) {
|
|
7655
|
+
if (since === undefined) {
|
|
7656
|
+
request['startTime'] = this.milliseconds() - 7776000000;
|
|
7657
|
+
}
|
|
7658
|
+
if (marginMode === 'isolated') {
|
|
7659
|
+
response = await this.privateMarginGetV2MarginIsolatedFills(this.extend(request, params));
|
|
7660
|
+
}
|
|
7661
|
+
else if (marginMode === 'cross') {
|
|
7662
|
+
response = await this.privateMarginGetV2MarginCrossedFills(this.extend(request, params));
|
|
7663
|
+
}
|
|
6500
7664
|
}
|
|
6501
|
-
else
|
|
6502
|
-
response = await this.
|
|
7665
|
+
else {
|
|
7666
|
+
response = await this.privateSpotGetV2SpotTradeFills(this.extend(request, params));
|
|
6503
7667
|
}
|
|
6504
7668
|
}
|
|
6505
7669
|
else {
|
|
6506
|
-
|
|
7670
|
+
let productType = undefined;
|
|
7671
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7672
|
+
request['productType'] = productType;
|
|
7673
|
+
response = await this.privateMixGetV2MixOrderFills(this.extend(request, params));
|
|
6507
7674
|
}
|
|
6508
7675
|
}
|
|
6509
|
-
else {
|
|
6510
|
-
let productType = undefined;
|
|
6511
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6512
|
-
request['productType'] = productType;
|
|
6513
|
-
response = await this.privateMixGetV2MixOrderFills(this.extend(request, params));
|
|
6514
|
-
}
|
|
6515
7676
|
//
|
|
6516
7677
|
// spot
|
|
6517
7678
|
//
|
|
@@ -6611,10 +7772,46 @@ class bitget extends bitget$1 {
|
|
|
6611
7772
|
// }
|
|
6612
7773
|
// }
|
|
6613
7774
|
//
|
|
7775
|
+
// uta
|
|
7776
|
+
//
|
|
7777
|
+
// {
|
|
7778
|
+
// "code": "00000",
|
|
7779
|
+
// "msg": "success",
|
|
7780
|
+
// "requestTime": 1751099666579,
|
|
7781
|
+
// "data": {
|
|
7782
|
+
// "list": [
|
|
7783
|
+
// {
|
|
7784
|
+
// "execId": "1322441401010528257",
|
|
7785
|
+
// "orderId": "1322441400976261120",
|
|
7786
|
+
// "category": "USDT-FUTURES",
|
|
7787
|
+
// "symbol": "BTCUSDT",
|
|
7788
|
+
// "orderType": "market",
|
|
7789
|
+
// "side": "sell",
|
|
7790
|
+
// "execPrice": "107005.4",
|
|
7791
|
+
// "execQty": "0.0001",
|
|
7792
|
+
// "execValue": "10.7005",
|
|
7793
|
+
// "tradeScope": "taker",
|
|
7794
|
+
// "feeDetail": [{
|
|
7795
|
+
// "feeCoin": "USDT",
|
|
7796
|
+
// "fee":"0.00642032"
|
|
7797
|
+
// }],
|
|
7798
|
+
// "createdTime": "1751020520451",
|
|
7799
|
+
// "updatedTime": "1751020520458",
|
|
7800
|
+
// "execPnl": "0.00017"
|
|
7801
|
+
// },
|
|
7802
|
+
// ],
|
|
7803
|
+
// "cursor": "1322061241878880257"
|
|
7804
|
+
// }
|
|
7805
|
+
// }
|
|
7806
|
+
//
|
|
6614
7807
|
const data = this.safeValue(response, 'data');
|
|
6615
|
-
if (
|
|
6616
|
-
const
|
|
6617
|
-
return this.parseTrades(
|
|
7808
|
+
if (uta) {
|
|
7809
|
+
const fills = this.safeList(data, 'list', []);
|
|
7810
|
+
return this.parseTrades(fills, market, since, limit);
|
|
7811
|
+
}
|
|
7812
|
+
else if ((market['swap'] || (market['future']))) {
|
|
7813
|
+
const fills = this.safeList(data, 'fillList', []);
|
|
7814
|
+
return this.parseTrades(fills, market, since, limit);
|
|
6618
7815
|
}
|
|
6619
7816
|
else if (marginMode !== undefined) {
|
|
6620
7817
|
const fills = this.safeList(data, 'fills', []);
|
|
@@ -6627,8 +7824,10 @@ class bitget extends bitget$1 {
|
|
|
6627
7824
|
* @name bitget#fetchPosition
|
|
6628
7825
|
* @description fetch data on a single open contract trade position
|
|
6629
7826
|
* @see https://www.bitget.com/api-doc/contract/position/get-single-position
|
|
7827
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Position
|
|
6630
7828
|
* @param {string} symbol unified market symbol of the market the position is held in
|
|
6631
7829
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7830
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
6632
7831
|
* @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
6633
7832
|
*/
|
|
6634
7833
|
async fetchPosition(symbol, params = {}) {
|
|
@@ -6638,42 +7837,92 @@ class bitget extends bitget$1 {
|
|
|
6638
7837
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6639
7838
|
const request = {
|
|
6640
7839
|
'symbol': market['id'],
|
|
6641
|
-
'marginCoin': market['settleId'],
|
|
6642
|
-
'productType': productType,
|
|
6643
7840
|
};
|
|
6644
|
-
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
|
|
6666
|
-
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
|
|
6675
|
-
|
|
6676
|
-
|
|
7841
|
+
let response = undefined;
|
|
7842
|
+
let uta = undefined;
|
|
7843
|
+
let result = undefined;
|
|
7844
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchPosition', 'uta', false);
|
|
7845
|
+
if (uta) {
|
|
7846
|
+
request['category'] = productType;
|
|
7847
|
+
response = await this.privateUtaGetV3PositionCurrentPosition(this.extend(request, params));
|
|
7848
|
+
//
|
|
7849
|
+
// {
|
|
7850
|
+
// "code": "00000",
|
|
7851
|
+
// "msg": "success",
|
|
7852
|
+
// "requestTime": 1750929905423,
|
|
7853
|
+
// "data": {
|
|
7854
|
+
// "list": [
|
|
7855
|
+
// {
|
|
7856
|
+
// "category": "USDT-FUTURES",
|
|
7857
|
+
// "symbol": "BTCUSDT",
|
|
7858
|
+
// "marginCoin": "USDT",
|
|
7859
|
+
// "holdMode": "hedge_mode",
|
|
7860
|
+
// "posSide": "long",
|
|
7861
|
+
// "marginMode": "crossed",
|
|
7862
|
+
// "positionBalance": "5.435199",
|
|
7863
|
+
// "available": "0.001",
|
|
7864
|
+
// "frozen": "0",
|
|
7865
|
+
// "total": "0.001",
|
|
7866
|
+
// "leverage": "20",
|
|
7867
|
+
// "curRealisedPnl": "0",
|
|
7868
|
+
// "avgPrice": "107410.3",
|
|
7869
|
+
// "positionStatus": "normal",
|
|
7870
|
+
// "unrealisedPnl": "0.0047",
|
|
7871
|
+
// "liquidationPrice": "0",
|
|
7872
|
+
// "mmr": "0.004",
|
|
7873
|
+
// "profitRate": "0.0008647337475591",
|
|
7874
|
+
// "markPrice": "107415.3",
|
|
7875
|
+
// "breakEvenPrice": "107539.2",
|
|
7876
|
+
// "totalFunding": "0",
|
|
7877
|
+
// "openFeeTotal": "-0.06444618",
|
|
7878
|
+
// "closeFeeTotal": "0",
|
|
7879
|
+
// "createdTime": "1750495670699",
|
|
7880
|
+
// "updatedTime": "1750929883465"
|
|
7881
|
+
// }
|
|
7882
|
+
// ]
|
|
7883
|
+
// }
|
|
7884
|
+
// }
|
|
7885
|
+
//
|
|
7886
|
+
const data = this.safeDict(response, 'data', {});
|
|
7887
|
+
result = this.safeList(data, 'list', []);
|
|
7888
|
+
}
|
|
7889
|
+
else {
|
|
7890
|
+
request['marginCoin'] = market['settleId'];
|
|
7891
|
+
request['productType'] = productType;
|
|
7892
|
+
response = await this.privateMixGetV2MixPositionSinglePosition(this.extend(request, params));
|
|
7893
|
+
//
|
|
7894
|
+
// {
|
|
7895
|
+
// "code": "00000",
|
|
7896
|
+
// "msg": "success",
|
|
7897
|
+
// "requestTime": 1700807531673,
|
|
7898
|
+
// "data": [
|
|
7899
|
+
// {
|
|
7900
|
+
// "marginCoin": "USDT",
|
|
7901
|
+
// "symbol": "BTCUSDT",
|
|
7902
|
+
// "holdSide": "long",
|
|
7903
|
+
// "openDelegateSize": "0",
|
|
7904
|
+
// "marginSize": "3.73555",
|
|
7905
|
+
// "available": "0.002",
|
|
7906
|
+
// "locked": "0",
|
|
7907
|
+
// "total": "0.002",
|
|
7908
|
+
// "leverage": "20",
|
|
7909
|
+
// "achievedProfits": "0",
|
|
7910
|
+
// "openPriceAvg": "37355.5",
|
|
7911
|
+
// "marginMode": "crossed",
|
|
7912
|
+
// "posMode": "hedge_mode",
|
|
7913
|
+
// "unrealizedPL": "0.007",
|
|
7914
|
+
// "liquidationPrice": "31724.970702417",
|
|
7915
|
+
// "keepMarginRate": "0.004",
|
|
7916
|
+
// "markPrice": "37359",
|
|
7917
|
+
// "marginRatio": "0.029599540355",
|
|
7918
|
+
// "cTime": "1700807507275"
|
|
7919
|
+
// }
|
|
7920
|
+
// ]
|
|
7921
|
+
// }
|
|
7922
|
+
//
|
|
7923
|
+
result = this.safeList(response, 'data', []);
|
|
7924
|
+
}
|
|
7925
|
+
const first = this.safeDict(result, 0, {});
|
|
6677
7926
|
return this.parsePosition(first, market);
|
|
6678
7927
|
}
|
|
6679
7928
|
/**
|
|
@@ -6853,6 +8102,36 @@ class bitget extends bitget$1 {
|
|
|
6853
8102
|
// "cTime": "1700807507275"
|
|
6854
8103
|
// }
|
|
6855
8104
|
//
|
|
8105
|
+
// uta: fetchPosition
|
|
8106
|
+
//
|
|
8107
|
+
// {
|
|
8108
|
+
// "category": "USDT-FUTURES",
|
|
8109
|
+
// "symbol": "BTCUSDT",
|
|
8110
|
+
// "marginCoin": "USDT",
|
|
8111
|
+
// "holdMode": "hedge_mode",
|
|
8112
|
+
// "posSide": "long",
|
|
8113
|
+
// "marginMode": "crossed",
|
|
8114
|
+
// "positionBalance": "5.435199",
|
|
8115
|
+
// "available": "0.001",
|
|
8116
|
+
// "frozen": "0",
|
|
8117
|
+
// "total": "0.001",
|
|
8118
|
+
// "leverage": "20",
|
|
8119
|
+
// "curRealisedPnl": "0",
|
|
8120
|
+
// "avgPrice": "107410.3",
|
|
8121
|
+
// "positionStatus": "normal",
|
|
8122
|
+
// "unrealisedPnl": "0.0047",
|
|
8123
|
+
// "liquidationPrice": "0",
|
|
8124
|
+
// "mmr": "0.004",
|
|
8125
|
+
// "profitRate": "0.0008647337475591",
|
|
8126
|
+
// "markPrice": "107415.3",
|
|
8127
|
+
// "breakEvenPrice": "107539.2",
|
|
8128
|
+
// "totalFunding": "0",
|
|
8129
|
+
// "openFeeTotal": "-0.06444618",
|
|
8130
|
+
// "closeFeeTotal": "0",
|
|
8131
|
+
// "createdTime": "1750495670699",
|
|
8132
|
+
// "updatedTime": "1750929883465"
|
|
8133
|
+
// }
|
|
8134
|
+
//
|
|
6856
8135
|
// fetchPositions: privateMixGetV2MixPositionAllPosition
|
|
6857
8136
|
//
|
|
6858
8137
|
// {
|
|
@@ -6904,15 +8183,38 @@ class bitget extends bitget$1 {
|
|
|
6904
8183
|
// "clientOid": "1120923953904893956"
|
|
6905
8184
|
// }
|
|
6906
8185
|
//
|
|
8186
|
+
// uta: fetchPositionsHistory
|
|
8187
|
+
//
|
|
8188
|
+
// {
|
|
8189
|
+
// "positionId": "1322441328637100049",
|
|
8190
|
+
// "category": "USDT-FUTURES",
|
|
8191
|
+
// "symbol": "BTCUSDT",
|
|
8192
|
+
// "marginCoin": "USDT",
|
|
8193
|
+
// "holdMode": "hedge_mode",
|
|
8194
|
+
// "posSide": "long",
|
|
8195
|
+
// "marginMode": "crossed",
|
|
8196
|
+
// "openPriceAvg": "107003.7",
|
|
8197
|
+
// "closePriceAvg": "107005.4",
|
|
8198
|
+
// "openTotalPos": "0.0001",
|
|
8199
|
+
// "closeTotalPos": "0.0001",
|
|
8200
|
+
// "cumRealisedPnl": "0.00017",
|
|
8201
|
+
// "netProfit": "-0.01267055",
|
|
8202
|
+
// "totalFunding": "0",
|
|
8203
|
+
// "openFeeTotal": "-0.00642022",
|
|
8204
|
+
// "closeFeeTotal": "-0.00642032",
|
|
8205
|
+
// "createdTime": "1751020503195",
|
|
8206
|
+
// "updatedTime": "1751020520458"
|
|
8207
|
+
// }
|
|
8208
|
+
//
|
|
6907
8209
|
const marketId = this.safeString(position, 'symbol');
|
|
6908
8210
|
market = this.safeMarket(marketId, market, undefined, 'contract');
|
|
6909
8211
|
const symbol = market['symbol'];
|
|
6910
|
-
const timestamp = this.
|
|
8212
|
+
const timestamp = this.safeIntegerN(position, ['cTime', 'ctime', 'createdTime']);
|
|
6911
8213
|
let marginMode = this.safeString(position, 'marginMode');
|
|
6912
8214
|
let collateral = undefined;
|
|
6913
8215
|
let initialMargin = undefined;
|
|
6914
|
-
const unrealizedPnl = this.
|
|
6915
|
-
const rawCollateral = this.
|
|
8216
|
+
const unrealizedPnl = this.safeString2(position, 'unrealizedPL', 'unrealisedPnl');
|
|
8217
|
+
const rawCollateral = this.safeString2(position, 'marginSize', 'positionBalance');
|
|
6916
8218
|
if (marginMode === 'isolated') {
|
|
6917
8219
|
collateral = Precise["default"].stringAdd(rawCollateral, unrealizedPnl);
|
|
6918
8220
|
}
|
|
@@ -6920,7 +8222,7 @@ class bitget extends bitget$1 {
|
|
|
6920
8222
|
marginMode = 'cross';
|
|
6921
8223
|
initialMargin = rawCollateral;
|
|
6922
8224
|
}
|
|
6923
|
-
const holdMode = this.
|
|
8225
|
+
const holdMode = this.safeString2(position, 'posMode', 'holdMode');
|
|
6924
8226
|
let hedged = undefined;
|
|
6925
8227
|
if (holdMode === 'hedge_mode') {
|
|
6926
8228
|
hedged = true;
|
|
@@ -6928,12 +8230,12 @@ class bitget extends bitget$1 {
|
|
|
6928
8230
|
else if (holdMode === 'one_way_mode') {
|
|
6929
8231
|
hedged = false;
|
|
6930
8232
|
}
|
|
6931
|
-
const side = this.
|
|
8233
|
+
const side = this.safeString2(position, 'holdSide', 'posSide');
|
|
6932
8234
|
const leverage = this.safeString(position, 'leverage');
|
|
6933
8235
|
const contractSizeNumber = this.safeValue(market, 'contractSize');
|
|
6934
8236
|
const contractSize = this.numberToString(contractSizeNumber);
|
|
6935
|
-
const baseAmount = this.
|
|
6936
|
-
const entryPrice = this.
|
|
8237
|
+
const baseAmount = this.safeString2(position, 'total', 'openTotalPos');
|
|
8238
|
+
const entryPrice = this.safeStringN(position, ['openPriceAvg', 'openAvgPrice', 'avgPrice']);
|
|
6937
8239
|
const maintenanceMarginPercentage = this.safeString(position, 'keepMarginRate');
|
|
6938
8240
|
const openNotional = Precise["default"].stringMul(entryPrice, baseAmount);
|
|
6939
8241
|
if (initialMargin === undefined) {
|
|
@@ -6971,31 +8273,31 @@ class bitget extends bitget$1 {
|
|
|
6971
8273
|
const percentage = Precise["default"].stringMul(Precise["default"].stringDiv(unrealizedPnl, initialMargin, 4), '100');
|
|
6972
8274
|
return this.safePosition({
|
|
6973
8275
|
'info': position,
|
|
6974
|
-
'id': this.
|
|
8276
|
+
'id': this.safeString2(position, 'orderId', 'positionId'),
|
|
6975
8277
|
'symbol': symbol,
|
|
6976
8278
|
'notional': this.parseNumber(notional),
|
|
6977
8279
|
'marginMode': marginMode,
|
|
6978
8280
|
'liquidationPrice': liquidationPrice,
|
|
6979
8281
|
'entryPrice': this.parseNumber(entryPrice),
|
|
6980
8282
|
'unrealizedPnl': this.parseNumber(unrealizedPnl),
|
|
6981
|
-
'realizedPnl': this.
|
|
8283
|
+
'realizedPnl': this.safeNumberN(position, ['pnl', 'curRealisedPnl', 'cumRealisedPnl']),
|
|
6982
8284
|
'percentage': this.parseNumber(percentage),
|
|
6983
8285
|
'contracts': contracts,
|
|
6984
8286
|
'contractSize': contractSizeNumber,
|
|
6985
8287
|
'markPrice': this.parseNumber(markPrice),
|
|
6986
|
-
'lastPrice': this.
|
|
8288
|
+
'lastPrice': this.safeNumber2(position, 'closeAvgPrice', 'closePriceAvg'),
|
|
6987
8289
|
'side': side,
|
|
6988
8290
|
'hedged': hedged,
|
|
6989
8291
|
'timestamp': timestamp,
|
|
6990
8292
|
'datetime': this.iso8601(timestamp),
|
|
6991
|
-
'lastUpdateTimestamp': this.
|
|
8293
|
+
'lastUpdateTimestamp': this.safeInteger2(position, 'utime', 'updatedTime'),
|
|
6992
8294
|
'maintenanceMargin': this.parseNumber(maintenanceMargin),
|
|
6993
8295
|
'maintenanceMarginPercentage': this.parseNumber(maintenanceMarginPercentage),
|
|
6994
8296
|
'collateral': this.parseNumber(collateral),
|
|
6995
8297
|
'initialMargin': this.parseNumber(initialMargin),
|
|
6996
8298
|
'initialMarginPercentage': this.parseNumber(initialMarginPercentage),
|
|
6997
8299
|
'leverage': this.parseNumber(leverage),
|
|
6998
|
-
'marginRatio': this.
|
|
8300
|
+
'marginRatio': this.safeNumber2(position, 'marginRatio', 'mmr'),
|
|
6999
8301
|
'stopLossPrice': undefined,
|
|
7000
8302
|
'takeProfitPrice': undefined,
|
|
7001
8303
|
});
|
|
@@ -7005,10 +8307,12 @@ class bitget extends bitget$1 {
|
|
|
7005
8307
|
* @name bitget#fetchFundingRateHistory
|
|
7006
8308
|
* @description fetches historical funding rate prices
|
|
7007
8309
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Funding-Rate
|
|
8310
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-History-Funding-Rate
|
|
7008
8311
|
* @param {string} symbol unified symbol of the market to fetch the funding rate history for
|
|
7009
8312
|
* @param {int} [since] timestamp in ms of the earliest funding rate to fetch
|
|
7010
8313
|
* @param {int} [limit] the maximum amount of funding rate structures to fetch
|
|
7011
8314
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8315
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7012
8316
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
7013
8317
|
* @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
|
|
7014
8318
|
*/
|
|
@@ -7017,45 +8321,74 @@ class bitget extends bitget$1 {
|
|
|
7017
8321
|
throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
|
|
7018
8322
|
}
|
|
7019
8323
|
await this.loadMarkets();
|
|
7020
|
-
let paginate = false;
|
|
7021
|
-
[paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
|
|
7022
|
-
if (paginate) {
|
|
7023
|
-
return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
|
|
7024
|
-
}
|
|
7025
8324
|
const market = this.market(symbol);
|
|
7026
|
-
let productType = undefined;
|
|
7027
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7028
8325
|
const request = {
|
|
7029
8326
|
'symbol': market['id'],
|
|
7030
|
-
'productType': productType,
|
|
7031
|
-
// 'pageSize': limit, // default 20
|
|
7032
|
-
// 'pageNo': 1,
|
|
7033
8327
|
};
|
|
7034
|
-
|
|
7035
|
-
|
|
8328
|
+
let productType = undefined;
|
|
8329
|
+
let uta = undefined;
|
|
8330
|
+
let response = undefined;
|
|
8331
|
+
let result = undefined;
|
|
8332
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
8333
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'uta', false);
|
|
8334
|
+
if (uta) {
|
|
8335
|
+
if (limit !== undefined) {
|
|
8336
|
+
request['limit'] = limit;
|
|
8337
|
+
}
|
|
8338
|
+
request['category'] = productType;
|
|
8339
|
+
response = await this.publicUtaGetV3MarketHistoryFundRate(this.extend(request, params));
|
|
8340
|
+
//
|
|
8341
|
+
// {
|
|
8342
|
+
// "code": "00000",
|
|
8343
|
+
// "msg": "success",
|
|
8344
|
+
// "requestTime": 1750435113658,
|
|
8345
|
+
// "data": {
|
|
8346
|
+
// "resultList": [
|
|
8347
|
+
// {
|
|
8348
|
+
// "symbol": "BTCUSDT",
|
|
8349
|
+
// "fundingRate": "-0.000017",
|
|
8350
|
+
// "fundingRateTimestamp": "1750431600000"
|
|
8351
|
+
// },
|
|
8352
|
+
// ]
|
|
8353
|
+
// }
|
|
8354
|
+
// }
|
|
8355
|
+
//
|
|
8356
|
+
const data = this.safeDict(response, 'data', {});
|
|
8357
|
+
result = this.safeList(data, 'resultList', []);
|
|
8358
|
+
}
|
|
8359
|
+
else {
|
|
8360
|
+
let paginate = false;
|
|
8361
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
|
|
8362
|
+
if (paginate) {
|
|
8363
|
+
return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
|
|
8364
|
+
}
|
|
8365
|
+
if (limit !== undefined) {
|
|
8366
|
+
request['pageSize'] = limit;
|
|
8367
|
+
}
|
|
8368
|
+
request['productType'] = productType;
|
|
8369
|
+
response = await this.publicMixGetV2MixMarketHistoryFundRate(this.extend(request, params));
|
|
8370
|
+
//
|
|
8371
|
+
// {
|
|
8372
|
+
// "code": "00000",
|
|
8373
|
+
// "msg": "success",
|
|
8374
|
+
// "requestTime": 1652406728393,
|
|
8375
|
+
// "data": [
|
|
8376
|
+
// {
|
|
8377
|
+
// "symbol": "BTCUSDT",
|
|
8378
|
+
// "fundingRate": "-0.0003",
|
|
8379
|
+
// "fundingTime": "1652396400000"
|
|
8380
|
+
// },
|
|
8381
|
+
// ]
|
|
8382
|
+
// }
|
|
8383
|
+
//
|
|
8384
|
+
result = this.safeList(response, 'data', []);
|
|
7036
8385
|
}
|
|
7037
|
-
const response = await this.publicMixGetV2MixMarketHistoryFundRate(this.extend(request, params));
|
|
7038
|
-
//
|
|
7039
|
-
// {
|
|
7040
|
-
// "code": "00000",
|
|
7041
|
-
// "msg": "success",
|
|
7042
|
-
// "requestTime": 1652406728393,
|
|
7043
|
-
// "data": [
|
|
7044
|
-
// {
|
|
7045
|
-
// "symbol": "BTCUSDT",
|
|
7046
|
-
// "fundingRate": "-0.0003",
|
|
7047
|
-
// "fundingTime": "1652396400000"
|
|
7048
|
-
// },
|
|
7049
|
-
// ]
|
|
7050
|
-
// }
|
|
7051
|
-
//
|
|
7052
|
-
const data = this.safeValue(response, 'data', []);
|
|
7053
8386
|
const rates = [];
|
|
7054
|
-
for (let i = 0; i <
|
|
7055
|
-
const entry =
|
|
8387
|
+
for (let i = 0; i < result.length; i++) {
|
|
8388
|
+
const entry = result[i];
|
|
7056
8389
|
const marketId = this.safeString(entry, 'symbol');
|
|
7057
8390
|
const symbolInner = this.safeSymbol(marketId, market);
|
|
7058
|
-
const timestamp = this.
|
|
8391
|
+
const timestamp = this.safeInteger2(entry, 'fundingTime', 'fundingRateTimestamp');
|
|
7059
8392
|
rates.push({
|
|
7060
8393
|
'info': entry,
|
|
7061
8394
|
'symbol': symbolInner,
|
|
@@ -7073,8 +8406,10 @@ class bitget extends bitget$1 {
|
|
|
7073
8406
|
* @description fetch the current funding rate
|
|
7074
8407
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Current-Funding-Rate
|
|
7075
8408
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
|
|
8409
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
|
|
7076
8410
|
* @param {string} symbol unified market symbol
|
|
7077
8411
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8412
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7078
8413
|
* @param {string} [params.method] either (default) 'publicMixGetV2MixMarketCurrentFundRate' or 'publicMixGetV2MixMarketFundingTime'
|
|
7079
8414
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
7080
8415
|
*/
|
|
@@ -7088,24 +8423,23 @@ class bitget extends bitget$1 {
|
|
|
7088
8423
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7089
8424
|
const request = {
|
|
7090
8425
|
'symbol': market['id'],
|
|
7091
|
-
'productType': productType,
|
|
7092
8426
|
};
|
|
7093
|
-
let
|
|
7094
|
-
[method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
|
|
8427
|
+
let uta = undefined;
|
|
7095
8428
|
let response = undefined;
|
|
7096
|
-
|
|
7097
|
-
|
|
8429
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'uta', false);
|
|
8430
|
+
if (uta) {
|
|
8431
|
+
response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
|
|
7098
8432
|
//
|
|
7099
8433
|
// {
|
|
7100
8434
|
// "code": "00000",
|
|
7101
8435
|
// "msg": "success",
|
|
7102
|
-
// "requestTime":
|
|
8436
|
+
// "requestTime": 1750897372153,
|
|
7103
8437
|
// "data": [
|
|
7104
8438
|
// {
|
|
7105
8439
|
// "symbol": "BTCUSDT",
|
|
7106
|
-
// "fundingRate": "
|
|
8440
|
+
// "fundingRate": "0.00001",
|
|
7107
8441
|
// "fundingRateInterval": "8",
|
|
7108
|
-
// "nextUpdate": "
|
|
8442
|
+
// "nextUpdate": "1750924800000",
|
|
7109
8443
|
// "minFundingRate": "-0.003",
|
|
7110
8444
|
// "maxFundingRate": "0.003"
|
|
7111
8445
|
// }
|
|
@@ -7113,22 +8447,47 @@ class bitget extends bitget$1 {
|
|
|
7113
8447
|
// }
|
|
7114
8448
|
//
|
|
7115
8449
|
}
|
|
7116
|
-
else
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7130
|
-
|
|
7131
|
-
|
|
8450
|
+
else {
|
|
8451
|
+
request['productType'] = productType;
|
|
8452
|
+
let method = undefined;
|
|
8453
|
+
[method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
|
|
8454
|
+
if (method === 'publicMixGetV2MixMarketCurrentFundRate') {
|
|
8455
|
+
response = await this.publicMixGetV2MixMarketCurrentFundRate(this.extend(request, params));
|
|
8456
|
+
//
|
|
8457
|
+
// {
|
|
8458
|
+
// "code": "00000",
|
|
8459
|
+
// "msg": "success",
|
|
8460
|
+
// "requestTime": 1745500709429,
|
|
8461
|
+
// "data": [
|
|
8462
|
+
// {
|
|
8463
|
+
// "symbol": "BTCUSDT",
|
|
8464
|
+
// "fundingRate": "-0.000013",
|
|
8465
|
+
// "fundingRateInterval": "8",
|
|
8466
|
+
// "nextUpdate": "1745510400000",
|
|
8467
|
+
// "minFundingRate": "-0.003",
|
|
8468
|
+
// "maxFundingRate": "0.003"
|
|
8469
|
+
// }
|
|
8470
|
+
// ]
|
|
8471
|
+
// }
|
|
8472
|
+
//
|
|
8473
|
+
}
|
|
8474
|
+
else if (method === 'publicMixGetV2MixMarketFundingTime') {
|
|
8475
|
+
response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
|
|
8476
|
+
//
|
|
8477
|
+
// {
|
|
8478
|
+
// "code": "00000",
|
|
8479
|
+
// "msg": "success",
|
|
8480
|
+
// "requestTime": 1745402092428,
|
|
8481
|
+
// "data": [
|
|
8482
|
+
// {
|
|
8483
|
+
// "symbol": "BTCUSDT",
|
|
8484
|
+
// "nextFundingTime": "1745424000000",
|
|
8485
|
+
// "ratePeriod": "8"
|
|
8486
|
+
// }
|
|
8487
|
+
// ]
|
|
8488
|
+
// }
|
|
8489
|
+
//
|
|
8490
|
+
}
|
|
7132
8491
|
}
|
|
7133
8492
|
const data = this.safeList(response, 'data', []);
|
|
7134
8493
|
return this.parseFundingRate(data[0], market);
|
|
@@ -7194,7 +8553,7 @@ class bitget extends bitget$1 {
|
|
|
7194
8553
|
}
|
|
7195
8554
|
parseFundingRate(contract, market = undefined) {
|
|
7196
8555
|
//
|
|
7197
|
-
// fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate
|
|
8556
|
+
// fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate, publicUtaGetV3MarketCurrentFundRate
|
|
7198
8557
|
//
|
|
7199
8558
|
// {
|
|
7200
8559
|
// "symbol": "BTCUSDT",
|
|
@@ -7552,10 +8911,13 @@ class bitget extends bitget$1 {
|
|
|
7552
8911
|
* @name bitget#setLeverage
|
|
7553
8912
|
* @description set the level of leverage for a market
|
|
7554
8913
|
* @see https://www.bitget.com/api-doc/contract/account/Change-Leverage
|
|
8914
|
+
* @see https://www.bitget.com/api-doc/uta/account/Change-Leverage
|
|
7555
8915
|
* @param {int} leverage the rate of leverage
|
|
7556
8916
|
* @param {string} symbol unified market symbol
|
|
7557
8917
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7558
8918
|
* @param {string} [params.holdSide] *isolated only* position direction, 'long' or 'short'
|
|
8919
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8920
|
+
* @param {boolean} [params.posSide] required for uta isolated margin, long or short
|
|
7559
8921
|
* @returns {object} response from the exchange
|
|
7560
8922
|
*/
|
|
7561
8923
|
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
@@ -7568,27 +8930,51 @@ class bitget extends bitget$1 {
|
|
|
7568
8930
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7569
8931
|
const request = {
|
|
7570
8932
|
'symbol': market['id'],
|
|
7571
|
-
'marginCoin': market['settleId'],
|
|
7572
8933
|
'leverage': this.numberToString(leverage),
|
|
7573
|
-
'productType': productType,
|
|
7574
|
-
// 'holdSide': 'long',
|
|
7575
8934
|
};
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
8935
|
+
let uta = undefined;
|
|
8936
|
+
let response = undefined;
|
|
8937
|
+
[uta, params] = this.handleOptionAndParams(params, 'setLeverage', 'uta', false);
|
|
8938
|
+
if (uta) {
|
|
8939
|
+
if (productType === 'SPOT') {
|
|
8940
|
+
let marginMode = undefined;
|
|
8941
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
|
|
8942
|
+
if (marginMode !== undefined) {
|
|
8943
|
+
productType = 'MARGIN';
|
|
8944
|
+
}
|
|
8945
|
+
}
|
|
8946
|
+
request['coin'] = market['settleId'];
|
|
8947
|
+
request['category'] = productType;
|
|
8948
|
+
response = await this.privateUtaPostV3AccountSetLeverage(this.extend(request, params));
|
|
8949
|
+
//
|
|
8950
|
+
// {
|
|
8951
|
+
// "code": "00000",
|
|
8952
|
+
// "msg": "success",
|
|
8953
|
+
// "requestTime": 1752815940833,
|
|
8954
|
+
// "data": "success"
|
|
8955
|
+
// }
|
|
8956
|
+
//
|
|
8957
|
+
}
|
|
8958
|
+
else {
|
|
8959
|
+
request['marginCoin'] = market['settleId'];
|
|
8960
|
+
request['productType'] = productType;
|
|
8961
|
+
response = await this.privateMixPostV2MixAccountSetLeverage(this.extend(request, params));
|
|
8962
|
+
//
|
|
8963
|
+
// {
|
|
8964
|
+
// "code": "00000",
|
|
8965
|
+
// "msg": "success",
|
|
8966
|
+
// "requestTime": 1700864711517,
|
|
8967
|
+
// "data": {
|
|
8968
|
+
// "symbol": "BTCUSDT",
|
|
8969
|
+
// "marginCoin": "USDT",
|
|
8970
|
+
// "longLeverage": "25",
|
|
8971
|
+
// "shortLeverage": "25",
|
|
8972
|
+
// "crossMarginLeverage": "25",
|
|
8973
|
+
// "marginMode": "crossed"
|
|
8974
|
+
// }
|
|
8975
|
+
// }
|
|
8976
|
+
//
|
|
8977
|
+
}
|
|
7592
8978
|
return response;
|
|
7593
8979
|
}
|
|
7594
8980
|
/**
|
|
@@ -7644,36 +9030,54 @@ class bitget extends bitget$1 {
|
|
|
7644
9030
|
* @name bitget#setPositionMode
|
|
7645
9031
|
* @description set hedged to true or false for a market
|
|
7646
9032
|
* @see https://www.bitget.com/api-doc/contract/account/Change-Hold-Mode
|
|
9033
|
+
* @see https://www.bitget.com/api-doc/uta/account/Change-Position-Mode
|
|
7647
9034
|
* @param {bool} hedged set to true to use dualSidePosition
|
|
7648
9035
|
* @param {string} symbol not used by bitget setPositionMode ()
|
|
7649
9036
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7650
|
-
* @param {string} [params.productType] required if symbol is undefined: 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
9037
|
+
* @param {string} [params.productType] required if not uta and symbol is undefined: 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
9038
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7651
9039
|
* @returns {object} response from the exchange
|
|
7652
9040
|
*/
|
|
7653
9041
|
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
7654
9042
|
await this.loadMarkets();
|
|
7655
9043
|
const posMode = hedged ? 'hedge_mode' : 'one_way_mode';
|
|
9044
|
+
const request = {};
|
|
7656
9045
|
let market = undefined;
|
|
7657
9046
|
if (symbol !== undefined) {
|
|
7658
9047
|
market = this.market(symbol);
|
|
7659
9048
|
}
|
|
7660
9049
|
let productType = undefined;
|
|
9050
|
+
let uta = undefined;
|
|
9051
|
+
let response = undefined;
|
|
7661
9052
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
'
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
9053
|
+
[uta, params] = this.handleOptionAndParams(params, 'setPositionMode', 'uta', false);
|
|
9054
|
+
if (uta) {
|
|
9055
|
+
request['holdMode'] = posMode;
|
|
9056
|
+
response = await this.privateUtaPostV3AccountSetHoldMode(this.extend(request, params));
|
|
9057
|
+
//
|
|
9058
|
+
// {
|
|
9059
|
+
// "code": "00000",
|
|
9060
|
+
// "msg": "success",
|
|
9061
|
+
// "requestTime": 1752816734592,
|
|
9062
|
+
// "data": "success"
|
|
9063
|
+
// }
|
|
9064
|
+
//
|
|
9065
|
+
}
|
|
9066
|
+
else {
|
|
9067
|
+
request['posMode'] = posMode;
|
|
9068
|
+
request['productType'] = productType;
|
|
9069
|
+
response = await this.privateMixPostV2MixAccountSetPositionMode(this.extend(request, params));
|
|
9070
|
+
//
|
|
9071
|
+
// {
|
|
9072
|
+
// "code": "00000",
|
|
9073
|
+
// "msg": "success",
|
|
9074
|
+
// "requestTime": 1700865608009,
|
|
9075
|
+
// "data": {
|
|
9076
|
+
// "posMode": "hedge_mode"
|
|
9077
|
+
// }
|
|
9078
|
+
// }
|
|
9079
|
+
//
|
|
9080
|
+
}
|
|
7677
9081
|
return response;
|
|
7678
9082
|
}
|
|
7679
9083
|
/**
|
|
@@ -7681,8 +9085,10 @@ class bitget extends bitget$1 {
|
|
|
7681
9085
|
* @name bitget#fetchOpenInterest
|
|
7682
9086
|
* @description retrieves the open interest of a contract trading pair
|
|
7683
9087
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Open-Interest
|
|
9088
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Open-Interest
|
|
7684
9089
|
* @param {string} symbol unified CCXT market symbol
|
|
7685
9090
|
* @param {object} [params] exchange specific parameters
|
|
9091
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7686
9092
|
* @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
|
|
7687
9093
|
*/
|
|
7688
9094
|
async fetchOpenInterest(symbol, params = {}) {
|
|
@@ -7691,33 +9097,60 @@ class bitget extends bitget$1 {
|
|
|
7691
9097
|
if (!market['contract']) {
|
|
7692
9098
|
throw new errors.BadRequest(this.id + ' fetchOpenInterest() supports contract markets only');
|
|
7693
9099
|
}
|
|
7694
|
-
let productType = undefined;
|
|
7695
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7696
|
-
const request = {
|
|
7697
|
-
'symbol': market['id'],
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
|
|
7705
|
-
|
|
7706
|
-
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
|
|
9100
|
+
let productType = undefined;
|
|
9101
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
9102
|
+
const request = {
|
|
9103
|
+
'symbol': market['id'],
|
|
9104
|
+
};
|
|
9105
|
+
let uta = undefined;
|
|
9106
|
+
let response = undefined;
|
|
9107
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOpenInterest', 'uta', false);
|
|
9108
|
+
if (uta) {
|
|
9109
|
+
request['category'] = productType;
|
|
9110
|
+
response = await this.publicUtaGetV3MarketOpenInterest(this.extend(request, params));
|
|
9111
|
+
//
|
|
9112
|
+
// {
|
|
9113
|
+
// "code": "00000",
|
|
9114
|
+
// "msg": "success",
|
|
9115
|
+
// "requestTime": 1751101221545,
|
|
9116
|
+
// "data": {
|
|
9117
|
+
// "list": [
|
|
9118
|
+
// {
|
|
9119
|
+
// "symbol": "BTCUSDT",
|
|
9120
|
+
// "openInterest": "18166.3583"
|
|
9121
|
+
// }
|
|
9122
|
+
// ],
|
|
9123
|
+
// "ts": "1751101220993"
|
|
9124
|
+
// }
|
|
9125
|
+
// }
|
|
9126
|
+
//
|
|
9127
|
+
}
|
|
9128
|
+
else {
|
|
9129
|
+
request['productType'] = productType;
|
|
9130
|
+
response = await this.publicMixGetV2MixMarketOpenInterest(this.extend(request, params));
|
|
9131
|
+
//
|
|
9132
|
+
// {
|
|
9133
|
+
// "code": "00000",
|
|
9134
|
+
// "msg": "success",
|
|
9135
|
+
// "requestTime": 1700866041022,
|
|
9136
|
+
// "data": {
|
|
9137
|
+
// "openInterestList": [
|
|
9138
|
+
// {
|
|
9139
|
+
// "symbol": "BTCUSDT",
|
|
9140
|
+
// "size": "52234.134"
|
|
9141
|
+
// }
|
|
9142
|
+
// ],
|
|
9143
|
+
// "ts": "1700866041023"
|
|
9144
|
+
// }
|
|
9145
|
+
// }
|
|
9146
|
+
//
|
|
9147
|
+
}
|
|
7717
9148
|
const data = this.safeDict(response, 'data', {});
|
|
7718
9149
|
return this.parseOpenInterest(data, market);
|
|
7719
9150
|
}
|
|
7720
9151
|
parseOpenInterest(interest, market = undefined) {
|
|
9152
|
+
//
|
|
9153
|
+
// default
|
|
7721
9154
|
//
|
|
7722
9155
|
// {
|
|
7723
9156
|
// "openInterestList": [
|
|
@@ -7729,12 +9162,24 @@ class bitget extends bitget$1 {
|
|
|
7729
9162
|
// "ts": "1700866041023"
|
|
7730
9163
|
// }
|
|
7731
9164
|
//
|
|
7732
|
-
|
|
9165
|
+
// uta
|
|
9166
|
+
//
|
|
9167
|
+
// {
|
|
9168
|
+
// "list": [
|
|
9169
|
+
// {
|
|
9170
|
+
// "symbol": "BTCUSDT",
|
|
9171
|
+
// "openInterest": "18166.3583"
|
|
9172
|
+
// }
|
|
9173
|
+
// ],
|
|
9174
|
+
// "ts": "1751101220993"
|
|
9175
|
+
// }
|
|
9176
|
+
//
|
|
9177
|
+
const data = this.safeList2(interest, 'openInterestList', 'list', []);
|
|
7733
9178
|
const timestamp = this.safeInteger(interest, 'ts');
|
|
7734
9179
|
const marketId = this.safeString(data[0], 'symbol');
|
|
7735
9180
|
return this.safeOpenInterest({
|
|
7736
9181
|
'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
|
|
7737
|
-
'openInterestAmount': this.
|
|
9182
|
+
'openInterestAmount': this.safeNumber2(data[0], 'size', 'openInterest'),
|
|
7738
9183
|
'openInterestValue': undefined,
|
|
7739
9184
|
'timestamp': timestamp,
|
|
7740
9185
|
'datetime': this.iso8601(timestamp),
|
|
@@ -8473,9 +9918,10 @@ class bitget extends bitget$1 {
|
|
|
8473
9918
|
* @name bitget#fetchCrossBorrowRate
|
|
8474
9919
|
* @description fetch the rate of interest to borrow a currency for margin trading
|
|
8475
9920
|
* @see https://www.bitget.com/api-doc/margin/cross/account/Get-Cross-Margin-Interest-Rate-And-Borrowable
|
|
9921
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Margin-Loans
|
|
8476
9922
|
* @param {string} code unified currency code
|
|
8477
9923
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8478
|
-
* @param {
|
|
9924
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8479
9925
|
* @returns {object} a [borrow rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#borrow-rate-structure}
|
|
8480
9926
|
*/
|
|
8481
9927
|
async fetchCrossBorrowRate(code, params = {}) {
|
|
@@ -8484,40 +9930,64 @@ class bitget extends bitget$1 {
|
|
|
8484
9930
|
const request = {
|
|
8485
9931
|
'coin': currency['id'],
|
|
8486
9932
|
};
|
|
8487
|
-
|
|
8488
|
-
|
|
8489
|
-
|
|
8490
|
-
|
|
8491
|
-
|
|
8492
|
-
|
|
8493
|
-
|
|
8494
|
-
|
|
8495
|
-
|
|
8496
|
-
|
|
8497
|
-
|
|
8498
|
-
|
|
8499
|
-
|
|
8500
|
-
|
|
8501
|
-
|
|
8502
|
-
|
|
8503
|
-
|
|
8504
|
-
|
|
8505
|
-
|
|
8506
|
-
|
|
8507
|
-
|
|
8508
|
-
|
|
8509
|
-
|
|
8510
|
-
|
|
8511
|
-
|
|
8512
|
-
|
|
8513
|
-
|
|
9933
|
+
let uta = undefined;
|
|
9934
|
+
let response = undefined;
|
|
9935
|
+
let result = undefined;
|
|
9936
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchCrossBorrowRate', 'uta', false);
|
|
9937
|
+
if (uta) {
|
|
9938
|
+
response = await this.publicUtaGetV3MarketMarginLoans(this.extend(request, params));
|
|
9939
|
+
//
|
|
9940
|
+
// {
|
|
9941
|
+
// "code": "00000",
|
|
9942
|
+
// "msg": "success",
|
|
9943
|
+
// "requestTime": 1752817798893,
|
|
9944
|
+
// "data": {
|
|
9945
|
+
// "dailyInterest": "0.00100008",
|
|
9946
|
+
// "annualInterest": "0.3650292",
|
|
9947
|
+
// "limit": "100"
|
|
9948
|
+
// }
|
|
9949
|
+
// }
|
|
9950
|
+
//
|
|
9951
|
+
result = this.safeDict(response, 'data', {});
|
|
9952
|
+
}
|
|
9953
|
+
else {
|
|
9954
|
+
response = await this.privateMarginGetV2MarginCrossedInterestRateAndLimit(this.extend(request, params));
|
|
9955
|
+
//
|
|
9956
|
+
// {
|
|
9957
|
+
// "code": "00000",
|
|
9958
|
+
// "msg": "success",
|
|
9959
|
+
// "requestTime": 1700879047861,
|
|
9960
|
+
// "data": [
|
|
9961
|
+
// {
|
|
9962
|
+
// "coin": "BTC",
|
|
9963
|
+
// "leverage": "3",
|
|
9964
|
+
// "transferable": true,
|
|
9965
|
+
// "borrowable": true,
|
|
9966
|
+
// "dailyInterestRate": "0.00007",
|
|
9967
|
+
// "annualInterestRate": "0.02555",
|
|
9968
|
+
// "maxBorrowableAmount": "26",
|
|
9969
|
+
// "vipList": [
|
|
9970
|
+
// {"level":"0","limit":"26","dailyInterestRate":"0.00007","annualInterestRate":"0.02555","discountRate":"1"},
|
|
9971
|
+
// {"level":"1","limit":"26.78","dailyInterestRate":"0.0000679","annualInterestRate":"0.0247835","discountRate":"0.97"},
|
|
9972
|
+
// {"level":"2","limit":"28.08","dailyInterestRate":"0.0000644","annualInterestRate":"0.023506","discountRate":"0.92"},
|
|
9973
|
+
// {"level":"3","limit":"30.16","dailyInterestRate":"0.0000602","annualInterestRate":"0.021973","discountRate":"0.86"},
|
|
9974
|
+
// {"level":"4","limit":"34.58","dailyInterestRate":"0.0000525","annualInterestRate":"0.0191625","discountRate":"0.75"},
|
|
9975
|
+
// {"level":"5","limit":"43.16","dailyInterestRate":"0.000042","annualInterestRate":"0.01533","discountRate":"0.6"}
|
|
9976
|
+
// ]
|
|
9977
|
+
// }
|
|
9978
|
+
// ]
|
|
9979
|
+
// }
|
|
9980
|
+
//
|
|
9981
|
+
const data = this.safeValue(response, 'data', []);
|
|
9982
|
+
result = this.safeValue(data, 0, {});
|
|
9983
|
+
}
|
|
8514
9984
|
const timestamp = this.safeInteger(response, 'requestTime');
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
first['timestamp'] = timestamp;
|
|
8518
|
-
return this.parseBorrowRate(first, currency);
|
|
9985
|
+
result['timestamp'] = timestamp;
|
|
9986
|
+
return this.parseBorrowRate(result, currency);
|
|
8519
9987
|
}
|
|
8520
9988
|
parseBorrowRate(info, currency = undefined) {
|
|
9989
|
+
//
|
|
9990
|
+
// default
|
|
8521
9991
|
//
|
|
8522
9992
|
// {
|
|
8523
9993
|
// "coin": "BTC",
|
|
@@ -8537,11 +10007,19 @@ class bitget extends bitget$1 {
|
|
|
8537
10007
|
// ]
|
|
8538
10008
|
// }
|
|
8539
10009
|
//
|
|
10010
|
+
// uta
|
|
10011
|
+
//
|
|
10012
|
+
// {
|
|
10013
|
+
// "dailyInterest": "0.00100008",
|
|
10014
|
+
// "annualInterest": "0.3650292",
|
|
10015
|
+
// "limit": "100"
|
|
10016
|
+
// }
|
|
10017
|
+
//
|
|
8540
10018
|
const currencyId = this.safeString(info, 'coin');
|
|
8541
10019
|
const timestamp = this.safeInteger(info, 'timestamp');
|
|
8542
10020
|
return {
|
|
8543
10021
|
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
8544
|
-
'rate': this.
|
|
10022
|
+
'rate': this.safeNumber2(info, 'dailyInterestRate', 'dailyInterest'),
|
|
8545
10023
|
'period': 86400000,
|
|
8546
10024
|
'timestamp': timestamp,
|
|
8547
10025
|
'datetime': this.iso8601(timestamp),
|
|
@@ -8706,43 +10184,72 @@ class bitget extends bitget$1 {
|
|
|
8706
10184
|
* @name bitget#closePosition
|
|
8707
10185
|
* @description closes an open position for a market
|
|
8708
10186
|
* @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
|
|
10187
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
|
|
8709
10188
|
* @param {string} symbol unified CCXT market symbol
|
|
8710
10189
|
* @param {string} [side] one-way mode: 'buy' or 'sell', hedge-mode: 'long' or 'short'
|
|
8711
10190
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10191
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8712
10192
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
8713
10193
|
*/
|
|
8714
10194
|
async closePosition(symbol, side = undefined, params = {}) {
|
|
8715
10195
|
await this.loadMarkets();
|
|
8716
10196
|
const market = this.market(symbol);
|
|
8717
|
-
let productType = undefined;
|
|
8718
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
8719
10197
|
const request = {
|
|
8720
10198
|
'symbol': market['id'],
|
|
8721
|
-
'productType': productType,
|
|
8722
10199
|
};
|
|
8723
|
-
|
|
8724
|
-
|
|
10200
|
+
let productType = undefined;
|
|
10201
|
+
let uta = undefined;
|
|
10202
|
+
let response = undefined;
|
|
10203
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
10204
|
+
[uta, params] = this.handleOptionAndParams(params, 'closePosition', 'uta', false);
|
|
10205
|
+
if (uta) {
|
|
10206
|
+
if (side !== undefined) {
|
|
10207
|
+
request['posSide'] = side;
|
|
10208
|
+
}
|
|
10209
|
+
request['category'] = productType;
|
|
10210
|
+
response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
|
|
10211
|
+
//
|
|
10212
|
+
// {
|
|
10213
|
+
// "code": "00000",
|
|
10214
|
+
// "msg": "success",
|
|
10215
|
+
// "requestTime": 1751020218384,
|
|
10216
|
+
// "data": {
|
|
10217
|
+
// "list": [
|
|
10218
|
+
// {
|
|
10219
|
+
// "orderId": "1322440134099320832",
|
|
10220
|
+
// "clientOid": "1322440134099320833"
|
|
10221
|
+
// }
|
|
10222
|
+
// ]
|
|
10223
|
+
// }
|
|
10224
|
+
// }
|
|
10225
|
+
//
|
|
10226
|
+
}
|
|
10227
|
+
else {
|
|
10228
|
+
if (side !== undefined) {
|
|
10229
|
+
request['holdSide'] = side;
|
|
10230
|
+
}
|
|
10231
|
+
request['productType'] = productType;
|
|
10232
|
+
response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
|
|
10233
|
+
//
|
|
10234
|
+
// {
|
|
10235
|
+
// "code": "00000",
|
|
10236
|
+
// "msg": "success",
|
|
10237
|
+
// "requestTime": 1702975017017,
|
|
10238
|
+
// "data": {
|
|
10239
|
+
// "successList": [
|
|
10240
|
+
// {
|
|
10241
|
+
// "orderId": "1120923953904893955",
|
|
10242
|
+
// "clientOid": "1120923953904893956"
|
|
10243
|
+
// }
|
|
10244
|
+
// ],
|
|
10245
|
+
// "failureList": [],
|
|
10246
|
+
// "result": false
|
|
10247
|
+
// }
|
|
10248
|
+
// }
|
|
10249
|
+
//
|
|
8725
10250
|
}
|
|
8726
|
-
const response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
|
|
8727
|
-
//
|
|
8728
|
-
// {
|
|
8729
|
-
// "code": "00000",
|
|
8730
|
-
// "msg": "success",
|
|
8731
|
-
// "requestTime": 1702975017017,
|
|
8732
|
-
// "data": {
|
|
8733
|
-
// "successList": [
|
|
8734
|
-
// {
|
|
8735
|
-
// "orderId": "1120923953904893955",
|
|
8736
|
-
// "clientOid": "1120923953904893956"
|
|
8737
|
-
// }
|
|
8738
|
-
// ],
|
|
8739
|
-
// "failureList": [],
|
|
8740
|
-
// "result": false
|
|
8741
|
-
// }
|
|
8742
|
-
// }
|
|
8743
|
-
//
|
|
8744
10251
|
const data = this.safeValue(response, 'data', {});
|
|
8745
|
-
const order = this.
|
|
10252
|
+
const order = this.safeList2(data, 'successList', 'list', []);
|
|
8746
10253
|
return this.parseOrder(order[0], market);
|
|
8747
10254
|
}
|
|
8748
10255
|
/**
|
|
@@ -8750,37 +10257,62 @@ class bitget extends bitget$1 {
|
|
|
8750
10257
|
* @name bitget#closeAllPositions
|
|
8751
10258
|
* @description closes all open positions for a market type
|
|
8752
10259
|
* @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
|
|
10260
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
|
|
8753
10261
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8754
10262
|
* @param {string} [params.productType] 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
10263
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8755
10264
|
* @returns {object[]} A list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
8756
10265
|
*/
|
|
8757
10266
|
async closeAllPositions(params = {}) {
|
|
8758
10267
|
await this.loadMarkets();
|
|
10268
|
+
const request = {};
|
|
8759
10269
|
let productType = undefined;
|
|
10270
|
+
let uta = undefined;
|
|
10271
|
+
let response = undefined;
|
|
8760
10272
|
[productType, params] = this.handleProductTypeAndParams(undefined, params);
|
|
8761
|
-
|
|
8762
|
-
|
|
8763
|
-
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
|
|
8767
|
-
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
10273
|
+
[uta, params] = this.handleOptionAndParams(params, 'closeAllPositions', 'uta', false);
|
|
10274
|
+
if (uta) {
|
|
10275
|
+
request['category'] = productType;
|
|
10276
|
+
response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
|
|
10277
|
+
//
|
|
10278
|
+
// {
|
|
10279
|
+
// "code": "00000",
|
|
10280
|
+
// "msg": "success",
|
|
10281
|
+
// "requestTime": 1751020218384,
|
|
10282
|
+
// "data": {
|
|
10283
|
+
// "list": [
|
|
10284
|
+
// {
|
|
10285
|
+
// "orderId": "1322440134099320832",
|
|
10286
|
+
// "clientOid": "1322440134099320833"
|
|
10287
|
+
// }
|
|
10288
|
+
// ]
|
|
10289
|
+
// }
|
|
10290
|
+
// }
|
|
10291
|
+
//
|
|
10292
|
+
}
|
|
10293
|
+
else {
|
|
10294
|
+
request['productType'] = productType;
|
|
10295
|
+
response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
|
|
10296
|
+
//
|
|
10297
|
+
// {
|
|
10298
|
+
// "code": "00000",
|
|
10299
|
+
// "msg": "success",
|
|
10300
|
+
// "requestTime": 1702975017017,
|
|
10301
|
+
// "data": {
|
|
10302
|
+
// "successList": [
|
|
10303
|
+
// {
|
|
10304
|
+
// "orderId": "1120923953904893955",
|
|
10305
|
+
// "clientOid": "1120923953904893956"
|
|
10306
|
+
// }
|
|
10307
|
+
// ],
|
|
10308
|
+
// "failureList": [],
|
|
10309
|
+
// "result": false
|
|
10310
|
+
// }
|
|
10311
|
+
// }
|
|
10312
|
+
//
|
|
10313
|
+
}
|
|
8782
10314
|
const data = this.safeValue(response, 'data', {});
|
|
8783
|
-
const orderInfo = this.
|
|
10315
|
+
const orderInfo = this.safeList2(data, 'successList', 'list', []);
|
|
8784
10316
|
return this.parsePositions(orderInfo, undefined, params);
|
|
8785
10317
|
}
|
|
8786
10318
|
/**
|
|
@@ -8848,25 +10380,27 @@ class bitget extends bitget$1 {
|
|
|
8848
10380
|
* @name bitget#fetchPositionsHistory
|
|
8849
10381
|
* @description fetches historical positions
|
|
8850
10382
|
* @see https://www.bitget.com/api-doc/contract/position/Get-History-Position
|
|
10383
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Position-History
|
|
8851
10384
|
* @param {string[]} [symbols] unified contract symbols
|
|
8852
10385
|
* @param {int} [since] timestamp in ms of the earliest position to fetch, default=3 months ago, max range for params["until"] - since is 3 months
|
|
8853
10386
|
* @param {int} [limit] the maximum amount of records to fetch, default=20, max=100
|
|
8854
10387
|
* @param {object} params extra parameters specific to the exchange api endpoint
|
|
8855
10388
|
* @param {int} [params.until] timestamp in ms of the latest position to fetch, max range for params["until"] - since is 3 months
|
|
8856
|
-
*
|
|
8857
|
-
* EXCHANGE SPECIFIC PARAMETERS
|
|
8858
10389
|
* @param {string} [params.productType] USDT-FUTURES (default), COIN-FUTURES, USDC-FUTURES, SUSDT-FUTURES, SCOIN-FUTURES, or SUSDC-FUTURES
|
|
10390
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8859
10391
|
* @returns {object[]} a list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
8860
10392
|
*/
|
|
8861
10393
|
async fetchPositionsHistory(symbols = undefined, since = undefined, limit = undefined, params = {}) {
|
|
8862
10394
|
await this.loadMarkets();
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
10395
|
+
let request = {};
|
|
10396
|
+
let market = undefined;
|
|
10397
|
+
let productType = undefined;
|
|
10398
|
+
let uta = undefined;
|
|
10399
|
+
let response = undefined;
|
|
8866
10400
|
if (symbols !== undefined) {
|
|
8867
10401
|
const symbolsLength = symbols.length;
|
|
8868
10402
|
if (symbolsLength > 0) {
|
|
8869
|
-
|
|
10403
|
+
market = this.market(symbols[0]);
|
|
8870
10404
|
request['symbol'] = market['id'];
|
|
8871
10405
|
}
|
|
8872
10406
|
}
|
|
@@ -8876,41 +10410,79 @@ class bitget extends bitget$1 {
|
|
|
8876
10410
|
if (limit !== undefined) {
|
|
8877
10411
|
request['limit'] = limit;
|
|
8878
10412
|
}
|
|
8879
|
-
|
|
8880
|
-
|
|
10413
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
10414
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
10415
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchPositionsHistory', 'uta', false);
|
|
10416
|
+
if (uta) {
|
|
10417
|
+
request['category'] = productType;
|
|
10418
|
+
response = await this.privateUtaGetV3PositionHistoryPosition(this.extend(request, params));
|
|
10419
|
+
//
|
|
10420
|
+
// {
|
|
10421
|
+
// "code": "00000",
|
|
10422
|
+
// "msg": "success",
|
|
10423
|
+
// "requestTime": 1751020950427,
|
|
10424
|
+
// "data": {
|
|
10425
|
+
// "list": [
|
|
10426
|
+
// {
|
|
10427
|
+
// "positionId": "1322441328637100049",
|
|
10428
|
+
// "category": "USDT-FUTURES",
|
|
10429
|
+
// "symbol": "BTCUSDT",
|
|
10430
|
+
// "marginCoin": "USDT",
|
|
10431
|
+
// "holdMode": "hedge_mode",
|
|
10432
|
+
// "posSide": "long",
|
|
10433
|
+
// "marginMode": "crossed",
|
|
10434
|
+
// "openPriceAvg": "107003.7",
|
|
10435
|
+
// "closePriceAvg": "107005.4",
|
|
10436
|
+
// "openTotalPos": "0.0001",
|
|
10437
|
+
// "closeTotalPos": "0.0001",
|
|
10438
|
+
// "cumRealisedPnl": "0.00017",
|
|
10439
|
+
// "netProfit": "-0.01267055",
|
|
10440
|
+
// "totalFunding": "0",
|
|
10441
|
+
// "openFeeTotal": "-0.00642022",
|
|
10442
|
+
// "closeFeeTotal": "-0.00642032",
|
|
10443
|
+
// "createdTime": "1751020503195",
|
|
10444
|
+
// "updatedTime": "1751020520458"
|
|
10445
|
+
// },
|
|
10446
|
+
// ],
|
|
10447
|
+
// "cursor": "1322440134158041089"
|
|
10448
|
+
// }
|
|
10449
|
+
// }
|
|
10450
|
+
//
|
|
10451
|
+
}
|
|
10452
|
+
else {
|
|
10453
|
+
response = await this.privateMixGetV2MixPositionHistoryPosition(this.extend(request, params));
|
|
10454
|
+
//
|
|
10455
|
+
// {
|
|
10456
|
+
// code: '00000',
|
|
10457
|
+
// msg: 'success',
|
|
10458
|
+
// requestTime: '1712794148791',
|
|
10459
|
+
// data: {
|
|
10460
|
+
// list: [
|
|
10461
|
+
// {
|
|
10462
|
+
// symbol: 'XRPUSDT',
|
|
10463
|
+
// marginCoin: 'USDT',
|
|
10464
|
+
// holdSide: 'long',
|
|
10465
|
+
// openAvgPrice: '0.64967',
|
|
10466
|
+
// closeAvgPrice: '0.58799',
|
|
10467
|
+
// marginMode: 'isolated',
|
|
10468
|
+
// openTotalPos: '10',
|
|
10469
|
+
// closeTotalPos: '10',
|
|
10470
|
+
// pnl: '-0.62976205',
|
|
10471
|
+
// netProfit: '-0.65356802',
|
|
10472
|
+
// totalFunding: '-0.01638',
|
|
10473
|
+
// openFee: '-0.00389802',
|
|
10474
|
+
// closeFee: '-0.00352794',
|
|
10475
|
+
// ctime: '1709590322199',
|
|
10476
|
+
// utime: '1709667583395'
|
|
10477
|
+
// },
|
|
10478
|
+
// ...
|
|
10479
|
+
// ]
|
|
10480
|
+
// }
|
|
10481
|
+
// }
|
|
10482
|
+
//
|
|
8881
10483
|
}
|
|
8882
|
-
const
|
|
8883
|
-
|
|
8884
|
-
// {
|
|
8885
|
-
// code: '00000',
|
|
8886
|
-
// msg: 'success',
|
|
8887
|
-
// requestTime: '1712794148791',
|
|
8888
|
-
// data: {
|
|
8889
|
-
// list: [
|
|
8890
|
-
// {
|
|
8891
|
-
// symbol: 'XRPUSDT',
|
|
8892
|
-
// marginCoin: 'USDT',
|
|
8893
|
-
// holdSide: 'long',
|
|
8894
|
-
// openAvgPrice: '0.64967',
|
|
8895
|
-
// closeAvgPrice: '0.58799',
|
|
8896
|
-
// marginMode: 'isolated',
|
|
8897
|
-
// openTotalPos: '10',
|
|
8898
|
-
// closeTotalPos: '10',
|
|
8899
|
-
// pnl: '-0.62976205',
|
|
8900
|
-
// netProfit: '-0.65356802',
|
|
8901
|
-
// totalFunding: '-0.01638',
|
|
8902
|
-
// openFee: '-0.00389802',
|
|
8903
|
-
// closeFee: '-0.00352794',
|
|
8904
|
-
// ctime: '1709590322199',
|
|
8905
|
-
// utime: '1709667583395'
|
|
8906
|
-
// },
|
|
8907
|
-
// ...
|
|
8908
|
-
// ]
|
|
8909
|
-
// }
|
|
8910
|
-
// }
|
|
8911
|
-
//
|
|
8912
|
-
const data = this.safeDict(response, 'data');
|
|
8913
|
-
const responseList = this.safeList(data, 'list');
|
|
10484
|
+
const data = this.safeDict(response, 'data', {});
|
|
10485
|
+
const responseList = this.safeList(data, 'list', []);
|
|
8914
10486
|
const positions = this.parsePositions(responseList, symbols, params);
|
|
8915
10487
|
return this.filterBySinceLimit(positions, since, limit);
|
|
8916
10488
|
}
|
|
@@ -9190,8 +10762,10 @@ class bitget extends bitget$1 {
|
|
|
9190
10762
|
* @name bitget#fetchFundingInterval
|
|
9191
10763
|
* @description fetch the current funding rate interval
|
|
9192
10764
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
|
|
10765
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
|
|
9193
10766
|
* @param {string} symbol unified market symbol
|
|
9194
10767
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10768
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
9195
10769
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
9196
10770
|
*/
|
|
9197
10771
|
async fetchFundingInterval(symbol, params = {}) {
|
|
@@ -9201,23 +10775,48 @@ class bitget extends bitget$1 {
|
|
|
9201
10775
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
9202
10776
|
const request = {
|
|
9203
10777
|
'symbol': market['id'],
|
|
9204
|
-
'productType': productType,
|
|
9205
10778
|
};
|
|
9206
|
-
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
|
|
9213
|
-
|
|
9214
|
-
|
|
9215
|
-
|
|
9216
|
-
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
10779
|
+
let response = undefined;
|
|
10780
|
+
let uta = undefined;
|
|
10781
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingInterval', 'uta', false);
|
|
10782
|
+
if (uta) {
|
|
10783
|
+
response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
|
|
10784
|
+
//
|
|
10785
|
+
// {
|
|
10786
|
+
// "code": "00000",
|
|
10787
|
+
// "msg": "success",
|
|
10788
|
+
// "requestTime": 1752880157959,
|
|
10789
|
+
// "data": [
|
|
10790
|
+
// {
|
|
10791
|
+
// "symbol": "BTCUSDT",
|
|
10792
|
+
// "fundingRate": "0.0001",
|
|
10793
|
+
// "fundingRateInterval": "8",
|
|
10794
|
+
// "nextUpdate": "1752883200000",
|
|
10795
|
+
// "minFundingRate": "-0.003",
|
|
10796
|
+
// "maxFundingRate": "0.003"
|
|
10797
|
+
// }
|
|
10798
|
+
// ]
|
|
10799
|
+
// }
|
|
10800
|
+
//
|
|
10801
|
+
}
|
|
10802
|
+
else {
|
|
10803
|
+
request['productType'] = productType;
|
|
10804
|
+
response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
|
|
10805
|
+
//
|
|
10806
|
+
// {
|
|
10807
|
+
// "code": "00000",
|
|
10808
|
+
// "msg": "success",
|
|
10809
|
+
// "requestTime": 1727930153888,
|
|
10810
|
+
// "data": [
|
|
10811
|
+
// {
|
|
10812
|
+
// "symbol": "BTCUSDT",
|
|
10813
|
+
// "nextFundingTime": "1727942400000",
|
|
10814
|
+
// "ratePeriod": "8"
|
|
10815
|
+
// }
|
|
10816
|
+
// ]
|
|
10817
|
+
// }
|
|
10818
|
+
//
|
|
10819
|
+
}
|
|
9221
10820
|
const data = this.safeList(response, 'data', []);
|
|
9222
10821
|
const first = this.safeDict(data, 0, {});
|
|
9223
10822
|
return this.parseFundingRate(first, market);
|
|
@@ -9392,7 +10991,7 @@ class bitget extends bitget$1 {
|
|
|
9392
10991
|
}
|
|
9393
10992
|
}
|
|
9394
10993
|
const sandboxMode = this.safeBool2(this.options, 'sandboxMode', 'sandbox', false);
|
|
9395
|
-
if (sandboxMode && (path !== 'v2/public/time')) {
|
|
10994
|
+
if (sandboxMode && (path !== 'v2/public/time') && (path !== 'v3/market/current-fund-rate')) {
|
|
9396
10995
|
// https://github.com/ccxt/ccxt/issues/25252#issuecomment-2662742336
|
|
9397
10996
|
if (headers === undefined) {
|
|
9398
10997
|
headers = {};
|