ccxt 4.2.100 → 4.3.1
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 +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/binance.js +56 -0
- package/dist/cjs/src/bingx.js +2 -2
- package/dist/cjs/src/bitget.js +64 -2
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/coinex.js +55 -60
- package/dist/cjs/src/kraken.js +8 -3
- package/dist/cjs/src/kucoin.js +13 -11
- package/dist/cjs/src/okx.js +76 -5
- package/dist/cjs/src/pro/kraken.js +2 -2
- package/dist/cjs/src/woo.js +40 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/binance.d.ts +3 -1
- package/js/src/binance.js +56 -0
- package/js/src/bingx.js +3 -3
- package/js/src/bitget.d.ts +1 -0
- package/js/src/bitget.js +64 -2
- package/js/src/bybit.js +1 -1
- package/js/src/coinex.js +55 -60
- package/js/src/kraken.js +8 -3
- package/js/src/kucoin.js +13 -11
- package/js/src/okx.d.ts +1 -0
- package/js/src/okx.js +76 -5
- package/js/src/pro/kraken.js +2 -2
- package/js/src/woo.d.ts +1 -0
- package/js/src/woo.js +40 -0
- package/package.json +2 -1
- package/.dockerignore +0 -6
- package/.eslintignore +0 -1
- package/.git-templates/hooks/pre-push +0 -55
- package/.gitattributes +0 -7
- package/CHANGELOG.md +0 -6003
- package/CODEOWNERS +0 -1
- package/CONTRIBUTING.md +0 -1099
- package/build.sh +0 -217
- package/change.sh +0 -18
- package/cleanup.sh +0 -18
- package/composer-install.sh +0 -20
- package/dist/ccxt.browser.js +0 -327256
- package/dist/ccxt.browser.min.js +0 -30
- package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
- package/doc/FAQ.rst +0 -1
- package/doc/Makefile +0 -20
- package/doc/_static/css/dark.css +0 -101
- package/doc/_static/css/index.css +0 -128
- package/doc/_static/favicon.ico +0 -0
- package/doc/_static/javascript/binance-portal.min.js +0 -2369
- package/doc/_static/javascript/index.js +0 -195
- package/doc/_static/javascript/jquery-ui.min.js +0 -6
- package/doc/ccxt.pro.install.rst +0 -1
- package/doc/ccxt.pro.manual.rst +0 -1665
- package/doc/exchange-markets-by-country.rst +0 -1423
- package/doc/exchange-markets.rst +0 -1441
- package/doc/index.rst +0 -35
- package/doc/install.rst +0 -1
- package/doc/make.bat +0 -36
- package/doc/manual.rst +0 -7471
- package/doc/readme.rst +0 -2191
- package/doc/requirements.txt +0 -6
- package/examples/ccxt.pro/html/watchTicker.html +0 -51
- package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
- package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
- package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
- package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
- package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
- package/examples/ccxt.pro/js/exchange-close.js +0 -46
- package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
- package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
- package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
- package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
- package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
- package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
- package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
- package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
- package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
- package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
- package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
- package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
- package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
- package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
- package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
- package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
- package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
- package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
- package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
- package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
- package/examples/cs/Examples.sln +0 -22
- package/examples/cs/c#.csproj +0 -19
- package/examples/html/basic-cors-proxy.html +0 -46
- package/examples/html/basic-inheritance.html +0 -47
- package/examples/html/basic-poller.html +0 -52
- package/examples/html/basic-rate-limiting.html +0 -49
- package/examples/html/basic.html +0 -43
- package/examples/html/binance-cors-proxy.html +0 -28
- package/examples/html/bitmex-browser-cors-proxy.js +0 -7
- package/examples/html/bitmex-cors.html +0 -46
- package/examples/html/tradingview-charts.html +0 -61
- package/examples/html/webworker/index.html +0 -97
- package/examples/html/webworker/worker.js +0 -43
- package/examples/js/advanced-error-handling.js +0 -39
- package/examples/js/aggregate-orderbook.js +0 -54
- package/examples/js/arbitrage-pairs.js +0 -130
- package/examples/js/basic-chart.js +0 -29
- package/examples/js/basic-orderbook-polling.js +0 -13
- package/examples/js/bcc-vs-bch.js +0 -115
- package/examples/js/benchmark.js +0 -104
- package/examples/js/binance-fetch-all-deposits.js +0 -45
- package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
- package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
- package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
- package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
- package/examples/js/binance-margin-stop-order.js +0 -39
- package/examples/js/binance-server-time.js +0 -34
- package/examples/js/binance-universal-transfer.js +0 -16
- package/examples/js/bitfinex-fetch-trades.js +0 -35
- package/examples/js/bitfinex2-fetch-trades.js +0 -35
- package/examples/js/bitmex-browser-cors-proxy.js +0 -7
- package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
- package/examples/js/bitrue-fetch-balance.js +0 -28
- package/examples/js/bitstamp-private-api.js +0 -115
- package/examples/js/bitstamp-public-api.js +0 -39
- package/examples/js/bittrex-balance.js +0 -50
- package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
- package/examples/js/blockchaincom-withdrawal.js +0 -59
- package/examples/js/build-ohlcv-bars.js +0 -48
- package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
- package/examples/js/bybit-trailing.js +0 -62
- package/examples/js/bybit-updated.cjs +0 -154
- package/examples/js/coinbase-fetch-all-balances.js +0 -36
- package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
- package/examples/js/coinex-futures.js +0 -75
- package/examples/js/coinone-fetch-tickers.js +0 -54
- package/examples/js/coinone-markets.js +0 -16
- package/examples/js/compare-two-exchanges-capabilities.js +0 -36
- package/examples/js/cors-proxy.js +0 -5
- package/examples/js/create-order-handle-errors.js +0 -55
- package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
- package/examples/js/create-order-with-retry.js +0 -65
- package/examples/js/create-order-ws-example.js +0 -25
- package/examples/js/create-orders-example.js +0 -17
- package/examples/js/create-trailing-amount-order.js +0 -36
- package/examples/js/create-trailing-percent-order.js +0 -36
- package/examples/js/credentials.json +0 -5
- package/examples/js/custom-proxy-agent-for-js.js +0 -10
- package/examples/js/custom-proxy-url.js +0 -23
- package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
- package/examples/js/env-variables.js +0 -26
- package/examples/js/error-handling.js +0 -89
- package/examples/js/exchange-capabilities.js +0 -135
- package/examples/js/exchanges-by-volume.js +0 -60
- package/examples/js/exchanges.js +0 -40
- package/examples/js/fetch-all-balances.js +0 -219
- package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
- package/examples/js/fetch-all-tickers-to-files.js +0 -77
- package/examples/js/fetch-balance.js +0 -28
- package/examples/js/fetch-create-deposit-address.js +0 -101
- package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
- package/examples/js/fetch-funding-rate-history.js +0 -25
- package/examples/js/fetch-futures/prettier.config.js +0 -5
- package/examples/js/fetch-futures/src/index.js +0 -25
- package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
- package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
- package/examples/js/fetch-ohlcv.js +0 -16
- package/examples/js/fetch-okex-futures.js +0 -22
- package/examples/js/fetch-orders.js +0 -27
- package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
- package/examples/js/fetch-ticker-where-available.js +0 -75
- package/examples/js/fetch-tickers/build/index.js +0 -19
- package/examples/js/fetch-tickers/prettier.config.js +0 -5
- package/examples/js/fetch-tickers/src/index.js +0 -17
- package/examples/js/gateio-create-batch-order.js +0 -43
- package/examples/js/gateio-futures.js +0 -49
- package/examples/js/gateio-open-close-contract.js +0 -49
- package/examples/js/gateio-swaps.js +0 -74
- package/examples/js/gdax-fetch-trades-pagination.js +0 -29
- package/examples/js/hitbtc2-withdraw.js +0 -61
- package/examples/js/how-to-import-one-exchange-esm.js +0 -10
- package/examples/js/huobi-futures.js +0 -71
- package/examples/js/huobi-open-close-contract.js +0 -63
- package/examples/js/huobi-swaps.js +0 -70
- package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
- package/examples/js/hybridCJSExample.cjs +0 -19
- package/examples/js/hybridESMExample.js +0 -19
- package/examples/js/idex-fetch-balance.js +0 -13
- package/examples/js/instantiate-all-at-once.js +0 -46
- package/examples/js/instantiate-all-from-json.js +0 -31
- package/examples/js/kraken-create-and-close-position.js +0 -54
- package/examples/js/kraken-fetch-order-trades.js +0 -33
- package/examples/js/kraken-margin-trading.js +0 -89
- package/examples/js/kucoin-rate-limit.js +0 -38
- package/examples/js/latoken-example.js +0 -108
- package/examples/js/live-orderbook.js +0 -106
- package/examples/js/live-ticker.js +0 -80
- package/examples/js/live-tickers.js +0 -74
- package/examples/js/load-all-contracts.js +0 -41
- package/examples/js/load-all-symbols-at-once.js +0 -69
- package/examples/js/load-all-tickers-at-once.js +0 -91
- package/examples/js/load-markets-to-files.js +0 -57
- package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
- package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
- package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
- package/examples/js/market-status-and-currency-status.js +0 -29
- package/examples/js/ohlcv-console-chart.js +0 -29
- package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
- package/examples/js/okex-transfer.js +0 -51
- package/examples/js/okx-poll-fetch-my-trades.js +0 -37
- package/examples/js/okx-poll-rate-limit.js +0 -48
- package/examples/js/order-book-extra-level-depth-param.js +0 -20
- package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
- package/examples/js/poll-ohlcv.js +0 -43
- package/examples/js/poloniex-fetch-order-books.js +0 -35
- package/examples/js/poloniex-limits-amount-min.js +0 -62
- package/examples/js/proxy-round-robin.js +0 -98
- package/examples/js/proxy-usage.js +0 -32
- package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
- package/examples/js/search-all-exchanges.js +0 -159
- package/examples/js/shared-load-markets.js +0 -80
- package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
- package/examples/js/symbols.js +0 -110
- package/examples/js/theocean.js +0 -41
- package/examples/js/tickers.js +0 -106
- package/examples/js/validate-paginated-data.js +0 -61
- package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
- package/examples/js/watch-OHLCV.js +0 -12
- package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
- package/examples/js/watch-Trades-For-Symbols.js +0 -11
- package/examples/js/watch-tickers.js +0 -11
- package/examples/js/watchOHLCVForSymbols.js +0 -15
- package/examples/js/watchOrderBookForSymbols.js +0 -11
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
- package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
- package/examples/js/watchPositions.d.ts +0 -2
- package/examples/js/watchPositions.d.ts.map +0 -1
- package/examples/js/watchPositions.js +0 -13
- package/examples/js/watchPositionsForSymbols.d.ts +0 -2
- package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
- package/examples/js/watchPositionsForSymbols.js +0 -14
- package/examples/js/watchTradesForSymbols.js +0 -11
- package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
- package/examples/php/README.md +0 -7
- package/examples/py/README.md +0 -15
- package/examples/py/playing_with_ccxt_example.ipynb +0 -222
- package/examples/ts/.eslintrc +0 -111
- package/examples/ts/benchmark.ts +0 -134
- package/examples/ts/build-ohlcv-bars.ts +0 -53
- package/examples/ts/cli.ts +0 -397
- package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
- package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
- package/examples/ts/create-order-ws-example.ts +0 -33
- package/examples/ts/create-orders-example.ts +0 -21
- package/examples/ts/create-trailing-amount-order.ts +0 -37
- package/examples/ts/create-trailing-percent-order.ts +0 -37
- package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
- package/examples/ts/fetch-futures/package-lock.json +0 -116
- package/examples/ts/fetch-futures/package.json +0 -34
- package/examples/ts/fetch-futures/prettier.config.js +0 -4
- package/examples/ts/fetch-futures/src/index.ts +0 -28
- package/examples/ts/fetch-futures/tsconfig.json +0 -28
- package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
- package/examples/ts/fetch-ohlcv.ts +0 -17
- package/examples/ts/fetch-tickers/package-lock.json +0 -116
- package/examples/ts/fetch-tickers/package.json +0 -34
- package/examples/ts/fetch-tickers/prettier.config.js +0 -4
- package/examples/ts/fetch-tickers/src/index.ts +0 -21
- package/examples/ts/fetch-tickers/tsconfig.json +0 -28
- package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
- package/examples/ts/kraken-create-and-close-position.ts +0 -69
- package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
- package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
- package/examples/ts/nextjs-page-router/README.md +0 -43
- package/examples/ts/nextjs-page-router/next.config.js +0 -6
- package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
- package/examples/ts/nextjs-page-router/package.json +0 -28
- package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
- package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
- package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
- package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
- package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
- package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
- package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
- package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
- package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
- package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
- package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
- package/examples/ts/proxy-usage.ts +0 -41
- package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
- package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
- package/examples/ts/watch-OHLCV.ts +0 -14
- package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
- package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
- package/examples/ts/watch-tickers.ts +0 -13
- package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
- package/examples/ts/watchPositions.ts +0 -15
- package/examples/ts/watchPositionsForSymbols.ts +0 -16
- package/examples/tsconfig.json +0 -27
- package/examples2md.js +0 -79
- package/gource.sh +0 -3
- package/index.html +0 -7
- package/jsdoc2md.js +0 -122
- package/multilang.sh +0 -164
- package/pro-tests.json +0 -57
- package/pyproject.toml +0 -8
- package/rollup.config.js +0 -60
- package/skip-tests.json +0 -1653
- package/test-commonjs.cjs +0 -65
- package/tests-manager.sh +0 -96
- package/tsconfig.json +0 -111
- package/webpack.config.js +0 -46
package/dist/cjs/src/okx.js
CHANGED
|
@@ -35,6 +35,7 @@ class okx extends okx$1 {
|
|
|
35
35
|
'cancelOrders': true,
|
|
36
36
|
'closeAllPositions': false,
|
|
37
37
|
'closePosition': true,
|
|
38
|
+
'createConvertTrade': true,
|
|
38
39
|
'createDepositAddress': false,
|
|
39
40
|
'createMarketBuyOrderWithCost': true,
|
|
40
41
|
'createMarketSellOrderWithCost': true,
|
|
@@ -7658,6 +7659,59 @@ class okx extends okx$1 {
|
|
|
7658
7659
|
const toCurrency = this.currency(toCurrencyId);
|
|
7659
7660
|
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7660
7661
|
}
|
|
7662
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
7663
|
+
/**
|
|
7664
|
+
* @method
|
|
7665
|
+
* @name okx#createConvertTrade
|
|
7666
|
+
* @description convert from one currency to another
|
|
7667
|
+
* @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-convert-trade
|
|
7668
|
+
* @param {string} id the id of the trade that you want to make
|
|
7669
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
7670
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
7671
|
+
* @param {float} [amount] how much you want to trade in units of the from currency
|
|
7672
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7673
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
7674
|
+
*/
|
|
7675
|
+
await this.loadMarkets();
|
|
7676
|
+
const request = {
|
|
7677
|
+
'quoteId': id,
|
|
7678
|
+
'baseCcy': fromCode,
|
|
7679
|
+
'quoteCcy': toCode,
|
|
7680
|
+
'szCcy': fromCode,
|
|
7681
|
+
'sz': this.numberToString(amount),
|
|
7682
|
+
'side': 'sell',
|
|
7683
|
+
};
|
|
7684
|
+
const response = await this.privatePostAssetConvertTrade(this.extend(request, params));
|
|
7685
|
+
//
|
|
7686
|
+
// {
|
|
7687
|
+
// "code": "0",
|
|
7688
|
+
// "data": [
|
|
7689
|
+
// {
|
|
7690
|
+
// "baseCcy": "ETH",
|
|
7691
|
+
// "clTReqId": "",
|
|
7692
|
+
// "fillBaseSz": "0.01023052",
|
|
7693
|
+
// "fillPx": "2932.40104429",
|
|
7694
|
+
// "fillQuoteSz": "30",
|
|
7695
|
+
// "instId": "ETH-USDT",
|
|
7696
|
+
// "quoteCcy": "USDT",
|
|
7697
|
+
// "quoteId": "quoterETH-USDT16461885104612381",
|
|
7698
|
+
// "side": "buy",
|
|
7699
|
+
// "state": "fullyFilled",
|
|
7700
|
+
// "tradeId": "trader16461885203381437",
|
|
7701
|
+
// "ts": "1646188520338"
|
|
7702
|
+
// }
|
|
7703
|
+
// ],
|
|
7704
|
+
// "msg": ""
|
|
7705
|
+
// }
|
|
7706
|
+
//
|
|
7707
|
+
const data = this.safeList(response, 'data', []);
|
|
7708
|
+
const result = this.safeDict(data, 0, {});
|
|
7709
|
+
const fromCurrencyId = this.safeString(result, 'baseCcy', fromCode);
|
|
7710
|
+
const fromCurrency = this.currency(fromCurrencyId);
|
|
7711
|
+
const toCurrencyId = this.safeString(result, 'quoteCcy', toCode);
|
|
7712
|
+
const toCurrency = this.currency(toCurrencyId);
|
|
7713
|
+
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7714
|
+
}
|
|
7661
7715
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
7662
7716
|
//
|
|
7663
7717
|
// fetchConvertQuote
|
|
@@ -7678,7 +7732,24 @@ class okx extends okx$1 {
|
|
|
7678
7732
|
// "ttlMs": "10000"
|
|
7679
7733
|
// }
|
|
7680
7734
|
//
|
|
7681
|
-
|
|
7735
|
+
// createConvertTrade
|
|
7736
|
+
//
|
|
7737
|
+
// {
|
|
7738
|
+
// "baseCcy": "ETH",
|
|
7739
|
+
// "clTReqId": "",
|
|
7740
|
+
// "fillBaseSz": "0.01023052",
|
|
7741
|
+
// "fillPx": "2932.40104429",
|
|
7742
|
+
// "fillQuoteSz": "30",
|
|
7743
|
+
// "instId": "ETH-USDT",
|
|
7744
|
+
// "quoteCcy": "USDT",
|
|
7745
|
+
// "quoteId": "quoterETH-USDT16461885104612381",
|
|
7746
|
+
// "side": "buy",
|
|
7747
|
+
// "state": "fullyFilled",
|
|
7748
|
+
// "tradeId": "trader16461885203381437",
|
|
7749
|
+
// "ts": "1646188520338"
|
|
7750
|
+
// }
|
|
7751
|
+
//
|
|
7752
|
+
const timestamp = this.safeInteger2(conversion, 'quoteTime', 'ts');
|
|
7682
7753
|
const fromCoin = this.safeString(conversion, 'baseCcy');
|
|
7683
7754
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
|
7684
7755
|
const to = this.safeString(conversion, 'quoteCcy');
|
|
@@ -7687,12 +7758,12 @@ class okx extends okx$1 {
|
|
|
7687
7758
|
'info': conversion,
|
|
7688
7759
|
'timestamp': timestamp,
|
|
7689
7760
|
'datetime': this.iso8601(timestamp),
|
|
7690
|
-
'id': this.
|
|
7761
|
+
'id': this.safeStringN(conversion, ['clQReqId', 'tradeId', 'quoteId']),
|
|
7691
7762
|
'fromCurrency': fromCode,
|
|
7692
|
-
'fromAmount': this.
|
|
7763
|
+
'fromAmount': this.safeNumber2(conversion, 'baseSz', 'fillBaseSz'),
|
|
7693
7764
|
'toCurrency': toCode,
|
|
7694
|
-
'toAmount': this.
|
|
7695
|
-
'price': this.
|
|
7765
|
+
'toAmount': this.safeNumber2(conversion, 'quoteSz', 'fillQuoteSz'),
|
|
7766
|
+
'price': this.safeNumber2(conversion, 'cnvtPx', 'fillPx'),
|
|
7696
7767
|
'fee': undefined,
|
|
7697
7768
|
};
|
|
7698
7769
|
}
|
|
@@ -134,7 +134,7 @@ class kraken extends kraken$1 {
|
|
|
134
134
|
'pair': market['wsId'],
|
|
135
135
|
'volume': this.amountToPrecision(symbol, amount),
|
|
136
136
|
};
|
|
137
|
-
[request, params] = this.orderRequest('createOrderWs
|
|
137
|
+
[request, params] = this.orderRequest('createOrderWs', symbol, type, request, price, params);
|
|
138
138
|
return await this.watch(url, messageHash, this.extend(request, params), messageHash);
|
|
139
139
|
}
|
|
140
140
|
handleCreateEditOrder(client, message) {
|
|
@@ -190,7 +190,7 @@ class kraken extends kraken$1 {
|
|
|
190
190
|
'pair': market['wsId'],
|
|
191
191
|
'volume': this.amountToPrecision(symbol, amount),
|
|
192
192
|
};
|
|
193
|
-
[request, params] = this.orderRequest('editOrderWs
|
|
193
|
+
[request, params] = this.orderRequest('editOrderWs', symbol, type, request, price, params);
|
|
194
194
|
return await this.watch(url, messageHash, this.extend(request, params), messageHash);
|
|
195
195
|
}
|
|
196
196
|
async cancelOrdersWs(ids, symbol = undefined, params = {}) {
|
package/dist/cjs/src/woo.js
CHANGED
|
@@ -36,6 +36,7 @@ class woo extends woo$1 {
|
|
|
36
36
|
'cancelWithdraw': false,
|
|
37
37
|
'closeAllPositions': false,
|
|
38
38
|
'closePosition': false,
|
|
39
|
+
'createConvertTrade': true,
|
|
39
40
|
'createDepositAddress': false,
|
|
40
41
|
'createMarketBuyOrderWithCost': true,
|
|
41
42
|
'createMarketOrder': false,
|
|
@@ -3029,6 +3030,37 @@ class woo extends woo$1 {
|
|
|
3029
3030
|
const toCurrency = this.currency(toCurrencyId);
|
|
3030
3031
|
return this.parseConversion(data, fromCurrency, toCurrency);
|
|
3031
3032
|
}
|
|
3033
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
3034
|
+
/**
|
|
3035
|
+
* @method
|
|
3036
|
+
* @name woo#createConvertTrade
|
|
3037
|
+
* @description convert from one currency to another
|
|
3038
|
+
* @see https://docs.woo.org/#send-quote-rft
|
|
3039
|
+
* @param {string} id the id of the trade that you want to make
|
|
3040
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
3041
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
3042
|
+
* @param {float} [amount] how much you want to trade in units of the from currency
|
|
3043
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3044
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
3045
|
+
*/
|
|
3046
|
+
await this.loadMarkets();
|
|
3047
|
+
const request = {
|
|
3048
|
+
'quoteId': id,
|
|
3049
|
+
};
|
|
3050
|
+
const response = await this.v3PrivatePostConvertRft(this.extend(request, params));
|
|
3051
|
+
//
|
|
3052
|
+
// {
|
|
3053
|
+
// "success": true,
|
|
3054
|
+
// "data": {
|
|
3055
|
+
// "quoteId": 123123123,
|
|
3056
|
+
// "counterPartyId": "",
|
|
3057
|
+
// "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
|
|
3058
|
+
// }
|
|
3059
|
+
// }
|
|
3060
|
+
//
|
|
3061
|
+
const data = this.safeDict(response, 'data', {});
|
|
3062
|
+
return this.parseConversion(data);
|
|
3063
|
+
}
|
|
3032
3064
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
3033
3065
|
//
|
|
3034
3066
|
// fetchConvertQuote
|
|
@@ -3045,6 +3077,14 @@ class woo extends woo$1 {
|
|
|
3045
3077
|
// "message": 1659084466000
|
|
3046
3078
|
// }
|
|
3047
3079
|
//
|
|
3080
|
+
// createConvertTrade
|
|
3081
|
+
//
|
|
3082
|
+
// {
|
|
3083
|
+
// "quoteId": 123123123,
|
|
3084
|
+
// "counterPartyId": "",
|
|
3085
|
+
// "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
|
|
3086
|
+
// }
|
|
3087
|
+
//
|
|
3048
3088
|
const timestamp = this.safeInteger(conversion, 'expireTimestamp');
|
|
3049
3089
|
const fromCoin = this.safeString(conversion, 'sellToken');
|
|
3050
3090
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
package/js/ccxt.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
|
|
|
4
4
|
import * as errors from './src/base/errors.js';
|
|
5
5
|
import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, Conversion } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.
|
|
7
|
+
declare const version = "4.3.0";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|
package/js/ccxt.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
|
|
|
38
38
|
import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.
|
|
41
|
+
const version = '4.3.1';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
package/js/src/binance.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Exchange from './abstract/binance.js';
|
|
2
|
-
import type { TransferEntry, Int, OrderSide, Balances, OrderType, Trade, OHLCV, Order, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Market, Greeks, Strings, Currency, MarketInterface, MarginMode, MarginModes, Leverage, Leverages, Num, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees } from './base/types.js';
|
|
2
|
+
import type { TransferEntry, Int, OrderSide, Balances, OrderType, Trade, OHLCV, Order, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Market, Greeks, Strings, Currency, MarketInterface, MarginMode, MarginModes, Leverage, Leverages, Num, Option, MarginModification, TradingFeeInterface, Currencies, TradingFees, Conversion } from './base/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @class binance
|
|
5
5
|
* @augments Exchange
|
|
@@ -440,4 +440,6 @@ export default class binance extends Exchange {
|
|
|
440
440
|
};
|
|
441
441
|
fetchMarginAdjustmentHistory(symbol?: Str, type?: Str, since?: Num, limit?: Num, params?: {}): Promise<MarginModification[]>;
|
|
442
442
|
fetchConvertCurrencies(params?: {}): Promise<Currencies>;
|
|
443
|
+
createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
444
|
+
parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
|
|
443
445
|
}
|
package/js/src/binance.js
CHANGED
|
@@ -43,6 +43,7 @@ export default class binance extends Exchange {
|
|
|
43
43
|
'cancelOrders': true,
|
|
44
44
|
'closeAllPositions': false,
|
|
45
45
|
'closePosition': false,
|
|
46
|
+
'createConvertTrade': true,
|
|
46
47
|
'createDepositAddress': false,
|
|
47
48
|
'createLimitBuyOrder': true,
|
|
48
49
|
'createLimitSellOrder': true,
|
|
@@ -12649,4 +12650,59 @@ export default class binance extends Exchange {
|
|
|
12649
12650
|
}
|
|
12650
12651
|
return result;
|
|
12651
12652
|
}
|
|
12653
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
12654
|
+
/**
|
|
12655
|
+
* @method
|
|
12656
|
+
* @name binance#createConvertTrade
|
|
12657
|
+
* @description convert from one currency to another
|
|
12658
|
+
* @see https://binance-docs.github.io/apidocs/spot/en/#busd-convert-trade
|
|
12659
|
+
* @param {string} id the id of the trade that you want to make
|
|
12660
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
12661
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
12662
|
+
* @param {float} [amount] how much you want to trade in units of the from currency
|
|
12663
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
12664
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
12665
|
+
*/
|
|
12666
|
+
await this.loadMarkets();
|
|
12667
|
+
const request = {
|
|
12668
|
+
'clientTranId': id,
|
|
12669
|
+
'asset': fromCode,
|
|
12670
|
+
'targetAsset': toCode,
|
|
12671
|
+
'amount': amount,
|
|
12672
|
+
};
|
|
12673
|
+
const response = await this.sapiPostAssetConvertTransfer(this.extend(request, params));
|
|
12674
|
+
//
|
|
12675
|
+
// {
|
|
12676
|
+
// "tranId": 118263407119,
|
|
12677
|
+
// "status": "S"
|
|
12678
|
+
// }
|
|
12679
|
+
//
|
|
12680
|
+
const fromCurrency = this.currency(fromCode);
|
|
12681
|
+
const toCurrency = this.currency(toCode);
|
|
12682
|
+
return this.parseConversion(response, fromCurrency, toCurrency);
|
|
12683
|
+
}
|
|
12684
|
+
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
12685
|
+
//
|
|
12686
|
+
// createConvertTrade
|
|
12687
|
+
//
|
|
12688
|
+
// {
|
|
12689
|
+
// "tranId": 118263407119,
|
|
12690
|
+
// "status": "S"
|
|
12691
|
+
// }
|
|
12692
|
+
//
|
|
12693
|
+
const fromCode = this.safeCurrencyCode(undefined, fromCurrency);
|
|
12694
|
+
const toCode = this.safeCurrencyCode(undefined, toCurrency);
|
|
12695
|
+
return {
|
|
12696
|
+
'info': conversion,
|
|
12697
|
+
'timestamp': undefined,
|
|
12698
|
+
'datetime': undefined,
|
|
12699
|
+
'id': this.safeString(conversion, 'tranId'),
|
|
12700
|
+
'fromCurrency': fromCode,
|
|
12701
|
+
'fromAmount': undefined,
|
|
12702
|
+
'toCurrency': toCode,
|
|
12703
|
+
'toAmount': undefined,
|
|
12704
|
+
'price': undefined,
|
|
12705
|
+
'fee': undefined,
|
|
12706
|
+
};
|
|
12707
|
+
}
|
|
12652
12708
|
}
|
package/js/src/bingx.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
import Exchange from './abstract/bingx.js';
|
|
9
|
-
import { AuthenticationError, PermissionDenied, AccountSuspended, ExchangeError, InsufficientFunds, BadRequest, OrderNotFound, DDoSProtection, BadSymbol, ArgumentsRequired, NotSupported } from './base/errors.js';
|
|
9
|
+
import { AuthenticationError, PermissionDenied, AccountSuspended, ExchangeError, InsufficientFunds, BadRequest, OrderNotFound, DDoSProtection, BadSymbol, ArgumentsRequired, NotSupported, ExchangeNotAvailable } from './base/errors.js';
|
|
10
10
|
import { Precise } from './base/Precise.js';
|
|
11
11
|
import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
|
|
12
12
|
import { DECIMAL_PLACES } from './base/functions/number.js';
|
|
@@ -387,7 +387,7 @@ export default class bingx extends Exchange {
|
|
|
387
387
|
'100400': BadRequest,
|
|
388
388
|
'100421': BadSymbol,
|
|
389
389
|
'100440': ExchangeError,
|
|
390
|
-
'100500':
|
|
390
|
+
'100500': ExchangeNotAvailable,
|
|
391
391
|
'100503': ExchangeError,
|
|
392
392
|
'80001': BadRequest,
|
|
393
393
|
'80012': InsufficientFunds,
|
|
@@ -3979,7 +3979,7 @@ export default class bingx extends Exchange {
|
|
|
3979
3979
|
let market = undefined;
|
|
3980
3980
|
if (symbol !== undefined) {
|
|
3981
3981
|
market = this.market(symbol);
|
|
3982
|
-
request['symbol'] =
|
|
3982
|
+
request['symbol'] = market['id'];
|
|
3983
3983
|
}
|
|
3984
3984
|
if (since !== undefined) {
|
|
3985
3985
|
request['startTime'] = since;
|
package/js/src/bitget.d.ts
CHANGED
|
@@ -283,6 +283,7 @@ export default class bitget extends Exchange {
|
|
|
283
283
|
fetchMarginMode(symbol: string, params?: {}): Promise<MarginMode>;
|
|
284
284
|
parseMarginMode(marginMode: any, market?: any): MarginMode;
|
|
285
285
|
fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
286
|
+
createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
286
287
|
parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
|
|
287
288
|
fetchConvertCurrencies(params?: {}): Promise<Currencies>;
|
|
288
289
|
handleErrors(code: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
|
package/js/src/bitget.js
CHANGED
|
@@ -40,6 +40,7 @@ export default class bitget extends Exchange {
|
|
|
40
40
|
'cancelOrders': true,
|
|
41
41
|
'closeAllPositions': true,
|
|
42
42
|
'closePosition': true,
|
|
43
|
+
'createConvertTrade': true,
|
|
43
44
|
'createDepositAddress': false,
|
|
44
45
|
'createMarketBuyOrderWithCost': true,
|
|
45
46
|
'createMarketOrderWithCost': false,
|
|
@@ -8461,8 +8462,8 @@ export default class bitget extends Exchange {
|
|
|
8461
8462
|
*/
|
|
8462
8463
|
await this.loadMarkets();
|
|
8463
8464
|
const request = {
|
|
8464
|
-
'fromCoin': fromCode
|
|
8465
|
-
'toCoin': toCode
|
|
8465
|
+
'fromCoin': fromCode,
|
|
8466
|
+
'toCoin': toCode,
|
|
8466
8467
|
'fromCoinSize': this.numberToString(amount),
|
|
8467
8468
|
};
|
|
8468
8469
|
const response = await this.privateConvertGetV2ConvertQuotedPrice(this.extend(request, params));
|
|
@@ -8489,6 +8490,58 @@ export default class bitget extends Exchange {
|
|
|
8489
8490
|
const toCurrency = this.currency(toCurrencyId);
|
|
8490
8491
|
return this.parseConversion(data, fromCurrency, toCurrency);
|
|
8491
8492
|
}
|
|
8493
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
8494
|
+
/**
|
|
8495
|
+
* @method
|
|
8496
|
+
* @name bitget#createConvertTrade
|
|
8497
|
+
* @description convert from one currency to another
|
|
8498
|
+
* @see https://www.bitget.com/api-doc/common/convert/Trade
|
|
8499
|
+
* @param {string} id the id of the trade that you want to make
|
|
8500
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
8501
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
8502
|
+
* @param {float} amount how much you want to trade in units of the from currency
|
|
8503
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
8504
|
+
* @param {string} params.price the price of the conversion, obtained from fetchConvertQuote()
|
|
8505
|
+
* @param {string} params.toAmount the amount you want to trade in units of the toCurrency, obtained from fetchConvertQuote()
|
|
8506
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
8507
|
+
*/
|
|
8508
|
+
await this.loadMarkets();
|
|
8509
|
+
const price = this.safeString2(params, 'price', 'cnvtPrice');
|
|
8510
|
+
if (price === undefined) {
|
|
8511
|
+
throw new ArgumentsRequired(this.id + ' createConvertTrade() requires a price parameter');
|
|
8512
|
+
}
|
|
8513
|
+
const toAmount = this.safeString2(params, 'toAmount', 'toCoinSize');
|
|
8514
|
+
if (toAmount === undefined) {
|
|
8515
|
+
throw new ArgumentsRequired(this.id + ' createConvertTrade() requires a toAmount parameter');
|
|
8516
|
+
}
|
|
8517
|
+
params = this.omit(params, ['price', 'toAmount']);
|
|
8518
|
+
const request = {
|
|
8519
|
+
'traceId': id,
|
|
8520
|
+
'fromCoin': fromCode,
|
|
8521
|
+
'toCoin': toCode,
|
|
8522
|
+
'fromCoinSize': this.numberToString(amount),
|
|
8523
|
+
'toCoinSize': toAmount,
|
|
8524
|
+
'cnvtPrice': price,
|
|
8525
|
+
};
|
|
8526
|
+
const response = await this.privateConvertPostV2ConvertTrade(this.extend(request, params));
|
|
8527
|
+
//
|
|
8528
|
+
// {
|
|
8529
|
+
// "code": "00000",
|
|
8530
|
+
// "msg": "success",
|
|
8531
|
+
// "requestTime": 1712123746203,
|
|
8532
|
+
// "data": {
|
|
8533
|
+
// "cnvtPrice": "0.99940076",
|
|
8534
|
+
// "toCoin": "USDC",
|
|
8535
|
+
// "toCoinSize": "4.99700379",
|
|
8536
|
+
// "ts": "1712123746217"
|
|
8537
|
+
// }
|
|
8538
|
+
// }
|
|
8539
|
+
//
|
|
8540
|
+
const data = this.safeDict(response, 'data', {});
|
|
8541
|
+
const toCurrencyId = this.safeString(data, 'toCoin', toCode);
|
|
8542
|
+
const toCurrency = this.currency(toCurrencyId);
|
|
8543
|
+
return this.parseConversion(data, undefined, toCurrency);
|
|
8544
|
+
}
|
|
8492
8545
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
8493
8546
|
//
|
|
8494
8547
|
// fetchConvertQuote
|
|
@@ -8503,6 +8556,15 @@ export default class bitget extends Exchange {
|
|
|
8503
8556
|
// "fee": "0"
|
|
8504
8557
|
// }
|
|
8505
8558
|
//
|
|
8559
|
+
// createConvertTrade
|
|
8560
|
+
//
|
|
8561
|
+
// {
|
|
8562
|
+
// "cnvtPrice": "0.99940076",
|
|
8563
|
+
// "toCoin": "USDC",
|
|
8564
|
+
// "toCoinSize": "4.99700379",
|
|
8565
|
+
// "ts": "1712123746217"
|
|
8566
|
+
// }
|
|
8567
|
+
//
|
|
8506
8568
|
const timestamp = this.safeInteger(conversion, 'ts');
|
|
8507
8569
|
const fromCoin = this.safeString(conversion, 'fromCoin');
|
|
8508
8570
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
package/js/src/bybit.js
CHANGED
|
@@ -5381,7 +5381,7 @@ export default class bybit extends Exchange {
|
|
|
5381
5381
|
const coin = this.safeString(result, 'coin');
|
|
5382
5382
|
currency = this.currency(coin);
|
|
5383
5383
|
const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
|
|
5384
|
-
'currency': currency['
|
|
5384
|
+
'currency': currency['code'],
|
|
5385
5385
|
});
|
|
5386
5386
|
return this.indexBy(parsed, 'network');
|
|
5387
5387
|
}
|
package/js/src/coinex.js
CHANGED
|
@@ -615,55 +615,52 @@ export default class coinex extends Exchange {
|
|
|
615
615
|
* @method
|
|
616
616
|
* @name coinex#fetchMarkets
|
|
617
617
|
* @description retrieves data on all markets for coinex
|
|
618
|
-
* @see https://
|
|
619
|
-
* @see https://
|
|
618
|
+
* @see https://docs.coinex.com/api/v2/spot/market/http/list-market
|
|
619
|
+
* @see https://docs.coinex.com/api/v2/futures/market/http/list-market
|
|
620
620
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
621
621
|
* @returns {object[]} an array of objects representing market data
|
|
622
622
|
*/
|
|
623
|
-
|
|
623
|
+
const promisesUnresolved = [
|
|
624
624
|
this.fetchSpotMarkets(params),
|
|
625
625
|
this.fetchContractMarkets(params),
|
|
626
626
|
];
|
|
627
|
-
promises = await Promise.all(
|
|
627
|
+
const promises = await Promise.all(promisesUnresolved);
|
|
628
628
|
const spotMarkets = promises[0];
|
|
629
629
|
const swapMarkets = promises[1];
|
|
630
630
|
return this.arrayConcat(spotMarkets, swapMarkets);
|
|
631
631
|
}
|
|
632
632
|
async fetchSpotMarkets(params) {
|
|
633
|
-
const response = await this.
|
|
633
|
+
const response = await this.v2PublicGetSpotMarket(params);
|
|
634
634
|
//
|
|
635
635
|
// {
|
|
636
636
|
// "code": 0,
|
|
637
|
-
// "data":
|
|
638
|
-
//
|
|
639
|
-
// "
|
|
640
|
-
// "
|
|
641
|
-
// "
|
|
642
|
-
// "
|
|
643
|
-
// "
|
|
644
|
-
// "
|
|
645
|
-
// "
|
|
646
|
-
// "
|
|
647
|
-
//
|
|
648
|
-
//
|
|
637
|
+
// "data": [
|
|
638
|
+
// {
|
|
639
|
+
// "base_ccy": "SORA",
|
|
640
|
+
// "base_ccy_precision": 8,
|
|
641
|
+
// "is_amm_available": true,
|
|
642
|
+
// "is_margin_available": false,
|
|
643
|
+
// "maker_fee_rate": "0.003",
|
|
644
|
+
// "market": "SORAUSDT",
|
|
645
|
+
// "min_amount": "500",
|
|
646
|
+
// "quote_ccy": "USDT",
|
|
647
|
+
// "quote_ccy_precision": 6,
|
|
648
|
+
// "taker_fee_rate": "0.003"
|
|
649
|
+
// },
|
|
650
|
+
// ],
|
|
651
|
+
// "message": "OK"
|
|
649
652
|
// }
|
|
650
653
|
//
|
|
651
|
-
const markets = this.
|
|
654
|
+
const markets = this.safeList(response, 'data', []);
|
|
652
655
|
const result = [];
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
const
|
|
656
|
-
const
|
|
657
|
-
const
|
|
658
|
-
const tradingName = this.safeString(market, 'trading_name');
|
|
659
|
-
const baseId = tradingName;
|
|
660
|
-
const quoteId = this.safeString(market, 'pricing_name');
|
|
656
|
+
for (let i = 0; i < markets.length; i++) {
|
|
657
|
+
const market = markets[i];
|
|
658
|
+
const id = this.safeString(market, 'market');
|
|
659
|
+
const baseId = this.safeString(market, 'base_ccy');
|
|
660
|
+
const quoteId = this.safeString(market, 'quote_ccy');
|
|
661
661
|
const base = this.safeCurrencyCode(baseId);
|
|
662
662
|
const quote = this.safeCurrencyCode(quoteId);
|
|
663
|
-
|
|
664
|
-
if (tradingName === id) {
|
|
665
|
-
symbol = id;
|
|
666
|
-
}
|
|
663
|
+
const symbol = base + '/' + quote;
|
|
667
664
|
result.push({
|
|
668
665
|
'id': id,
|
|
669
666
|
'symbol': symbol,
|
|
@@ -691,8 +688,8 @@ export default class coinex extends Exchange {
|
|
|
691
688
|
'strike': undefined,
|
|
692
689
|
'optionType': undefined,
|
|
693
690
|
'precision': {
|
|
694
|
-
'amount': this.parseNumber(this.parsePrecision(this.safeString(market, '
|
|
695
|
-
'price': this.parseNumber(this.parsePrecision(this.safeString(market, '
|
|
691
|
+
'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'base_ccy_precision'))),
|
|
692
|
+
'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quote_ccy_precision'))),
|
|
696
693
|
},
|
|
697
694
|
'limits': {
|
|
698
695
|
'leverage': {
|
|
@@ -719,45 +716,43 @@ export default class coinex extends Exchange {
|
|
|
719
716
|
return result;
|
|
720
717
|
}
|
|
721
718
|
async fetchContractMarkets(params) {
|
|
722
|
-
const response = await this.
|
|
719
|
+
const response = await this.v2PublicGetFuturesMarket(params);
|
|
723
720
|
//
|
|
724
721
|
// {
|
|
725
722
|
// "code": 0,
|
|
726
723
|
// "data": [
|
|
727
724
|
// {
|
|
728
|
-
// "
|
|
729
|
-
// "
|
|
730
|
-
// "
|
|
731
|
-
// "
|
|
732
|
-
// "
|
|
733
|
-
// "
|
|
734
|
-
// "
|
|
735
|
-
// "
|
|
736
|
-
// "
|
|
737
|
-
// "
|
|
738
|
-
// "
|
|
739
|
-
// "tick_size": "0.1", // Min. Price Increment
|
|
740
|
-
// "available": true
|
|
725
|
+
// "base_ccy": "BTC",
|
|
726
|
+
// "base_ccy_precision": 8,
|
|
727
|
+
// "contract_type": "inverse",
|
|
728
|
+
// "leverage": ["1","2","3","5","8","10","15","20","30","50","100"],
|
|
729
|
+
// "maker_fee_rate": "0",
|
|
730
|
+
// "market": "BTCUSD",
|
|
731
|
+
// "min_amount": "10",
|
|
732
|
+
// "open_interest_volume": "2566879",
|
|
733
|
+
// "quote_ccy": "USD",
|
|
734
|
+
// "quote_ccy_precision": 2,
|
|
735
|
+
// "taker_fee_rate": "0"
|
|
741
736
|
// },
|
|
742
737
|
// ],
|
|
743
738
|
// "message": "OK"
|
|
744
739
|
// }
|
|
745
740
|
//
|
|
746
|
-
const markets = this.
|
|
741
|
+
const markets = this.safeList(response, 'data', []);
|
|
747
742
|
const result = [];
|
|
748
743
|
for (let i = 0; i < markets.length; i++) {
|
|
749
744
|
const entry = markets[i];
|
|
750
745
|
const fees = this.fees;
|
|
751
|
-
const leverages = this.
|
|
752
|
-
const subType = this.
|
|
753
|
-
const linear = (subType ===
|
|
754
|
-
const inverse = (subType ===
|
|
755
|
-
const id = this.safeString(entry, '
|
|
756
|
-
const baseId = this.safeString(entry, '
|
|
757
|
-
const quoteId = this.safeString(entry, '
|
|
746
|
+
const leverages = this.safeList(entry, 'leverage', []);
|
|
747
|
+
const subType = this.safeString(entry, 'contract_type');
|
|
748
|
+
const linear = (subType === 'linear');
|
|
749
|
+
const inverse = (subType === 'inverse');
|
|
750
|
+
const id = this.safeString(entry, 'market');
|
|
751
|
+
const baseId = this.safeString(entry, 'base_ccy');
|
|
752
|
+
const quoteId = this.safeString(entry, 'quote_ccy');
|
|
758
753
|
const base = this.safeCurrencyCode(baseId);
|
|
759
754
|
const quote = this.safeCurrencyCode(quoteId);
|
|
760
|
-
const settleId = (subType ===
|
|
755
|
+
const settleId = (subType === 'linear') ? 'USDT' : baseId;
|
|
761
756
|
const settle = this.safeCurrencyCode(settleId);
|
|
762
757
|
const symbol = base + '/' + quote + ':' + settle;
|
|
763
758
|
const leveragesLength = leverages.length;
|
|
@@ -776,20 +771,20 @@ export default class coinex extends Exchange {
|
|
|
776
771
|
'swap': true,
|
|
777
772
|
'future': false,
|
|
778
773
|
'option': false,
|
|
779
|
-
'active':
|
|
774
|
+
'active': undefined,
|
|
780
775
|
'contract': true,
|
|
781
776
|
'linear': linear,
|
|
782
777
|
'inverse': inverse,
|
|
783
778
|
'taker': fees['trading']['taker'],
|
|
784
779
|
'maker': fees['trading']['maker'],
|
|
785
|
-
'contractSize': this.
|
|
780
|
+
'contractSize': this.parseNumber('1'),
|
|
786
781
|
'expiry': undefined,
|
|
787
782
|
'expiryDatetime': undefined,
|
|
788
783
|
'strike': undefined,
|
|
789
784
|
'optionType': undefined,
|
|
790
785
|
'precision': {
|
|
791
|
-
'amount': this.parseNumber(this.parsePrecision(this.safeString(entry, '
|
|
792
|
-
'price': this.parseNumber(this.parsePrecision(this.safeString(entry, '
|
|
786
|
+
'amount': this.parseNumber(this.parsePrecision(this.safeString(entry, 'base_ccy_precision'))),
|
|
787
|
+
'price': this.parseNumber(this.parsePrecision(this.safeString(entry, 'quote_ccy_precision'))),
|
|
793
788
|
},
|
|
794
789
|
'limits': {
|
|
795
790
|
'leverage': {
|
|
@@ -797,7 +792,7 @@ export default class coinex extends Exchange {
|
|
|
797
792
|
'max': this.safeNumber(leverages, leveragesLength - 1),
|
|
798
793
|
},
|
|
799
794
|
'amount': {
|
|
800
|
-
'min': this.safeNumber(entry, '
|
|
795
|
+
'min': this.safeNumber(entry, 'min_amount'),
|
|
801
796
|
'max': undefined,
|
|
802
797
|
},
|
|
803
798
|
'price': {
|