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.
Files changed (317) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/ascendex.js +1 -1
  4. package/dist/cjs/src/binance.js +56 -0
  5. package/dist/cjs/src/bingx.js +2 -2
  6. package/dist/cjs/src/bitget.js +64 -2
  7. package/dist/cjs/src/bybit.js +1 -1
  8. package/dist/cjs/src/coinex.js +55 -60
  9. package/dist/cjs/src/kraken.js +8 -3
  10. package/dist/cjs/src/kucoin.js +19 -17
  11. package/dist/cjs/src/okx.js +76 -5
  12. package/dist/cjs/src/pro/kraken.js +2 -2
  13. package/dist/cjs/src/woo.js +40 -0
  14. package/js/ccxt.d.ts +1 -1
  15. package/js/ccxt.js +1 -1
  16. package/js/src/ascendex.js +2 -2
  17. package/js/src/binance.d.ts +3 -1
  18. package/js/src/binance.js +56 -0
  19. package/js/src/bingx.js +3 -3
  20. package/js/src/bitget.d.ts +1 -0
  21. package/js/src/bitget.js +64 -2
  22. package/js/src/bybit.js +1 -1
  23. package/js/src/coinex.js +55 -60
  24. package/js/src/kraken.js +8 -3
  25. package/js/src/kucoin.js +19 -17
  26. package/js/src/okx.d.ts +1 -0
  27. package/js/src/okx.js +76 -5
  28. package/js/src/pro/kraken.js +2 -2
  29. package/js/src/woo.d.ts +1 -0
  30. package/js/src/woo.js +40 -0
  31. package/package.json +2 -1
  32. package/.dockerignore +0 -6
  33. package/.eslintignore +0 -1
  34. package/.git-templates/hooks/pre-push +0 -55
  35. package/.gitattributes +0 -7
  36. package/CHANGELOG.md +0 -6003
  37. package/CODEOWNERS +0 -1
  38. package/CONTRIBUTING.md +0 -1099
  39. package/build.sh +0 -217
  40. package/change.sh +0 -18
  41. package/cleanup.sh +0 -18
  42. package/composer-install.sh +0 -20
  43. package/dist/ccxt.browser.js +0 -327256
  44. package/dist/ccxt.browser.min.js +0 -30
  45. package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
  46. package/doc/FAQ.rst +0 -1
  47. package/doc/Makefile +0 -20
  48. package/doc/_static/css/dark.css +0 -101
  49. package/doc/_static/css/index.css +0 -128
  50. package/doc/_static/favicon.ico +0 -0
  51. package/doc/_static/javascript/binance-portal.min.js +0 -2369
  52. package/doc/_static/javascript/index.js +0 -195
  53. package/doc/_static/javascript/jquery-ui.min.js +0 -6
  54. package/doc/ccxt.pro.install.rst +0 -1
  55. package/doc/ccxt.pro.manual.rst +0 -1665
  56. package/doc/exchange-markets-by-country.rst +0 -1423
  57. package/doc/exchange-markets.rst +0 -1441
  58. package/doc/index.rst +0 -35
  59. package/doc/install.rst +0 -1
  60. package/doc/make.bat +0 -36
  61. package/doc/manual.rst +0 -7471
  62. package/doc/readme.rst +0 -2191
  63. package/doc/requirements.txt +0 -6
  64. package/examples/ccxt.pro/html/watchTicker.html +0 -51
  65. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
  66. package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
  67. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
  68. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
  69. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
  70. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
  71. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
  72. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
  73. package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
  74. package/examples/ccxt.pro/js/exchange-close.js +0 -46
  75. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
  76. package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
  77. package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
  78. package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
  79. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
  80. package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
  81. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
  82. package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
  83. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
  84. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
  85. package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
  86. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
  87. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
  88. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
  89. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
  90. package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
  91. package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
  92. package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
  93. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
  94. package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
  95. package/examples/cs/Examples.sln +0 -22
  96. package/examples/cs/c#.csproj +0 -19
  97. package/examples/html/basic-cors-proxy.html +0 -46
  98. package/examples/html/basic-inheritance.html +0 -47
  99. package/examples/html/basic-poller.html +0 -52
  100. package/examples/html/basic-rate-limiting.html +0 -49
  101. package/examples/html/basic.html +0 -43
  102. package/examples/html/binance-cors-proxy.html +0 -28
  103. package/examples/html/bitmex-browser-cors-proxy.js +0 -7
  104. package/examples/html/bitmex-cors.html +0 -46
  105. package/examples/html/tradingview-charts.html +0 -61
  106. package/examples/html/webworker/index.html +0 -97
  107. package/examples/html/webworker/worker.js +0 -43
  108. package/examples/js/advanced-error-handling.js +0 -39
  109. package/examples/js/aggregate-orderbook.js +0 -54
  110. package/examples/js/arbitrage-pairs.js +0 -130
  111. package/examples/js/basic-chart.js +0 -29
  112. package/examples/js/basic-orderbook-polling.js +0 -13
  113. package/examples/js/bcc-vs-bch.js +0 -115
  114. package/examples/js/benchmark.js +0 -104
  115. package/examples/js/binance-fetch-all-deposits.js +0 -45
  116. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
  117. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
  118. package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
  119. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
  120. package/examples/js/binance-margin-stop-order.js +0 -39
  121. package/examples/js/binance-server-time.js +0 -34
  122. package/examples/js/binance-universal-transfer.js +0 -16
  123. package/examples/js/bitfinex-fetch-trades.js +0 -35
  124. package/examples/js/bitfinex2-fetch-trades.js +0 -35
  125. package/examples/js/bitmex-browser-cors-proxy.js +0 -7
  126. package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
  127. package/examples/js/bitrue-fetch-balance.js +0 -28
  128. package/examples/js/bitstamp-private-api.js +0 -115
  129. package/examples/js/bitstamp-public-api.js +0 -39
  130. package/examples/js/bittrex-balance.js +0 -50
  131. package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
  132. package/examples/js/blockchaincom-withdrawal.js +0 -59
  133. package/examples/js/build-ohlcv-bars.js +0 -48
  134. package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
  135. package/examples/js/bybit-trailing.js +0 -62
  136. package/examples/js/bybit-updated.cjs +0 -154
  137. package/examples/js/coinbase-fetch-all-balances.js +0 -36
  138. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
  139. package/examples/js/coinex-futures.js +0 -75
  140. package/examples/js/coinone-fetch-tickers.js +0 -54
  141. package/examples/js/coinone-markets.js +0 -16
  142. package/examples/js/compare-two-exchanges-capabilities.js +0 -36
  143. package/examples/js/cors-proxy.js +0 -5
  144. package/examples/js/create-order-handle-errors.js +0 -55
  145. package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
  146. package/examples/js/create-order-with-retry.js +0 -65
  147. package/examples/js/create-order-ws-example.js +0 -25
  148. package/examples/js/create-orders-example.js +0 -17
  149. package/examples/js/create-trailing-amount-order.js +0 -36
  150. package/examples/js/create-trailing-percent-order.js +0 -36
  151. package/examples/js/credentials.json +0 -5
  152. package/examples/js/custom-proxy-agent-for-js.js +0 -10
  153. package/examples/js/custom-proxy-url.js +0 -23
  154. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
  155. package/examples/js/env-variables.js +0 -26
  156. package/examples/js/error-handling.js +0 -89
  157. package/examples/js/exchange-capabilities.js +0 -135
  158. package/examples/js/exchanges-by-volume.js +0 -60
  159. package/examples/js/exchanges.js +0 -40
  160. package/examples/js/fetch-all-balances.js +0 -219
  161. package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
  162. package/examples/js/fetch-all-tickers-to-files.js +0 -77
  163. package/examples/js/fetch-balance.js +0 -28
  164. package/examples/js/fetch-create-deposit-address.js +0 -101
  165. package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
  166. package/examples/js/fetch-funding-rate-history.js +0 -25
  167. package/examples/js/fetch-futures/prettier.config.js +0 -5
  168. package/examples/js/fetch-futures/src/index.js +0 -25
  169. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
  170. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
  171. package/examples/js/fetch-ohlcv.js +0 -16
  172. package/examples/js/fetch-okex-futures.js +0 -22
  173. package/examples/js/fetch-orders.js +0 -27
  174. package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
  175. package/examples/js/fetch-ticker-where-available.js +0 -75
  176. package/examples/js/fetch-tickers/build/index.js +0 -19
  177. package/examples/js/fetch-tickers/prettier.config.js +0 -5
  178. package/examples/js/fetch-tickers/src/index.js +0 -17
  179. package/examples/js/gateio-create-batch-order.js +0 -43
  180. package/examples/js/gateio-futures.js +0 -49
  181. package/examples/js/gateio-open-close-contract.js +0 -49
  182. package/examples/js/gateio-swaps.js +0 -74
  183. package/examples/js/gdax-fetch-trades-pagination.js +0 -29
  184. package/examples/js/hitbtc2-withdraw.js +0 -61
  185. package/examples/js/how-to-import-one-exchange-esm.js +0 -10
  186. package/examples/js/huobi-futures.js +0 -71
  187. package/examples/js/huobi-open-close-contract.js +0 -63
  188. package/examples/js/huobi-swaps.js +0 -70
  189. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
  190. package/examples/js/hybridCJSExample.cjs +0 -19
  191. package/examples/js/hybridESMExample.js +0 -19
  192. package/examples/js/idex-fetch-balance.js +0 -13
  193. package/examples/js/instantiate-all-at-once.js +0 -46
  194. package/examples/js/instantiate-all-from-json.js +0 -31
  195. package/examples/js/kraken-create-and-close-position.js +0 -54
  196. package/examples/js/kraken-fetch-order-trades.js +0 -33
  197. package/examples/js/kraken-margin-trading.js +0 -89
  198. package/examples/js/kucoin-rate-limit.js +0 -38
  199. package/examples/js/latoken-example.js +0 -108
  200. package/examples/js/live-orderbook.js +0 -106
  201. package/examples/js/live-ticker.js +0 -80
  202. package/examples/js/live-tickers.js +0 -74
  203. package/examples/js/load-all-contracts.js +0 -41
  204. package/examples/js/load-all-symbols-at-once.js +0 -69
  205. package/examples/js/load-all-tickers-at-once.js +0 -91
  206. package/examples/js/load-markets-to-files.js +0 -57
  207. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
  208. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
  209. package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
  210. package/examples/js/market-status-and-currency-status.js +0 -29
  211. package/examples/js/ohlcv-console-chart.js +0 -29
  212. package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
  213. package/examples/js/okex-transfer.js +0 -51
  214. package/examples/js/okx-poll-fetch-my-trades.js +0 -37
  215. package/examples/js/okx-poll-rate-limit.js +0 -48
  216. package/examples/js/order-book-extra-level-depth-param.js +0 -20
  217. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
  218. package/examples/js/poll-ohlcv.js +0 -43
  219. package/examples/js/poloniex-fetch-order-books.js +0 -35
  220. package/examples/js/poloniex-limits-amount-min.js +0 -62
  221. package/examples/js/proxy-round-robin.js +0 -98
  222. package/examples/js/proxy-usage.js +0 -32
  223. package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
  224. package/examples/js/search-all-exchanges.js +0 -159
  225. package/examples/js/shared-load-markets.js +0 -80
  226. package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
  227. package/examples/js/symbols.js +0 -110
  228. package/examples/js/theocean.js +0 -41
  229. package/examples/js/tickers.js +0 -106
  230. package/examples/js/validate-paginated-data.js +0 -61
  231. package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
  232. package/examples/js/watch-OHLCV.js +0 -12
  233. package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
  234. package/examples/js/watch-Trades-For-Symbols.js +0 -11
  235. package/examples/js/watch-tickers.js +0 -11
  236. package/examples/js/watchOHLCVForSymbols.js +0 -15
  237. package/examples/js/watchOrderBookForSymbols.js +0 -11
  238. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
  239. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
  240. package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
  241. package/examples/js/watchPositions.d.ts +0 -2
  242. package/examples/js/watchPositions.d.ts.map +0 -1
  243. package/examples/js/watchPositions.js +0 -13
  244. package/examples/js/watchPositionsForSymbols.d.ts +0 -2
  245. package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
  246. package/examples/js/watchPositionsForSymbols.js +0 -14
  247. package/examples/js/watchTradesForSymbols.js +0 -11
  248. package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
  249. package/examples/php/README.md +0 -7
  250. package/examples/py/README.md +0 -15
  251. package/examples/py/playing_with_ccxt_example.ipynb +0 -222
  252. package/examples/ts/.eslintrc +0 -111
  253. package/examples/ts/benchmark.ts +0 -134
  254. package/examples/ts/build-ohlcv-bars.ts +0 -53
  255. package/examples/ts/cli.ts +0 -397
  256. package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
  257. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
  258. package/examples/ts/create-order-ws-example.ts +0 -33
  259. package/examples/ts/create-orders-example.ts +0 -21
  260. package/examples/ts/create-trailing-amount-order.ts +0 -37
  261. package/examples/ts/create-trailing-percent-order.ts +0 -37
  262. package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
  263. package/examples/ts/fetch-futures/package-lock.json +0 -116
  264. package/examples/ts/fetch-futures/package.json +0 -34
  265. package/examples/ts/fetch-futures/prettier.config.js +0 -4
  266. package/examples/ts/fetch-futures/src/index.ts +0 -28
  267. package/examples/ts/fetch-futures/tsconfig.json +0 -28
  268. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
  269. package/examples/ts/fetch-ohlcv.ts +0 -17
  270. package/examples/ts/fetch-tickers/package-lock.json +0 -116
  271. package/examples/ts/fetch-tickers/package.json +0 -34
  272. package/examples/ts/fetch-tickers/prettier.config.js +0 -4
  273. package/examples/ts/fetch-tickers/src/index.ts +0 -21
  274. package/examples/ts/fetch-tickers/tsconfig.json +0 -28
  275. package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
  276. package/examples/ts/kraken-create-and-close-position.ts +0 -69
  277. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
  278. package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
  279. package/examples/ts/nextjs-page-router/README.md +0 -43
  280. package/examples/ts/nextjs-page-router/next.config.js +0 -6
  281. package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
  282. package/examples/ts/nextjs-page-router/package.json +0 -28
  283. package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
  284. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  285. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
  286. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
  287. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
  288. package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
  289. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
  290. package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
  291. package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
  292. package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
  293. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
  294. package/examples/ts/proxy-usage.ts +0 -41
  295. package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
  296. package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
  297. package/examples/ts/watch-OHLCV.ts +0 -14
  298. package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
  299. package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
  300. package/examples/ts/watch-tickers.ts +0 -13
  301. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
  302. package/examples/ts/watchPositions.ts +0 -15
  303. package/examples/ts/watchPositionsForSymbols.ts +0 -16
  304. package/examples/tsconfig.json +0 -27
  305. package/examples2md.js +0 -79
  306. package/gource.sh +0 -3
  307. package/index.html +0 -7
  308. package/jsdoc2md.js +0 -122
  309. package/multilang.sh +0 -164
  310. package/pro-tests.json +0 -57
  311. package/pyproject.toml +0 -8
  312. package/rollup.config.js +0 -60
  313. package/skip-tests.json +0 -1653
  314. package/test-commonjs.cjs +0 -65
  315. package/tests-manager.sh +0 -96
  316. package/tsconfig.json +0 -111
  317. package/webpack.config.js +0 -46
@@ -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
- const timestamp = this.safeInteger(conversion, 'quoteTime');
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.safeString(conversion, 'clQReqId'),
7761
+ 'id': this.safeStringN(conversion, ['clQReqId', 'tradeId', 'quoteId']),
7691
7762
  'fromCurrency': fromCode,
7692
- 'fromAmount': this.safeNumber(conversion, 'baseSz'),
7763
+ 'fromAmount': this.safeNumber2(conversion, 'baseSz', 'fillBaseSz'),
7693
7764
  'toCurrency': toCode,
7694
- 'toAmount': this.safeNumber(conversion, 'quoteSz'),
7695
- 'price': this.safeNumber(conversion, 'cnvtPx'),
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()', symbol, type, request, price, params);
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()', symbol, type, request, price, params);
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 = {}) {
@@ -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.2.98";
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.2.99';
41
+ const version = '4.3.1';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -6,7 +6,7 @@
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  import Exchange from './abstract/ascendex.js';
9
- import { ArgumentsRequired, AuthenticationError, ExchangeError, InsufficientFunds, InvalidOrder, BadSymbol, PermissionDenied, BadRequest, NotSupported } from './base/errors.js';
9
+ import { ArgumentsRequired, AuthenticationError, ExchangeError, AccountSuspended, InsufficientFunds, InvalidOrder, BadSymbol, PermissionDenied, BadRequest, NotSupported } from './base/errors.js';
10
10
  import { Precise } from './base/Precise.js';
11
11
  import { TICK_SIZE } from './base/functions/number.js';
12
12
  import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
@@ -361,7 +361,7 @@ export default class ascendex extends Exchange {
361
361
  '300013': InvalidOrder,
362
362
  '300014': InvalidOrder,
363
363
  '300020': InvalidOrder,
364
- '300021': InvalidOrder,
364
+ '300021': AccountSuspended,
365
365
  '300031': InvalidOrder,
366
366
  '310001': InsufficientFunds,
367
367
  '310002': InvalidOrder,
@@ -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': ExchangeError,
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'] = symbol;
3982
+ request['symbol'] = market['id'];
3983
3983
  }
3984
3984
  if (since !== undefined) {
3985
3985
  request['startTime'] = since;
@@ -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.toUpperCase(),
8465
- 'toCoin': toCode.toUpperCase(),
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['id'],
5384
+ 'currency': currency['code'],
5385
5385
  });
5386
5386
  return this.indexBy(parsed, 'network');
5387
5387
  }