ccxt 4.4.98 → 4.4.100
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 +7 -6
- package/dist/373.ccxt.browser.js +7630 -0
- package/dist/373.ccxt.browser.min.js +1 -0
- package/dist/ccxt.browser.min.js +8 -8
- package/dist/cjs/ccxt.js +289 -286
- package/dist/cjs/src/abstract/alpaca.js +4 -2
- package/dist/cjs/src/abstract/apex.js +4 -2
- package/dist/cjs/src/abstract/ascendex.js +4 -2
- package/dist/cjs/src/abstract/bigone.js +4 -2
- package/dist/cjs/src/abstract/binance.js +4 -2
- package/dist/cjs/src/abstract/bingx.js +4 -2
- package/dist/cjs/src/abstract/bit2c.js +4 -2
- package/dist/cjs/src/abstract/bitbank.js +4 -2
- package/dist/cjs/src/abstract/bitbns.js +4 -2
- package/dist/cjs/src/abstract/bitfinex.js +4 -2
- package/dist/cjs/src/abstract/bitflyer.js +4 -2
- package/dist/cjs/src/abstract/bitget.js +4 -2
- package/dist/cjs/src/abstract/bithumb.js +4 -2
- package/dist/cjs/src/abstract/bitmart.js +4 -2
- package/dist/cjs/src/abstract/bitmex.js +4 -2
- package/dist/cjs/src/abstract/bitopro.js +4 -2
- package/dist/cjs/src/abstract/bitrue.js +4 -2
- package/dist/cjs/src/abstract/bitso.js +4 -2
- package/dist/cjs/src/abstract/bitstamp.js +4 -2
- package/dist/cjs/src/abstract/bitteam.js +4 -2
- package/dist/cjs/src/abstract/bittrade.js +4 -2
- package/dist/cjs/src/abstract/bitvavo.js +4 -2
- package/dist/cjs/src/abstract/blockchaincom.js +4 -2
- package/dist/cjs/src/abstract/blofin.js +4 -2
- package/dist/cjs/src/abstract/btcalpha.js +4 -2
- package/dist/cjs/src/abstract/btcbox.js +4 -2
- package/dist/cjs/src/abstract/btcmarkets.js +4 -2
- package/dist/cjs/src/abstract/btcturk.js +4 -2
- package/dist/cjs/src/abstract/bybit.js +4 -2
- package/dist/cjs/src/abstract/cex.js +4 -2
- package/dist/cjs/src/abstract/coinbase.js +4 -2
- package/dist/cjs/src/abstract/coinbaseexchange.js +4 -2
- package/dist/cjs/src/abstract/coinbaseinternational.js +4 -2
- package/dist/cjs/src/abstract/coincatch.js +4 -2
- package/dist/cjs/src/abstract/coincheck.js +4 -2
- package/dist/cjs/src/abstract/coinex.js +4 -2
- package/dist/cjs/src/abstract/coinmate.js +4 -2
- package/dist/cjs/src/abstract/coinmetro.js +4 -2
- package/dist/cjs/src/abstract/coinone.js +4 -2
- package/dist/cjs/src/abstract/coinsph.js +4 -2
- package/dist/cjs/src/abstract/coinspot.js +4 -2
- package/dist/cjs/src/abstract/cryptocom.js +4 -2
- package/dist/cjs/src/abstract/cryptomus.js +4 -2
- package/dist/cjs/src/abstract/defx.js +4 -2
- package/dist/cjs/src/abstract/delta.js +4 -2
- package/dist/cjs/src/abstract/deribit.js +4 -2
- package/dist/cjs/src/abstract/derive.js +4 -2
- package/dist/cjs/src/abstract/digifinex.js +4 -2
- package/dist/cjs/src/abstract/ellipx.js +4 -2
- package/dist/cjs/src/abstract/exmo.js +4 -2
- package/dist/cjs/src/abstract/foxbit.js +4 -2
- package/dist/cjs/src/abstract/gate.js +4 -2
- package/dist/cjs/src/abstract/gemini.js +4 -2
- package/dist/cjs/src/abstract/hashkey.js +4 -2
- package/dist/cjs/src/abstract/hibachi.js +11 -0
- package/dist/cjs/src/abstract/hitbtc.js +4 -2
- package/dist/cjs/src/abstract/hollaex.js +4 -2
- package/dist/cjs/src/abstract/htx.js +4 -2
- package/dist/cjs/src/abstract/hyperliquid.js +4 -2
- package/dist/cjs/src/abstract/independentreserve.js +4 -2
- package/dist/cjs/src/abstract/indodax.js +4 -2
- package/dist/cjs/src/abstract/kraken.js +4 -2
- package/dist/cjs/src/abstract/krakenfutures.js +4 -2
- package/dist/cjs/src/abstract/kucoin.js +4 -2
- package/dist/cjs/src/abstract/kucoinfutures.js +5 -3
- package/dist/cjs/src/abstract/latoken.js +4 -2
- package/dist/cjs/src/abstract/lbank.js +4 -2
- package/dist/cjs/src/abstract/luno.js +4 -2
- package/dist/cjs/src/abstract/mercado.js +4 -2
- package/dist/cjs/src/abstract/mexc.js +4 -2
- package/dist/cjs/src/abstract/modetrade.js +4 -2
- package/dist/cjs/src/abstract/ndax.js +4 -2
- package/dist/cjs/src/abstract/novadax.js +4 -2
- package/dist/cjs/src/abstract/oceanex.js +4 -2
- package/dist/cjs/src/abstract/okcoin.js +4 -2
- package/dist/cjs/src/abstract/okx.js +4 -2
- package/dist/cjs/src/abstract/onetrading.js +4 -2
- package/dist/cjs/src/abstract/oxfun.js +4 -2
- package/dist/cjs/src/abstract/p2b.js +4 -2
- package/dist/cjs/src/abstract/paradex.js +4 -2
- package/dist/cjs/src/abstract/paymium.js +4 -2
- package/dist/cjs/src/abstract/phemex.js +4 -2
- package/dist/cjs/src/abstract/poloniex.js +4 -2
- package/dist/cjs/src/abstract/probit.js +4 -2
- package/dist/cjs/src/abstract/timex.js +4 -2
- package/dist/cjs/src/abstract/tokocrypto.js +4 -2
- package/dist/cjs/src/abstract/tradeogre.js +4 -2
- package/dist/cjs/src/abstract/upbit.js +4 -2
- package/dist/cjs/src/abstract/vertex.js +4 -2
- package/dist/cjs/src/abstract/wavesexchange.js +4 -2
- package/dist/cjs/src/abstract/whitebit.js +4 -2
- package/dist/cjs/src/abstract/woo.js +4 -2
- package/dist/cjs/src/abstract/woofipro.js +4 -2
- package/dist/cjs/src/abstract/xt.js +4 -2
- package/dist/cjs/src/abstract/yobit.js +4 -2
- package/dist/cjs/src/abstract/zaif.js +4 -2
- package/dist/cjs/src/abstract/zonda.js +4 -2
- package/dist/cjs/src/alpaca.js +5 -3
- package/dist/cjs/src/apex.js +5 -3
- package/dist/cjs/src/ascendex.js +5 -3
- package/dist/cjs/src/base/Exchange.js +51 -11
- 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 +3 -3
- 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 +8 -3
- 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 +5 -3
- package/dist/cjs/src/bequant.js +5 -3
- package/dist/cjs/src/bigone.js +5 -3
- package/dist/cjs/src/binance.js +14 -9
- package/dist/cjs/src/binancecoinm.js +5 -3
- package/dist/cjs/src/binanceus.js +5 -3
- package/dist/cjs/src/binanceusdm.js +5 -3
- package/dist/cjs/src/bingx.js +37 -5
- package/dist/cjs/src/bit2c.js +5 -3
- package/dist/cjs/src/bitbank.js +5 -3
- package/dist/cjs/src/bitbns.js +5 -3
- package/dist/cjs/src/bitfinex.js +8 -3
- package/dist/cjs/src/bitflyer.js +5 -3
- package/dist/cjs/src/bitget.js +2177 -552
- package/dist/cjs/src/bithumb.js +5 -3
- package/dist/cjs/src/bitmart.js +5 -3
- package/dist/cjs/src/bitmex.js +6 -3
- package/dist/cjs/src/bitopro.js +5 -3
- package/dist/cjs/src/bitrue.js +5 -3
- package/dist/cjs/src/bitso.js +5 -3
- package/dist/cjs/src/bitstamp.js +5 -3
- package/dist/cjs/src/bitteam.js +5 -3
- package/dist/cjs/src/bittrade.js +5 -3
- package/dist/cjs/src/bitvavo.js +4 -2
- package/dist/cjs/src/blockchaincom.js +5 -3
- package/dist/cjs/src/blofin.js +5 -3
- package/dist/cjs/src/btcalpha.js +5 -3
- package/dist/cjs/src/btcbox.js +5 -3
- package/dist/cjs/src/btcmarkets.js +5 -3
- package/dist/cjs/src/btcturk.js +5 -3
- package/dist/cjs/src/bybit.js +11 -4
- package/dist/cjs/src/cex.js +5 -3
- package/dist/cjs/src/coinbase.js +4 -2
- package/dist/cjs/src/coinbaseadvanced.js +5 -3
- package/dist/cjs/src/coinbaseexchange.js +4 -2
- package/dist/cjs/src/coinbaseinternational.js +4 -2
- package/dist/cjs/src/coincatch.js +5 -3
- package/dist/cjs/src/coincheck.js +5 -3
- package/dist/cjs/src/coinex.js +73 -7
- package/dist/cjs/src/coinmate.js +5 -3
- package/dist/cjs/src/coinmetro.js +5 -3
- package/dist/cjs/src/coinone.js +5 -3
- package/dist/cjs/src/coinsph.js +4 -3
- package/dist/cjs/src/coinspot.js +5 -3
- package/dist/cjs/src/cryptocom.js +6 -4
- package/dist/cjs/src/cryptomus.js +5 -3
- package/dist/cjs/src/defx.js +5 -3
- package/dist/cjs/src/delta.js +5 -3
- package/dist/cjs/src/deribit.js +5 -3
- package/dist/cjs/src/derive.js +5 -3
- package/dist/cjs/src/digifinex.js +5 -3
- package/dist/cjs/src/ellipx.js +5 -3
- package/dist/cjs/src/exmo.js +5 -3
- package/dist/cjs/src/fmfwio.js +5 -3
- package/dist/cjs/src/foxbit.js +8 -7
- package/dist/cjs/src/gate.js +27 -5
- package/dist/cjs/src/gateio.js +5 -3
- package/dist/cjs/src/gemini.js +5 -3
- package/dist/cjs/src/hashkey.js +5 -3
- package/dist/cjs/src/hibachi.js +2138 -0
- package/dist/cjs/src/hitbtc.js +4 -3
- package/dist/cjs/src/hollaex.js +5 -3
- package/dist/cjs/src/htx.js +6 -3
- package/dist/cjs/src/huobi.js +5 -3
- package/dist/cjs/src/hyperliquid.js +84 -31
- package/dist/cjs/src/independentreserve.js +5 -3
- package/dist/cjs/src/indodax.js +5 -3
- package/dist/cjs/src/kraken.js +5 -3
- package/dist/cjs/src/krakenfutures.js +6 -3
- package/dist/cjs/src/kucoin.js +5 -3
- package/dist/cjs/src/kucoinfutures.js +6 -3
- package/dist/cjs/src/latoken.js +5 -3
- package/dist/cjs/src/lbank.js +6 -4
- package/dist/cjs/src/luno.js +5 -3
- package/dist/cjs/src/mercado.js +5 -3
- package/dist/cjs/src/mexc.js +12 -3
- package/dist/cjs/src/modetrade.js +101 -3
- package/dist/cjs/src/myokx.js +5 -3
- package/dist/cjs/src/ndax.js +5 -3
- package/dist/cjs/src/novadax.js +39 -3
- package/dist/cjs/src/oceanex.js +5 -3
- package/dist/cjs/src/okcoin.js +5 -3
- package/dist/cjs/src/okx.js +5 -3
- package/dist/cjs/src/okxus.js +5 -3
- package/dist/cjs/src/onetrading.js +38 -3
- package/dist/cjs/src/oxfun.js +5 -3
- package/dist/cjs/src/p2b.js +37 -3
- package/dist/cjs/src/paradex.js +6 -3
- package/dist/cjs/src/paymium.js +5 -3
- package/dist/cjs/src/phemex.js +4 -2
- package/dist/cjs/src/poloniex.js +5 -3
- package/dist/cjs/src/pro/alpaca.js +5 -3
- package/dist/cjs/src/pro/apex.js +5 -3
- package/dist/cjs/src/pro/ascendex.js +5 -3
- package/dist/cjs/src/pro/bequant.js +6 -4
- package/dist/cjs/src/pro/binance.js +8 -8
- package/dist/cjs/src/pro/binancecoinm.js +6 -4
- package/dist/cjs/src/pro/binanceus.js +6 -4
- package/dist/cjs/src/pro/binanceusdm.js +5 -3
- package/dist/cjs/src/pro/bingx.js +5 -3
- package/dist/cjs/src/pro/bitfinex.js +5 -3
- package/dist/cjs/src/pro/bitget.js +6 -4
- package/dist/cjs/src/pro/bithumb.js +5 -3
- package/dist/cjs/src/pro/bitmart.js +5 -3
- package/dist/cjs/src/pro/bitmex.js +6 -4
- package/dist/cjs/src/pro/bitopro.js +4 -2
- package/dist/cjs/src/pro/bitrue.js +5 -3
- package/dist/cjs/src/pro/bitstamp.js +6 -4
- package/dist/cjs/src/pro/bittrade.js +4 -2
- package/dist/cjs/src/pro/bitvavo.js +8 -4
- package/dist/cjs/src/pro/blockchaincom.js +5 -3
- package/dist/cjs/src/pro/blofin.js +5 -3
- package/dist/cjs/src/pro/bybit.js +6 -3
- package/dist/cjs/src/pro/cex.js +6 -3
- package/dist/cjs/src/pro/coinbase.js +5 -3
- package/dist/cjs/src/pro/coinbaseadvanced.js +5 -3
- package/dist/cjs/src/pro/coinbaseexchange.js +7 -5
- package/dist/cjs/src/pro/coinbaseinternational.js +5 -3
- package/dist/cjs/src/pro/coincatch.js +5 -3
- package/dist/cjs/src/pro/coincheck.js +5 -3
- package/dist/cjs/src/pro/coinex.js +6 -4
- package/dist/cjs/src/pro/coinone.js +5 -3
- package/dist/cjs/src/pro/cryptocom.js +5 -3
- package/dist/cjs/src/pro/defx.js +5 -3
- package/dist/cjs/src/pro/deribit.js +5 -3
- package/dist/cjs/src/pro/derive.js +4 -2
- package/dist/cjs/src/pro/exmo.js +5 -3
- package/dist/cjs/src/pro/gate.js +6 -4
- package/dist/cjs/src/pro/gateio.js +5 -3
- package/dist/cjs/src/pro/gemini.js +5 -3
- package/dist/cjs/src/pro/hashkey.js +5 -3
- package/dist/cjs/src/pro/hitbtc.js +5 -3
- package/dist/cjs/src/pro/hollaex.js +5 -3
- package/dist/cjs/src/pro/htx.js +6 -4
- package/dist/cjs/src/pro/huobi.js +5 -3
- package/dist/cjs/src/pro/hyperliquid.js +108 -15
- package/dist/cjs/src/pro/independentreserve.js +5 -3
- package/dist/cjs/src/pro/kraken.js +5 -3
- package/dist/cjs/src/pro/krakenfutures.js +7 -4
- package/dist/cjs/src/pro/kucoin.js +7 -4
- package/dist/cjs/src/pro/kucoinfutures.js +7 -4
- package/dist/cjs/src/pro/lbank.js +4 -3
- package/dist/cjs/src/pro/luno.js +5 -3
- package/dist/cjs/src/pro/mexc.js +343 -160
- package/dist/cjs/src/pro/modetrade.js +4 -2
- package/dist/cjs/src/pro/myokx.js +5 -3
- package/dist/cjs/src/pro/ndax.js +5 -3
- package/dist/cjs/src/pro/okcoin.js +5 -3
- package/dist/cjs/src/pro/okx.js +10 -7
- package/dist/cjs/src/pro/okxus.js +5 -3
- package/dist/cjs/src/pro/onetrading.js +5 -3
- package/dist/cjs/src/pro/oxfun.js +6 -4
- package/dist/cjs/src/pro/p2b.js +5 -3
- package/dist/cjs/src/pro/paradex.js +5 -3
- package/dist/cjs/src/pro/phemex.js +5 -3
- package/dist/cjs/src/pro/poloniex.js +5 -3
- package/dist/cjs/src/pro/probit.js +5 -3
- package/dist/cjs/src/pro/tradeogre.js +5 -3
- package/dist/cjs/src/pro/upbit.js +5 -3
- package/dist/cjs/src/pro/vertex.js +4 -2
- package/dist/cjs/src/pro/whitebit.js +5 -3
- package/dist/cjs/src/pro/woo.js +4 -2
- package/dist/cjs/src/pro/woofipro.js +4 -2
- package/dist/cjs/src/pro/xt.js +5 -3
- package/dist/cjs/src/probit.js +40 -3
- package/dist/cjs/src/protobuf/mexc/compiled.cjs.js +7180 -0
- package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -7
- package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -1
- package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +2 -8
- 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 +2 -8
- package/dist/cjs/src/static_dependencies/ethers/hash/typed-data.js +2 -8
- package/dist/cjs/src/static_dependencies/ethers/index.js +10 -1
- package/dist/cjs/src/static_dependencies/ethers/interface.js +2 -8
- package/dist/cjs/src/static_dependencies/ethers/typed.js +2 -8
- 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 +2 -8
- package/dist/cjs/src/static_dependencies/ethers/utils/fixednumber.js +2 -8
- 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 +14 -8
- package/dist/cjs/src/static_dependencies/node-fetch/request.js +7 -1
- package/dist/cjs/src/static_dependencies/node-fetch/response.js +8 -2
- 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/qs/index.cjs.js +3 -1
- 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 +2 -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 +3 -2
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +8 -8
- 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 +4 -3
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +1 -2
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +4 -3
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +4 -2
- package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +32 -27
- 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 +3 -3
- 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 +4 -3
- package/dist/cjs/src/tokocrypto.js +5 -3
- package/dist/cjs/src/tradeogre.js +5 -3
- package/dist/cjs/src/upbit.js +5 -3
- package/dist/cjs/src/vertex.js +5 -3
- package/dist/cjs/src/wavesexchange.js +5 -3
- package/dist/cjs/src/whitebit.js +5 -3
- package/dist/cjs/src/woo.js +5 -3
- package/dist/cjs/src/woofipro.js +101 -3
- package/dist/cjs/src/xt.js +5 -3
- package/dist/cjs/src/yobit.js +5 -3
- package/dist/cjs/src/zaif.js +5 -3
- package/dist/cjs/src/zonda.js +5 -3
- 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.d.ts +1 -0
- 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.d.ts +1 -1
- package/js/src/alpaca.js +0 -6
- package/js/src/apex.d.ts +1 -1
- package/js/src/apex.js +0 -6
- package/js/src/ascendex.d.ts +1 -1
- package/js/src/ascendex.js +0 -6
- package/js/src/base/Exchange.d.ts +9 -7
- package/js/src/base/Exchange.js +50 -16
- 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.d.ts +2 -1
- package/js/src/base/types.js +0 -6
- package/js/src/base/ws/Cache.js +0 -6
- package/js/src/base/ws/Client.d.ts +1 -0
- package/js/src/base/ws/Client.js +5 -7
- 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.d.ts +1 -1
- package/js/src/bigone.js +0 -6
- package/js/src/binance.d.ts +2 -2
- package/js/src/binance.js +9 -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.d.ts +3 -2
- package/js/src/bingx.js +32 -8
- package/js/src/bit2c.js +0 -6
- package/js/src/bitbank.d.ts +1 -1
- package/js/src/bitbank.js +0 -6
- package/js/src/bitbns.js +0 -6
- package/js/src/bitfinex.d.ts +1 -1
- package/js/src/bitfinex.js +3 -6
- package/js/src/bitflyer.d.ts +1 -1
- package/js/src/bitflyer.js +0 -6
- package/js/src/bitget.d.ts +77 -9
- package/js/src/bitget.js +2172 -555
- package/js/src/bithumb.d.ts +1 -1
- package/js/src/bithumb.js +0 -6
- package/js/src/bitmart.d.ts +2 -2
- package/js/src/bitmart.js +0 -6
- package/js/src/bitmex.d.ts +2 -2
- package/js/src/bitmex.js +1 -6
- package/js/src/bitopro.d.ts +1 -1
- package/js/src/bitopro.js +0 -6
- package/js/src/bitrue.d.ts +2 -2
- package/js/src/bitrue.js +0 -6
- package/js/src/bitso.d.ts +1 -1
- package/js/src/bitso.js +0 -6
- package/js/src/bitstamp.d.ts +1 -1
- package/js/src/bitstamp.js +0 -6
- package/js/src/bitteam.js +0 -6
- package/js/src/bittrade.d.ts +1 -1
- package/js/src/bittrade.js +0 -6
- package/js/src/bitvavo.d.ts +1 -1
- package/js/src/bitvavo.js +0 -6
- package/js/src/blockchaincom.d.ts +1 -1
- package/js/src/blockchaincom.js +0 -6
- package/js/src/blofin.d.ts +1 -1
- 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.d.ts +1 -1
- package/js/src/btcmarkets.js +0 -6
- package/js/src/btcturk.js +0 -6
- package/js/src/bybit.d.ts +2 -2
- package/js/src/bybit.js +6 -7
- package/js/src/cex.js +0 -6
- package/js/src/coinbase.d.ts +1 -1
- package/js/src/coinbase.js +0 -6
- package/js/src/coinbaseadvanced.js +0 -6
- package/js/src/coinbaseexchange.d.ts +1 -1
- package/js/src/coinbaseexchange.js +0 -6
- package/js/src/coinbaseinternational.d.ts +1 -1
- package/js/src/coinbaseinternational.js +0 -6
- package/js/src/coincatch.d.ts +2 -2
- package/js/src/coincatch.js +0 -6
- package/js/src/coincheck.js +0 -6
- package/js/src/coinex.d.ts +13 -3
- package/js/src/coinex.js +68 -10
- package/js/src/coinmate.d.ts +1 -1
- 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.d.ts +1 -1
- package/js/src/coinsph.js +0 -6
- package/js/src/coinspot.js +0 -6
- package/js/src/cryptocom.d.ts +1 -1
- package/js/src/cryptocom.js +1 -7
- package/js/src/cryptomus.js +0 -6
- package/js/src/defx.d.ts +2 -2
- package/js/src/defx.js +0 -6
- package/js/src/delta.d.ts +1 -1
- package/js/src/delta.js +0 -6
- package/js/src/deribit.d.ts +1 -1
- package/js/src/deribit.js +0 -6
- package/js/src/derive.js +0 -6
- package/js/src/digifinex.d.ts +2 -2
- package/js/src/digifinex.js +0 -6
- package/js/src/ellipx.d.ts +1 -1
- package/js/src/ellipx.js +0 -6
- package/js/src/exmo.d.ts +1 -1
- package/js/src/exmo.js +0 -6
- package/js/src/fmfwio.js +0 -6
- package/js/src/foxbit.d.ts +1 -1
- package/js/src/foxbit.js +3 -9
- package/js/src/gate.d.ts +2 -2
- package/js/src/gate.js +22 -8
- package/js/src/gateio.js +0 -6
- package/js/src/gemini.d.ts +1 -1
- package/js/src/gemini.js +0 -6
- package/js/src/hashkey.d.ts +3 -3
- 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.d.ts +2 -2
- package/js/src/hitbtc.js +0 -6
- package/js/src/hollaex.d.ts +1 -1
- package/js/src/hollaex.js +0 -6
- package/js/src/htx.d.ts +3 -3
- package/js/src/htx.js +1 -6
- package/js/src/huobi.js +0 -6
- package/js/src/hyperliquid.d.ts +12 -2
- package/js/src/hyperliquid.js +79 -34
- package/js/src/independentreserve.d.ts +1 -1
- package/js/src/independentreserve.js +0 -6
- package/js/src/indodax.d.ts +1 -1
- package/js/src/indodax.js +0 -6
- package/js/src/kraken.d.ts +1 -1
- package/js/src/kraken.js +0 -6
- package/js/src/krakenfutures.d.ts +1 -1
- package/js/src/krakenfutures.js +1 -6
- package/js/src/kucoin.d.ts +2 -2
- package/js/src/kucoin.js +0 -6
- package/js/src/kucoinfutures.d.ts +3 -2
- package/js/src/kucoinfutures.js +1 -6
- package/js/src/latoken.js +0 -6
- package/js/src/lbank.d.ts +1 -1
- package/js/src/lbank.js +1 -7
- package/js/src/luno.js +0 -6
- package/js/src/mercado.d.ts +1 -1
- package/js/src/mercado.js +0 -6
- package/js/src/mexc.d.ts +2 -2
- package/js/src/mexc.js +7 -6
- package/js/src/modetrade.d.ts +26 -3
- package/js/src/modetrade.js +96 -6
- package/js/src/myokx.js +0 -6
- package/js/src/ndax.d.ts +1 -1
- package/js/src/ndax.js +0 -6
- package/js/src/novadax.d.ts +1 -1
- package/js/src/novadax.js +34 -6
- package/js/src/oceanex.js +0 -6
- package/js/src/okcoin.d.ts +1 -1
- package/js/src/okcoin.js +0 -6
- package/js/src/okx.d.ts +2 -2
- package/js/src/okx.js +0 -6
- package/js/src/okxus.js +0 -6
- package/js/src/onetrading.js +33 -6
- package/js/src/oxfun.d.ts +1 -1
- package/js/src/oxfun.js +0 -6
- package/js/src/p2b.js +32 -6
- package/js/src/paradex.d.ts +1 -1
- package/js/src/paradex.js +1 -6
- package/js/src/paymium.js +0 -6
- package/js/src/phemex.d.ts +2 -2
- package/js/src/phemex.js +0 -6
- package/js/src/poloniex.d.ts +2 -2
- 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 +4 -12
- 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 +3 -7
- 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 +1 -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 +1 -7
- 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 +28 -2
- package/js/src/pro/hyperliquid.js +103 -18
- 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 +2 -7
- package/js/src/pro/kucoinfutures.d.ts +2 -2
- package/js/src/pro/kucoinfutures.js +2 -7
- package/js/src/pro/lbank.js +0 -6
- package/js/src/pro/luno.js +0 -6
- package/js/src/pro/mexc.d.ts +9 -6
- package/js/src/pro/mexc.js +338 -163
- 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 +5 -10
- 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 +1 -7
- 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.d.ts +1 -1
- package/js/src/probit.js +35 -6
- package/js/src/protobuf/mexc/compiled.cjs +7180 -0
- package/js/src/protobuf/mexc/compiled.d.cts +2 -0
- 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.d.ts +1 -1
- package/js/src/tokocrypto.js +0 -6
- package/js/src/tradeogre.js +0 -6
- package/js/src/upbit.d.ts +1 -1
- package/js/src/upbit.js +0 -6
- package/js/src/vertex.d.ts +1 -1
- package/js/src/vertex.js +0 -6
- package/js/src/wavesexchange.d.ts +1 -1
- package/js/src/wavesexchange.js +0 -6
- package/js/src/whitebit.d.ts +2 -2
- package/js/src/whitebit.js +0 -6
- package/js/src/woo.d.ts +4 -4
- package/js/src/woo.js +0 -6
- package/js/src/woofipro.d.ts +26 -3
- package/js/src/woofipro.js +96 -6
- package/js/src/xt.d.ts +3 -3
- package/js/src/xt.js +0 -6
- package/js/src/yobit.d.ts +1 -1
- package/js/src/yobit.js +0 -6
- package/js/src/zaif.d.ts +1 -1
- package/js/src/zaif.js +0 -6
- package/js/src/zonda.d.ts +1 -1
- package/js/src/zonda.js +0 -6
- package/package.json +4 -3
package/dist/cjs/src/bitget.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
3
5
|
var bitget$1 = require('./abstract/bitget.js');
|
|
4
6
|
var errors = require('./base/errors.js');
|
|
5
7
|
var Precise = require('./base/Precise.js');
|
|
6
8
|
var number = require('./base/functions/number.js');
|
|
7
9
|
var sha256 = require('./static_dependencies/noble-hashes/sha256.js');
|
|
8
10
|
|
|
9
|
-
//
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
10
12
|
// ---------------------------------------------------------------------------
|
|
11
13
|
/**
|
|
12
14
|
* @class bitget
|
|
13
15
|
* @augments Exchange
|
|
14
16
|
*/
|
|
15
|
-
class bitget extends bitget$1 {
|
|
17
|
+
class bitget extends bitget$1["default"] {
|
|
16
18
|
describe() {
|
|
17
19
|
return this.deepExtend(super.describe(), {
|
|
18
20
|
'id': 'bitget',
|
|
@@ -805,6 +807,7 @@ class bitget extends bitget$1 {
|
|
|
805
807
|
'get': {
|
|
806
808
|
'v3/account/assets': 1,
|
|
807
809
|
'v3/account/settings': 1,
|
|
810
|
+
'v3/account/deposit-records': 2,
|
|
808
811
|
'v3/account/financial-records': 1,
|
|
809
812
|
'v3/account/repayable-coins': 2,
|
|
810
813
|
'v3/account/payment-coins': 2,
|
|
@@ -823,7 +826,9 @@ class bitget extends bitget$1 {
|
|
|
823
826
|
'v3/position/history-position': 1,
|
|
824
827
|
'v3/trade/order-info': 1,
|
|
825
828
|
'v3/trade/unfilled-orders': 1,
|
|
829
|
+
'v3/trade/unfilled-strategy-orders': 1,
|
|
826
830
|
'v3/trade/history-orders': 1,
|
|
831
|
+
'v3/trade/history-strategy-orders': 1,
|
|
827
832
|
'v3/trade/fills': 1,
|
|
828
833
|
'v3/user/sub-list': 2,
|
|
829
834
|
'v3/user/sub-api-list': 2,
|
|
@@ -837,8 +842,11 @@ class bitget extends bitget$1 {
|
|
|
837
842
|
'v3/account/max-open-available': 4,
|
|
838
843
|
'v3/ins-loan/bind-uid': 6.6667,
|
|
839
844
|
'v3/trade/place-order': 2,
|
|
845
|
+
'v3/trade/place-strategy-order': 2,
|
|
840
846
|
'v3/trade/modify-order': 2,
|
|
847
|
+
'v3/trade/modify-strategy-order': 2,
|
|
841
848
|
'v3/trade/cancel-order': 2,
|
|
849
|
+
'v3/trade/cancel-strategy-order': 2,
|
|
842
850
|
'v3/trade/place-batch': 4,
|
|
843
851
|
'v3/trade/batch-modify-order': 2,
|
|
844
852
|
'v3/trade/cancel-batch': 4,
|
|
@@ -884,6 +892,7 @@ class bitget extends bitget$1 {
|
|
|
884
892
|
// '0': ExchangeError, // 200 successful,when the order placement / cancellation / operation is successful
|
|
885
893
|
'4001': errors.ExchangeError,
|
|
886
894
|
'4002': errors.ExchangeError,
|
|
895
|
+
'40020': errors.BadRequest,
|
|
887
896
|
// --------------------------------------------------------
|
|
888
897
|
'30001': errors.AuthenticationError,
|
|
889
898
|
'30002': errors.AuthenticationError,
|
|
@@ -1428,6 +1437,19 @@ class bitget extends bitget$1 {
|
|
|
1428
1437
|
'1w': '1Wutc',
|
|
1429
1438
|
'1M': '1Mutc',
|
|
1430
1439
|
},
|
|
1440
|
+
'uta': {
|
|
1441
|
+
'1m': '1m',
|
|
1442
|
+
'3m': '3m',
|
|
1443
|
+
'5m': '5m',
|
|
1444
|
+
'15m': '15m',
|
|
1445
|
+
'30m': '30m',
|
|
1446
|
+
'1h': '1H',
|
|
1447
|
+
'2h': '2H',
|
|
1448
|
+
'4h': '4H',
|
|
1449
|
+
'6h': '6H',
|
|
1450
|
+
'12h': '12H',
|
|
1451
|
+
'1d': '1D',
|
|
1452
|
+
},
|
|
1431
1453
|
},
|
|
1432
1454
|
'fetchMarkets': {
|
|
1433
1455
|
'types': ['spot', 'swap'], // there is future markets but they use the same endpoints as swap
|
|
@@ -1517,7 +1539,6 @@ class bitget extends bitget$1 {
|
|
|
1517
1539
|
'ERC20': 'ERC20',
|
|
1518
1540
|
'BEP20': 'BSC',
|
|
1519
1541
|
// 'BEP20': 'BEP20', // different for BEP20
|
|
1520
|
-
'BSC': 'BEP20',
|
|
1521
1542
|
'ATOM': 'ATOM',
|
|
1522
1543
|
'ACA': 'AcalaToken',
|
|
1523
1544
|
'APT': 'Aptos',
|
|
@@ -1771,10 +1792,20 @@ class bitget extends bitget$1 {
|
|
|
1771
1792
|
defaultProductType = (subType === 'linear') ? 'USDT-FUTURES' : 'COIN-FUTURES';
|
|
1772
1793
|
// }
|
|
1773
1794
|
}
|
|
1774
|
-
let productType = this.
|
|
1795
|
+
let productType = this.safeString2(params, 'productType', 'category', defaultProductType);
|
|
1775
1796
|
if ((productType === undefined) && (market !== undefined)) {
|
|
1776
1797
|
const settle = market['settle'];
|
|
1777
|
-
if (
|
|
1798
|
+
if (market['spot']) {
|
|
1799
|
+
let marginMode = undefined;
|
|
1800
|
+
[marginMode, params] = this.handleMarginModeAndParams('handleProductTypeAndParams', params);
|
|
1801
|
+
if (marginMode !== undefined) {
|
|
1802
|
+
productType = 'MARGIN';
|
|
1803
|
+
}
|
|
1804
|
+
else {
|
|
1805
|
+
productType = 'SPOT';
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
else if (settle === 'USDT') {
|
|
1778
1809
|
productType = 'USDT-FUTURES';
|
|
1779
1810
|
}
|
|
1780
1811
|
else if (settle === 'USDC') {
|
|
@@ -1794,9 +1825,9 @@ class bitget extends bitget$1 {
|
|
|
1794
1825
|
}
|
|
1795
1826
|
}
|
|
1796
1827
|
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"
|
|
1828
|
+
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
1829
|
}
|
|
1799
|
-
params = this.omit(params, 'productType');
|
|
1830
|
+
params = this.omit(params, ['productType', 'category']);
|
|
1800
1831
|
return [productType, params];
|
|
1801
1832
|
}
|
|
1802
1833
|
/**
|
|
@@ -1829,9 +1860,9 @@ class bitget extends bitget$1 {
|
|
|
1829
1860
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Symbols
|
|
1830
1861
|
* @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbols-Contracts
|
|
1831
1862
|
* @see https://www.bitget.com/api-doc/margin/common/support-currencies
|
|
1832
|
-
* @see https://www.bitget.
|
|
1863
|
+
* @see https://www.bitget.com/api-doc/uta/public/Instruments
|
|
1833
1864
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1834
|
-
* @param {
|
|
1865
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
1835
1866
|
* @returns {object[]} an array of objects representing market data
|
|
1836
1867
|
*/
|
|
1837
1868
|
async fetchMarkets(params = {}) {
|
|
@@ -2477,11 +2508,13 @@ class bitget extends bitget$1 {
|
|
|
2477
2508
|
* @see https://www.bitget.com/api-doc/contract/position/Get-Query-Position-Lever
|
|
2478
2509
|
* @see https://www.bitget.com/api-doc/margin/cross/account/Cross-Tier-Data
|
|
2479
2510
|
* @see https://www.bitget.com/api-doc/margin/isolated/account/Isolated-Tier-Data
|
|
2511
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Position-Tier-Data
|
|
2480
2512
|
* @param {string} symbol unified market symbol
|
|
2481
2513
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2482
2514
|
* @param {string} [params.marginMode] for spot margin 'cross' or 'isolated', default is 'isolated'
|
|
2483
2515
|
* @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'
|
|
2516
|
+
* @param {string} [params.productType] *contract and uta only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
2517
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
2485
2518
|
* @returns {object} a [leverage tiers structure]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}
|
|
2486
2519
|
*/
|
|
2487
2520
|
async fetchMarketLeverageTiers(symbol, params = {}) {
|
|
@@ -2490,10 +2523,22 @@ class bitget extends bitget$1 {
|
|
|
2490
2523
|
const request = {};
|
|
2491
2524
|
let response = undefined;
|
|
2492
2525
|
let marginMode = undefined;
|
|
2526
|
+
let productType = undefined;
|
|
2527
|
+
let uta = undefined;
|
|
2493
2528
|
[marginMode, params] = this.handleMarginModeAndParams('fetchMarketLeverageTiers', params, 'isolated');
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2529
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
2530
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchMarketLeverageTiers', 'uta', false);
|
|
2531
|
+
if (uta) {
|
|
2532
|
+
if (productType === 'SPOT') {
|
|
2533
|
+
if (marginMode !== undefined) {
|
|
2534
|
+
productType = 'MARGIN';
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
2537
|
+
request['symbol'] = market['id'];
|
|
2538
|
+
request['category'] = productType;
|
|
2539
|
+
response = await this.publicUtaGetV3MarketPositionTier(this.extend(request, params));
|
|
2540
|
+
}
|
|
2541
|
+
else if ((market['swap']) || (market['future'])) {
|
|
2497
2542
|
request['productType'] = productType;
|
|
2498
2543
|
request['symbol'] = market['id'];
|
|
2499
2544
|
response = await this.publicMixGetV2MixMarketQueryPositionLever(this.extend(request, params));
|
|
@@ -2572,6 +2617,23 @@ class bitget extends bitget$1 {
|
|
|
2572
2617
|
// ]
|
|
2573
2618
|
// }
|
|
2574
2619
|
//
|
|
2620
|
+
// uta
|
|
2621
|
+
//
|
|
2622
|
+
// {
|
|
2623
|
+
// "code": "00000",
|
|
2624
|
+
// "msg": "success",
|
|
2625
|
+
// "requestTime": 1752735673127,
|
|
2626
|
+
// "data": [
|
|
2627
|
+
// {
|
|
2628
|
+
// "tier": "1",
|
|
2629
|
+
// "minTierValue": "0",
|
|
2630
|
+
// "maxTierValue": "150000",
|
|
2631
|
+
// "leverage": "125",
|
|
2632
|
+
// "mmr": "0.004"
|
|
2633
|
+
// },
|
|
2634
|
+
// ]
|
|
2635
|
+
// }
|
|
2636
|
+
//
|
|
2575
2637
|
const result = this.safeValue(response, 'data', []);
|
|
2576
2638
|
return this.parseMarketLeverageTiers(result, market);
|
|
2577
2639
|
}
|
|
@@ -2612,15 +2674,25 @@ class bitget extends bitget$1 {
|
|
|
2612
2674
|
// "maintainMarginRate": "0.1"
|
|
2613
2675
|
// }
|
|
2614
2676
|
//
|
|
2677
|
+
// uta
|
|
2678
|
+
//
|
|
2679
|
+
// {
|
|
2680
|
+
// "tier": "1",
|
|
2681
|
+
// "minTierValue": "0",
|
|
2682
|
+
// "maxTierValue": "150000",
|
|
2683
|
+
// "leverage": "125",
|
|
2684
|
+
// "mmr": "0.004"
|
|
2685
|
+
// }
|
|
2686
|
+
//
|
|
2615
2687
|
const tiers = [];
|
|
2616
2688
|
let minNotional = 0;
|
|
2617
2689
|
for (let i = 0; i < info.length; i++) {
|
|
2618
2690
|
const item = info[i];
|
|
2619
|
-
const minimumNotional = this.
|
|
2691
|
+
const minimumNotional = this.safeNumber2(item, 'startUnit', 'minTierValue');
|
|
2620
2692
|
if (minimumNotional !== undefined) {
|
|
2621
2693
|
minNotional = minimumNotional;
|
|
2622
2694
|
}
|
|
2623
|
-
const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount']);
|
|
2695
|
+
const maxNotional = this.safeNumberN(item, ['endUnit', 'maxBorrowableAmount', 'baseMaxBorrowableAmount', 'maxTierValue']);
|
|
2624
2696
|
const marginCurrency = this.safeString2(item, 'coin', 'baseCoin');
|
|
2625
2697
|
const currencyId = (marginCurrency !== undefined) ? marginCurrency : market['base'];
|
|
2626
2698
|
const marketId = this.safeString(item, 'symbol');
|
|
@@ -2630,7 +2702,7 @@ class bitget extends bitget$1 {
|
|
|
2630
2702
|
'currency': this.safeCurrencyCode(currencyId),
|
|
2631
2703
|
'minNotional': minNotional,
|
|
2632
2704
|
'maxNotional': maxNotional,
|
|
2633
|
-
'maintenanceMarginRate': this.
|
|
2705
|
+
'maintenanceMarginRate': this.safeNumberN(item, ['keepMarginRate', 'maintainMarginRate', 'mmr']),
|
|
2634
2706
|
'maxLeverage': this.safeNumber(item, 'leverage'),
|
|
2635
2707
|
'info': item,
|
|
2636
2708
|
});
|
|
@@ -2989,9 +3061,11 @@ class bitget extends bitget$1 {
|
|
|
2989
3061
|
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
2990
3062
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Orderbook
|
|
2991
3063
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Merge-Depth
|
|
3064
|
+
* @see https://www.bitget.com/api-doc/uta/public/OrderBook
|
|
2992
3065
|
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
2993
3066
|
* @param {int} [limit] the maximum amount of order book entries to return
|
|
2994
3067
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3068
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
2995
3069
|
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
2996
3070
|
*/
|
|
2997
3071
|
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
@@ -3003,13 +3077,19 @@ class bitget extends bitget$1 {
|
|
|
3003
3077
|
if (limit !== undefined) {
|
|
3004
3078
|
request['limit'] = limit;
|
|
3005
3079
|
}
|
|
3080
|
+
let productType = undefined;
|
|
3081
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3006
3082
|
let response = undefined;
|
|
3007
|
-
|
|
3083
|
+
let uta = undefined;
|
|
3084
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOrderBook', 'uta', false);
|
|
3085
|
+
if (uta) {
|
|
3086
|
+
request['category'] = productType;
|
|
3087
|
+
response = await this.publicUtaGetV3MarketOrderbook(this.extend(request, params));
|
|
3088
|
+
}
|
|
3089
|
+
else if (market['spot']) {
|
|
3008
3090
|
response = await this.publicSpotGetV2SpotMarketOrderbook(this.extend(request, params));
|
|
3009
3091
|
}
|
|
3010
3092
|
else {
|
|
3011
|
-
let productType = undefined;
|
|
3012
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3013
3093
|
request['productType'] = productType;
|
|
3014
3094
|
response = await this.publicMixGetV2MixMarketMergeDepth(this.extend(request, params));
|
|
3015
3095
|
}
|
|
@@ -3025,9 +3105,24 @@ class bitget extends bitget$1 {
|
|
|
3025
3105
|
// }
|
|
3026
3106
|
// }
|
|
3027
3107
|
//
|
|
3108
|
+
// uta
|
|
3109
|
+
//
|
|
3110
|
+
// {
|
|
3111
|
+
// "code": "00000",
|
|
3112
|
+
// "msg": "success",
|
|
3113
|
+
// "requestTime": 1750329437753,
|
|
3114
|
+
// "data": {
|
|
3115
|
+
// "a": [ [ 104992.60, 0.018411 ] ],
|
|
3116
|
+
// "b":[ [104927.40, 0.229914 ] ],
|
|
3117
|
+
// "ts": "1750329437763"
|
|
3118
|
+
// }
|
|
3119
|
+
// }
|
|
3120
|
+
//
|
|
3028
3121
|
const data = this.safeValue(response, 'data', {});
|
|
3122
|
+
const bidsKey = uta ? 'b' : 'bids';
|
|
3123
|
+
const asksKey = uta ? 'a' : 'asks';
|
|
3029
3124
|
const timestamp = this.safeInteger(data, 'ts');
|
|
3030
|
-
return this.parseOrderBook(data, market['symbol'], timestamp);
|
|
3125
|
+
return this.parseOrderBook(data, market['symbol'], timestamp, bidsKey, asksKey);
|
|
3031
3126
|
}
|
|
3032
3127
|
parseTicker(ticker, market = undefined) {
|
|
3033
3128
|
//
|
|
@@ -3039,7 +3134,7 @@ class bitget extends bitget$1 {
|
|
|
3039
3134
|
// "ts": "1695793390482"
|
|
3040
3135
|
// }
|
|
3041
3136
|
//
|
|
3042
|
-
// spot
|
|
3137
|
+
// spot
|
|
3043
3138
|
//
|
|
3044
3139
|
// {
|
|
3045
3140
|
// "open": "37202.46",
|
|
@@ -3060,92 +3155,118 @@ class bitget extends bitget$1 {
|
|
|
3060
3155
|
// "change24h": "0.00321"
|
|
3061
3156
|
// }
|
|
3062
3157
|
//
|
|
3063
|
-
// swap and future
|
|
3158
|
+
// swap and future
|
|
3064
3159
|
//
|
|
3065
3160
|
// {
|
|
3066
3161
|
// "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": "
|
|
3162
|
+
// "lastPr": "104823.8",
|
|
3163
|
+
// "askPr": "104823.8",
|
|
3164
|
+
// "bidPr": "104823.5",
|
|
3165
|
+
// "bidSz": "0.703",
|
|
3166
|
+
// "askSz": "13.894",
|
|
3167
|
+
// "high24h": "105289.3",
|
|
3168
|
+
// "low24h": "103447.9",
|
|
3169
|
+
// "ts": "1750332210370",
|
|
3170
|
+
// "change24h": "0.00471",
|
|
3171
|
+
// "baseVolume": "79089.5675",
|
|
3172
|
+
// "quoteVolume": "8274870921.80485",
|
|
3173
|
+
// "usdtVolume": "8274870921.80485",
|
|
3174
|
+
// "openUtc": "104833",
|
|
3175
|
+
// "changeUtc24h": "-0.00009",
|
|
3176
|
+
// "indexPrice": "104881.953125",
|
|
3177
|
+
// "fundingRate": "-0.000014",
|
|
3178
|
+
// "holdingAmount": "7452.6421",
|
|
3084
3179
|
// "deliveryStartTime": null,
|
|
3085
3180
|
// "deliveryTime": null,
|
|
3086
3181
|
// "deliveryStatus": "",
|
|
3087
|
-
// "open24h": "
|
|
3182
|
+
// "open24h": "104332.3",
|
|
3183
|
+
// "markPrice": "104824.2"
|
|
3184
|
+
// }
|
|
3185
|
+
//
|
|
3186
|
+
// spot uta
|
|
3187
|
+
//
|
|
3188
|
+
// {
|
|
3189
|
+
// "category": "SPOT",
|
|
3190
|
+
// "symbol": "BTCUSDT",
|
|
3191
|
+
// "ts": "1750330651972",
|
|
3192
|
+
// "lastPrice": "104900.2",
|
|
3193
|
+
// "openPrice24h": "104321.2",
|
|
3194
|
+
// "highPrice24h": "107956.8",
|
|
3195
|
+
// "lowPrice24h": "103600.1",
|
|
3196
|
+
// "ask1Price": "104945.8",
|
|
3197
|
+
// "bid1Price": "104880.6",
|
|
3198
|
+
// "bid1Size": "0.266534",
|
|
3199
|
+
// "ask1Size": "0.014001",
|
|
3200
|
+
// "price24hPcnt": "0.00555",
|
|
3201
|
+
// "volume24h": "355.941109",
|
|
3202
|
+
// "turnover24h": "37302936.008134"
|
|
3088
3203
|
// }
|
|
3089
3204
|
//
|
|
3090
|
-
// swap and future
|
|
3205
|
+
// swap and future uta
|
|
3091
3206
|
//
|
|
3092
3207
|
// {
|
|
3093
|
-
// "
|
|
3094
|
-
// "symbol": "
|
|
3095
|
-
// "
|
|
3096
|
-
// "
|
|
3097
|
-
// "
|
|
3098
|
-
// "
|
|
3099
|
-
// "
|
|
3100
|
-
// "
|
|
3101
|
-
// "
|
|
3102
|
-
// "
|
|
3103
|
-
// "
|
|
3104
|
-
// "
|
|
3105
|
-
// "
|
|
3106
|
-
// "
|
|
3107
|
-
// "
|
|
3108
|
-
// "
|
|
3208
|
+
// "category": "USDT-FUTURES",
|
|
3209
|
+
// "symbol": "BTCUSDT",
|
|
3210
|
+
// "ts": "1750332730472",
|
|
3211
|
+
// "lastPrice": "104738",
|
|
3212
|
+
// "openPrice24h": "104374",
|
|
3213
|
+
// "highPrice24h": "105289.3",
|
|
3214
|
+
// "lowPrice24h": "103447.9",
|
|
3215
|
+
// "ask1Price": "104738",
|
|
3216
|
+
// "bid1Price": "104737.7",
|
|
3217
|
+
// "bid1Size": "2.036",
|
|
3218
|
+
// "ask1Size": "8.094",
|
|
3219
|
+
// "price24hPcnt": "0.00349",
|
|
3220
|
+
// "volume24h": "79101.6477",
|
|
3221
|
+
// "turnover24h": "8276293391.45973",
|
|
3222
|
+
// "indexPrice": "104785.956168",
|
|
3223
|
+
// "markPrice": "104738",
|
|
3224
|
+
// "fundingRate": "-0.000007",
|
|
3225
|
+
// "openInterest": "7465.5938",
|
|
3226
|
+
// "deliveryStartTime": "",
|
|
3227
|
+
// "deliveryTime": "",
|
|
3228
|
+
// "deliveryStatus": ""
|
|
3109
3229
|
// }
|
|
3110
3230
|
//
|
|
3111
3231
|
const marketId = this.safeString(ticker, 'symbol');
|
|
3112
|
-
const close = this.
|
|
3232
|
+
const close = this.safeString2(ticker, 'lastPr', 'lastPrice');
|
|
3113
3233
|
const timestamp = this.safeIntegerOmitZero(ticker, 'ts'); // exchange bitget provided 0
|
|
3114
3234
|
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;
|
|
3235
|
+
const category = this.safeString(ticker, 'category');
|
|
3236
|
+
const markPrice = this.safeString(ticker, 'markPrice');
|
|
3237
|
+
let marketType;
|
|
3238
|
+
if ((markPrice !== undefined) && (category !== 'SPOT')) {
|
|
3239
|
+
marketType = 'contract';
|
|
3122
3240
|
}
|
|
3123
3241
|
else {
|
|
3124
|
-
|
|
3125
|
-
|
|
3242
|
+
marketType = 'spot';
|
|
3243
|
+
}
|
|
3244
|
+
let percentage = this.safeString(ticker, 'price24hPcnt');
|
|
3245
|
+
if (percentage === undefined) {
|
|
3246
|
+
percentage = Precise["default"].stringMul(change, '100');
|
|
3126
3247
|
}
|
|
3127
3248
|
return this.safeTicker({
|
|
3128
|
-
'symbol':
|
|
3249
|
+
'symbol': this.safeSymbol(marketId, market, undefined, marketType),
|
|
3129
3250
|
'timestamp': timestamp,
|
|
3130
3251
|
'datetime': this.iso8601(timestamp),
|
|
3131
|
-
'high': this.
|
|
3132
|
-
'low': this.
|
|
3133
|
-
'bid': this.
|
|
3134
|
-
'bidVolume': this.
|
|
3135
|
-
'ask': this.
|
|
3136
|
-
'askVolume': this.
|
|
3252
|
+
'high': this.safeString2(ticker, 'high24h', 'highPrice24h'),
|
|
3253
|
+
'low': this.safeString2(ticker, 'low24h', 'lowPrice24h'),
|
|
3254
|
+
'bid': this.safeString2(ticker, 'bidPr', 'bid1Price'),
|
|
3255
|
+
'bidVolume': this.safeString2(ticker, 'bidSz', 'bid1Size'),
|
|
3256
|
+
'ask': this.safeString2(ticker, 'askPr', 'ask1Price'),
|
|
3257
|
+
'askVolume': this.safeString2(ticker, 'askSz', 'ask1Size'),
|
|
3137
3258
|
'vwap': undefined,
|
|
3138
|
-
'open':
|
|
3259
|
+
'open': this.safeStringN(ticker, ['open', 'open24h', 'openPrice24h']),
|
|
3139
3260
|
'close': close,
|
|
3140
3261
|
'last': close,
|
|
3141
3262
|
'previousClose': undefined,
|
|
3142
3263
|
'change': change,
|
|
3143
|
-
'percentage':
|
|
3264
|
+
'percentage': percentage,
|
|
3144
3265
|
'average': undefined,
|
|
3145
|
-
'baseVolume': this.
|
|
3146
|
-
'quoteVolume': this.
|
|
3266
|
+
'baseVolume': this.safeString2(ticker, 'baseVolume', 'volume24h'),
|
|
3267
|
+
'quoteVolume': this.safeString2(ticker, 'quoteVolume', 'turnover24h'),
|
|
3147
3268
|
'indexPrice': this.safeString(ticker, 'indexPrice'),
|
|
3148
|
-
'markPrice':
|
|
3269
|
+
'markPrice': markPrice,
|
|
3149
3270
|
'info': ticker,
|
|
3150
3271
|
}, market);
|
|
3151
3272
|
}
|
|
@@ -3155,8 +3276,10 @@ class bitget extends bitget$1 {
|
|
|
3155
3276
|
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
3156
3277
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
|
|
3157
3278
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Ticker
|
|
3279
|
+
* @see https://www.bitget.com/api-doc/uta/public/Tickers
|
|
3158
3280
|
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
3159
3281
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3282
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3160
3283
|
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
3161
3284
|
*/
|
|
3162
3285
|
async fetchTicker(symbol, params = {}) {
|
|
@@ -3165,13 +3288,19 @@ class bitget extends bitget$1 {
|
|
|
3165
3288
|
const request = {
|
|
3166
3289
|
'symbol': market['id'],
|
|
3167
3290
|
};
|
|
3291
|
+
let productType = undefined;
|
|
3292
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3168
3293
|
let response = undefined;
|
|
3169
|
-
|
|
3294
|
+
let uta = undefined;
|
|
3295
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTicker', 'uta', false);
|
|
3296
|
+
if (uta) {
|
|
3297
|
+
request['category'] = productType;
|
|
3298
|
+
response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
|
|
3299
|
+
}
|
|
3300
|
+
else if (market['spot']) {
|
|
3170
3301
|
response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
|
|
3171
3302
|
}
|
|
3172
3303
|
else {
|
|
3173
|
-
let productType = undefined;
|
|
3174
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3175
3304
|
request['productType'] = productType;
|
|
3176
3305
|
response = await this.publicMixGetV2MixMarketTicker(this.extend(request, params));
|
|
3177
3306
|
}
|
|
@@ -3206,34 +3335,94 @@ class bitget extends bitget$1 {
|
|
|
3206
3335
|
//
|
|
3207
3336
|
// swap and future
|
|
3208
3337
|
//
|
|
3209
|
-
//
|
|
3338
|
+
// {
|
|
3210
3339
|
// "code": "00000",
|
|
3211
3340
|
// "msg": "success",
|
|
3212
|
-
// "requestTime":
|
|
3341
|
+
// "requestTime": 1750332210369,
|
|
3213
3342
|
// "data": [
|
|
3214
3343
|
// {
|
|
3215
3344
|
// "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": "
|
|
3345
|
+
// "lastPr": "104823.8",
|
|
3346
|
+
// "askPr": "104823.8",
|
|
3347
|
+
// "bidPr": "104823.5",
|
|
3348
|
+
// "bidSz": "0.703",
|
|
3349
|
+
// "askSz": "13.894",
|
|
3350
|
+
// "high24h": "105289.3",
|
|
3351
|
+
// "low24h": "103447.9",
|
|
3352
|
+
// "ts": "1750332210370",
|
|
3353
|
+
// "change24h": "0.00471",
|
|
3354
|
+
// "baseVolume": "79089.5675",
|
|
3355
|
+
// "quoteVolume": "8274870921.80485",
|
|
3356
|
+
// "usdtVolume": "8274870921.80485",
|
|
3357
|
+
// "openUtc": "104833",
|
|
3358
|
+
// "changeUtc24h": "-0.00009",
|
|
3359
|
+
// "indexPrice": "104881.953125",
|
|
3360
|
+
// "fundingRate": "-0.000014",
|
|
3361
|
+
// "holdingAmount": "7452.6421",
|
|
3233
3362
|
// "deliveryStartTime": null,
|
|
3234
3363
|
// "deliveryTime": null,
|
|
3235
3364
|
// "deliveryStatus": "",
|
|
3236
|
-
// "open24h": "
|
|
3365
|
+
// "open24h": "104332.3",
|
|
3366
|
+
// "markPrice": "104824.2"
|
|
3367
|
+
// }
|
|
3368
|
+
// ]
|
|
3369
|
+
// }
|
|
3370
|
+
//
|
|
3371
|
+
// spot uta
|
|
3372
|
+
//
|
|
3373
|
+
// {
|
|
3374
|
+
// "code": "00000",
|
|
3375
|
+
// "msg": "success",
|
|
3376
|
+
// "requestTime": 1750330653575,
|
|
3377
|
+
// "data": [
|
|
3378
|
+
// {
|
|
3379
|
+
// "category": "SPOT",
|
|
3380
|
+
// "symbol": "BTCUSDT",
|
|
3381
|
+
// "ts": "1750330651972",
|
|
3382
|
+
// "lastPrice": "104900.2",
|
|
3383
|
+
// "openPrice24h": "104321.2",
|
|
3384
|
+
// "highPrice24h": "107956.8",
|
|
3385
|
+
// "lowPrice24h": "103600.1",
|
|
3386
|
+
// "ask1Price": "104945.8",
|
|
3387
|
+
// "bid1Price": "104880.6",
|
|
3388
|
+
// "bid1Size": "0.266534",
|
|
3389
|
+
// "ask1Size": "0.014001",
|
|
3390
|
+
// "price24hPcnt": "0.00555",
|
|
3391
|
+
// "volume24h": "355.941109",
|
|
3392
|
+
// "turnover24h": "37302936.008134"
|
|
3393
|
+
// }
|
|
3394
|
+
// ]
|
|
3395
|
+
// }
|
|
3396
|
+
//
|
|
3397
|
+
// swap and future uta
|
|
3398
|
+
//
|
|
3399
|
+
// {
|
|
3400
|
+
// "code": "00000",
|
|
3401
|
+
// "msg": "success",
|
|
3402
|
+
// "requestTime": 1750332731203,
|
|
3403
|
+
// "data": [
|
|
3404
|
+
// {
|
|
3405
|
+
// "category": "USDT-FUTURES",
|
|
3406
|
+
// "symbol": "BTCUSDT",
|
|
3407
|
+
// "ts": "1750332730472",
|
|
3408
|
+
// "lastPrice": "104738",
|
|
3409
|
+
// "openPrice24h": "104374",
|
|
3410
|
+
// "highPrice24h": "105289.3",
|
|
3411
|
+
// "lowPrice24h": "103447.9",
|
|
3412
|
+
// "ask1Price": "104738",
|
|
3413
|
+
// "bid1Price": "104737.7",
|
|
3414
|
+
// "bid1Size": "2.036",
|
|
3415
|
+
// "ask1Size": "8.094",
|
|
3416
|
+
// "price24hPcnt": "0.00349",
|
|
3417
|
+
// "volume24h": "79101.6477",
|
|
3418
|
+
// "turnover24h": "8276293391.45973",
|
|
3419
|
+
// "indexPrice": "104785.956168",
|
|
3420
|
+
// "markPrice": "104738",
|
|
3421
|
+
// "fundingRate": "-0.000007",
|
|
3422
|
+
// "openInterest": "7465.5938",
|
|
3423
|
+
// "deliveryStartTime": "",
|
|
3424
|
+
// "deliveryTime": "",
|
|
3425
|
+
// "deliveryStatus": ""
|
|
3237
3426
|
// }
|
|
3238
3427
|
// ]
|
|
3239
3428
|
// }
|
|
@@ -3275,8 +3464,10 @@ class bitget extends bitget$1 {
|
|
|
3275
3464
|
* @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
|
3276
3465
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Tickers
|
|
3277
3466
|
* @see https://www.bitget.com/api-doc/contract/market/Get-All-Symbol-Ticker
|
|
3467
|
+
* @see https://www.bitget.com/api-doc/uta/public/Tickers
|
|
3278
3468
|
* @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
|
3279
3469
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3470
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3280
3471
|
* @param {string} [params.subType] *contract only* 'linear', 'inverse'
|
|
3281
3472
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
3282
3473
|
* @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
@@ -3299,7 +3490,17 @@ class bitget extends bitget$1 {
|
|
|
3299
3490
|
let productType = undefined;
|
|
3300
3491
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3301
3492
|
// only if passedSubType && productType is undefined, then use spot
|
|
3302
|
-
|
|
3493
|
+
let uta = undefined;
|
|
3494
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTickers', 'uta', false);
|
|
3495
|
+
if (uta) {
|
|
3496
|
+
const symbolsLength = symbols.length;
|
|
3497
|
+
if ((symbols !== undefined) && (symbolsLength === 1)) {
|
|
3498
|
+
request['symbol'] = market['id'];
|
|
3499
|
+
}
|
|
3500
|
+
request['category'] = productType;
|
|
3501
|
+
response = await this.publicUtaGetV3MarketTickers(this.extend(request, params));
|
|
3502
|
+
}
|
|
3503
|
+
else if (type === 'spot' && passedSubType === undefined) {
|
|
3303
3504
|
response = await this.publicSpotGetV2SpotMarketTickers(this.extend(request, params));
|
|
3304
3505
|
}
|
|
3305
3506
|
else {
|
|
@@ -3363,6 +3564,65 @@ class bitget extends bitget$1 {
|
|
|
3363
3564
|
// ]
|
|
3364
3565
|
// }
|
|
3365
3566
|
//
|
|
3567
|
+
// spot uta
|
|
3568
|
+
//
|
|
3569
|
+
// {
|
|
3570
|
+
// "code": "00000",
|
|
3571
|
+
// "msg": "success",
|
|
3572
|
+
// "requestTime": 1750330653575,
|
|
3573
|
+
// "data": [
|
|
3574
|
+
// {
|
|
3575
|
+
// "category": "SPOT",
|
|
3576
|
+
// "symbol": "BTCUSDT",
|
|
3577
|
+
// "ts": "1750330651972",
|
|
3578
|
+
// "lastPrice": "104900.2",
|
|
3579
|
+
// "openPrice24h": "104321.2",
|
|
3580
|
+
// "highPrice24h": "107956.8",
|
|
3581
|
+
// "lowPrice24h": "103600.1",
|
|
3582
|
+
// "ask1Price": "104945.8",
|
|
3583
|
+
// "bid1Price": "104880.6",
|
|
3584
|
+
// "bid1Size": "0.266534",
|
|
3585
|
+
// "ask1Size": "0.014001",
|
|
3586
|
+
// "price24hPcnt": "0.00555",
|
|
3587
|
+
// "volume24h": "355.941109",
|
|
3588
|
+
// "turnover24h": "37302936.008134"
|
|
3589
|
+
// }
|
|
3590
|
+
// ]
|
|
3591
|
+
// }
|
|
3592
|
+
//
|
|
3593
|
+
// swap and future uta
|
|
3594
|
+
//
|
|
3595
|
+
// {
|
|
3596
|
+
// "code": "00000",
|
|
3597
|
+
// "msg": "success",
|
|
3598
|
+
// "requestTime": 1750332731203,
|
|
3599
|
+
// "data": [
|
|
3600
|
+
// {
|
|
3601
|
+
// "category": "USDT-FUTURES",
|
|
3602
|
+
// "symbol": "BTCUSDT",
|
|
3603
|
+
// "ts": "1750332730472",
|
|
3604
|
+
// "lastPrice": "104738",
|
|
3605
|
+
// "openPrice24h": "104374",
|
|
3606
|
+
// "highPrice24h": "105289.3",
|
|
3607
|
+
// "lowPrice24h": "103447.9",
|
|
3608
|
+
// "ask1Price": "104738",
|
|
3609
|
+
// "bid1Price": "104737.7",
|
|
3610
|
+
// "bid1Size": "2.036",
|
|
3611
|
+
// "ask1Size": "8.094",
|
|
3612
|
+
// "price24hPcnt": "0.00349",
|
|
3613
|
+
// "volume24h": "79101.6477",
|
|
3614
|
+
// "turnover24h": "8276293391.45973",
|
|
3615
|
+
// "indexPrice": "104785.956168",
|
|
3616
|
+
// "markPrice": "104738",
|
|
3617
|
+
// "fundingRate": "-0.000007",
|
|
3618
|
+
// "openInterest": "7465.5938",
|
|
3619
|
+
// "deliveryStartTime": "",
|
|
3620
|
+
// "deliveryTime": "",
|
|
3621
|
+
// "deliveryStatus": ""
|
|
3622
|
+
// }
|
|
3623
|
+
// ]
|
|
3624
|
+
// }
|
|
3625
|
+
//
|
|
3366
3626
|
const data = this.safeList(response, 'data', []);
|
|
3367
3627
|
return this.parseTickers(data, symbols);
|
|
3368
3628
|
}
|
|
@@ -3449,19 +3709,53 @@ class bitget extends bitget$1 {
|
|
|
3449
3709
|
// "cTime": "1700720700342"
|
|
3450
3710
|
// }
|
|
3451
3711
|
//
|
|
3712
|
+
// uta fetchTrades
|
|
3713
|
+
//
|
|
3714
|
+
// {
|
|
3715
|
+
// "execId": "1319896716324937729",
|
|
3716
|
+
// "price": "105909.1",
|
|
3717
|
+
// "size": "6.3090",
|
|
3718
|
+
// "side": "sell",
|
|
3719
|
+
// "ts": "1750413820344"
|
|
3720
|
+
// }
|
|
3721
|
+
//
|
|
3722
|
+
// uta fetchMyTrades
|
|
3723
|
+
//
|
|
3724
|
+
// {
|
|
3725
|
+
// "execId": "1322441401010528257",
|
|
3726
|
+
// "orderId": "1322441400976261120",
|
|
3727
|
+
// "category": "USDT-FUTURES",
|
|
3728
|
+
// "symbol": "BTCUSDT",
|
|
3729
|
+
// "orderType": "market",
|
|
3730
|
+
// "side": "sell",
|
|
3731
|
+
// "execPrice": "107005.4",
|
|
3732
|
+
// "execQty": "0.0001",
|
|
3733
|
+
// "execValue": "10.7005",
|
|
3734
|
+
// "tradeScope": "taker",
|
|
3735
|
+
// "feeDetail": [{
|
|
3736
|
+
// "feeCoin": "USDT",
|
|
3737
|
+
// "fee":"0.00642032"
|
|
3738
|
+
// }],
|
|
3739
|
+
// "createdTime": "1751020520451",
|
|
3740
|
+
// "updatedTime": "1751020520458",
|
|
3741
|
+
// "execPnl": "0.00017"
|
|
3742
|
+
// }
|
|
3743
|
+
//
|
|
3452
3744
|
const marketId = this.safeString(trade, 'symbol');
|
|
3453
3745
|
const symbol = this.safeSymbol(marketId, market);
|
|
3454
|
-
const timestamp = this.
|
|
3746
|
+
const timestamp = this.safeIntegerN(trade, ['cTime', 'ts', 'createdTime']);
|
|
3455
3747
|
let fee = undefined;
|
|
3456
3748
|
const feeDetail = this.safeValue(trade, 'feeDetail');
|
|
3457
3749
|
const posMode = this.safeString(trade, 'posMode');
|
|
3458
|
-
const
|
|
3750
|
+
const category = this.safeString(trade, 'category');
|
|
3751
|
+
const isFeeStructure = (posMode !== undefined) || (category !== undefined);
|
|
3752
|
+
const feeStructure = isFeeStructure ? feeDetail[0] : feeDetail;
|
|
3459
3753
|
if (feeStructure !== undefined) {
|
|
3460
3754
|
const currencyCode = this.safeCurrencyCode(this.safeString(feeStructure, 'feeCoin'));
|
|
3461
3755
|
fee = {
|
|
3462
3756
|
'currency': currencyCode,
|
|
3463
3757
|
};
|
|
3464
|
-
const feeCostString = this.
|
|
3758
|
+
const feeCostString = this.safeString2(feeStructure, 'totalFee', 'fee');
|
|
3465
3759
|
const deduction = this.safeString(feeStructure, 'deduction') === 'yes' ? true : false;
|
|
3466
3760
|
if (deduction) {
|
|
3467
3761
|
fee['cost'] = feeCostString;
|
|
@@ -3472,15 +3766,15 @@ class bitget extends bitget$1 {
|
|
|
3472
3766
|
}
|
|
3473
3767
|
return this.safeTrade({
|
|
3474
3768
|
'info': trade,
|
|
3475
|
-
'id': this.
|
|
3769
|
+
'id': this.safeString2(trade, 'tradeId', 'execId'),
|
|
3476
3770
|
'order': this.safeString(trade, 'orderId'),
|
|
3477
3771
|
'symbol': symbol,
|
|
3478
3772
|
'side': this.safeStringLower(trade, 'side'),
|
|
3479
3773
|
'type': this.safeString(trade, 'orderType'),
|
|
3480
3774
|
'takerOrMaker': this.safeString(trade, 'tradeScope'),
|
|
3481
|
-
'price': this.
|
|
3482
|
-
'amount': this.
|
|
3483
|
-
'cost': this.
|
|
3775
|
+
'price': this.safeStringN(trade, ['priceAvg', 'price', 'execPrice']),
|
|
3776
|
+
'amount': this.safeStringN(trade, ['baseVolume', 'size', 'execQty']),
|
|
3777
|
+
'cost': this.safeStringN(trade, ['quoteVolume', 'amount', 'execValue']),
|
|
3484
3778
|
'timestamp': timestamp,
|
|
3485
3779
|
'datetime': this.iso8601(timestamp),
|
|
3486
3780
|
'fee': fee,
|
|
@@ -3494,10 +3788,12 @@ class bitget extends bitget$1 {
|
|
|
3494
3788
|
* @see https://www.bitget.com/api-doc/spot/market/Get-Market-Trades
|
|
3495
3789
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Recent-Fills
|
|
3496
3790
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Fills-History
|
|
3791
|
+
* @see https://www.bitget.com/api-doc/uta/public/Fills
|
|
3497
3792
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
3498
3793
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
3499
3794
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
3500
3795
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3796
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3501
3797
|
* @param {int} [params.until] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* the latest time in ms to fetch trades for
|
|
3502
3798
|
* @param {boolean} [params.paginate] *only applies to publicSpotGetV2SpotMarketFillsHistory and publicMixGetV2MixMarketFillsHistory* default false, when true will automatically paginate by calling this endpoint multiple times
|
|
3503
3799
|
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
@@ -3513,8 +3809,13 @@ class bitget extends bitget$1 {
|
|
|
3513
3809
|
let request = {
|
|
3514
3810
|
'symbol': market['id'],
|
|
3515
3811
|
};
|
|
3812
|
+
let uta = undefined;
|
|
3813
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchTrades', 'uta', false);
|
|
3516
3814
|
if (limit !== undefined) {
|
|
3517
|
-
if (
|
|
3815
|
+
if (uta) {
|
|
3816
|
+
request['limit'] = Math.min(limit, 100);
|
|
3817
|
+
}
|
|
3818
|
+
else if (market['contract']) {
|
|
3518
3819
|
request['limit'] = Math.min(limit, 1000);
|
|
3519
3820
|
}
|
|
3520
3821
|
else {
|
|
@@ -3523,7 +3824,20 @@ class bitget extends bitget$1 {
|
|
|
3523
3824
|
}
|
|
3524
3825
|
const options = this.safeValue(this.options, 'fetchTrades', {});
|
|
3525
3826
|
let response = undefined;
|
|
3526
|
-
|
|
3827
|
+
let productType = undefined;
|
|
3828
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3829
|
+
if (uta) {
|
|
3830
|
+
if (productType === 'SPOT') {
|
|
3831
|
+
let marginMode = undefined;
|
|
3832
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
|
|
3833
|
+
if (marginMode !== undefined) {
|
|
3834
|
+
productType = 'MARGIN';
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
request['category'] = productType;
|
|
3838
|
+
response = await this.publicUtaGetV3MarketFills(this.extend(request, params));
|
|
3839
|
+
}
|
|
3840
|
+
else if (market['spot']) {
|
|
3527
3841
|
const spotOptions = this.safeValue(options, 'spot', {});
|
|
3528
3842
|
const defaultSpotMethod = this.safeString(spotOptions, 'method', 'publicSpotGetV2SpotMarketFillsHistory');
|
|
3529
3843
|
const spotMethod = this.safeString(params, 'method', defaultSpotMethod);
|
|
@@ -3544,8 +3858,6 @@ class bitget extends bitget$1 {
|
|
|
3544
3858
|
const defaultSwapMethod = this.safeString(swapOptions, 'method', 'publicMixGetV2MixMarketFillsHistory');
|
|
3545
3859
|
const swapMethod = this.safeString(params, 'method', defaultSwapMethod);
|
|
3546
3860
|
params = this.omit(params, 'method');
|
|
3547
|
-
let productType = undefined;
|
|
3548
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3549
3861
|
request['productType'] = productType;
|
|
3550
3862
|
if (swapMethod === 'publicMixGetV2MixMarketFillsHistory') {
|
|
3551
3863
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
@@ -3595,6 +3907,23 @@ class bitget extends bitget$1 {
|
|
|
3595
3907
|
// ]
|
|
3596
3908
|
// }
|
|
3597
3909
|
//
|
|
3910
|
+
// uta
|
|
3911
|
+
//
|
|
3912
|
+
// {
|
|
3913
|
+
// "code": "00000",
|
|
3914
|
+
// "msg": "success",
|
|
3915
|
+
// "requestTime": 1750413823980,
|
|
3916
|
+
// "data": [
|
|
3917
|
+
// {
|
|
3918
|
+
// "execId": "1319896716324937729",
|
|
3919
|
+
// "price": "105909.1",
|
|
3920
|
+
// "size": "6.3090",
|
|
3921
|
+
// "side": "sell",
|
|
3922
|
+
// "ts": "1750413820344"
|
|
3923
|
+
// }
|
|
3924
|
+
// ]
|
|
3925
|
+
// }
|
|
3926
|
+
//
|
|
3598
3927
|
const data = this.safeList(response, 'data', []);
|
|
3599
3928
|
return this.parseTrades(data, market, since, limit);
|
|
3600
3929
|
}
|
|
@@ -3786,13 +4115,15 @@ class bitget extends bitget$1 {
|
|
|
3786
4115
|
// "1399132.341"
|
|
3787
4116
|
// ]
|
|
3788
4117
|
//
|
|
4118
|
+
const inverse = this.safeBool(market, 'inverse');
|
|
4119
|
+
const volumeIndex = inverse ? 6 : 5;
|
|
3789
4120
|
return [
|
|
3790
4121
|
this.safeInteger(ohlcv, 0),
|
|
3791
4122
|
this.safeNumber(ohlcv, 1),
|
|
3792
4123
|
this.safeNumber(ohlcv, 2),
|
|
3793
4124
|
this.safeNumber(ohlcv, 3),
|
|
3794
4125
|
this.safeNumber(ohlcv, 4),
|
|
3795
|
-
this.safeNumber(ohlcv,
|
|
4126
|
+
this.safeNumber(ohlcv, volumeIndex),
|
|
3796
4127
|
];
|
|
3797
4128
|
}
|
|
3798
4129
|
/**
|
|
@@ -3805,11 +4136,13 @@ class bitget extends bitget$1 {
|
|
|
3805
4136
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Candle-Data
|
|
3806
4137
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Index-Candle-Data
|
|
3807
4138
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Mark-Candle-Data
|
|
4139
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Candle-Data
|
|
3808
4140
|
* @param {string} symbol unified symbol of the market to fetch OHLCV data for
|
|
3809
4141
|
* @param {string} timeframe the length of time each candle represents
|
|
3810
4142
|
* @param {int} [since] timestamp in ms of the earliest candle to fetch
|
|
3811
4143
|
* @param {int} [limit] the maximum amount of candles to fetch
|
|
3812
4144
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
4145
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3813
4146
|
* @param {int} [params.until] timestamp in ms of the latest candle to fetch
|
|
3814
4147
|
* @param {boolean} [params.useHistoryEndpoint] whether to force to use historical endpoint (it has max limit of 200)
|
|
3815
4148
|
* @param {boolean} [params.useHistoryEndpointForPagination] whether to force to use historical endpoint for pagination (default true)
|
|
@@ -3831,12 +4164,22 @@ class bitget extends bitget$1 {
|
|
|
3831
4164
|
return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, limitForPagination);
|
|
3832
4165
|
}
|
|
3833
4166
|
const market = this.market(symbol);
|
|
3834
|
-
const marketType = market['spot'] ? 'spot' : 'swap';
|
|
3835
|
-
const timeframes = this.options['timeframes'][marketType];
|
|
3836
4167
|
const request = {
|
|
3837
4168
|
'symbol': market['id'],
|
|
3838
|
-
'granularity': this.safeString(timeframes, timeframe, timeframe),
|
|
3839
4169
|
};
|
|
4170
|
+
let marketType = undefined;
|
|
4171
|
+
let timeframes = undefined;
|
|
4172
|
+
let uta = undefined;
|
|
4173
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'uta', false);
|
|
4174
|
+
if (uta) {
|
|
4175
|
+
timeframes = this.options['timeframes']['uta'];
|
|
4176
|
+
request['interval'] = this.safeString(timeframes, timeframe, timeframe);
|
|
4177
|
+
}
|
|
4178
|
+
else {
|
|
4179
|
+
marketType = market['spot'] ? 'spot' : 'swap';
|
|
4180
|
+
timeframes = this.options['timeframes'][marketType];
|
|
4181
|
+
request['granularity'] = this.safeString(timeframes, timeframe, timeframe);
|
|
4182
|
+
}
|
|
3840
4183
|
const msInDay = 86400000;
|
|
3841
4184
|
const now = this.milliseconds();
|
|
3842
4185
|
const duration = this.parseTimeframe(timeframe) * 1000;
|
|
@@ -3906,7 +4249,23 @@ class bitget extends bitget$1 {
|
|
|
3906
4249
|
request['limit'] = limit;
|
|
3907
4250
|
// make request
|
|
3908
4251
|
let response = undefined;
|
|
3909
|
-
|
|
4252
|
+
let productType = undefined;
|
|
4253
|
+
let priceType = undefined;
|
|
4254
|
+
[priceType, params] = this.handleParamString(params, 'price');
|
|
4255
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
4256
|
+
if (uta) {
|
|
4257
|
+
if (priceType !== undefined) {
|
|
4258
|
+
if (priceType === 'mark') {
|
|
4259
|
+
request['type'] = 'MARK';
|
|
4260
|
+
}
|
|
4261
|
+
else if (priceType === 'index') {
|
|
4262
|
+
request['type'] = 'INDEX';
|
|
4263
|
+
}
|
|
4264
|
+
}
|
|
4265
|
+
request['category'] = productType;
|
|
4266
|
+
response = await this.publicUtaGetV3MarketCandles(this.extend(request, params));
|
|
4267
|
+
}
|
|
4268
|
+
else if (market['spot']) {
|
|
3910
4269
|
// checks if we need history endpoint
|
|
3911
4270
|
if (historicalEndpointNeeded) {
|
|
3912
4271
|
response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
|
|
@@ -3920,10 +4279,6 @@ class bitget extends bitget$1 {
|
|
|
3920
4279
|
}
|
|
3921
4280
|
}
|
|
3922
4281
|
else {
|
|
3923
|
-
let priceType = undefined;
|
|
3924
|
-
[priceType, params] = this.handleParamString(params, 'price');
|
|
3925
|
-
let productType = undefined;
|
|
3926
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
3927
4282
|
request['productType'] = productType;
|
|
3928
4283
|
const extended = this.extend(request, params);
|
|
3929
4284
|
if (!historicalEndpointNeeded && (priceType === 'mark' || priceType === 'index')) {
|
|
@@ -3971,8 +4326,10 @@ class bitget extends bitget$1 {
|
|
|
3971
4326
|
* @see https://www.bitget.com/api-doc/margin/isolated/account/Get-Isolated-Assets
|
|
3972
4327
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-assets
|
|
3973
4328
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-assets
|
|
4329
|
+
* @see https://www.bitget.com/api-doc/uta/account/Get-Account
|
|
3974
4330
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3975
4331
|
* @param {string} [params.productType] *contract only* 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
4332
|
+
* @param {string} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
3976
4333
|
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
3977
4334
|
*/
|
|
3978
4335
|
async fetchBalance(params = {}) {
|
|
@@ -3981,9 +4338,17 @@ class bitget extends bitget$1 {
|
|
|
3981
4338
|
let marketType = undefined;
|
|
3982
4339
|
let marginMode = undefined;
|
|
3983
4340
|
let response = undefined;
|
|
4341
|
+
let uta = undefined;
|
|
4342
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchBalance', 'uta', false);
|
|
3984
4343
|
[marketType, params] = this.handleMarketTypeAndParams('fetchBalance', undefined, params);
|
|
3985
4344
|
[marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
3986
|
-
if (
|
|
4345
|
+
if (uta) {
|
|
4346
|
+
response = await this.privateUtaGetV3AccountAssets(this.extend(request, params));
|
|
4347
|
+
const results = this.safeDict(response, 'data', {});
|
|
4348
|
+
const assets = this.safeList(results, 'assets', []);
|
|
4349
|
+
return this.parseUtaBalance(assets);
|
|
4350
|
+
}
|
|
4351
|
+
else if ((marketType === 'swap') || (marketType === 'future')) {
|
|
3987
4352
|
let productType = undefined;
|
|
3988
4353
|
[productType, params] = this.handleProductTypeAndParams(undefined, params);
|
|
3989
4354
|
request['productType'] = productType;
|
|
@@ -4088,9 +4453,67 @@ class bitget extends bitget$1 {
|
|
|
4088
4453
|
// ]
|
|
4089
4454
|
// }
|
|
4090
4455
|
//
|
|
4456
|
+
// uta
|
|
4457
|
+
//
|
|
4458
|
+
// {
|
|
4459
|
+
// "code": "00000",
|
|
4460
|
+
// "msg": "success",
|
|
4461
|
+
// "requestTime": 1749980065089,
|
|
4462
|
+
// "data": {
|
|
4463
|
+
// "accountEquity": "11.13919278",
|
|
4464
|
+
// "usdtEquity": "11.13921165",
|
|
4465
|
+
// "btcEquity": "0.00011256",
|
|
4466
|
+
// "unrealisedPnl": "0",
|
|
4467
|
+
// "usdtUnrealisedPnl": "0",
|
|
4468
|
+
// "btcUnrealizedPnl": "0",
|
|
4469
|
+
// "effEquity": "6.19299777",
|
|
4470
|
+
// "mmr": "0",
|
|
4471
|
+
// "imr": "0",
|
|
4472
|
+
// "mgnRatio": "0",
|
|
4473
|
+
// "positionMgnRatio": "0",
|
|
4474
|
+
// "assets": [
|
|
4475
|
+
// {
|
|
4476
|
+
// "coin": "USDT",
|
|
4477
|
+
// "equity": "6.19300826",
|
|
4478
|
+
// "usdValue": "6.19299777",
|
|
4479
|
+
// "balance": "6.19300826",
|
|
4480
|
+
// "available": "6.19300826",
|
|
4481
|
+
// "debt": "0",
|
|
4482
|
+
// "locked": "0"
|
|
4483
|
+
// }
|
|
4484
|
+
// ]
|
|
4485
|
+
// }
|
|
4486
|
+
// }
|
|
4487
|
+
//
|
|
4091
4488
|
const data = this.safeValue(response, 'data', []);
|
|
4092
4489
|
return this.parseBalance(data);
|
|
4093
4490
|
}
|
|
4491
|
+
parseUtaBalance(balance) {
|
|
4492
|
+
const result = { 'info': balance };
|
|
4493
|
+
//
|
|
4494
|
+
// {
|
|
4495
|
+
// "coin": "USDT",
|
|
4496
|
+
// "equity": "6.19300826",
|
|
4497
|
+
// "usdValue": "6.19299777",
|
|
4498
|
+
// "balance": "6.19300826",
|
|
4499
|
+
// "available": "6.19300826",
|
|
4500
|
+
// "debt": "0",
|
|
4501
|
+
// "locked": "0"
|
|
4502
|
+
// }
|
|
4503
|
+
//
|
|
4504
|
+
for (let i = 0; i < balance.length; i++) {
|
|
4505
|
+
const entry = balance[i];
|
|
4506
|
+
const account = this.account();
|
|
4507
|
+
const currencyId = this.safeString(entry, 'coin');
|
|
4508
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
4509
|
+
account['debt'] = this.safeString(entry, 'debt');
|
|
4510
|
+
account['used'] = this.safeString(entry, 'locked');
|
|
4511
|
+
account['free'] = this.safeString(entry, 'available');
|
|
4512
|
+
account['total'] = this.safeString(entry, 'balance');
|
|
4513
|
+
result[code] = account;
|
|
4514
|
+
}
|
|
4515
|
+
return this.safeBalance(result);
|
|
4516
|
+
}
|
|
4094
4517
|
parseBalance(balance) {
|
|
4095
4518
|
const result = { 'info': balance };
|
|
4096
4519
|
//
|
|
@@ -4229,7 +4652,7 @@ class bitget extends bitget$1 {
|
|
|
4229
4652
|
// },
|
|
4230
4653
|
// ]
|
|
4231
4654
|
//
|
|
4232
|
-
// spot, swap, future
|
|
4655
|
+
// spot, swap, future, spot margin and uta: cancelOrder, cancelOrders, cancelAllOrders
|
|
4233
4656
|
//
|
|
4234
4657
|
// {
|
|
4235
4658
|
// "orderId": "1098758604547850241",
|
|
@@ -4358,6 +4781,66 @@ class bitget extends bitget$1 {
|
|
|
4358
4781
|
// "stopLossTriggerType": "fill_price",
|
|
4359
4782
|
// }
|
|
4360
4783
|
//
|
|
4784
|
+
// uta: fetchOrder, fetchOpenOrders, fetchCanceledAndClosedOrders
|
|
4785
|
+
//
|
|
4786
|
+
// {
|
|
4787
|
+
// "orderId": "1320244799629316096",
|
|
4788
|
+
// "clientOid": "1320244799633510400",
|
|
4789
|
+
// "category": "USDT-FUTURES",
|
|
4790
|
+
// "symbol": "BTCUSDT",
|
|
4791
|
+
// "orderType": "limit",
|
|
4792
|
+
// "side": "buy",
|
|
4793
|
+
// "price": "50000",
|
|
4794
|
+
// "qty": "0.001",
|
|
4795
|
+
// "amount": "0",
|
|
4796
|
+
// "cumExecQty": "0",
|
|
4797
|
+
// "cumExecValue": "0",
|
|
4798
|
+
// "avgPrice": "0",
|
|
4799
|
+
// "timeInForce": "gtc",
|
|
4800
|
+
// "orderStatus": "live",
|
|
4801
|
+
// "posSide": "long",
|
|
4802
|
+
// "holdMode": "hedge_mode",
|
|
4803
|
+
// "reduceOnly": "NO",
|
|
4804
|
+
// "feeDetail": [{
|
|
4805
|
+
// "feeCoin": "",
|
|
4806
|
+
// "fee": ""
|
|
4807
|
+
// }],
|
|
4808
|
+
// "createdTime": "1750496809871",
|
|
4809
|
+
// "updatedTime": "1750496809886",
|
|
4810
|
+
// "cancelReason": "",
|
|
4811
|
+
// "execType": "normal",
|
|
4812
|
+
// "stpMode": "none",
|
|
4813
|
+
// "tpTriggerBy": null,
|
|
4814
|
+
// "slTriggerBy": null,
|
|
4815
|
+
// "takeProfit": null,
|
|
4816
|
+
// "stopLoss": null,
|
|
4817
|
+
// "tpOrderType": null,
|
|
4818
|
+
// "slOrderType": null,
|
|
4819
|
+
// "tpLimitPrice": null,
|
|
4820
|
+
// "slLimitPrice": null
|
|
4821
|
+
// }
|
|
4822
|
+
//
|
|
4823
|
+
// uta trigger: fetchClosedOrders, fetchCanceledOrders
|
|
4824
|
+
//
|
|
4825
|
+
// {
|
|
4826
|
+
// "orderId": "1330984742276198400",
|
|
4827
|
+
// "clientOid": "1330984742276198400",
|
|
4828
|
+
// "symbol": "BTCUSDT",
|
|
4829
|
+
// "category": "USDT-FUTURES",
|
|
4830
|
+
// "qty": "0.001",
|
|
4831
|
+
// "posSide": "long",
|
|
4832
|
+
// "tpTriggerBy": "market",
|
|
4833
|
+
// "slTriggerBy": "mark",
|
|
4834
|
+
// "takeProfit": "",
|
|
4835
|
+
// "stopLoss": "112000",
|
|
4836
|
+
// "tpOrderType": "market",
|
|
4837
|
+
// "slOrderType": "limit",
|
|
4838
|
+
// "tpLimitPrice": "",
|
|
4839
|
+
// "slLimitPrice": "111000",
|
|
4840
|
+
// "createdTime": "1753057411736",
|
|
4841
|
+
// "updatedTime": "1753058267412"
|
|
4842
|
+
// }
|
|
4843
|
+
//
|
|
4361
4844
|
const errorMessage = this.safeString(order, 'errorMsg');
|
|
4362
4845
|
if (errorMessage !== undefined) {
|
|
4363
4846
|
return this.safeOrder({
|
|
@@ -4367,17 +4850,17 @@ class bitget extends bitget$1 {
|
|
|
4367
4850
|
'status': 'rejected',
|
|
4368
4851
|
}, market);
|
|
4369
4852
|
}
|
|
4370
|
-
const
|
|
4853
|
+
const posSide = this.safeString(order, 'posSide');
|
|
4854
|
+
const isContractOrder = (posSide !== undefined);
|
|
4371
4855
|
let marketType = isContractOrder ? 'contract' : 'spot';
|
|
4372
4856
|
if (market !== undefined) {
|
|
4373
4857
|
marketType = market['type'];
|
|
4374
4858
|
}
|
|
4375
4859
|
const marketId = this.safeString(order, 'symbol');
|
|
4376
4860
|
market = this.safeMarket(marketId, market, undefined, marketType);
|
|
4377
|
-
const timestamp = this.
|
|
4378
|
-
const updateTimestamp = this.
|
|
4379
|
-
|
|
4380
|
-
rawStatus = this.safeString(order, 'planStatus', rawStatus);
|
|
4861
|
+
const timestamp = this.safeIntegerN(order, ['cTime', 'ctime', 'createdTime']);
|
|
4862
|
+
const updateTimestamp = this.safeInteger2(order, 'uTime', 'updatedTime');
|
|
4863
|
+
const rawStatus = this.safeStringN(order, ['status', 'state', 'orderStatus', 'planStatus']);
|
|
4381
4864
|
let fee = undefined;
|
|
4382
4865
|
const feeCostString = this.safeString(order, 'fee');
|
|
4383
4866
|
if (feeCostString !== undefined) {
|
|
@@ -4388,26 +4871,37 @@ class bitget extends bitget$1 {
|
|
|
4388
4871
|
};
|
|
4389
4872
|
}
|
|
4390
4873
|
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
|
-
}
|
|
4874
|
+
const uta = this.safeString(order, 'category') !== undefined;
|
|
4875
|
+
if (uta) {
|
|
4876
|
+
const feeResult = this.safeDict(feeDetail, 0, {});
|
|
4877
|
+
const utaFee = this.safeString(feeResult, 'fee');
|
|
4402
4878
|
fee = {
|
|
4403
|
-
'cost': this.parseNumber(Precise["default"].stringNeg(
|
|
4404
|
-
'currency':
|
|
4879
|
+
'cost': this.parseNumber(Precise["default"].stringNeg(utaFee)),
|
|
4880
|
+
'currency': market['settle'],
|
|
4405
4881
|
};
|
|
4406
4882
|
}
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4883
|
+
else {
|
|
4884
|
+
if (feeDetail !== undefined) {
|
|
4885
|
+
const parsedFeeDetail = JSON.parse(feeDetail);
|
|
4886
|
+
const feeValues = Object.values(parsedFeeDetail);
|
|
4887
|
+
let feeObject = undefined;
|
|
4888
|
+
for (let i = 0; i < feeValues.length; i++) {
|
|
4889
|
+
const feeValue = feeValues[i];
|
|
4890
|
+
if (this.safeValue(feeValue, 'feeCoinCode') !== undefined) {
|
|
4891
|
+
feeObject = feeValue;
|
|
4892
|
+
break;
|
|
4893
|
+
}
|
|
4894
|
+
}
|
|
4895
|
+
fee = {
|
|
4896
|
+
'cost': this.parseNumber(Precise["default"].stringNeg(this.safeString(feeObject, 'totalFee'))),
|
|
4897
|
+
'currency': this.safeCurrencyCode(this.safeString(feeObject, 'feeCoinCode')),
|
|
4898
|
+
};
|
|
4899
|
+
}
|
|
4900
|
+
}
|
|
4901
|
+
let postOnly = undefined;
|
|
4902
|
+
let timeInForce = this.safeStringUpper2(order, 'force', 'timeInForce');
|
|
4903
|
+
if (timeInForce === 'POST_ONLY') {
|
|
4904
|
+
postOnly = true;
|
|
4411
4905
|
timeInForce = 'PO';
|
|
4412
4906
|
}
|
|
4413
4907
|
let reduceOnly = undefined;
|
|
@@ -4424,7 +4918,7 @@ class bitget extends bitget$1 {
|
|
|
4424
4918
|
average = this.safeString(order, 'basePrice');
|
|
4425
4919
|
}
|
|
4426
4920
|
else {
|
|
4427
|
-
price = this.
|
|
4921
|
+
price = this.safeStringN(order, ['price', 'executePrice', 'slLimitPrice', 'tpLimitPrice']);
|
|
4428
4922
|
average = this.safeString(order, 'priceAvg');
|
|
4429
4923
|
}
|
|
4430
4924
|
let size = undefined;
|
|
@@ -4436,8 +4930,8 @@ class bitget extends bitget$1 {
|
|
|
4436
4930
|
filled = this.safeString(order, 'size');
|
|
4437
4931
|
}
|
|
4438
4932
|
else {
|
|
4439
|
-
size = this.
|
|
4440
|
-
filled = this.
|
|
4933
|
+
size = this.safeString2(order, 'size', 'qty');
|
|
4934
|
+
filled = this.safeString2(order, 'baseVolume', 'cumExecQty');
|
|
4441
4935
|
}
|
|
4442
4936
|
let side = this.safeString(order, 'side');
|
|
4443
4937
|
const posMode = this.safeString(order, 'posMode');
|
|
@@ -4473,8 +4967,8 @@ class bitget extends bitget$1 {
|
|
|
4473
4967
|
'postOnly': postOnly,
|
|
4474
4968
|
'reduceOnly': reduceOnly,
|
|
4475
4969
|
'triggerPrice': this.safeNumber(order, 'triggerPrice'),
|
|
4476
|
-
'takeProfitPrice': this.
|
|
4477
|
-
'stopLossPrice': this.
|
|
4970
|
+
'takeProfitPrice': this.safeNumberN(order, ['presetStopSurplusPrice', 'stopSurplusTriggerPrice', 'takeProfit']),
|
|
4971
|
+
'stopLossPrice': this.safeNumberN(order, ['presetStopLossPrice', 'stopLossTriggerPrice', 'stopLoss']),
|
|
4478
4972
|
'status': this.parseOrderStatus(rawStatus),
|
|
4479
4973
|
'fee': fee,
|
|
4480
4974
|
'trades': undefined,
|
|
@@ -4514,6 +5008,8 @@ class bitget extends bitget$1 {
|
|
|
4514
5008
|
* @see https://www.bitget.com/api-doc/contract/plan/Place-Plan-Order
|
|
4515
5009
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Place-Order
|
|
4516
5010
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Place-Order
|
|
5011
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Place-Order
|
|
5012
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Place-Strategy-Order
|
|
4517
5013
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
4518
5014
|
* @param {string} type 'market' or 'limit'
|
|
4519
5015
|
* @param {string} side 'buy' or 'sell'
|
|
@@ -4542,6 +5038,8 @@ class bitget extends bitget$1 {
|
|
|
4542
5038
|
* @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
5039
|
* @param {bool} [params.hedged] *swap and future only* true for hedged mode, false for one way mode, default is false
|
|
4544
5040
|
* @param {bool} [params.reduceOnly] true or false whether the order is reduce-only
|
|
5041
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5042
|
+
* @param {string} [params.posSide] *uta only* hedged two-way position side, long or short
|
|
4545
5043
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4546
5044
|
*/
|
|
4547
5045
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
@@ -4558,31 +5056,44 @@ class bitget extends bitget$1 {
|
|
|
4558
5056
|
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
4559
5057
|
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
4560
5058
|
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
4561
|
-
const request = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
4562
5059
|
let response = undefined;
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
response = await this.
|
|
4569
|
-
}
|
|
4570
|
-
else if (marginMode === 'cross') {
|
|
4571
|
-
response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
|
|
5060
|
+
let uta = undefined;
|
|
5061
|
+
[uta, params] = this.handleOptionAndParams(params, 'createOrder', 'uta', false);
|
|
5062
|
+
if (uta) {
|
|
5063
|
+
const request = this.createUtaOrderRequest(symbol, type, side, amount, price, params);
|
|
5064
|
+
if (isStopLossOrTakeProfitTrigger) {
|
|
5065
|
+
response = await this.privateUtaPostV3TradePlaceStrategyOrder(request);
|
|
4572
5066
|
}
|
|
4573
5067
|
else {
|
|
4574
|
-
response = await this.
|
|
5068
|
+
response = await this.privateUtaPostV3TradePlaceOrder(request);
|
|
4575
5069
|
}
|
|
4576
5070
|
}
|
|
4577
5071
|
else {
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
5072
|
+
const request = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
5073
|
+
if (market['spot']) {
|
|
5074
|
+
if (isTriggerOrder) {
|
|
5075
|
+
response = await this.privateSpotPostV2SpotTradePlacePlanOrder(request);
|
|
5076
|
+
}
|
|
5077
|
+
else if (marginMode === 'isolated') {
|
|
5078
|
+
response = await this.privateMarginPostV2MarginIsolatedPlaceOrder(request);
|
|
5079
|
+
}
|
|
5080
|
+
else if (marginMode === 'cross') {
|
|
5081
|
+
response = await this.privateMarginPostV2MarginCrossedPlaceOrder(request);
|
|
5082
|
+
}
|
|
5083
|
+
else {
|
|
5084
|
+
response = await this.privateSpotPostV2SpotTradePlaceOrder(request);
|
|
5085
|
+
}
|
|
4583
5086
|
}
|
|
4584
5087
|
else {
|
|
4585
|
-
|
|
5088
|
+
if (isTriggerOrder || isTrailingPercentOrder) {
|
|
5089
|
+
response = await this.privateMixPostV2MixOrderPlacePlanOrder(request);
|
|
5090
|
+
}
|
|
5091
|
+
else if (isStopLossOrTakeProfitTrigger) {
|
|
5092
|
+
response = await this.privateMixPostV2MixOrderPlaceTpslOrder(request);
|
|
5093
|
+
}
|
|
5094
|
+
else {
|
|
5095
|
+
response = await this.privateMixPostV2MixOrderPlaceOrder(request);
|
|
5096
|
+
}
|
|
4586
5097
|
}
|
|
4587
5098
|
}
|
|
4588
5099
|
//
|
|
@@ -4599,6 +5110,133 @@ class bitget extends bitget$1 {
|
|
|
4599
5110
|
const data = this.safeDict(response, 'data', {});
|
|
4600
5111
|
return this.parseOrder(data, market);
|
|
4601
5112
|
}
|
|
5113
|
+
createUtaOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
5114
|
+
const market = this.market(symbol);
|
|
5115
|
+
let productType = undefined;
|
|
5116
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5117
|
+
if (productType === 'SPOT') {
|
|
5118
|
+
let marginMode = undefined;
|
|
5119
|
+
[marginMode, params] = this.handleMarginModeAndParams('createOrder', params);
|
|
5120
|
+
if (marginMode !== undefined) {
|
|
5121
|
+
productType = 'MARGIN';
|
|
5122
|
+
}
|
|
5123
|
+
}
|
|
5124
|
+
const request = {
|
|
5125
|
+
'category': productType,
|
|
5126
|
+
'symbol': market['id'],
|
|
5127
|
+
'qty': this.amountToPrecision(symbol, amount),
|
|
5128
|
+
'side': side,
|
|
5129
|
+
};
|
|
5130
|
+
const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
|
|
5131
|
+
if (clientOrderId !== undefined) {
|
|
5132
|
+
request['clientOid'] = clientOrderId;
|
|
5133
|
+
params = this.omit(params, 'clientOrderId');
|
|
5134
|
+
}
|
|
5135
|
+
const stopLossTriggerPrice = this.safeNumber(params, 'stopLossPrice');
|
|
5136
|
+
const takeProfitTriggerPrice = this.safeNumber(params, 'takeProfitPrice');
|
|
5137
|
+
const stopLoss = this.safeValue(params, 'stopLoss');
|
|
5138
|
+
const takeProfit = this.safeValue(params, 'takeProfit');
|
|
5139
|
+
const isStopLoss = stopLoss !== undefined;
|
|
5140
|
+
const isTakeProfit = takeProfit !== undefined;
|
|
5141
|
+
const isStopLossTrigger = stopLossTriggerPrice !== undefined;
|
|
5142
|
+
const isTakeProfitTrigger = takeProfitTriggerPrice !== undefined;
|
|
5143
|
+
const isStopLossOrTakeProfitTrigger = isStopLossTrigger || isTakeProfitTrigger;
|
|
5144
|
+
if (isStopLossOrTakeProfitTrigger) {
|
|
5145
|
+
if (isStopLossTrigger) {
|
|
5146
|
+
const slType = this.safeString(params, 'slTriggerBy', 'mark');
|
|
5147
|
+
request['slTriggerBy'] = slType;
|
|
5148
|
+
request['stopLoss'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
|
|
5149
|
+
if (price !== undefined) {
|
|
5150
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5151
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5152
|
+
}
|
|
5153
|
+
else {
|
|
5154
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5155
|
+
}
|
|
5156
|
+
}
|
|
5157
|
+
else if (isTakeProfitTrigger) {
|
|
5158
|
+
const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
|
|
5159
|
+
request['tpTriggerBy'] = tpType;
|
|
5160
|
+
request['takeProfit'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
|
|
5161
|
+
if (price !== undefined) {
|
|
5162
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5163
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5164
|
+
}
|
|
5165
|
+
else {
|
|
5166
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5167
|
+
}
|
|
5168
|
+
}
|
|
5169
|
+
params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
|
|
5170
|
+
}
|
|
5171
|
+
else {
|
|
5172
|
+
if (isStopLoss) {
|
|
5173
|
+
const slTriggerPrice = this.safeNumber2(stopLoss, 'triggerPrice', 'stopPrice');
|
|
5174
|
+
const slLimitPrice = this.safeNumber(stopLoss, 'price');
|
|
5175
|
+
request['stopLoss'] = this.priceToPrecision(symbol, slTriggerPrice);
|
|
5176
|
+
if (slLimitPrice !== undefined) {
|
|
5177
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, slLimitPrice);
|
|
5178
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5179
|
+
}
|
|
5180
|
+
else {
|
|
5181
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5182
|
+
}
|
|
5183
|
+
}
|
|
5184
|
+
if (isTakeProfit) {
|
|
5185
|
+
const tpTriggerPrice = this.safeNumber2(takeProfit, 'triggerPrice', 'stopPrice');
|
|
5186
|
+
const tpLimitPrice = this.safeNumber(takeProfit, 'price');
|
|
5187
|
+
request['takeProfit'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
5188
|
+
if (tpLimitPrice !== undefined) {
|
|
5189
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, tpLimitPrice);
|
|
5190
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5191
|
+
}
|
|
5192
|
+
else {
|
|
5193
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5194
|
+
}
|
|
5195
|
+
}
|
|
5196
|
+
const isMarketOrder = type === 'market';
|
|
5197
|
+
if (!isMarketOrder) {
|
|
5198
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
5199
|
+
}
|
|
5200
|
+
request['orderType'] = type;
|
|
5201
|
+
const exchangeSpecificTifParam = this.safeString(params, 'timeInForce');
|
|
5202
|
+
let postOnly = undefined;
|
|
5203
|
+
[postOnly, params] = this.handlePostOnly(isMarketOrder, exchangeSpecificTifParam === 'post_only', params);
|
|
5204
|
+
const defaultTimeInForce = this.safeStringUpper(this.options, 'defaultTimeInForce');
|
|
5205
|
+
const timeInForce = this.safeStringUpper(params, 'timeInForce', defaultTimeInForce);
|
|
5206
|
+
if (postOnly) {
|
|
5207
|
+
request['timeInForce'] = 'post_only';
|
|
5208
|
+
}
|
|
5209
|
+
else if (timeInForce === 'GTC') {
|
|
5210
|
+
request['timeInForce'] = 'gtc';
|
|
5211
|
+
}
|
|
5212
|
+
else if (timeInForce === 'FOK') {
|
|
5213
|
+
request['timeInForce'] = 'fok';
|
|
5214
|
+
}
|
|
5215
|
+
else if (timeInForce === 'IOC') {
|
|
5216
|
+
request['timeInForce'] = 'ioc';
|
|
5217
|
+
}
|
|
5218
|
+
}
|
|
5219
|
+
const reduceOnly = this.safeBool(params, 'reduceOnly', false);
|
|
5220
|
+
let hedged = undefined;
|
|
5221
|
+
[hedged, params] = this.handleParamBool(params, 'hedged', false);
|
|
5222
|
+
if (reduceOnly) {
|
|
5223
|
+
if (hedged || isStopLossOrTakeProfitTrigger) {
|
|
5224
|
+
const reduceOnlyPosSide = (side === 'sell') ? 'long' : 'short';
|
|
5225
|
+
request['posSide'] = reduceOnlyPosSide;
|
|
5226
|
+
}
|
|
5227
|
+
else if (!isStopLossOrTakeProfitTrigger) {
|
|
5228
|
+
request['reduceOnly'] = 'yes';
|
|
5229
|
+
}
|
|
5230
|
+
}
|
|
5231
|
+
else {
|
|
5232
|
+
if (hedged) {
|
|
5233
|
+
const posSide = (side === 'buy') ? 'long' : 'short';
|
|
5234
|
+
request['posSide'] = posSide;
|
|
5235
|
+
}
|
|
5236
|
+
}
|
|
5237
|
+
params = this.omit(params, ['stopLoss', 'takeProfit', 'postOnly', 'reduceOnly', 'hedged']);
|
|
5238
|
+
return this.extend(request, params);
|
|
5239
|
+
}
|
|
4602
5240
|
createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
4603
5241
|
const market = this.market(symbol);
|
|
4604
5242
|
let marketType = undefined;
|
|
@@ -4682,17 +5320,17 @@ class bitget extends bitget$1 {
|
|
|
4682
5320
|
request['executePrice'] = this.priceToPrecision(symbol, price);
|
|
4683
5321
|
}
|
|
4684
5322
|
if (isStopLoss) {
|
|
4685
|
-
const slTriggerPrice = this.
|
|
5323
|
+
const slTriggerPrice = this.safeString2(stopLoss, 'triggerPrice', 'stopPrice');
|
|
4686
5324
|
request['stopLossTriggerPrice'] = this.priceToPrecision(symbol, slTriggerPrice);
|
|
4687
|
-
const slPrice = this.
|
|
5325
|
+
const slPrice = this.safeString(stopLoss, 'price');
|
|
4688
5326
|
request['stopLossExecutePrice'] = this.priceToPrecision(symbol, slPrice);
|
|
4689
5327
|
const slType = this.safeString(stopLoss, 'type', 'mark_price');
|
|
4690
5328
|
request['stopLossTriggerType'] = slType;
|
|
4691
5329
|
}
|
|
4692
5330
|
if (isTakeProfit) {
|
|
4693
|
-
const tpTriggerPrice = this.
|
|
5331
|
+
const tpTriggerPrice = this.safeString2(takeProfit, 'triggerPrice', 'stopPrice');
|
|
4694
5332
|
request['stopSurplusTriggerPrice'] = this.priceToPrecision(symbol, tpTriggerPrice);
|
|
4695
|
-
const tpPrice = this.
|
|
5333
|
+
const tpPrice = this.safeString(takeProfit, 'price');
|
|
4696
5334
|
request['stopSurplusExecutePrice'] = this.priceToPrecision(symbol, tpPrice);
|
|
4697
5335
|
const tpType = this.safeString(takeProfit, 'type', 'mark_price');
|
|
4698
5336
|
request['stopSurplusTriggerType'] = tpType;
|
|
@@ -4821,6 +5459,60 @@ class bitget extends bitget$1 {
|
|
|
4821
5459
|
}
|
|
4822
5460
|
return this.extend(request, params);
|
|
4823
5461
|
}
|
|
5462
|
+
async createUtaOrders(orders, params = {}) {
|
|
5463
|
+
await this.loadMarkets();
|
|
5464
|
+
const ordersRequests = [];
|
|
5465
|
+
let symbol = undefined;
|
|
5466
|
+
let marginMode = undefined;
|
|
5467
|
+
for (let i = 0; i < orders.length; i++) {
|
|
5468
|
+
const rawOrder = orders[i];
|
|
5469
|
+
const marketId = this.safeString(rawOrder, 'symbol');
|
|
5470
|
+
if (symbol === undefined) {
|
|
5471
|
+
symbol = marketId;
|
|
5472
|
+
}
|
|
5473
|
+
else {
|
|
5474
|
+
if (symbol !== marketId) {
|
|
5475
|
+
throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same symbol');
|
|
5476
|
+
}
|
|
5477
|
+
}
|
|
5478
|
+
const type = this.safeString(rawOrder, 'type');
|
|
5479
|
+
const side = this.safeString(rawOrder, 'side');
|
|
5480
|
+
const amount = this.safeValue(rawOrder, 'amount');
|
|
5481
|
+
const price = this.safeValue(rawOrder, 'price');
|
|
5482
|
+
const orderParams = this.safeValue(rawOrder, 'params', {});
|
|
5483
|
+
const marginResult = this.handleMarginModeAndParams('createOrders', orderParams);
|
|
5484
|
+
const currentMarginMode = marginResult[0];
|
|
5485
|
+
if (currentMarginMode !== undefined) {
|
|
5486
|
+
if (marginMode === undefined) {
|
|
5487
|
+
marginMode = currentMarginMode;
|
|
5488
|
+
}
|
|
5489
|
+
else {
|
|
5490
|
+
if (marginMode !== currentMarginMode) {
|
|
5491
|
+
throw new errors.BadRequest(this.id + ' createOrders() requires all orders to have the same margin mode (isolated or cross)');
|
|
5492
|
+
}
|
|
5493
|
+
}
|
|
5494
|
+
}
|
|
5495
|
+
const orderRequest = this.createUtaOrderRequest(marketId, type, side, amount, price, orderParams);
|
|
5496
|
+
ordersRequests.push(orderRequest);
|
|
5497
|
+
}
|
|
5498
|
+
const market = this.market(symbol);
|
|
5499
|
+
const response = await this.privateUtaPostV3TradePlaceBatch(ordersRequests);
|
|
5500
|
+
//
|
|
5501
|
+
// {
|
|
5502
|
+
// "code": "00000",
|
|
5503
|
+
// "msg": "success",
|
|
5504
|
+
// "requestTime": 1752810184560,
|
|
5505
|
+
// "data": [
|
|
5506
|
+
// {
|
|
5507
|
+
// "orderId": "1329947796441513984",
|
|
5508
|
+
// "clientOid": "1329947796483457024"
|
|
5509
|
+
// },
|
|
5510
|
+
// ]
|
|
5511
|
+
// }
|
|
5512
|
+
//
|
|
5513
|
+
const data = this.safeList(response, 'data', []);
|
|
5514
|
+
return this.parseOrders(data, market);
|
|
5515
|
+
}
|
|
4824
5516
|
/**
|
|
4825
5517
|
* @method
|
|
4826
5518
|
* @name bitget#createOrders
|
|
@@ -4829,12 +5521,19 @@ class bitget extends bitget$1 {
|
|
|
4829
5521
|
* @see https://www.bitget.com/api-doc/contract/trade/Batch-Order
|
|
4830
5522
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Order
|
|
4831
5523
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Order
|
|
5524
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Place-Batch
|
|
4832
5525
|
* @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
5526
|
* @param {object} [params] extra parameters specific to the api endpoint
|
|
5527
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
4834
5528
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4835
5529
|
*/
|
|
4836
5530
|
async createOrders(orders, params = {}) {
|
|
4837
5531
|
await this.loadMarkets();
|
|
5532
|
+
let uta = undefined;
|
|
5533
|
+
[uta, params] = this.handleOptionAndParams(params, 'createOrders', 'uta', false);
|
|
5534
|
+
if (uta) {
|
|
5535
|
+
return await this.createUtaOrders(orders, params);
|
|
5536
|
+
}
|
|
4838
5537
|
const ordersRequests = [];
|
|
4839
5538
|
let symbol = undefined;
|
|
4840
5539
|
let marginMode = undefined;
|
|
@@ -4933,6 +5632,8 @@ class bitget extends bitget$1 {
|
|
|
4933
5632
|
* @see https://www.bitget.com/api-doc/contract/trade/Modify-Order
|
|
4934
5633
|
* @see https://www.bitget.com/api-doc/contract/plan/Modify-Tpsl-Order
|
|
4935
5634
|
* @see https://www.bitget.com/api-doc/contract/plan/Modify-Plan-Order
|
|
5635
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Modify-Order
|
|
5636
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Modify-Strategy-Order
|
|
4936
5637
|
* @param {string} id cancel order id
|
|
4937
5638
|
* @param {string} symbol unified symbol of the market to create an order in
|
|
4938
5639
|
* @param {string} type 'market' or 'limit'
|
|
@@ -4954,6 +5655,7 @@ class bitget extends bitget$1 {
|
|
|
4954
5655
|
* @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
5656
|
* @param {string} [params.trailingTriggerPrice] *swap and future only* the price to trigger a trailing stop order, default uses the price argument
|
|
4956
5657
|
* @param {string} [params.newTriggerType] *swap and future only* 'fill_price', 'mark_price' or 'index_price'
|
|
5658
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
4957
5659
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
4958
5660
|
*/
|
|
4959
5661
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
@@ -4985,7 +5687,50 @@ class bitget extends bitget$1 {
|
|
|
4985
5687
|
}
|
|
4986
5688
|
params = this.omit(params, ['stopPrice', 'triggerType', 'stopLossPrice', 'takeProfitPrice', 'stopLoss', 'takeProfit', 'clientOrderId', 'trailingTriggerPrice', 'trailingPercent']);
|
|
4987
5689
|
let response = undefined;
|
|
4988
|
-
|
|
5690
|
+
let productType = undefined;
|
|
5691
|
+
let uta = undefined;
|
|
5692
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5693
|
+
[uta, params] = this.handleOptionAndParams(params, 'editOrder', 'uta', false);
|
|
5694
|
+
if (uta) {
|
|
5695
|
+
if (amount !== undefined) {
|
|
5696
|
+
request['qty'] = this.amountToPrecision(symbol, amount);
|
|
5697
|
+
}
|
|
5698
|
+
if (isStopLossOrder || isTakeProfitOrder) {
|
|
5699
|
+
if (isStopLossOrder) {
|
|
5700
|
+
const slType = this.safeString(params, 'slTriggerBy', 'mark');
|
|
5701
|
+
request['slTriggerBy'] = slType;
|
|
5702
|
+
request['stopLoss'] = this.priceToPrecision(symbol, stopLossPrice);
|
|
5703
|
+
if (price !== undefined) {
|
|
5704
|
+
request['slLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5705
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'limit');
|
|
5706
|
+
}
|
|
5707
|
+
else {
|
|
5708
|
+
request['slOrderType'] = this.safeString(params, 'slOrderType', 'market');
|
|
5709
|
+
}
|
|
5710
|
+
}
|
|
5711
|
+
else if (isTakeProfitOrder) {
|
|
5712
|
+
const tpType = this.safeString(params, 'tpTriggerBy', 'mark');
|
|
5713
|
+
request['tpTriggerBy'] = tpType;
|
|
5714
|
+
request['takeProfit'] = this.priceToPrecision(symbol, takeProfitPrice);
|
|
5715
|
+
if (price !== undefined) {
|
|
5716
|
+
request['tpLimitPrice'] = this.priceToPrecision(symbol, price);
|
|
5717
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'limit');
|
|
5718
|
+
}
|
|
5719
|
+
else {
|
|
5720
|
+
request['tpOrderType'] = this.safeString(params, 'tpOrderType', 'market');
|
|
5721
|
+
}
|
|
5722
|
+
}
|
|
5723
|
+
params = this.omit(params, ['stopLossPrice', 'takeProfitPrice']);
|
|
5724
|
+
response = await this.privateUtaPostV3TradeModifyStrategyOrder(this.extend(request, params));
|
|
5725
|
+
}
|
|
5726
|
+
else {
|
|
5727
|
+
if (price !== undefined) {
|
|
5728
|
+
request['price'] = this.priceToPrecision(symbol, price);
|
|
5729
|
+
}
|
|
5730
|
+
response = await this.privateUtaPostV3TradeModifyOrder(this.extend(request, params));
|
|
5731
|
+
}
|
|
5732
|
+
}
|
|
5733
|
+
else if (market['spot']) {
|
|
4989
5734
|
if (triggerPrice === undefined) {
|
|
4990
5735
|
throw new errors.NotSupported(this.id + ' editOrder() only supports plan/trigger spot orders');
|
|
4991
5736
|
}
|
|
@@ -5014,8 +5759,6 @@ class bitget extends bitget$1 {
|
|
|
5014
5759
|
throw new errors.NotSupported(this.id + ' editOrder() does not support ' + market['type'] + ' orders');
|
|
5015
5760
|
}
|
|
5016
5761
|
request['symbol'] = market['id'];
|
|
5017
|
-
let productType = undefined;
|
|
5018
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5019
5762
|
request['productType'] = productType;
|
|
5020
5763
|
if (!isTakeProfitOrder && !isStopLossOrder) {
|
|
5021
5764
|
request['newSize'] = this.amountToPrecision(symbol, amount);
|
|
@@ -5107,6 +5850,8 @@ class bitget extends bitget$1 {
|
|
|
5107
5850
|
* @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
|
|
5108
5851
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Cancel-Order
|
|
5109
5852
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Cancel-Order
|
|
5853
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-Order
|
|
5854
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Cancel-Strategy-Order
|
|
5110
5855
|
* @param {string} id order id
|
|
5111
5856
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
5112
5857
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
@@ -5114,6 +5859,8 @@ class bitget extends bitget$1 {
|
|
|
5114
5859
|
* @param {boolean} [params.trigger] set to true for canceling trigger orders
|
|
5115
5860
|
* @param {string} [params.planType] *swap only* either profit_plan, loss_plan, normal_plan, pos_profit, pos_loss, moving_plan or track_plan
|
|
5116
5861
|
* @param {boolean} [params.trailing] set to true if you want to cancel a trailing order
|
|
5862
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5863
|
+
* @param {string} [params.clientOrderId] the clientOrderId of the order, id does not need to be provided if clientOrderId is provided
|
|
5117
5864
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5118
5865
|
*/
|
|
5119
5866
|
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
@@ -5132,21 +5879,46 @@ class bitget extends bitget$1 {
|
|
|
5132
5879
|
if (!(market['spot'] && trigger)) {
|
|
5133
5880
|
request['symbol'] = market['id'];
|
|
5134
5881
|
}
|
|
5135
|
-
|
|
5136
|
-
|
|
5882
|
+
let uta = undefined;
|
|
5883
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelOrder', 'uta', false);
|
|
5884
|
+
const isPlanOrder = trigger || trailing;
|
|
5885
|
+
const isContract = market['swap'] || market['future'];
|
|
5886
|
+
const isContractTriggerEndpoint = isContract && isPlanOrder && !uta;
|
|
5887
|
+
const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientOid');
|
|
5888
|
+
if (isContractTriggerEndpoint) {
|
|
5889
|
+
const orderIdList = [];
|
|
5890
|
+
const orderId = {};
|
|
5891
|
+
if (clientOrderId !== undefined) {
|
|
5892
|
+
params = this.omit(params, 'clientOrderId');
|
|
5893
|
+
orderId['clientOid'] = clientOrderId;
|
|
5894
|
+
}
|
|
5895
|
+
else {
|
|
5896
|
+
orderId['orderId'] = id;
|
|
5897
|
+
}
|
|
5898
|
+
orderIdList.push(orderId);
|
|
5899
|
+
request['orderIdList'] = orderIdList;
|
|
5137
5900
|
}
|
|
5138
|
-
|
|
5901
|
+
else {
|
|
5902
|
+
if (clientOrderId !== undefined) {
|
|
5903
|
+
params = this.omit(params, 'clientOrderId');
|
|
5904
|
+
request['clientOid'] = clientOrderId;
|
|
5905
|
+
}
|
|
5906
|
+
else {
|
|
5907
|
+
request['orderId'] = id;
|
|
5908
|
+
}
|
|
5909
|
+
}
|
|
5910
|
+
if (uta) {
|
|
5911
|
+
if (trigger) {
|
|
5912
|
+
response = await this.privateUtaPostV3TradeCancelStrategyOrder(this.extend(request, params));
|
|
5913
|
+
}
|
|
5914
|
+
else {
|
|
5915
|
+
response = await this.privateUtaPostV3TradeCancelOrder(this.extend(request, params));
|
|
5916
|
+
}
|
|
5917
|
+
}
|
|
5918
|
+
else if ((market['swap']) || (market['future'])) {
|
|
5139
5919
|
let productType = undefined;
|
|
5140
5920
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5141
5921
|
request['productType'] = productType;
|
|
5142
|
-
if (trigger || trailing) {
|
|
5143
|
-
const orderIdList = [];
|
|
5144
|
-
const orderId = {
|
|
5145
|
-
'orderId': id,
|
|
5146
|
-
};
|
|
5147
|
-
orderIdList.push(orderId);
|
|
5148
|
-
request['orderIdList'] = orderIdList;
|
|
5149
|
-
}
|
|
5150
5922
|
if (trailing) {
|
|
5151
5923
|
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
5152
5924
|
request['planType'] = planType;
|
|
@@ -5221,17 +5993,66 @@ class bitget extends bitget$1 {
|
|
|
5221
5993
|
// }
|
|
5222
5994
|
// }
|
|
5223
5995
|
//
|
|
5996
|
+
// uta trigger
|
|
5997
|
+
//
|
|
5998
|
+
// {
|
|
5999
|
+
// "code": "00000",
|
|
6000
|
+
// "msg": "success",
|
|
6001
|
+
// "requestTime": "1753058267399",
|
|
6002
|
+
// "data": null
|
|
6003
|
+
// }
|
|
6004
|
+
//
|
|
5224
6005
|
const data = this.safeValue(response, 'data', {});
|
|
5225
6006
|
let order = undefined;
|
|
5226
|
-
if (
|
|
6007
|
+
if (isContractTriggerEndpoint) {
|
|
5227
6008
|
const orderInfo = this.safeValue(data, 'successList', []);
|
|
5228
6009
|
order = orderInfo[0];
|
|
5229
6010
|
}
|
|
5230
6011
|
else {
|
|
5231
|
-
|
|
6012
|
+
if (uta && trigger) {
|
|
6013
|
+
order = response;
|
|
6014
|
+
}
|
|
6015
|
+
else {
|
|
6016
|
+
order = data;
|
|
6017
|
+
}
|
|
5232
6018
|
}
|
|
5233
6019
|
return this.parseOrder(order, market);
|
|
5234
6020
|
}
|
|
6021
|
+
async cancelUtaOrders(ids, symbol = undefined, params = {}) {
|
|
6022
|
+
if (symbol === undefined) {
|
|
6023
|
+
throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
|
|
6024
|
+
}
|
|
6025
|
+
await this.loadMarkets();
|
|
6026
|
+
const market = this.market(symbol);
|
|
6027
|
+
let productType = undefined;
|
|
6028
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6029
|
+
const requestList = [];
|
|
6030
|
+
for (let i = 0; i < ids.length; i++) {
|
|
6031
|
+
const individualId = ids[i];
|
|
6032
|
+
const order = {
|
|
6033
|
+
'orderId': individualId,
|
|
6034
|
+
'symbol': market['id'],
|
|
6035
|
+
'category': productType,
|
|
6036
|
+
};
|
|
6037
|
+
requestList.push(order);
|
|
6038
|
+
}
|
|
6039
|
+
const response = await this.privateUtaPostV3TradeCancelBatch(requestList);
|
|
6040
|
+
//
|
|
6041
|
+
// {
|
|
6042
|
+
// "code": "00000",
|
|
6043
|
+
// "msg": "success",
|
|
6044
|
+
// "requestTime": 1752813731517,
|
|
6045
|
+
// "data": [
|
|
6046
|
+
// {
|
|
6047
|
+
// "orderId": "1329948909442023424",
|
|
6048
|
+
// "clientOid": "1329948909446217728"
|
|
6049
|
+
// },
|
|
6050
|
+
// ]
|
|
6051
|
+
// }
|
|
6052
|
+
//
|
|
6053
|
+
const data = this.safeList(response, 'data', []);
|
|
6054
|
+
return this.parseOrders(data, market);
|
|
6055
|
+
}
|
|
5235
6056
|
/**
|
|
5236
6057
|
* @method
|
|
5237
6058
|
* @name bitget#cancelOrders
|
|
@@ -5241,11 +6062,13 @@ class bitget extends bitget$1 {
|
|
|
5241
6062
|
* @see https://www.bitget.com/api-doc/contract/plan/Cancel-Plan-Order
|
|
5242
6063
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Cancel-Order
|
|
5243
6064
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Cancel-Orders
|
|
6065
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-Batch
|
|
5244
6066
|
* @param {string[]} ids order ids
|
|
5245
6067
|
* @param {string} symbol unified market symbol, default is undefined
|
|
5246
6068
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5247
6069
|
* @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
|
|
5248
6070
|
* @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
|
|
6071
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5249
6072
|
* @returns {object} an array of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5250
6073
|
*/
|
|
5251
6074
|
async cancelOrders(ids, symbol = undefined, params = {}) {
|
|
@@ -5254,6 +6077,11 @@ class bitget extends bitget$1 {
|
|
|
5254
6077
|
}
|
|
5255
6078
|
await this.loadMarkets();
|
|
5256
6079
|
const market = this.market(symbol);
|
|
6080
|
+
let uta = undefined;
|
|
6081
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelOrders', 'uta', false);
|
|
6082
|
+
if (uta) {
|
|
6083
|
+
return await this.cancelUtaOrders(ids, symbol, params);
|
|
6084
|
+
}
|
|
5257
6085
|
let marginMode = undefined;
|
|
5258
6086
|
[marginMode, params] = this.handleMarginModeAndParams('cancelOrders', params);
|
|
5259
6087
|
const trigger = this.safeValue2(params, 'stop', 'trigger');
|
|
@@ -5329,10 +6157,12 @@ class bitget extends bitget$1 {
|
|
|
5329
6157
|
* @see https://www.bitget.com/api-doc/contract/trade/Batch-Cancel-Orders
|
|
5330
6158
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-batch-cancel-orders
|
|
5331
6159
|
* @see https://bitgetlimited.github.io/apidoc/en/margin/#cross-batch-cancel-order
|
|
6160
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Cancel-All-Order
|
|
5332
6161
|
* @param {string} symbol unified market symbol
|
|
5333
6162
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5334
6163
|
* @param {string} [params.marginMode] 'isolated' or 'cross' for spot margin trading
|
|
5335
6164
|
* @param {boolean} [params.trigger] *contract only* set to true for canceling trigger orders
|
|
6165
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5336
6166
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5337
6167
|
*/
|
|
5338
6168
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -5343,13 +6173,41 @@ class bitget extends bitget$1 {
|
|
|
5343
6173
|
const market = this.market(symbol);
|
|
5344
6174
|
let marginMode = undefined;
|
|
5345
6175
|
[marginMode, params] = this.handleMarginModeAndParams('cancelAllOrders', params);
|
|
6176
|
+
let productType = undefined;
|
|
6177
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5346
6178
|
const request = {
|
|
5347
6179
|
'symbol': market['id'],
|
|
5348
6180
|
};
|
|
5349
6181
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
5350
6182
|
params = this.omit(params, ['stop', 'trigger']);
|
|
5351
6183
|
let response = undefined;
|
|
5352
|
-
|
|
6184
|
+
let uta = undefined;
|
|
6185
|
+
[uta, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'uta', false);
|
|
6186
|
+
if (uta) {
|
|
6187
|
+
if (productType === 'SPOT') {
|
|
6188
|
+
if (marginMode !== undefined) {
|
|
6189
|
+
productType = 'MARGIN';
|
|
6190
|
+
}
|
|
6191
|
+
}
|
|
6192
|
+
request['category'] = productType;
|
|
6193
|
+
response = await this.privateUtaPostV3TradeCancelSymbolOrder(this.extend(request, params));
|
|
6194
|
+
//
|
|
6195
|
+
// {
|
|
6196
|
+
// "code": "00000",
|
|
6197
|
+
// "msg": "success",
|
|
6198
|
+
// "requestTime": 1750751578138,
|
|
6199
|
+
// "data": {
|
|
6200
|
+
// "list": [
|
|
6201
|
+
// {
|
|
6202
|
+
// "orderId": "1321313242969427968",
|
|
6203
|
+
// "clientOid": "1321313242969427969"
|
|
6204
|
+
// }
|
|
6205
|
+
// ]
|
|
6206
|
+
// }
|
|
6207
|
+
// }
|
|
6208
|
+
//
|
|
6209
|
+
}
|
|
6210
|
+
else if (market['spot']) {
|
|
5353
6211
|
if (marginMode !== undefined) {
|
|
5354
6212
|
if (marginMode === 'cross') {
|
|
5355
6213
|
response = await this.privateMarginPostMarginV1CrossOrderBatchCancelOrder(this.extend(request, params));
|
|
@@ -5408,8 +6266,6 @@ class bitget extends bitget$1 {
|
|
|
5408
6266
|
}
|
|
5409
6267
|
}
|
|
5410
6268
|
else {
|
|
5411
|
-
let productType = undefined;
|
|
5412
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5413
6269
|
request['productType'] = productType;
|
|
5414
6270
|
if (trigger) {
|
|
5415
6271
|
response = await this.privateMixPostV2MixOrderCancelPlanOrder(this.extend(request, params));
|
|
@@ -5433,9 +6289,15 @@ class bitget extends bitget$1 {
|
|
|
5433
6289
|
// }
|
|
5434
6290
|
}
|
|
5435
6291
|
const data = this.safeDict(response, 'data');
|
|
5436
|
-
const resultList = this.
|
|
6292
|
+
const resultList = this.safeListN(data, ['resultList', 'successList', 'list']);
|
|
5437
6293
|
const failureList = this.safeList2(data, 'failure', 'failureList');
|
|
5438
|
-
|
|
6294
|
+
let responseList = undefined;
|
|
6295
|
+
if ((resultList !== undefined) && (failureList !== undefined)) {
|
|
6296
|
+
responseList = this.arrayConcat(resultList, failureList);
|
|
6297
|
+
}
|
|
6298
|
+
else {
|
|
6299
|
+
responseList = resultList;
|
|
6300
|
+
}
|
|
5439
6301
|
return this.parseOrders(responseList);
|
|
5440
6302
|
}
|
|
5441
6303
|
/**
|
|
@@ -5444,9 +6306,12 @@ class bitget extends bitget$1 {
|
|
|
5444
6306
|
* @description fetches information on an order made by the user
|
|
5445
6307
|
* @see https://www.bitget.com/api-doc/spot/trade/Get-Order-Info
|
|
5446
6308
|
* @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Details
|
|
6309
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Details
|
|
5447
6310
|
* @param {string} id the order id
|
|
5448
6311
|
* @param {string} symbol unified symbol of the market the order was made in
|
|
5449
6312
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6313
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
6314
|
+
* @param {string} [params.clientOrderId] the clientOrderId of the order, id does not need to be provided if clientOrderId is provided
|
|
5450
6315
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5451
6316
|
*/
|
|
5452
6317
|
async fetchOrder(id, symbol = undefined, params = {}) {
|
|
@@ -5456,14 +6321,27 @@ class bitget extends bitget$1 {
|
|
|
5456
6321
|
await this.loadMarkets();
|
|
5457
6322
|
const market = this.market(symbol);
|
|
5458
6323
|
const request = {
|
|
5459
|
-
|
|
6324
|
+
// 'orderId': id,
|
|
5460
6325
|
};
|
|
5461
|
-
|
|
5462
|
-
if (
|
|
5463
|
-
|
|
6326
|
+
const clientOrderId = this.safeString2(params, 'clientOrderId', 'clientOid');
|
|
6327
|
+
if (clientOrderId !== undefined) {
|
|
6328
|
+
params = this.omit(params, ['clientOrderId']);
|
|
6329
|
+
request['clientOid'] = clientOrderId;
|
|
5464
6330
|
}
|
|
5465
|
-
else
|
|
5466
|
-
request['
|
|
6331
|
+
else {
|
|
6332
|
+
request['orderId'] = id;
|
|
6333
|
+
}
|
|
6334
|
+
let response = undefined;
|
|
6335
|
+
let uta = undefined;
|
|
6336
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOrder', 'uta', false);
|
|
6337
|
+
if (uta) {
|
|
6338
|
+
response = await this.privateUtaGetV3TradeOrderInfo(this.extend(request, params));
|
|
6339
|
+
}
|
|
6340
|
+
else if (market['spot']) {
|
|
6341
|
+
response = await this.privateSpotGetV2SpotTradeOrderInfo(this.extend(request, params));
|
|
6342
|
+
}
|
|
6343
|
+
else if (market['swap'] || market['future']) {
|
|
6344
|
+
request['symbol'] = market['id'];
|
|
5467
6345
|
let productType = undefined;
|
|
5468
6346
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
5469
6347
|
request['productType'] = productType;
|
|
@@ -5539,7 +6417,51 @@ class bitget extends bitget$1 {
|
|
|
5539
6417
|
// }
|
|
5540
6418
|
// }
|
|
5541
6419
|
//
|
|
5542
|
-
|
|
6420
|
+
// uta
|
|
6421
|
+
//
|
|
6422
|
+
// {
|
|
6423
|
+
// "code": "00000",
|
|
6424
|
+
// "msg": "success",
|
|
6425
|
+
// "requestTime": 1750496858333,
|
|
6426
|
+
// "data": {
|
|
6427
|
+
// "orderId": "1320244799629316096",
|
|
6428
|
+
// "clientOid": "1320244799633510400",
|
|
6429
|
+
// "category": "USDT-FUTURES",
|
|
6430
|
+
// "symbol": "BTCUSDT",
|
|
6431
|
+
// "orderType": "limit",
|
|
6432
|
+
// "side": "buy",
|
|
6433
|
+
// "price": "50000",
|
|
6434
|
+
// "qty": "0.001",
|
|
6435
|
+
// "amount": "0",
|
|
6436
|
+
// "cumExecQty": "0",
|
|
6437
|
+
// "cumExecValue": "0",
|
|
6438
|
+
// "avgPrice": "0",
|
|
6439
|
+
// "timeInForce": "gtc",
|
|
6440
|
+
// "orderStatus": "live",
|
|
6441
|
+
// "posSide": "long",
|
|
6442
|
+
// "holdMode": "hedge_mode",
|
|
6443
|
+
// "reduceOnly": "NO",
|
|
6444
|
+
// "feeDetail": [{
|
|
6445
|
+
// "feeCoin": "",
|
|
6446
|
+
// "fee": ""
|
|
6447
|
+
// }],
|
|
6448
|
+
// "createdTime": "1750496809871",
|
|
6449
|
+
// "updatedTime": "1750496809886",
|
|
6450
|
+
// "cancelReason": "",
|
|
6451
|
+
// "execType": "normal",
|
|
6452
|
+
// "stpMode": "none",
|
|
6453
|
+
// "tpTriggerBy": null,
|
|
6454
|
+
// "slTriggerBy": null,
|
|
6455
|
+
// "takeProfit": null,
|
|
6456
|
+
// "stopLoss": null,
|
|
6457
|
+
// "tpOrderType": null,
|
|
6458
|
+
// "slOrderType": null,
|
|
6459
|
+
// "tpLimitPrice": null,
|
|
6460
|
+
// "slLimitPrice": null
|
|
6461
|
+
// }
|
|
6462
|
+
// }
|
|
6463
|
+
//
|
|
6464
|
+
if (!uta && (typeof response === 'string')) {
|
|
5543
6465
|
response = JSON.parse(response);
|
|
5544
6466
|
}
|
|
5545
6467
|
const data = this.safeDict(response, 'data');
|
|
@@ -5549,6 +6471,10 @@ class bitget extends bitget$1 {
|
|
|
5549
6471
|
}
|
|
5550
6472
|
}
|
|
5551
6473
|
const dataList = this.safeList(response, 'data', []);
|
|
6474
|
+
const dataListLength = dataList.length;
|
|
6475
|
+
if (dataListLength === 0) {
|
|
6476
|
+
throw new errors.OrderNotFound(this.id + ' fetchOrder() could not find order id ' + id + ' in ' + this.json(response));
|
|
6477
|
+
}
|
|
5552
6478
|
const first = this.safeDict(dataList, 0, {});
|
|
5553
6479
|
return this.parseOrder(first, market);
|
|
5554
6480
|
// const first = this.safeDict (data, 0, data);
|
|
@@ -5564,6 +6490,7 @@ class bitget extends bitget$1 {
|
|
|
5564
6490
|
* @see https://www.bitget.com/api-doc/contract/plan/get-orders-plan-pending
|
|
5565
6491
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Open-Orders
|
|
5566
6492
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Open-Orders
|
|
6493
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Get-Unfilled-Strategy-Orders
|
|
5567
6494
|
* @param {string} symbol unified market symbol
|
|
5568
6495
|
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
5569
6496
|
* @param {int} [limit] the maximum number of open order structures to retrieve
|
|
@@ -5574,6 +6501,7 @@ class bitget extends bitget$1 {
|
|
|
5574
6501
|
* @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
6502
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
5576
6503
|
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
6504
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5577
6505
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5578
6506
|
*/
|
|
5579
6507
|
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -5583,6 +6511,8 @@ class bitget extends bitget$1 {
|
|
|
5583
6511
|
let request = {};
|
|
5584
6512
|
let marginMode = undefined;
|
|
5585
6513
|
[marginMode, params] = this.handleMarginModeAndParams('fetchOpenOrders', params);
|
|
6514
|
+
let uta = undefined;
|
|
6515
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'uta', false);
|
|
5586
6516
|
if (symbol !== undefined) {
|
|
5587
6517
|
market = this.market(symbol);
|
|
5588
6518
|
request['symbol'] = market['id'];
|
|
@@ -5598,22 +6528,28 @@ class bitget extends bitget$1 {
|
|
|
5598
6528
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
|
|
5599
6529
|
if (paginate) {
|
|
5600
6530
|
let cursorReceived = undefined;
|
|
5601
|
-
|
|
6531
|
+
let cursorSent = undefined;
|
|
6532
|
+
if (uta) {
|
|
6533
|
+
cursorReceived = 'cursor';
|
|
6534
|
+
cursorSent = 'cursor';
|
|
6535
|
+
}
|
|
6536
|
+
else if (type === 'spot') {
|
|
5602
6537
|
if (marginMode !== undefined) {
|
|
5603
6538
|
cursorReceived = 'minId';
|
|
6539
|
+
cursorSent = 'idLessThan';
|
|
5604
6540
|
}
|
|
5605
6541
|
}
|
|
5606
6542
|
else {
|
|
5607
6543
|
cursorReceived = 'endId';
|
|
6544
|
+
cursorSent = 'idLessThan';
|
|
5608
6545
|
}
|
|
5609
|
-
return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived,
|
|
6546
|
+
return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, cursorSent);
|
|
5610
6547
|
}
|
|
5611
6548
|
let response = undefined;
|
|
5612
6549
|
const trailing = this.safeBool(params, 'trailing');
|
|
5613
6550
|
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
5614
6551
|
const planTypeDefined = this.safeString(params, 'planType') !== undefined;
|
|
5615
6552
|
const isTrigger = (trigger || planTypeDefined);
|
|
5616
|
-
params = this.omit(params, ['stop', 'trigger', 'trailing']);
|
|
5617
6553
|
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
5618
6554
|
if (since !== undefined) {
|
|
5619
6555
|
request['startTime'] = since;
|
|
@@ -5621,53 +6557,66 @@ class bitget extends bitget$1 {
|
|
|
5621
6557
|
if (limit !== undefined) {
|
|
5622
6558
|
request['limit'] = limit;
|
|
5623
6559
|
}
|
|
5624
|
-
if ((type === 'swap') || (type === 'future') || (marginMode !== undefined)) {
|
|
6560
|
+
if (!uta && ((type === 'swap') || (type === 'future') || (marginMode !== undefined))) {
|
|
5625
6561
|
const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
|
|
5626
6562
|
params = this.omit(params, 'clientOrderId');
|
|
5627
6563
|
if (clientOrderId !== undefined) {
|
|
5628
6564
|
request['clientOid'] = clientOrderId;
|
|
5629
6565
|
}
|
|
5630
6566
|
}
|
|
5631
|
-
let
|
|
5632
|
-
|
|
5633
|
-
|
|
6567
|
+
let productType = undefined;
|
|
6568
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6569
|
+
params = this.omit(params, ['type', 'stop', 'trigger', 'trailing']);
|
|
6570
|
+
if (uta) {
|
|
6571
|
+
if (type === 'spot') {
|
|
6572
|
+
if (marginMode !== undefined) {
|
|
6573
|
+
productType = 'MARGIN';
|
|
6574
|
+
}
|
|
6575
|
+
}
|
|
6576
|
+
request['category'] = productType;
|
|
6577
|
+
if (trigger) {
|
|
6578
|
+
response = await this.privateUtaGetV3TradeUnfilledStrategyOrders(this.extend(request, params));
|
|
6579
|
+
}
|
|
6580
|
+
else {
|
|
6581
|
+
response = await this.privateUtaGetV3TradeUnfilledOrders(this.extend(request, params));
|
|
6582
|
+
}
|
|
6583
|
+
}
|
|
6584
|
+
else if (type === 'spot') {
|
|
5634
6585
|
if (marginMode !== undefined) {
|
|
5635
6586
|
if (since === undefined) {
|
|
5636
6587
|
since = this.milliseconds() - 7776000000;
|
|
5637
6588
|
request['startTime'] = since;
|
|
5638
6589
|
}
|
|
5639
6590
|
if (marginMode === 'isolated') {
|
|
5640
|
-
response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request,
|
|
6591
|
+
response = await this.privateMarginGetV2MarginIsolatedOpenOrders(this.extend(request, params));
|
|
5641
6592
|
}
|
|
5642
6593
|
else if (marginMode === 'cross') {
|
|
5643
|
-
response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request,
|
|
6594
|
+
response = await this.privateMarginGetV2MarginCrossedOpenOrders(this.extend(request, params));
|
|
5644
6595
|
}
|
|
5645
6596
|
}
|
|
5646
6597
|
else {
|
|
5647
6598
|
if (trigger) {
|
|
5648
|
-
response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request,
|
|
6599
|
+
response = await this.privateSpotGetV2SpotTradeCurrentPlanOrder(this.extend(request, params));
|
|
5649
6600
|
}
|
|
5650
6601
|
else {
|
|
5651
|
-
response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request,
|
|
6602
|
+
response = await this.privateSpotGetV2SpotTradeUnfilledOrders(this.extend(request, params));
|
|
5652
6603
|
}
|
|
5653
6604
|
}
|
|
5654
6605
|
}
|
|
5655
6606
|
else {
|
|
5656
|
-
let productType = undefined;
|
|
5657
|
-
[productType, query] = this.handleProductTypeAndParams(market, query);
|
|
5658
6607
|
request['productType'] = productType;
|
|
5659
6608
|
if (trailing) {
|
|
5660
6609
|
const planType = this.safeString(params, 'planType', 'track_plan');
|
|
5661
6610
|
request['planType'] = planType;
|
|
5662
|
-
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request,
|
|
6611
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
|
|
5663
6612
|
}
|
|
5664
6613
|
else if (isTrigger) {
|
|
5665
|
-
const planType = this.safeString(
|
|
6614
|
+
const planType = this.safeString(params, 'planType', 'normal_plan');
|
|
5666
6615
|
request['planType'] = planType;
|
|
5667
|
-
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request,
|
|
6616
|
+
response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, params));
|
|
5668
6617
|
}
|
|
5669
6618
|
else {
|
|
5670
|
-
response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request,
|
|
6619
|
+
response = await this.privateMixGetV2MixOrderOrdersPending(this.extend(request, params));
|
|
5671
6620
|
}
|
|
5672
6621
|
}
|
|
5673
6622
|
//
|
|
@@ -5845,8 +6794,95 @@ class bitget extends bitget$1 {
|
|
|
5845
6794
|
// }
|
|
5846
6795
|
// }
|
|
5847
6796
|
//
|
|
6797
|
+
// uta
|
|
6798
|
+
//
|
|
6799
|
+
// {
|
|
6800
|
+
// "code": "00000",
|
|
6801
|
+
// "msg": "success",
|
|
6802
|
+
// "requestTime": 1750753395850,
|
|
6803
|
+
// "data": {
|
|
6804
|
+
// "list": [
|
|
6805
|
+
// {
|
|
6806
|
+
// "orderId": "1321320757371228160",
|
|
6807
|
+
// "clientOid": "1321320757371228161",
|
|
6808
|
+
// "category": "USDT-FUTURES",
|
|
6809
|
+
// "symbol": "BTCUSDT",
|
|
6810
|
+
// "orderType": "limit",
|
|
6811
|
+
// "side": "buy",
|
|
6812
|
+
// "price": "50000",
|
|
6813
|
+
// "qty": "0.001",
|
|
6814
|
+
// "amount": "0",
|
|
6815
|
+
// "cumExecQty": "0",
|
|
6816
|
+
// "cumExecValue": "0",
|
|
6817
|
+
// "avgPrice": "0",
|
|
6818
|
+
// "timeInForce": "gtc",
|
|
6819
|
+
// "orderStatus": "live",
|
|
6820
|
+
// "posSide": "long",
|
|
6821
|
+
// "holdMode": "hedge_mode",
|
|
6822
|
+
// "reduceOnly": "NO",
|
|
6823
|
+
// "feeDetail": [
|
|
6824
|
+
// {
|
|
6825
|
+
// "feeCoin": "",
|
|
6826
|
+
// "fee": ""
|
|
6827
|
+
// }
|
|
6828
|
+
// ],
|
|
6829
|
+
// "createdTime": "1750753338186",
|
|
6830
|
+
// "updatedTime": "1750753338203",
|
|
6831
|
+
// "stpMode": "none",
|
|
6832
|
+
// "tpTriggerBy": null,
|
|
6833
|
+
// "slTriggerBy": null,
|
|
6834
|
+
// "takeProfit": null,
|
|
6835
|
+
// "stopLoss": null,
|
|
6836
|
+
// "tpOrderType": null,
|
|
6837
|
+
// "slOrderType": null,
|
|
6838
|
+
// "tpLimitPrice": null,
|
|
6839
|
+
// "slLimitPrice": null
|
|
6840
|
+
// }
|
|
6841
|
+
// ],
|
|
6842
|
+
// "cursor": "1321320757371228160"
|
|
6843
|
+
// }
|
|
6844
|
+
// }
|
|
6845
|
+
//
|
|
6846
|
+
// uta trigger
|
|
6847
|
+
//
|
|
6848
|
+
// {
|
|
6849
|
+
// "code": "00000",
|
|
6850
|
+
// "msg": "success",
|
|
6851
|
+
// "requestTime": 1753057527060,
|
|
6852
|
+
// "data": [
|
|
6853
|
+
// {
|
|
6854
|
+
// "orderId": "1330984742276198400",
|
|
6855
|
+
// "clientOid": "1330984742276198400",
|
|
6856
|
+
// "symbol": "BTCUSDT",
|
|
6857
|
+
// "category": "USDT-FUTURES",
|
|
6858
|
+
// "qty": "0.001",
|
|
6859
|
+
// "posSide": "long",
|
|
6860
|
+
// "tpTriggerBy": "market",
|
|
6861
|
+
// "slTriggerBy": "mark",
|
|
6862
|
+
// "takeProfit": "",
|
|
6863
|
+
// "stopLoss":"114000",
|
|
6864
|
+
// "tpOrderType": "market",
|
|
6865
|
+
// "slOrderType": "limit",
|
|
6866
|
+
// "tpLimitPrice": "",
|
|
6867
|
+
// "slLimitPrice": "113000",
|
|
6868
|
+
// "createdTime": "1753057411736",
|
|
6869
|
+
// "updatedTime": "1753057411747"
|
|
6870
|
+
// }
|
|
6871
|
+
// ]
|
|
6872
|
+
// }
|
|
6873
|
+
//
|
|
5848
6874
|
const data = this.safeValue(response, 'data');
|
|
5849
|
-
if (
|
|
6875
|
+
if (uta) {
|
|
6876
|
+
let result = undefined;
|
|
6877
|
+
if (trigger) {
|
|
6878
|
+
result = this.safeList(response, 'data', []);
|
|
6879
|
+
}
|
|
6880
|
+
else {
|
|
6881
|
+
result = this.safeList(data, 'list', []);
|
|
6882
|
+
}
|
|
6883
|
+
return this.parseOrders(result, market, since, limit);
|
|
6884
|
+
}
|
|
6885
|
+
else if (type === 'spot') {
|
|
5850
6886
|
if ((marginMode !== undefined) || trigger) {
|
|
5851
6887
|
const resultList = this.safeList(data, 'orderList', []);
|
|
5852
6888
|
return this.parseOrders(resultList, market, since, limit);
|
|
@@ -5868,6 +6904,7 @@ class bitget extends bitget$1 {
|
|
|
5868
6904
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5869
6905
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5870
6906
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6907
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
5871
6908
|
* @param {string} symbol unified market symbol of the closed orders
|
|
5872
6909
|
* @param {int} [since] timestamp in ms of the earliest order
|
|
5873
6910
|
* @param {int} [limit] the max number of closed orders to return
|
|
@@ -5895,6 +6932,7 @@ class bitget extends bitget$1 {
|
|
|
5895
6932
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5896
6933
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5897
6934
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6935
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
5898
6936
|
* @param {string} symbol unified market symbol of the canceled orders
|
|
5899
6937
|
* @param {int} [since] timestamp in ms of the earliest order
|
|
5900
6938
|
* @param {int} [limit] the max number of canceled orders to return
|
|
@@ -5921,6 +6959,8 @@ class bitget extends bitget$1 {
|
|
|
5921
6959
|
* @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
|
|
5922
6960
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
|
|
5923
6961
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
|
|
6962
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-History
|
|
6963
|
+
* @see https://www.bitget.com/api-doc/uta/strategy/Get-History-Strategy-Orders
|
|
5924
6964
|
* @description fetches information on multiple canceled and closed orders made by the user
|
|
5925
6965
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
5926
6966
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
@@ -5932,9 +6972,15 @@ class bitget extends bitget$1 {
|
|
|
5932
6972
|
* @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
6973
|
* @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
|
|
5934
6974
|
* @param {boolean} [params.trailing] set to true if you want to fetch trailing orders
|
|
6975
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
5935
6976
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
5936
6977
|
*/
|
|
5937
6978
|
async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
6979
|
+
let uta = undefined;
|
|
6980
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'uta', false);
|
|
6981
|
+
if (uta) {
|
|
6982
|
+
return await this.fetchUtaCanceledAndClosedOrders(symbol, since, limit, params);
|
|
6983
|
+
}
|
|
5938
6984
|
await this.loadMarkets();
|
|
5939
6985
|
let market = undefined;
|
|
5940
6986
|
let request = {};
|
|
@@ -6223,6 +7269,132 @@ class bitget extends bitget$1 {
|
|
|
6223
7269
|
const orders = this.safeList(response, 'data', []);
|
|
6224
7270
|
return this.parseOrders(orders, market, since, limit);
|
|
6225
7271
|
}
|
|
7272
|
+
async fetchUtaCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
7273
|
+
await this.loadMarkets();
|
|
7274
|
+
let market = undefined;
|
|
7275
|
+
if (symbol !== undefined) {
|
|
7276
|
+
market = this.market(symbol);
|
|
7277
|
+
}
|
|
7278
|
+
let productType = undefined;
|
|
7279
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7280
|
+
if (productType === 'SPOT') {
|
|
7281
|
+
let marginMode = undefined;
|
|
7282
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchCanceledAndClosedOrders', params);
|
|
7283
|
+
if (marginMode !== undefined) {
|
|
7284
|
+
productType = 'MARGIN';
|
|
7285
|
+
}
|
|
7286
|
+
}
|
|
7287
|
+
let request = {
|
|
7288
|
+
'category': productType,
|
|
7289
|
+
};
|
|
7290
|
+
let paginate = false;
|
|
7291
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchCanceledAndClosedOrders', 'paginate');
|
|
7292
|
+
if (paginate) {
|
|
7293
|
+
return await this.fetchPaginatedCallCursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, 'cursor', 'cursor');
|
|
7294
|
+
}
|
|
7295
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
7296
|
+
if (since !== undefined) {
|
|
7297
|
+
request['startTime'] = since;
|
|
7298
|
+
}
|
|
7299
|
+
if (limit !== undefined) {
|
|
7300
|
+
request['limit'] = limit;
|
|
7301
|
+
}
|
|
7302
|
+
let response = undefined;
|
|
7303
|
+
const trigger = this.safeBool2(params, 'stop', 'trigger');
|
|
7304
|
+
params = this.omit(params, ['stop', 'trigger']);
|
|
7305
|
+
if (trigger) {
|
|
7306
|
+
response = await this.privateUtaGetV3TradeHistoryStrategyOrders(this.extend(request, params));
|
|
7307
|
+
}
|
|
7308
|
+
else {
|
|
7309
|
+
response = await this.privateUtaGetV3TradeHistoryOrders(this.extend(request, params));
|
|
7310
|
+
}
|
|
7311
|
+
//
|
|
7312
|
+
// uta
|
|
7313
|
+
//
|
|
7314
|
+
// {
|
|
7315
|
+
// "code": "00000",
|
|
7316
|
+
// "msg": "success",
|
|
7317
|
+
// "requestTime": 1752531592855,
|
|
7318
|
+
// "data": {
|
|
7319
|
+
// "list": [
|
|
7320
|
+
// {
|
|
7321
|
+
// "orderId": "1322441400976261120",
|
|
7322
|
+
// "clientOid": "1322441400976261121",
|
|
7323
|
+
// "category": "USDT-FUTURES",
|
|
7324
|
+
// "symbol": "BTCUSDT",
|
|
7325
|
+
// "orderType": "market",
|
|
7326
|
+
// "side": "sell",
|
|
7327
|
+
// "price": "0",
|
|
7328
|
+
// "qty": "0.0001",
|
|
7329
|
+
// "amount": "0",
|
|
7330
|
+
// "cumExecQty": "0.0001",
|
|
7331
|
+
// "cumExecValue": "10.7005",
|
|
7332
|
+
// "avgPrice": "107005.4",
|
|
7333
|
+
// "timeInForce": "gtc",
|
|
7334
|
+
// "orderStatus": "filled",
|
|
7335
|
+
// "posSide": "long",
|
|
7336
|
+
// "holdMode": "hedge_mode",
|
|
7337
|
+
// "reduceOnly": "NO",
|
|
7338
|
+
// "feeDetail": [
|
|
7339
|
+
// {
|
|
7340
|
+
// "feeCoin": "USDT",
|
|
7341
|
+
// "fee": "0.00642032"
|
|
7342
|
+
// }
|
|
7343
|
+
// ],
|
|
7344
|
+
// "createdTime": "1751020520442",
|
|
7345
|
+
// "updatedTime": "1751020520457",
|
|
7346
|
+
// "cancelReason": "",
|
|
7347
|
+
// "execType": "normal",
|
|
7348
|
+
// "stpMode": "none",
|
|
7349
|
+
// "tpTriggerBy": null,
|
|
7350
|
+
// "slTriggerBy": null,
|
|
7351
|
+
// "takeProfit": null,
|
|
7352
|
+
// "stopLoss": null,
|
|
7353
|
+
// "tpOrderType": null,
|
|
7354
|
+
// "slOrderType": null,
|
|
7355
|
+
// "tpLimitPrice": null,
|
|
7356
|
+
// "slLimitPrice": null
|
|
7357
|
+
// },
|
|
7358
|
+
// ],
|
|
7359
|
+
// "cursor": "1322441328637100035"
|
|
7360
|
+
// }
|
|
7361
|
+
// }
|
|
7362
|
+
//
|
|
7363
|
+
// uta trigger
|
|
7364
|
+
//
|
|
7365
|
+
// {
|
|
7366
|
+
// "code": "00000",
|
|
7367
|
+
// "msg": "success",
|
|
7368
|
+
// "requestTime": 1753058447920,
|
|
7369
|
+
// "data": {
|
|
7370
|
+
// "list": [
|
|
7371
|
+
// {
|
|
7372
|
+
// "orderId": "1330984742276198400",
|
|
7373
|
+
// "clientOid": "1330984742276198400",
|
|
7374
|
+
// "symbol": "BTCUSDT",
|
|
7375
|
+
// "category": "USDT-FUTURES",
|
|
7376
|
+
// "qty": "0.001",
|
|
7377
|
+
// "posSide": "long",
|
|
7378
|
+
// "tpTriggerBy": "market",
|
|
7379
|
+
// "slTriggerBy": "mark",
|
|
7380
|
+
// "takeProfit": "",
|
|
7381
|
+
// "stopLoss": "112000",
|
|
7382
|
+
// "tpOrderType": "market",
|
|
7383
|
+
// "slOrderType": "limit",
|
|
7384
|
+
// "tpLimitPrice": "",
|
|
7385
|
+
// "slLimitPrice": "111000",
|
|
7386
|
+
// "createdTime": "1753057411736",
|
|
7387
|
+
// "updatedTime": "1753058267412"
|
|
7388
|
+
// },
|
|
7389
|
+
// ],
|
|
7390
|
+
// "cursor": 1330960754317619202
|
|
7391
|
+
// }
|
|
7392
|
+
// }
|
|
7393
|
+
//
|
|
7394
|
+
const data = this.safeDict(response, 'data', {});
|
|
7395
|
+
const orders = this.safeList(data, 'list', []);
|
|
7396
|
+
return this.parseOrders(orders, market, since, limit);
|
|
7397
|
+
}
|
|
6226
7398
|
/**
|
|
6227
7399
|
* @method
|
|
6228
7400
|
* @name bitget#fetchLedger
|
|
@@ -6449,69 +7621,84 @@ class bitget extends bitget$1 {
|
|
|
6449
7621
|
* @see https://www.bitget.com/api-doc/contract/trade/Get-Order-Fills
|
|
6450
7622
|
* @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-Fills
|
|
6451
7623
|
* @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Transaction-Details
|
|
7624
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Order-Fills
|
|
6452
7625
|
* @param {string} symbol unified market symbol
|
|
6453
7626
|
* @param {int} [since] the earliest time in ms to fetch trades for
|
|
6454
7627
|
* @param {int} [limit] the maximum number of trades structures to retrieve
|
|
6455
7628
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
6456
7629
|
* @param {int} [params.until] the latest time in ms to fetch trades for
|
|
7630
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
6457
7631
|
* @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
7632
|
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
6459
7633
|
*/
|
|
6460
7634
|
async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
6461
|
-
|
|
7635
|
+
let uta = undefined;
|
|
7636
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'uta', false);
|
|
7637
|
+
if (!uta && (symbol === undefined)) {
|
|
6462
7638
|
throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
6463
7639
|
}
|
|
6464
7640
|
await this.loadMarkets();
|
|
6465
7641
|
const market = this.market(symbol);
|
|
6466
|
-
let
|
|
6467
|
-
[
|
|
7642
|
+
let request = {};
|
|
7643
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
7644
|
+
if (since !== undefined) {
|
|
7645
|
+
request['startTime'] = since;
|
|
7646
|
+
}
|
|
7647
|
+
if (limit !== undefined) {
|
|
7648
|
+
request['limit'] = limit;
|
|
7649
|
+
}
|
|
6468
7650
|
let paginate = false;
|
|
7651
|
+
let marginMode = undefined;
|
|
6469
7652
|
[paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
|
|
7653
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
6470
7654
|
if (paginate) {
|
|
6471
7655
|
let cursorReceived = undefined;
|
|
6472
|
-
|
|
7656
|
+
let cursorSent = undefined;
|
|
7657
|
+
if (uta) {
|
|
7658
|
+
cursorReceived = 'cursor';
|
|
7659
|
+
cursorSent = 'cursor';
|
|
7660
|
+
}
|
|
7661
|
+
else if (market['spot']) {
|
|
6473
7662
|
if (marginMode !== undefined) {
|
|
6474
7663
|
cursorReceived = 'minId';
|
|
7664
|
+
cursorSent = 'idLessThan';
|
|
6475
7665
|
}
|
|
6476
7666
|
}
|
|
6477
7667
|
else {
|
|
6478
7668
|
cursorReceived = 'endId';
|
|
7669
|
+
cursorSent = 'idLessThan';
|
|
6479
7670
|
}
|
|
6480
|
-
return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived,
|
|
7671
|
+
return await this.fetchPaginatedCallCursor('fetchMyTrades', symbol, since, limit, params, cursorReceived, cursorSent);
|
|
6481
7672
|
}
|
|
6482
7673
|
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;
|
|
7674
|
+
if (uta) {
|
|
7675
|
+
response = await this.privateUtaGetV3TradeFills(this.extend(request, params));
|
|
6492
7676
|
}
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
|
|
6499
|
-
|
|
7677
|
+
else {
|
|
7678
|
+
request['symbol'] = market['id'];
|
|
7679
|
+
if (market['spot']) {
|
|
7680
|
+
if (marginMode !== undefined) {
|
|
7681
|
+
if (since === undefined) {
|
|
7682
|
+
request['startTime'] = this.milliseconds() - 7776000000;
|
|
7683
|
+
}
|
|
7684
|
+
if (marginMode === 'isolated') {
|
|
7685
|
+
response = await this.privateMarginGetV2MarginIsolatedFills(this.extend(request, params));
|
|
7686
|
+
}
|
|
7687
|
+
else if (marginMode === 'cross') {
|
|
7688
|
+
response = await this.privateMarginGetV2MarginCrossedFills(this.extend(request, params));
|
|
7689
|
+
}
|
|
6500
7690
|
}
|
|
6501
|
-
else
|
|
6502
|
-
response = await this.
|
|
7691
|
+
else {
|
|
7692
|
+
response = await this.privateSpotGetV2SpotTradeFills(this.extend(request, params));
|
|
6503
7693
|
}
|
|
6504
7694
|
}
|
|
6505
7695
|
else {
|
|
6506
|
-
|
|
7696
|
+
let productType = undefined;
|
|
7697
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7698
|
+
request['productType'] = productType;
|
|
7699
|
+
response = await this.privateMixGetV2MixOrderFills(this.extend(request, params));
|
|
6507
7700
|
}
|
|
6508
7701
|
}
|
|
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
7702
|
//
|
|
6516
7703
|
// spot
|
|
6517
7704
|
//
|
|
@@ -6611,10 +7798,46 @@ class bitget extends bitget$1 {
|
|
|
6611
7798
|
// }
|
|
6612
7799
|
// }
|
|
6613
7800
|
//
|
|
7801
|
+
// uta
|
|
7802
|
+
//
|
|
7803
|
+
// {
|
|
7804
|
+
// "code": "00000",
|
|
7805
|
+
// "msg": "success",
|
|
7806
|
+
// "requestTime": 1751099666579,
|
|
7807
|
+
// "data": {
|
|
7808
|
+
// "list": [
|
|
7809
|
+
// {
|
|
7810
|
+
// "execId": "1322441401010528257",
|
|
7811
|
+
// "orderId": "1322441400976261120",
|
|
7812
|
+
// "category": "USDT-FUTURES",
|
|
7813
|
+
// "symbol": "BTCUSDT",
|
|
7814
|
+
// "orderType": "market",
|
|
7815
|
+
// "side": "sell",
|
|
7816
|
+
// "execPrice": "107005.4",
|
|
7817
|
+
// "execQty": "0.0001",
|
|
7818
|
+
// "execValue": "10.7005",
|
|
7819
|
+
// "tradeScope": "taker",
|
|
7820
|
+
// "feeDetail": [{
|
|
7821
|
+
// "feeCoin": "USDT",
|
|
7822
|
+
// "fee":"0.00642032"
|
|
7823
|
+
// }],
|
|
7824
|
+
// "createdTime": "1751020520451",
|
|
7825
|
+
// "updatedTime": "1751020520458",
|
|
7826
|
+
// "execPnl": "0.00017"
|
|
7827
|
+
// },
|
|
7828
|
+
// ],
|
|
7829
|
+
// "cursor": "1322061241878880257"
|
|
7830
|
+
// }
|
|
7831
|
+
// }
|
|
7832
|
+
//
|
|
6614
7833
|
const data = this.safeValue(response, 'data');
|
|
6615
|
-
if (
|
|
6616
|
-
const
|
|
6617
|
-
return this.parseTrades(
|
|
7834
|
+
if (uta) {
|
|
7835
|
+
const fills = this.safeList(data, 'list', []);
|
|
7836
|
+
return this.parseTrades(fills, market, since, limit);
|
|
7837
|
+
}
|
|
7838
|
+
else if ((market['swap'] || (market['future']))) {
|
|
7839
|
+
const fills = this.safeList(data, 'fillList', []);
|
|
7840
|
+
return this.parseTrades(fills, market, since, limit);
|
|
6618
7841
|
}
|
|
6619
7842
|
else if (marginMode !== undefined) {
|
|
6620
7843
|
const fills = this.safeList(data, 'fills', []);
|
|
@@ -6627,8 +7850,10 @@ class bitget extends bitget$1 {
|
|
|
6627
7850
|
* @name bitget#fetchPosition
|
|
6628
7851
|
* @description fetch data on a single open contract trade position
|
|
6629
7852
|
* @see https://www.bitget.com/api-doc/contract/position/get-single-position
|
|
7853
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Position
|
|
6630
7854
|
* @param {string} symbol unified market symbol of the market the position is held in
|
|
6631
7855
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7856
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
6632
7857
|
* @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
6633
7858
|
*/
|
|
6634
7859
|
async fetchPosition(symbol, params = {}) {
|
|
@@ -6638,42 +7863,92 @@ class bitget extends bitget$1 {
|
|
|
6638
7863
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
6639
7864
|
const request = {
|
|
6640
7865
|
'symbol': market['id'],
|
|
6641
|
-
'marginCoin': market['settleId'],
|
|
6642
|
-
'productType': productType,
|
|
6643
7866
|
};
|
|
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
|
-
|
|
7867
|
+
let response = undefined;
|
|
7868
|
+
let uta = undefined;
|
|
7869
|
+
let result = undefined;
|
|
7870
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchPosition', 'uta', false);
|
|
7871
|
+
if (uta) {
|
|
7872
|
+
request['category'] = productType;
|
|
7873
|
+
response = await this.privateUtaGetV3PositionCurrentPosition(this.extend(request, params));
|
|
7874
|
+
//
|
|
7875
|
+
// {
|
|
7876
|
+
// "code": "00000",
|
|
7877
|
+
// "msg": "success",
|
|
7878
|
+
// "requestTime": 1750929905423,
|
|
7879
|
+
// "data": {
|
|
7880
|
+
// "list": [
|
|
7881
|
+
// {
|
|
7882
|
+
// "category": "USDT-FUTURES",
|
|
7883
|
+
// "symbol": "BTCUSDT",
|
|
7884
|
+
// "marginCoin": "USDT",
|
|
7885
|
+
// "holdMode": "hedge_mode",
|
|
7886
|
+
// "posSide": "long",
|
|
7887
|
+
// "marginMode": "crossed",
|
|
7888
|
+
// "positionBalance": "5.435199",
|
|
7889
|
+
// "available": "0.001",
|
|
7890
|
+
// "frozen": "0",
|
|
7891
|
+
// "total": "0.001",
|
|
7892
|
+
// "leverage": "20",
|
|
7893
|
+
// "curRealisedPnl": "0",
|
|
7894
|
+
// "avgPrice": "107410.3",
|
|
7895
|
+
// "positionStatus": "normal",
|
|
7896
|
+
// "unrealisedPnl": "0.0047",
|
|
7897
|
+
// "liquidationPrice": "0",
|
|
7898
|
+
// "mmr": "0.004",
|
|
7899
|
+
// "profitRate": "0.0008647337475591",
|
|
7900
|
+
// "markPrice": "107415.3",
|
|
7901
|
+
// "breakEvenPrice": "107539.2",
|
|
7902
|
+
// "totalFunding": "0",
|
|
7903
|
+
// "openFeeTotal": "-0.06444618",
|
|
7904
|
+
// "closeFeeTotal": "0",
|
|
7905
|
+
// "createdTime": "1750495670699",
|
|
7906
|
+
// "updatedTime": "1750929883465"
|
|
7907
|
+
// }
|
|
7908
|
+
// ]
|
|
7909
|
+
// }
|
|
7910
|
+
// }
|
|
7911
|
+
//
|
|
7912
|
+
const data = this.safeDict(response, 'data', {});
|
|
7913
|
+
result = this.safeList(data, 'list', []);
|
|
7914
|
+
}
|
|
7915
|
+
else {
|
|
7916
|
+
request['marginCoin'] = market['settleId'];
|
|
7917
|
+
request['productType'] = productType;
|
|
7918
|
+
response = await this.privateMixGetV2MixPositionSinglePosition(this.extend(request, params));
|
|
7919
|
+
//
|
|
7920
|
+
// {
|
|
7921
|
+
// "code": "00000",
|
|
7922
|
+
// "msg": "success",
|
|
7923
|
+
// "requestTime": 1700807531673,
|
|
7924
|
+
// "data": [
|
|
7925
|
+
// {
|
|
7926
|
+
// "marginCoin": "USDT",
|
|
7927
|
+
// "symbol": "BTCUSDT",
|
|
7928
|
+
// "holdSide": "long",
|
|
7929
|
+
// "openDelegateSize": "0",
|
|
7930
|
+
// "marginSize": "3.73555",
|
|
7931
|
+
// "available": "0.002",
|
|
7932
|
+
// "locked": "0",
|
|
7933
|
+
// "total": "0.002",
|
|
7934
|
+
// "leverage": "20",
|
|
7935
|
+
// "achievedProfits": "0",
|
|
7936
|
+
// "openPriceAvg": "37355.5",
|
|
7937
|
+
// "marginMode": "crossed",
|
|
7938
|
+
// "posMode": "hedge_mode",
|
|
7939
|
+
// "unrealizedPL": "0.007",
|
|
7940
|
+
// "liquidationPrice": "31724.970702417",
|
|
7941
|
+
// "keepMarginRate": "0.004",
|
|
7942
|
+
// "markPrice": "37359",
|
|
7943
|
+
// "marginRatio": "0.029599540355",
|
|
7944
|
+
// "cTime": "1700807507275"
|
|
7945
|
+
// }
|
|
7946
|
+
// ]
|
|
7947
|
+
// }
|
|
7948
|
+
//
|
|
7949
|
+
result = this.safeList(response, 'data', []);
|
|
7950
|
+
}
|
|
7951
|
+
const first = this.safeDict(result, 0, {});
|
|
6677
7952
|
return this.parsePosition(first, market);
|
|
6678
7953
|
}
|
|
6679
7954
|
/**
|
|
@@ -6853,6 +8128,36 @@ class bitget extends bitget$1 {
|
|
|
6853
8128
|
// "cTime": "1700807507275"
|
|
6854
8129
|
// }
|
|
6855
8130
|
//
|
|
8131
|
+
// uta: fetchPosition
|
|
8132
|
+
//
|
|
8133
|
+
// {
|
|
8134
|
+
// "category": "USDT-FUTURES",
|
|
8135
|
+
// "symbol": "BTCUSDT",
|
|
8136
|
+
// "marginCoin": "USDT",
|
|
8137
|
+
// "holdMode": "hedge_mode",
|
|
8138
|
+
// "posSide": "long",
|
|
8139
|
+
// "marginMode": "crossed",
|
|
8140
|
+
// "positionBalance": "5.435199",
|
|
8141
|
+
// "available": "0.001",
|
|
8142
|
+
// "frozen": "0",
|
|
8143
|
+
// "total": "0.001",
|
|
8144
|
+
// "leverage": "20",
|
|
8145
|
+
// "curRealisedPnl": "0",
|
|
8146
|
+
// "avgPrice": "107410.3",
|
|
8147
|
+
// "positionStatus": "normal",
|
|
8148
|
+
// "unrealisedPnl": "0.0047",
|
|
8149
|
+
// "liquidationPrice": "0",
|
|
8150
|
+
// "mmr": "0.004",
|
|
8151
|
+
// "profitRate": "0.0008647337475591",
|
|
8152
|
+
// "markPrice": "107415.3",
|
|
8153
|
+
// "breakEvenPrice": "107539.2",
|
|
8154
|
+
// "totalFunding": "0",
|
|
8155
|
+
// "openFeeTotal": "-0.06444618",
|
|
8156
|
+
// "closeFeeTotal": "0",
|
|
8157
|
+
// "createdTime": "1750495670699",
|
|
8158
|
+
// "updatedTime": "1750929883465"
|
|
8159
|
+
// }
|
|
8160
|
+
//
|
|
6856
8161
|
// fetchPositions: privateMixGetV2MixPositionAllPosition
|
|
6857
8162
|
//
|
|
6858
8163
|
// {
|
|
@@ -6904,15 +8209,38 @@ class bitget extends bitget$1 {
|
|
|
6904
8209
|
// "clientOid": "1120923953904893956"
|
|
6905
8210
|
// }
|
|
6906
8211
|
//
|
|
8212
|
+
// uta: fetchPositionsHistory
|
|
8213
|
+
//
|
|
8214
|
+
// {
|
|
8215
|
+
// "positionId": "1322441328637100049",
|
|
8216
|
+
// "category": "USDT-FUTURES",
|
|
8217
|
+
// "symbol": "BTCUSDT",
|
|
8218
|
+
// "marginCoin": "USDT",
|
|
8219
|
+
// "holdMode": "hedge_mode",
|
|
8220
|
+
// "posSide": "long",
|
|
8221
|
+
// "marginMode": "crossed",
|
|
8222
|
+
// "openPriceAvg": "107003.7",
|
|
8223
|
+
// "closePriceAvg": "107005.4",
|
|
8224
|
+
// "openTotalPos": "0.0001",
|
|
8225
|
+
// "closeTotalPos": "0.0001",
|
|
8226
|
+
// "cumRealisedPnl": "0.00017",
|
|
8227
|
+
// "netProfit": "-0.01267055",
|
|
8228
|
+
// "totalFunding": "0",
|
|
8229
|
+
// "openFeeTotal": "-0.00642022",
|
|
8230
|
+
// "closeFeeTotal": "-0.00642032",
|
|
8231
|
+
// "createdTime": "1751020503195",
|
|
8232
|
+
// "updatedTime": "1751020520458"
|
|
8233
|
+
// }
|
|
8234
|
+
//
|
|
6907
8235
|
const marketId = this.safeString(position, 'symbol');
|
|
6908
8236
|
market = this.safeMarket(marketId, market, undefined, 'contract');
|
|
6909
8237
|
const symbol = market['symbol'];
|
|
6910
|
-
const timestamp = this.
|
|
8238
|
+
const timestamp = this.safeIntegerN(position, ['cTime', 'ctime', 'createdTime']);
|
|
6911
8239
|
let marginMode = this.safeString(position, 'marginMode');
|
|
6912
8240
|
let collateral = undefined;
|
|
6913
8241
|
let initialMargin = undefined;
|
|
6914
|
-
const unrealizedPnl = this.
|
|
6915
|
-
const rawCollateral = this.
|
|
8242
|
+
const unrealizedPnl = this.safeString2(position, 'unrealizedPL', 'unrealisedPnl');
|
|
8243
|
+
const rawCollateral = this.safeString2(position, 'marginSize', 'positionBalance');
|
|
6916
8244
|
if (marginMode === 'isolated') {
|
|
6917
8245
|
collateral = Precise["default"].stringAdd(rawCollateral, unrealizedPnl);
|
|
6918
8246
|
}
|
|
@@ -6920,7 +8248,7 @@ class bitget extends bitget$1 {
|
|
|
6920
8248
|
marginMode = 'cross';
|
|
6921
8249
|
initialMargin = rawCollateral;
|
|
6922
8250
|
}
|
|
6923
|
-
const holdMode = this.
|
|
8251
|
+
const holdMode = this.safeString2(position, 'posMode', 'holdMode');
|
|
6924
8252
|
let hedged = undefined;
|
|
6925
8253
|
if (holdMode === 'hedge_mode') {
|
|
6926
8254
|
hedged = true;
|
|
@@ -6928,12 +8256,12 @@ class bitget extends bitget$1 {
|
|
|
6928
8256
|
else if (holdMode === 'one_way_mode') {
|
|
6929
8257
|
hedged = false;
|
|
6930
8258
|
}
|
|
6931
|
-
const side = this.
|
|
8259
|
+
const side = this.safeString2(position, 'holdSide', 'posSide');
|
|
6932
8260
|
const leverage = this.safeString(position, 'leverage');
|
|
6933
8261
|
const contractSizeNumber = this.safeValue(market, 'contractSize');
|
|
6934
8262
|
const contractSize = this.numberToString(contractSizeNumber);
|
|
6935
|
-
const baseAmount = this.
|
|
6936
|
-
const entryPrice = this.
|
|
8263
|
+
const baseAmount = this.safeString2(position, 'total', 'openTotalPos');
|
|
8264
|
+
const entryPrice = this.safeStringN(position, ['openPriceAvg', 'openAvgPrice', 'avgPrice']);
|
|
6937
8265
|
const maintenanceMarginPercentage = this.safeString(position, 'keepMarginRate');
|
|
6938
8266
|
const openNotional = Precise["default"].stringMul(entryPrice, baseAmount);
|
|
6939
8267
|
if (initialMargin === undefined) {
|
|
@@ -6971,31 +8299,31 @@ class bitget extends bitget$1 {
|
|
|
6971
8299
|
const percentage = Precise["default"].stringMul(Precise["default"].stringDiv(unrealizedPnl, initialMargin, 4), '100');
|
|
6972
8300
|
return this.safePosition({
|
|
6973
8301
|
'info': position,
|
|
6974
|
-
'id': this.
|
|
8302
|
+
'id': this.safeString2(position, 'orderId', 'positionId'),
|
|
6975
8303
|
'symbol': symbol,
|
|
6976
8304
|
'notional': this.parseNumber(notional),
|
|
6977
8305
|
'marginMode': marginMode,
|
|
6978
8306
|
'liquidationPrice': liquidationPrice,
|
|
6979
8307
|
'entryPrice': this.parseNumber(entryPrice),
|
|
6980
8308
|
'unrealizedPnl': this.parseNumber(unrealizedPnl),
|
|
6981
|
-
'realizedPnl': this.
|
|
8309
|
+
'realizedPnl': this.safeNumberN(position, ['pnl', 'curRealisedPnl', 'cumRealisedPnl']),
|
|
6982
8310
|
'percentage': this.parseNumber(percentage),
|
|
6983
8311
|
'contracts': contracts,
|
|
6984
8312
|
'contractSize': contractSizeNumber,
|
|
6985
8313
|
'markPrice': this.parseNumber(markPrice),
|
|
6986
|
-
'lastPrice': this.
|
|
8314
|
+
'lastPrice': this.safeNumber2(position, 'closeAvgPrice', 'closePriceAvg'),
|
|
6987
8315
|
'side': side,
|
|
6988
8316
|
'hedged': hedged,
|
|
6989
8317
|
'timestamp': timestamp,
|
|
6990
8318
|
'datetime': this.iso8601(timestamp),
|
|
6991
|
-
'lastUpdateTimestamp': this.
|
|
8319
|
+
'lastUpdateTimestamp': this.safeInteger2(position, 'utime', 'updatedTime'),
|
|
6992
8320
|
'maintenanceMargin': this.parseNumber(maintenanceMargin),
|
|
6993
8321
|
'maintenanceMarginPercentage': this.parseNumber(maintenanceMarginPercentage),
|
|
6994
8322
|
'collateral': this.parseNumber(collateral),
|
|
6995
8323
|
'initialMargin': this.parseNumber(initialMargin),
|
|
6996
8324
|
'initialMarginPercentage': this.parseNumber(initialMarginPercentage),
|
|
6997
8325
|
'leverage': this.parseNumber(leverage),
|
|
6998
|
-
'marginRatio': this.
|
|
8326
|
+
'marginRatio': this.safeNumber2(position, 'marginRatio', 'mmr'),
|
|
6999
8327
|
'stopLossPrice': undefined,
|
|
7000
8328
|
'takeProfitPrice': undefined,
|
|
7001
8329
|
});
|
|
@@ -7005,10 +8333,12 @@ class bitget extends bitget$1 {
|
|
|
7005
8333
|
* @name bitget#fetchFundingRateHistory
|
|
7006
8334
|
* @description fetches historical funding rate prices
|
|
7007
8335
|
* @see https://www.bitget.com/api-doc/contract/market/Get-History-Funding-Rate
|
|
8336
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-History-Funding-Rate
|
|
7008
8337
|
* @param {string} symbol unified symbol of the market to fetch the funding rate history for
|
|
7009
8338
|
* @param {int} [since] timestamp in ms of the earliest funding rate to fetch
|
|
7010
8339
|
* @param {int} [limit] the maximum amount of funding rate structures to fetch
|
|
7011
8340
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8341
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7012
8342
|
* @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
8343
|
* @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
|
|
7014
8344
|
*/
|
|
@@ -7017,45 +8347,74 @@ class bitget extends bitget$1 {
|
|
|
7017
8347
|
throw new errors.ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
|
|
7018
8348
|
}
|
|
7019
8349
|
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
8350
|
const market = this.market(symbol);
|
|
7026
|
-
let productType = undefined;
|
|
7027
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7028
8351
|
const request = {
|
|
7029
8352
|
'symbol': market['id'],
|
|
7030
|
-
'productType': productType,
|
|
7031
|
-
// 'pageSize': limit, // default 20
|
|
7032
|
-
// 'pageNo': 1,
|
|
7033
8353
|
};
|
|
7034
|
-
|
|
7035
|
-
|
|
8354
|
+
let productType = undefined;
|
|
8355
|
+
let uta = undefined;
|
|
8356
|
+
let response = undefined;
|
|
8357
|
+
let result = undefined;
|
|
8358
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
8359
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'uta', false);
|
|
8360
|
+
if (uta) {
|
|
8361
|
+
if (limit !== undefined) {
|
|
8362
|
+
request['limit'] = limit;
|
|
8363
|
+
}
|
|
8364
|
+
request['category'] = productType;
|
|
8365
|
+
response = await this.publicUtaGetV3MarketHistoryFundRate(this.extend(request, params));
|
|
8366
|
+
//
|
|
8367
|
+
// {
|
|
8368
|
+
// "code": "00000",
|
|
8369
|
+
// "msg": "success",
|
|
8370
|
+
// "requestTime": 1750435113658,
|
|
8371
|
+
// "data": {
|
|
8372
|
+
// "resultList": [
|
|
8373
|
+
// {
|
|
8374
|
+
// "symbol": "BTCUSDT",
|
|
8375
|
+
// "fundingRate": "-0.000017",
|
|
8376
|
+
// "fundingRateTimestamp": "1750431600000"
|
|
8377
|
+
// },
|
|
8378
|
+
// ]
|
|
8379
|
+
// }
|
|
8380
|
+
// }
|
|
8381
|
+
//
|
|
8382
|
+
const data = this.safeDict(response, 'data', {});
|
|
8383
|
+
result = this.safeList(data, 'resultList', []);
|
|
8384
|
+
}
|
|
8385
|
+
else {
|
|
8386
|
+
let paginate = false;
|
|
8387
|
+
[paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
|
|
8388
|
+
if (paginate) {
|
|
8389
|
+
return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
|
|
8390
|
+
}
|
|
8391
|
+
if (limit !== undefined) {
|
|
8392
|
+
request['pageSize'] = limit;
|
|
8393
|
+
}
|
|
8394
|
+
request['productType'] = productType;
|
|
8395
|
+
response = await this.publicMixGetV2MixMarketHistoryFundRate(this.extend(request, params));
|
|
8396
|
+
//
|
|
8397
|
+
// {
|
|
8398
|
+
// "code": "00000",
|
|
8399
|
+
// "msg": "success",
|
|
8400
|
+
// "requestTime": 1652406728393,
|
|
8401
|
+
// "data": [
|
|
8402
|
+
// {
|
|
8403
|
+
// "symbol": "BTCUSDT",
|
|
8404
|
+
// "fundingRate": "-0.0003",
|
|
8405
|
+
// "fundingTime": "1652396400000"
|
|
8406
|
+
// },
|
|
8407
|
+
// ]
|
|
8408
|
+
// }
|
|
8409
|
+
//
|
|
8410
|
+
result = this.safeList(response, 'data', []);
|
|
7036
8411
|
}
|
|
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
8412
|
const rates = [];
|
|
7054
|
-
for (let i = 0; i <
|
|
7055
|
-
const entry =
|
|
8413
|
+
for (let i = 0; i < result.length; i++) {
|
|
8414
|
+
const entry = result[i];
|
|
7056
8415
|
const marketId = this.safeString(entry, 'symbol');
|
|
7057
8416
|
const symbolInner = this.safeSymbol(marketId, market);
|
|
7058
|
-
const timestamp = this.
|
|
8417
|
+
const timestamp = this.safeInteger2(entry, 'fundingTime', 'fundingRateTimestamp');
|
|
7059
8418
|
rates.push({
|
|
7060
8419
|
'info': entry,
|
|
7061
8420
|
'symbol': symbolInner,
|
|
@@ -7073,8 +8432,10 @@ class bitget extends bitget$1 {
|
|
|
7073
8432
|
* @description fetch the current funding rate
|
|
7074
8433
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Current-Funding-Rate
|
|
7075
8434
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
|
|
8435
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
|
|
7076
8436
|
* @param {string} symbol unified market symbol
|
|
7077
8437
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8438
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7078
8439
|
* @param {string} [params.method] either (default) 'publicMixGetV2MixMarketCurrentFundRate' or 'publicMixGetV2MixMarketFundingTime'
|
|
7079
8440
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
7080
8441
|
*/
|
|
@@ -7088,24 +8449,23 @@ class bitget extends bitget$1 {
|
|
|
7088
8449
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7089
8450
|
const request = {
|
|
7090
8451
|
'symbol': market['id'],
|
|
7091
|
-
'productType': productType,
|
|
7092
8452
|
};
|
|
7093
|
-
let
|
|
7094
|
-
[method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
|
|
8453
|
+
let uta = undefined;
|
|
7095
8454
|
let response = undefined;
|
|
7096
|
-
|
|
7097
|
-
|
|
8455
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'uta', false);
|
|
8456
|
+
if (uta) {
|
|
8457
|
+
response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
|
|
7098
8458
|
//
|
|
7099
8459
|
// {
|
|
7100
8460
|
// "code": "00000",
|
|
7101
8461
|
// "msg": "success",
|
|
7102
|
-
// "requestTime":
|
|
8462
|
+
// "requestTime": 1750897372153,
|
|
7103
8463
|
// "data": [
|
|
7104
8464
|
// {
|
|
7105
8465
|
// "symbol": "BTCUSDT",
|
|
7106
|
-
// "fundingRate": "
|
|
8466
|
+
// "fundingRate": "0.00001",
|
|
7107
8467
|
// "fundingRateInterval": "8",
|
|
7108
|
-
// "nextUpdate": "
|
|
8468
|
+
// "nextUpdate": "1750924800000",
|
|
7109
8469
|
// "minFundingRate": "-0.003",
|
|
7110
8470
|
// "maxFundingRate": "0.003"
|
|
7111
8471
|
// }
|
|
@@ -7113,22 +8473,47 @@ class bitget extends bitget$1 {
|
|
|
7113
8473
|
// }
|
|
7114
8474
|
//
|
|
7115
8475
|
}
|
|
7116
|
-
else
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7130
|
-
|
|
7131
|
-
|
|
8476
|
+
else {
|
|
8477
|
+
request['productType'] = productType;
|
|
8478
|
+
let method = undefined;
|
|
8479
|
+
[method, params] = this.handleOptionAndParams(params, 'fetchFundingRate', 'method', 'publicMixGetV2MixMarketCurrentFundRate');
|
|
8480
|
+
if (method === 'publicMixGetV2MixMarketCurrentFundRate') {
|
|
8481
|
+
response = await this.publicMixGetV2MixMarketCurrentFundRate(this.extend(request, params));
|
|
8482
|
+
//
|
|
8483
|
+
// {
|
|
8484
|
+
// "code": "00000",
|
|
8485
|
+
// "msg": "success",
|
|
8486
|
+
// "requestTime": 1745500709429,
|
|
8487
|
+
// "data": [
|
|
8488
|
+
// {
|
|
8489
|
+
// "symbol": "BTCUSDT",
|
|
8490
|
+
// "fundingRate": "-0.000013",
|
|
8491
|
+
// "fundingRateInterval": "8",
|
|
8492
|
+
// "nextUpdate": "1745510400000",
|
|
8493
|
+
// "minFundingRate": "-0.003",
|
|
8494
|
+
// "maxFundingRate": "0.003"
|
|
8495
|
+
// }
|
|
8496
|
+
// ]
|
|
8497
|
+
// }
|
|
8498
|
+
//
|
|
8499
|
+
}
|
|
8500
|
+
else if (method === 'publicMixGetV2MixMarketFundingTime') {
|
|
8501
|
+
response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
|
|
8502
|
+
//
|
|
8503
|
+
// {
|
|
8504
|
+
// "code": "00000",
|
|
8505
|
+
// "msg": "success",
|
|
8506
|
+
// "requestTime": 1745402092428,
|
|
8507
|
+
// "data": [
|
|
8508
|
+
// {
|
|
8509
|
+
// "symbol": "BTCUSDT",
|
|
8510
|
+
// "nextFundingTime": "1745424000000",
|
|
8511
|
+
// "ratePeriod": "8"
|
|
8512
|
+
// }
|
|
8513
|
+
// ]
|
|
8514
|
+
// }
|
|
8515
|
+
//
|
|
8516
|
+
}
|
|
7132
8517
|
}
|
|
7133
8518
|
const data = this.safeList(response, 'data', []);
|
|
7134
8519
|
return this.parseFundingRate(data[0], market);
|
|
@@ -7194,7 +8579,7 @@ class bitget extends bitget$1 {
|
|
|
7194
8579
|
}
|
|
7195
8580
|
parseFundingRate(contract, market = undefined) {
|
|
7196
8581
|
//
|
|
7197
|
-
// fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate
|
|
8582
|
+
// fetchFundingRate: publicMixGetV2MixMarketCurrentFundRate, publicUtaGetV3MarketCurrentFundRate
|
|
7198
8583
|
//
|
|
7199
8584
|
// {
|
|
7200
8585
|
// "symbol": "BTCUSDT",
|
|
@@ -7552,10 +8937,13 @@ class bitget extends bitget$1 {
|
|
|
7552
8937
|
* @name bitget#setLeverage
|
|
7553
8938
|
* @description set the level of leverage for a market
|
|
7554
8939
|
* @see https://www.bitget.com/api-doc/contract/account/Change-Leverage
|
|
8940
|
+
* @see https://www.bitget.com/api-doc/uta/account/Change-Leverage
|
|
7555
8941
|
* @param {int} leverage the rate of leverage
|
|
7556
8942
|
* @param {string} symbol unified market symbol
|
|
7557
8943
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7558
8944
|
* @param {string} [params.holdSide] *isolated only* position direction, 'long' or 'short'
|
|
8945
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8946
|
+
* @param {boolean} [params.posSide] required for uta isolated margin, long or short
|
|
7559
8947
|
* @returns {object} response from the exchange
|
|
7560
8948
|
*/
|
|
7561
8949
|
async setLeverage(leverage, symbol = undefined, params = {}) {
|
|
@@ -7568,27 +8956,51 @@ class bitget extends bitget$1 {
|
|
|
7568
8956
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7569
8957
|
const request = {
|
|
7570
8958
|
'symbol': market['id'],
|
|
7571
|
-
'marginCoin': market['settleId'],
|
|
7572
8959
|
'leverage': this.numberToString(leverage),
|
|
7573
|
-
'productType': productType,
|
|
7574
|
-
// 'holdSide': 'long',
|
|
7575
8960
|
};
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
8961
|
+
let uta = undefined;
|
|
8962
|
+
let response = undefined;
|
|
8963
|
+
[uta, params] = this.handleOptionAndParams(params, 'setLeverage', 'uta', false);
|
|
8964
|
+
if (uta) {
|
|
8965
|
+
if (productType === 'SPOT') {
|
|
8966
|
+
let marginMode = undefined;
|
|
8967
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchTrades', params);
|
|
8968
|
+
if (marginMode !== undefined) {
|
|
8969
|
+
productType = 'MARGIN';
|
|
8970
|
+
}
|
|
8971
|
+
}
|
|
8972
|
+
request['coin'] = market['settleId'];
|
|
8973
|
+
request['category'] = productType;
|
|
8974
|
+
response = await this.privateUtaPostV3AccountSetLeverage(this.extend(request, params));
|
|
8975
|
+
//
|
|
8976
|
+
// {
|
|
8977
|
+
// "code": "00000",
|
|
8978
|
+
// "msg": "success",
|
|
8979
|
+
// "requestTime": 1752815940833,
|
|
8980
|
+
// "data": "success"
|
|
8981
|
+
// }
|
|
8982
|
+
//
|
|
8983
|
+
}
|
|
8984
|
+
else {
|
|
8985
|
+
request['marginCoin'] = market['settleId'];
|
|
8986
|
+
request['productType'] = productType;
|
|
8987
|
+
response = await this.privateMixPostV2MixAccountSetLeverage(this.extend(request, params));
|
|
8988
|
+
//
|
|
8989
|
+
// {
|
|
8990
|
+
// "code": "00000",
|
|
8991
|
+
// "msg": "success",
|
|
8992
|
+
// "requestTime": 1700864711517,
|
|
8993
|
+
// "data": {
|
|
8994
|
+
// "symbol": "BTCUSDT",
|
|
8995
|
+
// "marginCoin": "USDT",
|
|
8996
|
+
// "longLeverage": "25",
|
|
8997
|
+
// "shortLeverage": "25",
|
|
8998
|
+
// "crossMarginLeverage": "25",
|
|
8999
|
+
// "marginMode": "crossed"
|
|
9000
|
+
// }
|
|
9001
|
+
// }
|
|
9002
|
+
//
|
|
9003
|
+
}
|
|
7592
9004
|
return response;
|
|
7593
9005
|
}
|
|
7594
9006
|
/**
|
|
@@ -7644,36 +9056,54 @@ class bitget extends bitget$1 {
|
|
|
7644
9056
|
* @name bitget#setPositionMode
|
|
7645
9057
|
* @description set hedged to true or false for a market
|
|
7646
9058
|
* @see https://www.bitget.com/api-doc/contract/account/Change-Hold-Mode
|
|
9059
|
+
* @see https://www.bitget.com/api-doc/uta/account/Change-Position-Mode
|
|
7647
9060
|
* @param {bool} hedged set to true to use dualSidePosition
|
|
7648
9061
|
* @param {string} symbol not used by bitget setPositionMode ()
|
|
7649
9062
|
* @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'
|
|
9063
|
+
* @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'
|
|
9064
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7651
9065
|
* @returns {object} response from the exchange
|
|
7652
9066
|
*/
|
|
7653
9067
|
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
7654
9068
|
await this.loadMarkets();
|
|
7655
9069
|
const posMode = hedged ? 'hedge_mode' : 'one_way_mode';
|
|
9070
|
+
const request = {};
|
|
7656
9071
|
let market = undefined;
|
|
7657
9072
|
if (symbol !== undefined) {
|
|
7658
9073
|
market = this.market(symbol);
|
|
7659
9074
|
}
|
|
7660
9075
|
let productType = undefined;
|
|
9076
|
+
let uta = undefined;
|
|
9077
|
+
let response = undefined;
|
|
7661
9078
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
'
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
9079
|
+
[uta, params] = this.handleOptionAndParams(params, 'setPositionMode', 'uta', false);
|
|
9080
|
+
if (uta) {
|
|
9081
|
+
request['holdMode'] = posMode;
|
|
9082
|
+
response = await this.privateUtaPostV3AccountSetHoldMode(this.extend(request, params));
|
|
9083
|
+
//
|
|
9084
|
+
// {
|
|
9085
|
+
// "code": "00000",
|
|
9086
|
+
// "msg": "success",
|
|
9087
|
+
// "requestTime": 1752816734592,
|
|
9088
|
+
// "data": "success"
|
|
9089
|
+
// }
|
|
9090
|
+
//
|
|
9091
|
+
}
|
|
9092
|
+
else {
|
|
9093
|
+
request['posMode'] = posMode;
|
|
9094
|
+
request['productType'] = productType;
|
|
9095
|
+
response = await this.privateMixPostV2MixAccountSetPositionMode(this.extend(request, params));
|
|
9096
|
+
//
|
|
9097
|
+
// {
|
|
9098
|
+
// "code": "00000",
|
|
9099
|
+
// "msg": "success",
|
|
9100
|
+
// "requestTime": 1700865608009,
|
|
9101
|
+
// "data": {
|
|
9102
|
+
// "posMode": "hedge_mode"
|
|
9103
|
+
// }
|
|
9104
|
+
// }
|
|
9105
|
+
//
|
|
9106
|
+
}
|
|
7677
9107
|
return response;
|
|
7678
9108
|
}
|
|
7679
9109
|
/**
|
|
@@ -7681,8 +9111,10 @@ class bitget extends bitget$1 {
|
|
|
7681
9111
|
* @name bitget#fetchOpenInterest
|
|
7682
9112
|
* @description retrieves the open interest of a contract trading pair
|
|
7683
9113
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Open-Interest
|
|
9114
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Open-Interest
|
|
7684
9115
|
* @param {string} symbol unified CCXT market symbol
|
|
7685
9116
|
* @param {object} [params] exchange specific parameters
|
|
9117
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
7686
9118
|
* @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
|
|
7687
9119
|
*/
|
|
7688
9120
|
async fetchOpenInterest(symbol, params = {}) {
|
|
@@ -7691,33 +9123,60 @@ class bitget extends bitget$1 {
|
|
|
7691
9123
|
if (!market['contract']) {
|
|
7692
9124
|
throw new errors.BadRequest(this.id + ' fetchOpenInterest() supports contract markets only');
|
|
7693
9125
|
}
|
|
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
|
-
|
|
9126
|
+
let productType = undefined;
|
|
9127
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
9128
|
+
const request = {
|
|
9129
|
+
'symbol': market['id'],
|
|
9130
|
+
};
|
|
9131
|
+
let uta = undefined;
|
|
9132
|
+
let response = undefined;
|
|
9133
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchOpenInterest', 'uta', false);
|
|
9134
|
+
if (uta) {
|
|
9135
|
+
request['category'] = productType;
|
|
9136
|
+
response = await this.publicUtaGetV3MarketOpenInterest(this.extend(request, params));
|
|
9137
|
+
//
|
|
9138
|
+
// {
|
|
9139
|
+
// "code": "00000",
|
|
9140
|
+
// "msg": "success",
|
|
9141
|
+
// "requestTime": 1751101221545,
|
|
9142
|
+
// "data": {
|
|
9143
|
+
// "list": [
|
|
9144
|
+
// {
|
|
9145
|
+
// "symbol": "BTCUSDT",
|
|
9146
|
+
// "openInterest": "18166.3583"
|
|
9147
|
+
// }
|
|
9148
|
+
// ],
|
|
9149
|
+
// "ts": "1751101220993"
|
|
9150
|
+
// }
|
|
9151
|
+
// }
|
|
9152
|
+
//
|
|
9153
|
+
}
|
|
9154
|
+
else {
|
|
9155
|
+
request['productType'] = productType;
|
|
9156
|
+
response = await this.publicMixGetV2MixMarketOpenInterest(this.extend(request, params));
|
|
9157
|
+
//
|
|
9158
|
+
// {
|
|
9159
|
+
// "code": "00000",
|
|
9160
|
+
// "msg": "success",
|
|
9161
|
+
// "requestTime": 1700866041022,
|
|
9162
|
+
// "data": {
|
|
9163
|
+
// "openInterestList": [
|
|
9164
|
+
// {
|
|
9165
|
+
// "symbol": "BTCUSDT",
|
|
9166
|
+
// "size": "52234.134"
|
|
9167
|
+
// }
|
|
9168
|
+
// ],
|
|
9169
|
+
// "ts": "1700866041023"
|
|
9170
|
+
// }
|
|
9171
|
+
// }
|
|
9172
|
+
//
|
|
9173
|
+
}
|
|
7717
9174
|
const data = this.safeDict(response, 'data', {});
|
|
7718
9175
|
return this.parseOpenInterest(data, market);
|
|
7719
9176
|
}
|
|
7720
9177
|
parseOpenInterest(interest, market = undefined) {
|
|
9178
|
+
//
|
|
9179
|
+
// default
|
|
7721
9180
|
//
|
|
7722
9181
|
// {
|
|
7723
9182
|
// "openInterestList": [
|
|
@@ -7729,12 +9188,24 @@ class bitget extends bitget$1 {
|
|
|
7729
9188
|
// "ts": "1700866041023"
|
|
7730
9189
|
// }
|
|
7731
9190
|
//
|
|
7732
|
-
|
|
9191
|
+
// uta
|
|
9192
|
+
//
|
|
9193
|
+
// {
|
|
9194
|
+
// "list": [
|
|
9195
|
+
// {
|
|
9196
|
+
// "symbol": "BTCUSDT",
|
|
9197
|
+
// "openInterest": "18166.3583"
|
|
9198
|
+
// }
|
|
9199
|
+
// ],
|
|
9200
|
+
// "ts": "1751101220993"
|
|
9201
|
+
// }
|
|
9202
|
+
//
|
|
9203
|
+
const data = this.safeList2(interest, 'openInterestList', 'list', []);
|
|
7733
9204
|
const timestamp = this.safeInteger(interest, 'ts');
|
|
7734
9205
|
const marketId = this.safeString(data[0], 'symbol');
|
|
7735
9206
|
return this.safeOpenInterest({
|
|
7736
9207
|
'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
|
|
7737
|
-
'openInterestAmount': this.
|
|
9208
|
+
'openInterestAmount': this.safeNumber2(data[0], 'size', 'openInterest'),
|
|
7738
9209
|
'openInterestValue': undefined,
|
|
7739
9210
|
'timestamp': timestamp,
|
|
7740
9211
|
'datetime': this.iso8601(timestamp),
|
|
@@ -8473,9 +9944,10 @@ class bitget extends bitget$1 {
|
|
|
8473
9944
|
* @name bitget#fetchCrossBorrowRate
|
|
8474
9945
|
* @description fetch the rate of interest to borrow a currency for margin trading
|
|
8475
9946
|
* @see https://www.bitget.com/api-doc/margin/cross/account/Get-Cross-Margin-Interest-Rate-And-Borrowable
|
|
9947
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Margin-Loans
|
|
8476
9948
|
* @param {string} code unified currency code
|
|
8477
9949
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8478
|
-
* @param {
|
|
9950
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8479
9951
|
* @returns {object} a [borrow rate structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#borrow-rate-structure}
|
|
8480
9952
|
*/
|
|
8481
9953
|
async fetchCrossBorrowRate(code, params = {}) {
|
|
@@ -8484,40 +9956,64 @@ class bitget extends bitget$1 {
|
|
|
8484
9956
|
const request = {
|
|
8485
9957
|
'coin': currency['id'],
|
|
8486
9958
|
};
|
|
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
|
-
|
|
9959
|
+
let uta = undefined;
|
|
9960
|
+
let response = undefined;
|
|
9961
|
+
let result = undefined;
|
|
9962
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchCrossBorrowRate', 'uta', false);
|
|
9963
|
+
if (uta) {
|
|
9964
|
+
response = await this.publicUtaGetV3MarketMarginLoans(this.extend(request, params));
|
|
9965
|
+
//
|
|
9966
|
+
// {
|
|
9967
|
+
// "code": "00000",
|
|
9968
|
+
// "msg": "success",
|
|
9969
|
+
// "requestTime": 1752817798893,
|
|
9970
|
+
// "data": {
|
|
9971
|
+
// "dailyInterest": "0.00100008",
|
|
9972
|
+
// "annualInterest": "0.3650292",
|
|
9973
|
+
// "limit": "100"
|
|
9974
|
+
// }
|
|
9975
|
+
// }
|
|
9976
|
+
//
|
|
9977
|
+
result = this.safeDict(response, 'data', {});
|
|
9978
|
+
}
|
|
9979
|
+
else {
|
|
9980
|
+
response = await this.privateMarginGetV2MarginCrossedInterestRateAndLimit(this.extend(request, params));
|
|
9981
|
+
//
|
|
9982
|
+
// {
|
|
9983
|
+
// "code": "00000",
|
|
9984
|
+
// "msg": "success",
|
|
9985
|
+
// "requestTime": 1700879047861,
|
|
9986
|
+
// "data": [
|
|
9987
|
+
// {
|
|
9988
|
+
// "coin": "BTC",
|
|
9989
|
+
// "leverage": "3",
|
|
9990
|
+
// "transferable": true,
|
|
9991
|
+
// "borrowable": true,
|
|
9992
|
+
// "dailyInterestRate": "0.00007",
|
|
9993
|
+
// "annualInterestRate": "0.02555",
|
|
9994
|
+
// "maxBorrowableAmount": "26",
|
|
9995
|
+
// "vipList": [
|
|
9996
|
+
// {"level":"0","limit":"26","dailyInterestRate":"0.00007","annualInterestRate":"0.02555","discountRate":"1"},
|
|
9997
|
+
// {"level":"1","limit":"26.78","dailyInterestRate":"0.0000679","annualInterestRate":"0.0247835","discountRate":"0.97"},
|
|
9998
|
+
// {"level":"2","limit":"28.08","dailyInterestRate":"0.0000644","annualInterestRate":"0.023506","discountRate":"0.92"},
|
|
9999
|
+
// {"level":"3","limit":"30.16","dailyInterestRate":"0.0000602","annualInterestRate":"0.021973","discountRate":"0.86"},
|
|
10000
|
+
// {"level":"4","limit":"34.58","dailyInterestRate":"0.0000525","annualInterestRate":"0.0191625","discountRate":"0.75"},
|
|
10001
|
+
// {"level":"5","limit":"43.16","dailyInterestRate":"0.000042","annualInterestRate":"0.01533","discountRate":"0.6"}
|
|
10002
|
+
// ]
|
|
10003
|
+
// }
|
|
10004
|
+
// ]
|
|
10005
|
+
// }
|
|
10006
|
+
//
|
|
10007
|
+
const data = this.safeValue(response, 'data', []);
|
|
10008
|
+
result = this.safeValue(data, 0, {});
|
|
10009
|
+
}
|
|
8514
10010
|
const timestamp = this.safeInteger(response, 'requestTime');
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
first['timestamp'] = timestamp;
|
|
8518
|
-
return this.parseBorrowRate(first, currency);
|
|
10011
|
+
result['timestamp'] = timestamp;
|
|
10012
|
+
return this.parseBorrowRate(result, currency);
|
|
8519
10013
|
}
|
|
8520
10014
|
parseBorrowRate(info, currency = undefined) {
|
|
10015
|
+
//
|
|
10016
|
+
// default
|
|
8521
10017
|
//
|
|
8522
10018
|
// {
|
|
8523
10019
|
// "coin": "BTC",
|
|
@@ -8537,11 +10033,19 @@ class bitget extends bitget$1 {
|
|
|
8537
10033
|
// ]
|
|
8538
10034
|
// }
|
|
8539
10035
|
//
|
|
10036
|
+
// uta
|
|
10037
|
+
//
|
|
10038
|
+
// {
|
|
10039
|
+
// "dailyInterest": "0.00100008",
|
|
10040
|
+
// "annualInterest": "0.3650292",
|
|
10041
|
+
// "limit": "100"
|
|
10042
|
+
// }
|
|
10043
|
+
//
|
|
8540
10044
|
const currencyId = this.safeString(info, 'coin');
|
|
8541
10045
|
const timestamp = this.safeInteger(info, 'timestamp');
|
|
8542
10046
|
return {
|
|
8543
10047
|
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
8544
|
-
'rate': this.
|
|
10048
|
+
'rate': this.safeNumber2(info, 'dailyInterestRate', 'dailyInterest'),
|
|
8545
10049
|
'period': 86400000,
|
|
8546
10050
|
'timestamp': timestamp,
|
|
8547
10051
|
'datetime': this.iso8601(timestamp),
|
|
@@ -8706,43 +10210,72 @@ class bitget extends bitget$1 {
|
|
|
8706
10210
|
* @name bitget#closePosition
|
|
8707
10211
|
* @description closes an open position for a market
|
|
8708
10212
|
* @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
|
|
10213
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
|
|
8709
10214
|
* @param {string} symbol unified CCXT market symbol
|
|
8710
10215
|
* @param {string} [side] one-way mode: 'buy' or 'sell', hedge-mode: 'long' or 'short'
|
|
8711
10216
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10217
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8712
10218
|
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
8713
10219
|
*/
|
|
8714
10220
|
async closePosition(symbol, side = undefined, params = {}) {
|
|
8715
10221
|
await this.loadMarkets();
|
|
8716
10222
|
const market = this.market(symbol);
|
|
8717
|
-
let productType = undefined;
|
|
8718
|
-
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
8719
10223
|
const request = {
|
|
8720
10224
|
'symbol': market['id'],
|
|
8721
|
-
'productType': productType,
|
|
8722
10225
|
};
|
|
8723
|
-
|
|
8724
|
-
|
|
10226
|
+
let productType = undefined;
|
|
10227
|
+
let uta = undefined;
|
|
10228
|
+
let response = undefined;
|
|
10229
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
10230
|
+
[uta, params] = this.handleOptionAndParams(params, 'closePosition', 'uta', false);
|
|
10231
|
+
if (uta) {
|
|
10232
|
+
if (side !== undefined) {
|
|
10233
|
+
request['posSide'] = side;
|
|
10234
|
+
}
|
|
10235
|
+
request['category'] = productType;
|
|
10236
|
+
response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
|
|
10237
|
+
//
|
|
10238
|
+
// {
|
|
10239
|
+
// "code": "00000",
|
|
10240
|
+
// "msg": "success",
|
|
10241
|
+
// "requestTime": 1751020218384,
|
|
10242
|
+
// "data": {
|
|
10243
|
+
// "list": [
|
|
10244
|
+
// {
|
|
10245
|
+
// "orderId": "1322440134099320832",
|
|
10246
|
+
// "clientOid": "1322440134099320833"
|
|
10247
|
+
// }
|
|
10248
|
+
// ]
|
|
10249
|
+
// }
|
|
10250
|
+
// }
|
|
10251
|
+
//
|
|
10252
|
+
}
|
|
10253
|
+
else {
|
|
10254
|
+
if (side !== undefined) {
|
|
10255
|
+
request['holdSide'] = side;
|
|
10256
|
+
}
|
|
10257
|
+
request['productType'] = productType;
|
|
10258
|
+
response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
|
|
10259
|
+
//
|
|
10260
|
+
// {
|
|
10261
|
+
// "code": "00000",
|
|
10262
|
+
// "msg": "success",
|
|
10263
|
+
// "requestTime": 1702975017017,
|
|
10264
|
+
// "data": {
|
|
10265
|
+
// "successList": [
|
|
10266
|
+
// {
|
|
10267
|
+
// "orderId": "1120923953904893955",
|
|
10268
|
+
// "clientOid": "1120923953904893956"
|
|
10269
|
+
// }
|
|
10270
|
+
// ],
|
|
10271
|
+
// "failureList": [],
|
|
10272
|
+
// "result": false
|
|
10273
|
+
// }
|
|
10274
|
+
// }
|
|
10275
|
+
//
|
|
8725
10276
|
}
|
|
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
10277
|
const data = this.safeValue(response, 'data', {});
|
|
8745
|
-
const order = this.
|
|
10278
|
+
const order = this.safeList2(data, 'successList', 'list', []);
|
|
8746
10279
|
return this.parseOrder(order[0], market);
|
|
8747
10280
|
}
|
|
8748
10281
|
/**
|
|
@@ -8750,37 +10283,62 @@ class bitget extends bitget$1 {
|
|
|
8750
10283
|
* @name bitget#closeAllPositions
|
|
8751
10284
|
* @description closes all open positions for a market type
|
|
8752
10285
|
* @see https://www.bitget.com/api-doc/contract/trade/Flash-Close-Position
|
|
10286
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Close-All-Positions
|
|
8753
10287
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8754
10288
|
* @param {string} [params.productType] 'USDT-FUTURES', 'USDC-FUTURES', 'COIN-FUTURES', 'SUSDT-FUTURES', 'SUSDC-FUTURES' or 'SCOIN-FUTURES'
|
|
10289
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8755
10290
|
* @returns {object[]} A list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
8756
10291
|
*/
|
|
8757
10292
|
async closeAllPositions(params = {}) {
|
|
8758
10293
|
await this.loadMarkets();
|
|
10294
|
+
const request = {};
|
|
8759
10295
|
let productType = undefined;
|
|
10296
|
+
let uta = undefined;
|
|
10297
|
+
let response = undefined;
|
|
8760
10298
|
[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
|
-
|
|
10299
|
+
[uta, params] = this.handleOptionAndParams(params, 'closeAllPositions', 'uta', false);
|
|
10300
|
+
if (uta) {
|
|
10301
|
+
request['category'] = productType;
|
|
10302
|
+
response = await this.privateUtaPostV3TradeClosePositions(this.extend(request, params));
|
|
10303
|
+
//
|
|
10304
|
+
// {
|
|
10305
|
+
// "code": "00000",
|
|
10306
|
+
// "msg": "success",
|
|
10307
|
+
// "requestTime": 1751020218384,
|
|
10308
|
+
// "data": {
|
|
10309
|
+
// "list": [
|
|
10310
|
+
// {
|
|
10311
|
+
// "orderId": "1322440134099320832",
|
|
10312
|
+
// "clientOid": "1322440134099320833"
|
|
10313
|
+
// }
|
|
10314
|
+
// ]
|
|
10315
|
+
// }
|
|
10316
|
+
// }
|
|
10317
|
+
//
|
|
10318
|
+
}
|
|
10319
|
+
else {
|
|
10320
|
+
request['productType'] = productType;
|
|
10321
|
+
response = await this.privateMixPostV2MixOrderClosePositions(this.extend(request, params));
|
|
10322
|
+
//
|
|
10323
|
+
// {
|
|
10324
|
+
// "code": "00000",
|
|
10325
|
+
// "msg": "success",
|
|
10326
|
+
// "requestTime": 1702975017017,
|
|
10327
|
+
// "data": {
|
|
10328
|
+
// "successList": [
|
|
10329
|
+
// {
|
|
10330
|
+
// "orderId": "1120923953904893955",
|
|
10331
|
+
// "clientOid": "1120923953904893956"
|
|
10332
|
+
// }
|
|
10333
|
+
// ],
|
|
10334
|
+
// "failureList": [],
|
|
10335
|
+
// "result": false
|
|
10336
|
+
// }
|
|
10337
|
+
// }
|
|
10338
|
+
//
|
|
10339
|
+
}
|
|
8782
10340
|
const data = this.safeValue(response, 'data', {});
|
|
8783
|
-
const orderInfo = this.
|
|
10341
|
+
const orderInfo = this.safeList2(data, 'successList', 'list', []);
|
|
8784
10342
|
return this.parsePositions(orderInfo, undefined, params);
|
|
8785
10343
|
}
|
|
8786
10344
|
/**
|
|
@@ -8848,25 +10406,27 @@ class bitget extends bitget$1 {
|
|
|
8848
10406
|
* @name bitget#fetchPositionsHistory
|
|
8849
10407
|
* @description fetches historical positions
|
|
8850
10408
|
* @see https://www.bitget.com/api-doc/contract/position/Get-History-Position
|
|
10409
|
+
* @see https://www.bitget.com/api-doc/uta/trade/Get-Position-History
|
|
8851
10410
|
* @param {string[]} [symbols] unified contract symbols
|
|
8852
10411
|
* @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
10412
|
* @param {int} [limit] the maximum amount of records to fetch, default=20, max=100
|
|
8854
10413
|
* @param {object} params extra parameters specific to the exchange api endpoint
|
|
8855
10414
|
* @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
10415
|
* @param {string} [params.productType] USDT-FUTURES (default), COIN-FUTURES, USDC-FUTURES, SUSDT-FUTURES, SCOIN-FUTURES, or SUSDC-FUTURES
|
|
10416
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
8859
10417
|
* @returns {object[]} a list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
8860
10418
|
*/
|
|
8861
10419
|
async fetchPositionsHistory(symbols = undefined, since = undefined, limit = undefined, params = {}) {
|
|
8862
10420
|
await this.loadMarkets();
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
10421
|
+
let request = {};
|
|
10422
|
+
let market = undefined;
|
|
10423
|
+
let productType = undefined;
|
|
10424
|
+
let uta = undefined;
|
|
10425
|
+
let response = undefined;
|
|
8866
10426
|
if (symbols !== undefined) {
|
|
8867
10427
|
const symbolsLength = symbols.length;
|
|
8868
10428
|
if (symbolsLength > 0) {
|
|
8869
|
-
|
|
10429
|
+
market = this.market(symbols[0]);
|
|
8870
10430
|
request['symbol'] = market['id'];
|
|
8871
10431
|
}
|
|
8872
10432
|
}
|
|
@@ -8876,41 +10436,79 @@ class bitget extends bitget$1 {
|
|
|
8876
10436
|
if (limit !== undefined) {
|
|
8877
10437
|
request['limit'] = limit;
|
|
8878
10438
|
}
|
|
8879
|
-
|
|
8880
|
-
|
|
10439
|
+
[request, params] = this.handleUntilOption('endTime', request, params);
|
|
10440
|
+
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
10441
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchPositionsHistory', 'uta', false);
|
|
10442
|
+
if (uta) {
|
|
10443
|
+
request['category'] = productType;
|
|
10444
|
+
response = await this.privateUtaGetV3PositionHistoryPosition(this.extend(request, params));
|
|
10445
|
+
//
|
|
10446
|
+
// {
|
|
10447
|
+
// "code": "00000",
|
|
10448
|
+
// "msg": "success",
|
|
10449
|
+
// "requestTime": 1751020950427,
|
|
10450
|
+
// "data": {
|
|
10451
|
+
// "list": [
|
|
10452
|
+
// {
|
|
10453
|
+
// "positionId": "1322441328637100049",
|
|
10454
|
+
// "category": "USDT-FUTURES",
|
|
10455
|
+
// "symbol": "BTCUSDT",
|
|
10456
|
+
// "marginCoin": "USDT",
|
|
10457
|
+
// "holdMode": "hedge_mode",
|
|
10458
|
+
// "posSide": "long",
|
|
10459
|
+
// "marginMode": "crossed",
|
|
10460
|
+
// "openPriceAvg": "107003.7",
|
|
10461
|
+
// "closePriceAvg": "107005.4",
|
|
10462
|
+
// "openTotalPos": "0.0001",
|
|
10463
|
+
// "closeTotalPos": "0.0001",
|
|
10464
|
+
// "cumRealisedPnl": "0.00017",
|
|
10465
|
+
// "netProfit": "-0.01267055",
|
|
10466
|
+
// "totalFunding": "0",
|
|
10467
|
+
// "openFeeTotal": "-0.00642022",
|
|
10468
|
+
// "closeFeeTotal": "-0.00642032",
|
|
10469
|
+
// "createdTime": "1751020503195",
|
|
10470
|
+
// "updatedTime": "1751020520458"
|
|
10471
|
+
// },
|
|
10472
|
+
// ],
|
|
10473
|
+
// "cursor": "1322440134158041089"
|
|
10474
|
+
// }
|
|
10475
|
+
// }
|
|
10476
|
+
//
|
|
10477
|
+
}
|
|
10478
|
+
else {
|
|
10479
|
+
response = await this.privateMixGetV2MixPositionHistoryPosition(this.extend(request, params));
|
|
10480
|
+
//
|
|
10481
|
+
// {
|
|
10482
|
+
// code: '00000',
|
|
10483
|
+
// msg: 'success',
|
|
10484
|
+
// requestTime: '1712794148791',
|
|
10485
|
+
// data: {
|
|
10486
|
+
// list: [
|
|
10487
|
+
// {
|
|
10488
|
+
// symbol: 'XRPUSDT',
|
|
10489
|
+
// marginCoin: 'USDT',
|
|
10490
|
+
// holdSide: 'long',
|
|
10491
|
+
// openAvgPrice: '0.64967',
|
|
10492
|
+
// closeAvgPrice: '0.58799',
|
|
10493
|
+
// marginMode: 'isolated',
|
|
10494
|
+
// openTotalPos: '10',
|
|
10495
|
+
// closeTotalPos: '10',
|
|
10496
|
+
// pnl: '-0.62976205',
|
|
10497
|
+
// netProfit: '-0.65356802',
|
|
10498
|
+
// totalFunding: '-0.01638',
|
|
10499
|
+
// openFee: '-0.00389802',
|
|
10500
|
+
// closeFee: '-0.00352794',
|
|
10501
|
+
// ctime: '1709590322199',
|
|
10502
|
+
// utime: '1709667583395'
|
|
10503
|
+
// },
|
|
10504
|
+
// ...
|
|
10505
|
+
// ]
|
|
10506
|
+
// }
|
|
10507
|
+
// }
|
|
10508
|
+
//
|
|
8881
10509
|
}
|
|
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');
|
|
10510
|
+
const data = this.safeDict(response, 'data', {});
|
|
10511
|
+
const responseList = this.safeList(data, 'list', []);
|
|
8914
10512
|
const positions = this.parsePositions(responseList, symbols, params);
|
|
8915
10513
|
return this.filterBySinceLimit(positions, since, limit);
|
|
8916
10514
|
}
|
|
@@ -9190,8 +10788,10 @@ class bitget extends bitget$1 {
|
|
|
9190
10788
|
* @name bitget#fetchFundingInterval
|
|
9191
10789
|
* @description fetch the current funding rate interval
|
|
9192
10790
|
* @see https://www.bitget.com/api-doc/contract/market/Get-Symbol-Next-Funding-Time
|
|
10791
|
+
* @see https://www.bitget.com/api-doc/uta/public/Get-Current-Funding-Rate
|
|
9193
10792
|
* @param {string} symbol unified market symbol
|
|
9194
10793
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
10794
|
+
* @param {boolean} [params.uta] set to true for the unified trading account (uta), defaults to false
|
|
9195
10795
|
* @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
|
|
9196
10796
|
*/
|
|
9197
10797
|
async fetchFundingInterval(symbol, params = {}) {
|
|
@@ -9201,23 +10801,48 @@ class bitget extends bitget$1 {
|
|
|
9201
10801
|
[productType, params] = this.handleProductTypeAndParams(market, params);
|
|
9202
10802
|
const request = {
|
|
9203
10803
|
'symbol': market['id'],
|
|
9204
|
-
'productType': productType,
|
|
9205
10804
|
};
|
|
9206
|
-
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
|
|
9213
|
-
|
|
9214
|
-
|
|
9215
|
-
|
|
9216
|
-
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
10805
|
+
let response = undefined;
|
|
10806
|
+
let uta = undefined;
|
|
10807
|
+
[uta, params] = this.handleOptionAndParams(params, 'fetchFundingInterval', 'uta', false);
|
|
10808
|
+
if (uta) {
|
|
10809
|
+
response = await this.publicUtaGetV3MarketCurrentFundRate(this.extend(request, params));
|
|
10810
|
+
//
|
|
10811
|
+
// {
|
|
10812
|
+
// "code": "00000",
|
|
10813
|
+
// "msg": "success",
|
|
10814
|
+
// "requestTime": 1752880157959,
|
|
10815
|
+
// "data": [
|
|
10816
|
+
// {
|
|
10817
|
+
// "symbol": "BTCUSDT",
|
|
10818
|
+
// "fundingRate": "0.0001",
|
|
10819
|
+
// "fundingRateInterval": "8",
|
|
10820
|
+
// "nextUpdate": "1752883200000",
|
|
10821
|
+
// "minFundingRate": "-0.003",
|
|
10822
|
+
// "maxFundingRate": "0.003"
|
|
10823
|
+
// }
|
|
10824
|
+
// ]
|
|
10825
|
+
// }
|
|
10826
|
+
//
|
|
10827
|
+
}
|
|
10828
|
+
else {
|
|
10829
|
+
request['productType'] = productType;
|
|
10830
|
+
response = await this.publicMixGetV2MixMarketFundingTime(this.extend(request, params));
|
|
10831
|
+
//
|
|
10832
|
+
// {
|
|
10833
|
+
// "code": "00000",
|
|
10834
|
+
// "msg": "success",
|
|
10835
|
+
// "requestTime": 1727930153888,
|
|
10836
|
+
// "data": [
|
|
10837
|
+
// {
|
|
10838
|
+
// "symbol": "BTCUSDT",
|
|
10839
|
+
// "nextFundingTime": "1727942400000",
|
|
10840
|
+
// "ratePeriod": "8"
|
|
10841
|
+
// }
|
|
10842
|
+
// ]
|
|
10843
|
+
// }
|
|
10844
|
+
//
|
|
10845
|
+
}
|
|
9221
10846
|
const data = this.safeList(response, 'data', []);
|
|
9222
10847
|
const first = this.safeDict(data, 0, {});
|
|
9223
10848
|
return this.parseFundingRate(first, market);
|
|
@@ -9392,7 +11017,7 @@ class bitget extends bitget$1 {
|
|
|
9392
11017
|
}
|
|
9393
11018
|
}
|
|
9394
11019
|
const sandboxMode = this.safeBool2(this.options, 'sandboxMode', 'sandbox', false);
|
|
9395
|
-
if (sandboxMode && (path !== 'v2/public/time')) {
|
|
11020
|
+
if (sandboxMode && (path !== 'v2/public/time') && (path !== 'v3/market/current-fund-rate')) {
|
|
9396
11021
|
// https://github.com/ccxt/ccxt/issues/25252#issuecomment-2662742336
|
|
9397
11022
|
if (headers === undefined) {
|
|
9398
11023
|
headers = {};
|
|
@@ -9406,4 +11031,4 @@ class bitget extends bitget$1 {
|
|
|
9406
11031
|
}
|
|
9407
11032
|
}
|
|
9408
11033
|
|
|
9409
|
-
|
|
11034
|
+
exports["default"] = bitget;
|