ccxt 4.2.99 → 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/ascendex.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 +19 -17
- 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/ascendex.js +2 -2
- 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 +19 -17
- 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/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': {
|
package/js/src/kraken.js
CHANGED
|
@@ -1380,7 +1380,7 @@ export default class kraken extends Exchange {
|
|
|
1380
1380
|
'ordertype': type,
|
|
1381
1381
|
'volume': this.amountToPrecision(symbol, amount),
|
|
1382
1382
|
};
|
|
1383
|
-
const orderRequest = this.orderRequest('createOrder
|
|
1383
|
+
const orderRequest = this.orderRequest('createOrder', symbol, type, request, price, params);
|
|
1384
1384
|
const response = await this.privatePostAddOrder(this.extend(orderRequest[0], orderRequest[1]));
|
|
1385
1385
|
//
|
|
1386
1386
|
// {
|
|
@@ -1745,7 +1745,12 @@ export default class kraken extends Exchange {
|
|
|
1745
1745
|
}
|
|
1746
1746
|
}
|
|
1747
1747
|
if (reduceOnly) {
|
|
1748
|
-
|
|
1748
|
+
if (method === 'createOrderWs') {
|
|
1749
|
+
request['reduce_only'] = true; // ws request can't have stringified bool
|
|
1750
|
+
}
|
|
1751
|
+
else {
|
|
1752
|
+
request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
|
|
1753
|
+
}
|
|
1749
1754
|
}
|
|
1750
1755
|
let close = this.safeValue(params, 'close');
|
|
1751
1756
|
if (close !== undefined) {
|
|
@@ -1806,7 +1811,7 @@ export default class kraken extends Exchange {
|
|
|
1806
1811
|
if (amount !== undefined) {
|
|
1807
1812
|
request['volume'] = this.amountToPrecision(symbol, amount);
|
|
1808
1813
|
}
|
|
1809
|
-
const orderRequest = this.orderRequest('editOrder
|
|
1814
|
+
const orderRequest = this.orderRequest('editOrder', symbol, type, request, price, params);
|
|
1810
1815
|
const response = await this.privatePostEditOrder(this.extend(orderRequest[0], orderRequest[1]));
|
|
1811
1816
|
//
|
|
1812
1817
|
// {
|
package/js/src/kucoin.js
CHANGED
|
@@ -590,6 +590,8 @@ export default class kucoin extends Exchange {
|
|
|
590
590
|
'BIFI': 'BIFIF',
|
|
591
591
|
'VAI': 'VAIOT',
|
|
592
592
|
'WAX': 'WAXP',
|
|
593
|
+
'ALT': 'APTOSLAUNCHTOKEN',
|
|
594
|
+
'KALT': 'ALT', // ALTLAYER
|
|
593
595
|
},
|
|
594
596
|
'options': {
|
|
595
597
|
'version': 'v1',
|
|
@@ -1200,10 +1202,10 @@ export default class kucoin extends Exchange {
|
|
|
1200
1202
|
// }
|
|
1201
1203
|
//
|
|
1202
1204
|
const responses = await Promise.all(promises);
|
|
1203
|
-
const currenciesResponse = this.
|
|
1204
|
-
const currenciesData = this.
|
|
1205
|
-
const additionalResponse = this.
|
|
1206
|
-
const additionalData = this.
|
|
1205
|
+
const currenciesResponse = this.safeDict(responses, 0, {});
|
|
1206
|
+
const currenciesData = this.safeList(currenciesResponse, 'data', []);
|
|
1207
|
+
const additionalResponse = this.safeDict(responses, 1, {});
|
|
1208
|
+
const additionalData = this.safeList(additionalResponse, 'data', []);
|
|
1207
1209
|
const additionalDataGrouped = this.groupBy(additionalData, 'currency');
|
|
1208
1210
|
const result = {};
|
|
1209
1211
|
for (let i = 0; i < currenciesData.length; i++) {
|
|
@@ -1215,7 +1217,7 @@ export default class kucoin extends Exchange {
|
|
|
1215
1217
|
let isDepositEnabled = undefined;
|
|
1216
1218
|
const networks = {};
|
|
1217
1219
|
const chains = this.safeList(entry, 'chains', []);
|
|
1218
|
-
const extraChainsData = this.indexBy(this.
|
|
1220
|
+
const extraChainsData = this.indexBy(this.safeList(additionalDataGrouped, id, []), 'chain');
|
|
1219
1221
|
const rawPrecision = this.safeString(entry, 'precision');
|
|
1220
1222
|
const precision = this.parseNumber(this.parsePrecision(rawPrecision));
|
|
1221
1223
|
const chainsLength = chains.length;
|
|
@@ -1356,7 +1358,7 @@ export default class kucoin extends Exchange {
|
|
|
1356
1358
|
request['chain'] = this.networkCodeToId(networkCode).toLowerCase();
|
|
1357
1359
|
}
|
|
1358
1360
|
const response = await this.privateGetWithdrawalsQuotas(this.extend(request, params));
|
|
1359
|
-
const data = this.
|
|
1361
|
+
const data = this.safeDict(response, 'data', {});
|
|
1360
1362
|
const withdrawFees = {};
|
|
1361
1363
|
withdrawFees[code] = this.safeNumber(data, 'withdrawMinFee');
|
|
1362
1364
|
return {
|
|
@@ -1810,7 +1812,7 @@ export default class kucoin extends Exchange {
|
|
|
1810
1812
|
}
|
|
1811
1813
|
let code = undefined;
|
|
1812
1814
|
if (currency !== undefined) {
|
|
1813
|
-
code = currency['id'];
|
|
1815
|
+
code = this.safeCurrencyCode(currency['id']);
|
|
1814
1816
|
if (code !== 'NIM') {
|
|
1815
1817
|
// contains spaces
|
|
1816
1818
|
this.checkAddress(address);
|
|
@@ -1860,7 +1862,7 @@ export default class kucoin extends Exchange {
|
|
|
1860
1862
|
this.options['versions']['private']['GET']['deposit-addresses'] = version;
|
|
1861
1863
|
const chains = this.safeList(response, 'data', []);
|
|
1862
1864
|
const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
|
|
1863
|
-
'currency': currency['
|
|
1865
|
+
'currency': currency['code'],
|
|
1864
1866
|
});
|
|
1865
1867
|
return this.indexBy(parsed, 'network');
|
|
1866
1868
|
}
|
|
@@ -2974,7 +2976,7 @@ export default class kucoin extends Exchange {
|
|
|
2974
2976
|
* @method
|
|
2975
2977
|
* @name kucoin#fetchTrades
|
|
2976
2978
|
* @description get the list of most recent trades for a particular symbol
|
|
2977
|
-
* @see https://
|
|
2979
|
+
* @see https://www.kucoin.com/docs/rest/spot-trading/market-data/get-trade-histories
|
|
2978
2980
|
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
2979
2981
|
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
2980
2982
|
* @param {int} [limit] the maximum amount of trades to fetch
|
|
@@ -3147,7 +3149,7 @@ export default class kucoin extends Exchange {
|
|
|
3147
3149
|
* @method
|
|
3148
3150
|
* @name kucoin#fetchTradingFee
|
|
3149
3151
|
* @description fetch the trading fees for a market
|
|
3150
|
-
* @see https://
|
|
3152
|
+
* @see https://www.kucoin.com/docs/rest/funding/trade-fee/trading-pair-actual-fee-spot-margin-trade_hf
|
|
3151
3153
|
* @param {string} symbol unified market symbol
|
|
3152
3154
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3153
3155
|
* @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
|
|
@@ -3187,7 +3189,7 @@ export default class kucoin extends Exchange {
|
|
|
3187
3189
|
* @method
|
|
3188
3190
|
* @name kucoin#withdraw
|
|
3189
3191
|
* @description make a withdrawal
|
|
3190
|
-
* @see https://
|
|
3192
|
+
* @see https://www.kucoin.com/docs/rest/funding/withdrawals/apply-withdraw
|
|
3191
3193
|
* @param {string} code unified currency code
|
|
3192
3194
|
* @param {float} amount the amount to withdraw
|
|
3193
3195
|
* @param {string} address the address to withdraw to
|
|
@@ -3362,8 +3364,8 @@ export default class kucoin extends Exchange {
|
|
|
3362
3364
|
* @method
|
|
3363
3365
|
* @name kucoin#fetchDeposits
|
|
3364
3366
|
* @description fetch all deposits made to an account
|
|
3365
|
-
* @see https://
|
|
3366
|
-
* @see https://
|
|
3367
|
+
* @see https://www.kucoin.com/docs/rest/funding/deposit/get-deposit-list
|
|
3368
|
+
* @see https://www.kucoin.com/docs/rest/funding/deposit/get-v1-historical-deposits-list
|
|
3367
3369
|
* @param {string} code unified currency code
|
|
3368
3370
|
* @param {int} [since] the earliest time in ms to fetch deposits for
|
|
3369
3371
|
* @param {int} [limit] the maximum number of deposits structures to retrieve
|
|
@@ -3446,8 +3448,8 @@ export default class kucoin extends Exchange {
|
|
|
3446
3448
|
* @method
|
|
3447
3449
|
* @name kucoin#fetchWithdrawals
|
|
3448
3450
|
* @description fetch all withdrawals made from an account
|
|
3449
|
-
* @see https://
|
|
3450
|
-
* @see https://
|
|
3451
|
+
* @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-withdrawals-list
|
|
3452
|
+
* @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-v1-historical-withdrawals-list
|
|
3451
3453
|
* @param {string} code unified currency code
|
|
3452
3454
|
* @param {int} [since] the earliest time in ms to fetch withdrawals for
|
|
3453
3455
|
* @param {int} [limit] the maximum number of withdrawals structures to retrieve
|
|
@@ -3721,7 +3723,7 @@ export default class kucoin extends Exchange {
|
|
|
3721
3723
|
* @method
|
|
3722
3724
|
* @name kucoin#transfer
|
|
3723
3725
|
* @description transfer currency internally between wallets on the same account
|
|
3724
|
-
* @see https://
|
|
3726
|
+
* @see https://www.kucoin.com/docs/rest/funding/transfer/inner-transfer
|
|
3725
3727
|
* @see https://docs.kucoin.com/futures/#transfer-funds-to-kucoin-main-account-2
|
|
3726
3728
|
* @see https://docs.kucoin.com/spot-hf/#internal-funds-transfers-in-high-frequency-trading-accounts
|
|
3727
3729
|
* @param {string} code unified currency code
|
|
@@ -4004,7 +4006,7 @@ export default class kucoin extends Exchange {
|
|
|
4004
4006
|
/**
|
|
4005
4007
|
* @method
|
|
4006
4008
|
* @name kucoin#fetchLedger
|
|
4007
|
-
* @see https://
|
|
4009
|
+
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-spot-margin
|
|
4008
4010
|
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-trade_hf
|
|
4009
4011
|
* @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-margin_hf
|
|
4010
4012
|
* @description fetch the history of changes, actions done by the user or operations that altered balance of the user
|
package/js/src/okx.d.ts
CHANGED
|
@@ -298,6 +298,7 @@ export default class okx extends Exchange {
|
|
|
298
298
|
quoteVolume: any;
|
|
299
299
|
};
|
|
300
300
|
fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
301
|
+
createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
301
302
|
parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
|
|
302
303
|
fetchConvertCurrencies(params?: {}): Promise<Currencies>;
|
|
303
304
|
handleErrors(httpCode: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
|
package/js/src/okx.js
CHANGED
|
@@ -38,6 +38,7 @@ export default class okx extends Exchange {
|
|
|
38
38
|
'cancelOrders': true,
|
|
39
39
|
'closeAllPositions': false,
|
|
40
40
|
'closePosition': true,
|
|
41
|
+
'createConvertTrade': true,
|
|
41
42
|
'createDepositAddress': false,
|
|
42
43
|
'createMarketBuyOrderWithCost': true,
|
|
43
44
|
'createMarketSellOrderWithCost': true,
|
|
@@ -7661,6 +7662,59 @@ export default class okx extends Exchange {
|
|
|
7661
7662
|
const toCurrency = this.currency(toCurrencyId);
|
|
7662
7663
|
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7663
7664
|
}
|
|
7665
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
7666
|
+
/**
|
|
7667
|
+
* @method
|
|
7668
|
+
* @name okx#createConvertTrade
|
|
7669
|
+
* @description convert from one currency to another
|
|
7670
|
+
* @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-convert-trade
|
|
7671
|
+
* @param {string} id the id of the trade that you want to make
|
|
7672
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
7673
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
7674
|
+
* @param {float} [amount] how much you want to trade in units of the from currency
|
|
7675
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
7676
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
7677
|
+
*/
|
|
7678
|
+
await this.loadMarkets();
|
|
7679
|
+
const request = {
|
|
7680
|
+
'quoteId': id,
|
|
7681
|
+
'baseCcy': fromCode,
|
|
7682
|
+
'quoteCcy': toCode,
|
|
7683
|
+
'szCcy': fromCode,
|
|
7684
|
+
'sz': this.numberToString(amount),
|
|
7685
|
+
'side': 'sell',
|
|
7686
|
+
};
|
|
7687
|
+
const response = await this.privatePostAssetConvertTrade(this.extend(request, params));
|
|
7688
|
+
//
|
|
7689
|
+
// {
|
|
7690
|
+
// "code": "0",
|
|
7691
|
+
// "data": [
|
|
7692
|
+
// {
|
|
7693
|
+
// "baseCcy": "ETH",
|
|
7694
|
+
// "clTReqId": "",
|
|
7695
|
+
// "fillBaseSz": "0.01023052",
|
|
7696
|
+
// "fillPx": "2932.40104429",
|
|
7697
|
+
// "fillQuoteSz": "30",
|
|
7698
|
+
// "instId": "ETH-USDT",
|
|
7699
|
+
// "quoteCcy": "USDT",
|
|
7700
|
+
// "quoteId": "quoterETH-USDT16461885104612381",
|
|
7701
|
+
// "side": "buy",
|
|
7702
|
+
// "state": "fullyFilled",
|
|
7703
|
+
// "tradeId": "trader16461885203381437",
|
|
7704
|
+
// "ts": "1646188520338"
|
|
7705
|
+
// }
|
|
7706
|
+
// ],
|
|
7707
|
+
// "msg": ""
|
|
7708
|
+
// }
|
|
7709
|
+
//
|
|
7710
|
+
const data = this.safeList(response, 'data', []);
|
|
7711
|
+
const result = this.safeDict(data, 0, {});
|
|
7712
|
+
const fromCurrencyId = this.safeString(result, 'baseCcy', fromCode);
|
|
7713
|
+
const fromCurrency = this.currency(fromCurrencyId);
|
|
7714
|
+
const toCurrencyId = this.safeString(result, 'quoteCcy', toCode);
|
|
7715
|
+
const toCurrency = this.currency(toCurrencyId);
|
|
7716
|
+
return this.parseConversion(result, fromCurrency, toCurrency);
|
|
7717
|
+
}
|
|
7664
7718
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
7665
7719
|
//
|
|
7666
7720
|
// fetchConvertQuote
|
|
@@ -7681,7 +7735,24 @@ export default class okx extends Exchange {
|
|
|
7681
7735
|
// "ttlMs": "10000"
|
|
7682
7736
|
// }
|
|
7683
7737
|
//
|
|
7684
|
-
|
|
7738
|
+
// createConvertTrade
|
|
7739
|
+
//
|
|
7740
|
+
// {
|
|
7741
|
+
// "baseCcy": "ETH",
|
|
7742
|
+
// "clTReqId": "",
|
|
7743
|
+
// "fillBaseSz": "0.01023052",
|
|
7744
|
+
// "fillPx": "2932.40104429",
|
|
7745
|
+
// "fillQuoteSz": "30",
|
|
7746
|
+
// "instId": "ETH-USDT",
|
|
7747
|
+
// "quoteCcy": "USDT",
|
|
7748
|
+
// "quoteId": "quoterETH-USDT16461885104612381",
|
|
7749
|
+
// "side": "buy",
|
|
7750
|
+
// "state": "fullyFilled",
|
|
7751
|
+
// "tradeId": "trader16461885203381437",
|
|
7752
|
+
// "ts": "1646188520338"
|
|
7753
|
+
// }
|
|
7754
|
+
//
|
|
7755
|
+
const timestamp = this.safeInteger2(conversion, 'quoteTime', 'ts');
|
|
7685
7756
|
const fromCoin = this.safeString(conversion, 'baseCcy');
|
|
7686
7757
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
|
7687
7758
|
const to = this.safeString(conversion, 'quoteCcy');
|
|
@@ -7690,12 +7761,12 @@ export default class okx extends Exchange {
|
|
|
7690
7761
|
'info': conversion,
|
|
7691
7762
|
'timestamp': timestamp,
|
|
7692
7763
|
'datetime': this.iso8601(timestamp),
|
|
7693
|
-
'id': this.
|
|
7764
|
+
'id': this.safeStringN(conversion, ['clQReqId', 'tradeId', 'quoteId']),
|
|
7694
7765
|
'fromCurrency': fromCode,
|
|
7695
|
-
'fromAmount': this.
|
|
7766
|
+
'fromAmount': this.safeNumber2(conversion, 'baseSz', 'fillBaseSz'),
|
|
7696
7767
|
'toCurrency': toCode,
|
|
7697
|
-
'toAmount': this.
|
|
7698
|
-
'price': this.
|
|
7768
|
+
'toAmount': this.safeNumber2(conversion, 'quoteSz', 'fillQuoteSz'),
|
|
7769
|
+
'price': this.safeNumber2(conversion, 'cnvtPx', 'fillPx'),
|
|
7699
7770
|
'fee': undefined,
|
|
7700
7771
|
};
|
|
7701
7772
|
}
|
package/js/src/pro/kraken.js
CHANGED
|
@@ -137,7 +137,7 @@ export default class kraken extends krakenRest {
|
|
|
137
137
|
'pair': market['wsId'],
|
|
138
138
|
'volume': this.amountToPrecision(symbol, amount),
|
|
139
139
|
};
|
|
140
|
-
[request, params] = this.orderRequest('createOrderWs
|
|
140
|
+
[request, params] = this.orderRequest('createOrderWs', symbol, type, request, price, params);
|
|
141
141
|
return await this.watch(url, messageHash, this.extend(request, params), messageHash);
|
|
142
142
|
}
|
|
143
143
|
handleCreateEditOrder(client, message) {
|
|
@@ -193,7 +193,7 @@ export default class kraken extends krakenRest {
|
|
|
193
193
|
'pair': market['wsId'],
|
|
194
194
|
'volume': this.amountToPrecision(symbol, amount),
|
|
195
195
|
};
|
|
196
|
-
[request, params] = this.orderRequest('editOrderWs
|
|
196
|
+
[request, params] = this.orderRequest('editOrderWs', symbol, type, request, price, params);
|
|
197
197
|
return await this.watch(url, messageHash, this.extend(request, params), messageHash);
|
|
198
198
|
}
|
|
199
199
|
async cancelOrdersWs(ids, symbol = undefined, params = {}) {
|
package/js/src/woo.d.ts
CHANGED
|
@@ -175,6 +175,7 @@ export default class woo extends Exchange {
|
|
|
175
175
|
fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
|
|
176
176
|
parsePosition(position: any, market?: Market): import("./base/types.js").Position;
|
|
177
177
|
fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
178
|
+
createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
|
|
178
179
|
parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
|
|
179
180
|
fetchConvertCurrencies(params?: {}): Promise<Currencies>;
|
|
180
181
|
defaultNetworkCodeForCurrency(code: any): any;
|
package/js/src/woo.js
CHANGED
|
@@ -39,6 +39,7 @@ export default class woo extends Exchange {
|
|
|
39
39
|
'cancelWithdraw': false,
|
|
40
40
|
'closeAllPositions': false,
|
|
41
41
|
'closePosition': false,
|
|
42
|
+
'createConvertTrade': true,
|
|
42
43
|
'createDepositAddress': false,
|
|
43
44
|
'createMarketBuyOrderWithCost': true,
|
|
44
45
|
'createMarketOrder': false,
|
|
@@ -3032,6 +3033,37 @@ export default class woo extends Exchange {
|
|
|
3032
3033
|
const toCurrency = this.currency(toCurrencyId);
|
|
3033
3034
|
return this.parseConversion(data, fromCurrency, toCurrency);
|
|
3034
3035
|
}
|
|
3036
|
+
async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
|
|
3037
|
+
/**
|
|
3038
|
+
* @method
|
|
3039
|
+
* @name woo#createConvertTrade
|
|
3040
|
+
* @description convert from one currency to another
|
|
3041
|
+
* @see https://docs.woo.org/#send-quote-rft
|
|
3042
|
+
* @param {string} id the id of the trade that you want to make
|
|
3043
|
+
* @param {string} fromCode the currency that you want to sell and convert from
|
|
3044
|
+
* @param {string} toCode the currency that you want to buy and convert into
|
|
3045
|
+
* @param {float} [amount] how much you want to trade in units of the from currency
|
|
3046
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
3047
|
+
* @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
|
|
3048
|
+
*/
|
|
3049
|
+
await this.loadMarkets();
|
|
3050
|
+
const request = {
|
|
3051
|
+
'quoteId': id,
|
|
3052
|
+
};
|
|
3053
|
+
const response = await this.v3PrivatePostConvertRft(this.extend(request, params));
|
|
3054
|
+
//
|
|
3055
|
+
// {
|
|
3056
|
+
// "success": true,
|
|
3057
|
+
// "data": {
|
|
3058
|
+
// "quoteId": 123123123,
|
|
3059
|
+
// "counterPartyId": "",
|
|
3060
|
+
// "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
|
|
3061
|
+
// }
|
|
3062
|
+
// }
|
|
3063
|
+
//
|
|
3064
|
+
const data = this.safeDict(response, 'data', {});
|
|
3065
|
+
return this.parseConversion(data);
|
|
3066
|
+
}
|
|
3035
3067
|
parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
|
|
3036
3068
|
//
|
|
3037
3069
|
// fetchConvertQuote
|
|
@@ -3048,6 +3080,14 @@ export default class woo extends Exchange {
|
|
|
3048
3080
|
// "message": 1659084466000
|
|
3049
3081
|
// }
|
|
3050
3082
|
//
|
|
3083
|
+
// createConvertTrade
|
|
3084
|
+
//
|
|
3085
|
+
// {
|
|
3086
|
+
// "quoteId": 123123123,
|
|
3087
|
+
// "counterPartyId": "",
|
|
3088
|
+
// "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
|
|
3089
|
+
// }
|
|
3090
|
+
//
|
|
3051
3091
|
const timestamp = this.safeInteger(conversion, 'expireTimestamp');
|
|
3052
3092
|
const fromCoin = this.safeString(conversion, 'sellToken');
|
|
3053
3093
|
const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccxt",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
|
|
5
5
|
"unpkg": "dist/ccxt.browser.js",
|
|
6
6
|
"type": "module",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"test": "npm run build && npm run commonjs-test && npm run static-tests && node run-tests --useProxy",
|
|
52
52
|
"fast-test": "npm run commonjs-test && node run-tests --js --useProxy",
|
|
53
53
|
"commonjs-test": "node test-commonjs.cjs",
|
|
54
|
+
"package-test": "./package-test.sh",
|
|
54
55
|
"fast-test-ws": "node run-tests --ws --js",
|
|
55
56
|
"test-base": "npm run test-js-base && npm run test-python-base && npm run test-php-base && npm run test-cs-base && npm run id-tests && npm run static-tests",
|
|
56
57
|
"test-base-ws": "npm run test-js-base-ws && npm run test-python-base-ws && npm run test-php-base-ws && npm run test-cs-base-ws",
|
package/.dockerignore
DELETED
package/.eslintignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
build/*
|