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
@@ -1,159 +0,0 @@
1
- import asTable from 'as-table';
2
- import ololog from 'ololog';
3
- import path from 'path';
4
- import fs from 'fs';
5
- import ansicolor from 'ansicolor';
6
- import ccxt from '../../js/ccxt.js';
7
-
8
- const { noLocate } = ololog;
9
- const log = noLocate;
10
-
11
- ansicolor.nice
12
- /* ------------------------------------------------------------------------ */
13
-
14
- const [processPath, , argument = null] = process.argv.filter (x => !x.startsWith ('--'))
15
- , verbose = process.argv.includes ('--verbose')
16
- , strict = process.argv.includes ('--strict')
17
- , compact = process.argv.includes ('--compact')
18
- , debug = process.argv.includes ('--debug')
19
- , marketsOnly = process.argv.includes ('--markets')
20
- , currenciesOnly = process.argv.includes ('--currencies')
21
-
22
- /* ------------------------------------------------------------------------ */
23
-
24
- const warn = log.bright.yellow.error // .error → stderr
25
-
26
- /* ------------------------------------------------------------------------ */
27
-
28
- process.on ('uncaughtException', e => { log.bright.red.error (e); process.exit (1) })
29
- process.on ('unhandledRejection', e => { log.bright.red.error (e); process.exit (1) })
30
-
31
- /* ------------------------------------------------------------------------ */
32
-
33
- let printUsage = function () {
34
- log (' Non-strict search: node', process.argv[1], 'symbol'.green)
35
- log (' Non-strict search: node', process.argv[1], 'currency'.green)
36
- log (' Strict search: node', process.argv[1], '--strict', 'argument'.green)
37
- log (' Search markets only: node', process.argv[1], '--markets', 'argument'.green)
38
- log ('Search currencies only: node', process.argv[1], '--currencies', 'argument'.green)
39
-
40
- }
41
-
42
- if (process.argv.length < 3) {
43
- printUsage ()
44
- process.exit ()
45
- }
46
-
47
- /* ------------------------------------------------------------------------ */
48
-
49
- const keysGlobal = path.resolve ('keys.json')
50
- const keysLocal = path.resolve ('keys.local.json')
51
- let globalKeysFile = fs.existsSync (keysGlobal) ? keysGlobal : false
52
- let localKeysFile = fs.existsSync (keysLocal) ? keysLocal : globalKeysFile
53
-
54
- const keys = JSON.parse (fs.readFileSync (localKeysFile))
55
-
56
- /* ------------------------------------------------------------------------ */
57
-
58
- log ('Looking up for:', argument.bright, strict ? '(strict search)' : '(non-strict search)')
59
-
60
- const checkAgainst = strict ?
61
- (a, b) => (a || '').toUpperCase ().includes ((b || '').toUpperCase ()) :
62
- (a, b) => (a || '').toLowerCase ().includes ((b || '').toLowerCase ())
63
-
64
- ;(async function test () {
65
-
66
- let exchanges = await Promise.all (ccxt.exchanges.map (async id => {
67
-
68
- // instantiate the exchange
69
- let exchange = new ccxt[id] (ccxt.extend (localKeysFile ? (keys[id] || {}) : {}, {
70
- // agent, // set up keys and settings, if any
71
- }))
72
-
73
- if (exchange.has.fetchMarkets) {
74
-
75
- try {
76
-
77
- // load markets
78
- await exchange.loadMarkets ()
79
- return exchange
80
-
81
- } catch (e) {
82
-
83
- if (debug) {
84
- log.red (exchange.id, e.constructor.name)
85
- }
86
- return undefined
87
- }
88
- }
89
- }))
90
-
91
- // filter out exchanges that failed to load
92
- exchanges = exchanges.filter (exchange => exchange)
93
-
94
- if (!currenciesOnly) {
95
-
96
- log ("---------------------------------------------------------------")
97
-
98
- log ("Markets And Symbols:")
99
-
100
- let markets = ccxt.flatten (exchanges
101
- .map (exchange =>
102
- Object.values (exchange.markets).map (market =>
103
- exchange.extend (market, {
104
- exchange: exchange.id[(market.active !== false) ? 'green' : 'yellow'],
105
- }))))
106
- .filter (market => {
107
- try {
108
- return (
109
- checkAgainst (market['base'], argument) ||
110
- checkAgainst (market['quote'], argument) ||
111
- (market['baseId'] ? checkAgainst (market['baseId'].toString (), argument) : false) ||
112
- (market['quoteId'] ? checkAgainst (market['quoteId'].toString (), argument) : false) ||
113
- checkAgainst (market['symbol'], argument) ||
114
- checkAgainst (market['id'].toString (), argument) ||
115
- checkAgainst (market['type'], argument)
116
- )
117
- } catch (e) {
118
- if (debug) {
119
- log.red (e.constructor.name, e.message)
120
- }
121
- return false
122
- }
123
- })
124
-
125
- log (asTable (markets.map (market => {
126
- market = ccxt.omit (market, [ 'info', 'limits', 'precision', 'tiers' ])
127
- return (!compact) ? market : {
128
- 'symbol': market['symbol'],
129
- 'exchange': market['exchange'],
130
- };
131
- })))
132
-
133
- log (markets.length.toString ().yellow, 'markets')
134
- }
135
-
136
- if (!marketsOnly) {
137
-
138
- log ("---------------------------------------------------------------")
139
-
140
- log ("Currencies:")
141
-
142
- let currencies = ccxt.flatten (exchanges
143
- .map (exchange =>
144
- Object.values (exchange.currencies).map (currency =>
145
- exchange.extend (currency, {
146
- exchange: exchange.id[(currency.active !== false) ? 'green' : 'yellow'],
147
- }))))
148
- .filter (currency =>
149
- checkAgainst (currency['code'], argument) ||
150
- checkAgainst (currency['id'], argument))
151
-
152
- log (asTable (currencies.map (currency => ccxt.omit (currency, [ 'info', 'limits', 'precision' ]))))
153
-
154
- log (currencies.length.toString ().yellow, 'currencies')
155
- }
156
-
157
- process.exit ()
158
-
159
- }) ()
@@ -1,80 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
-
3
- // ----------------------------------------------------------------------------
4
- // an example of how to load markets for each exchange just once
5
- // in order to save memory and time for initializing multiple exchange instances
6
- // see https://github.com/ccxt/ccxt/issues/7312 for details
7
- // ----------------------------------------------------------------------------
8
-
9
- const globalIds = [ 'binance', 'poloniex', 'bittrex', 'bitstamp' ]
10
- const globalExchanges = {}
11
-
12
- async function loadExchange (id) {
13
- try {
14
- const exchange = new ccxt[id] ()
15
- await exchange.loadMarkets ()
16
- globalExchanges[id] = exchange
17
- } catch (e) {
18
- // throw e // uncomment to break the entire program on any error
19
- // console.log (e) // print the exception and ignore this exchange
20
- }
21
- }
22
-
23
- async function main () {
24
-
25
- // initialize unique global exchange instances first
26
- await Promise.all (globalIds.map (async (id) => loadExchange (id)))
27
- console.log ('Loaded global exchanges:', Object.keys (globalExchanges))
28
-
29
- // load user exchanges and keys from a database or configure these via JSON
30
- const users = {
31
- 'user1': {
32
- 'binance': { 'apiKey': 'USER1_BINANCE_API_KEY', 'secret': 'USER1_BINANCE_SECRET' },
33
- 'poloniex': { 'apiKey': 'USER1_POLONIEX_API_KEY', 'secret': 'USER1_POLONIEX_SECRET' }
34
- },
35
- 'user2': {
36
- 'poloniex': { 'apiKey': 'USER2_POLONIEX_API_KEY', 'secret': 'USER2_POLONIEX_SECRET' },
37
- 'bittrex': { 'apiKey': 'USER2_BITTREX_API_KEY', 'secret': 'USER2_BITTREX_SECRET' }
38
- },
39
- 'user3': {
40
- 'bittrex': { 'apiKey': 'USER3_BITTREX_API_KEY', 'secret': 'USER3_BITTREX_SECRET' },
41
- 'bitstamp': { 'apiKey': 'USER3_BITSTAMP_API_KEY', 'secret': 'USER3_BITSTAMP_SECRET' }
42
- }
43
- }
44
-
45
- // initialize local exchanges per user
46
- const localExchanges = {}
47
- for (const userId in users) {
48
- const userExchanges = {}
49
- for (const exchangeId in users[userId]) {
50
- if (exchangeId in globalExchanges) {
51
- const globalExchange = globalExchanges[exchangeId]
52
- const exchange = new ccxt[exchangeId] ({
53
- // 'verbose': true, // uncomment for debug output
54
- ... users[userId][exchangeId],
55
- });
56
- [
57
- 'ids',
58
- 'markets',
59
- 'markets_by_id',
60
- 'currencies',
61
- 'currencies_by_id',
62
- 'baseCurrencies',
63
- 'quoteCurrencies',
64
- 'symbols',
65
- ].forEach ((propertyName) => {
66
- exchange[propertyName] = globalExchange[propertyName]
67
- })
68
- userExchanges[exchangeId] = exchange
69
- }
70
- }
71
- localExchanges[userId] = userExchanges
72
- }
73
-
74
- // print the loaded exchanges per user
75
- for (const userId in localExchanges) {
76
- console.log ('Loaded', userId, Object.keys (localExchanges[userId]))
77
- }
78
- }
79
-
80
- main ()
@@ -1,55 +0,0 @@
1
- 'use strict';
2
-
3
- const ccxt = require ('../../ccxt.js');
4
-
5
- const exchange = new ccxt.binanceusdm ();
6
- const timeframe = '1h';
7
- const type = 'swap';
8
-
9
- async function fetchOHLCV (symbol) {
10
- /**
11
- * @description Wrapper around exchange.fetchOHLCV method
12
- * @param {string} symbol CCXT unified symbol
13
- * @returns {[float|str]} 1d array with a single ohlcv record with the market symbol appended
14
- */
15
- try {
16
- const ohlcv = await exchange.fetchOHLCV (symbol, timeframe, undefined, 1);
17
- ohlcv[0].push (symbol);
18
- return ohlcv[0];
19
- } catch (err) {
20
- console.log (symbol + ' failed fetchOHLCV with error ' + err)
21
- }
22
- }
23
-
24
- function getPriceChangePercent (ohlcv) {
25
- /**
26
- * @description Gets the price change of a market as a percentage
27
- * @param {[float]} ohlcv A single ohlcv record with the market symbol appended
28
- * @returns {[float, str]} The price change as a percent with the symbol for the market
29
- */
30
- const open = ohlcv[1];
31
- const close = ohlcv[4];
32
- const symbol = ohlcv[6];
33
- const priceIncrease = close - open;
34
- const increaseAsRatio = priceIncrease / open;
35
- const increaseAsPercent = increaseAsRatio * 100;
36
- return [increaseAsPercent, symbol]
37
- }
38
-
39
- function sort (a, b) {
40
- return a[0] - b[0];
41
- }
42
-
43
- async function main () {
44
- /**
45
- * @description Gets the price change as a percent of every market matching type over the last timeframe matching timeframe and prints a sorted list. The most immediate candle is ignored because it is incomplete
46
- */
47
- await exchange.loadMarkets ();
48
- const allSwapSymbols = exchange.symbols.filter (symbol => exchange.market (symbol)[type] );
49
- const ohlcvs = await Promise.all (allSwapSymbols.map (symbol => fetchOHLCV (symbol)));
50
- const priceChanges = ohlcvs.map (ohlcv => getPriceChangePercent (ohlcv));
51
- const sorted = priceChanges.sort (sort);
52
- console.dir(sorted, {'maxArrayLength': null})
53
- }
54
-
55
- main ()
@@ -1,110 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import fs from 'fs';
5
- import ololog from 'ololog';
6
- import ansicolor from 'ansicolor';
7
- import asTable from 'as-table';
8
-
9
- const { noLocate } = ololog;
10
- const log = noLocate;
11
-
12
- ansicolor.nice
13
- const table = asTable.configure ({ delimiter: ' | ' }), verbose = process.argv.includes ('--verbose'), debug = process.argv.includes ('--debug');
14
-
15
- //-----------------------------------------------------------------------------
16
-
17
- let printSupportedExchanges = function () {
18
- log ('Supported exchanges:', ccxt.exchanges.join (', ').green)
19
- }
20
-
21
- let printUsage = function () {
22
- log ('Usage: node', process.argv[1], 'id'.green)
23
- printSupportedExchanges ()
24
- }
25
-
26
- let printSymbols = async (id) => {
27
-
28
- // check if the exchange is supported by ccxt
29
- let exchangeFound = ccxt.exchanges.indexOf (id) > -1
30
- if (exchangeFound) {
31
-
32
- log ('Instantiating', id.green, 'exchange')
33
-
34
- // set up keys and settings, if any
35
- const keysGlobal = 'keys.json'
36
- const keysLocal = 'keys.local.json'
37
-
38
- let keysFile = fs.existsSync (keysLocal) ? keysLocal : (fs.existsSync (keysGlobal) ? keysGlobal : false)
39
- let settings = keysFile ? (require ('../../' + keysFile)[id] || {}) : {}
40
-
41
- // instantiate the exchange by id
42
- let exchange = new ccxt[id] (ccxt.extend ({
43
- verbose,
44
- // 'proxy': 'https://cors-anywhere.herokuapp.com/',
45
- // 'proxy': 'https://crossorigin.me/',
46
- }, settings))
47
-
48
- // Object.assign (exchange, settings)
49
-
50
- // load all markets from the exchange
51
- let markets = await exchange.loadMarkets ()
52
-
53
- // debug log
54
- if (debug)
55
- Object.values (markets).forEach (market => log (market))
56
-
57
- log ("\nSymbols:\n")
58
-
59
- // make a table of all markets
60
-
61
- const marketsList =
62
- ccxt.sortBy (Object.values (markets), 'symbol')
63
- .map (market =>
64
- ccxt.omit (market, [ 'info', 'limits', 'precision', 'fees' ]))
65
-
66
- let table = table (marketsList)
67
- log (table)
68
-
69
- log ("\n---------------------------------------------------------------")
70
-
71
- log ("\nCurrencies:\n")
72
-
73
- // make a table of all currencies
74
-
75
- const currenciesList =
76
- ccxt.sortBy (Object.values (exchange.currencies), 'code')
77
- .map (currency =>
78
- ccxt.omit (currency, [ 'info', 'limits' ]))
79
-
80
- const currenciesTable = table (currenciesList)
81
- log (currenciesTable)
82
-
83
- log ("\n---------------------------------------------------------------")
84
-
85
- // output a summary
86
- log (id.green, 'has', exchange.symbols.length.toString ().yellow, 'symbols and',
87
- Object.keys (exchange.currencies).length.toString ().yellow, "currencies\n")
88
-
89
- } else {
90
-
91
- log ('Exchange ' + id.red + ' not found')
92
- printSupportedExchanges ()
93
- }
94
- }
95
-
96
- ;(async function main () {
97
-
98
- if (process.argv.length > 2) {
99
-
100
- let id = process.argv[2]
101
- await printSymbols (id)
102
-
103
- } else {
104
-
105
- printUsage ()
106
- }
107
-
108
- process.exit ()
109
-
110
- }) ()
@@ -1,41 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- (async function main () {
5
- const walletAddress = process.env['WALLET_ADDRESS']
6
- const privateKey = process.env['PRIVATE_KEY']
7
- const apiKey = process.env['API_KEY']
8
- const secret = process.env['SECRET']
9
-
10
- const ocean = new ccxt.theocean({
11
- walletAddress,
12
- privateKey,
13
- apiKey,
14
- secret
15
- });
16
-
17
- // get balance
18
- const balance = await ocean.fetchBalanceByCode('REP');
19
- console.log('REP balance: ', balance);
20
-
21
- // get order book
22
- const orderBook = await ocean.fetchOrderBook('REP/ZRX');
23
- console.log('REP/ZRX orderbook: ', orderBook);
24
-
25
- // placing order
26
- const placeResult = await ocean.createOrder('REP/ZRX', 'limit', 'sell', '0.5', '30');
27
- const id = placeResult['id'];
28
- console.log('result of placing order: ', placeResult);
29
-
30
- // cancel order
31
- if (placeResult['remaining'] > 0) {
32
- const cancelResult = await ocean.cancelOrder(id);
33
- console.log('cancel result: ', cancelResult);
34
- }
35
-
36
- // cancel all open user orders
37
- const cancelAllOrderssResult = await ocean.cancelAllOrders();
38
- console.log('cancel all orders result: ', cancelAllOrderssResult);
39
-
40
- process.exit ();
41
- }) ()
@@ -1,106 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asTable from 'as-table';
5
- import ansicolor from 'ansicolor';
6
- import ololog from 'ololog';
7
-
8
- const log = ololog.configure ({ locate: false }), verbose = process.argv.includes ('--verbose');
9
-
10
- ansicolor.nice
11
-
12
- //-----------------------------------------------------------------------------
13
-
14
- let printSupportedExchanges = function () {
15
- log ('Supported exchanges:', ccxt.exchanges.join (', ').green)
16
- }
17
-
18
- let printUsage = function () {
19
- log ('Usage: node', process.argv[1], 'id'.green, '[symbol]'.yellow)
20
- printSupportedExchanges ()
21
- }
22
-
23
- let printSymbols = function (exchange) {
24
- log (id.green, 'has', exchange.symbols.length, 'symbols:', exchange.symbols.join (', ').yellow)
25
- }
26
-
27
- let sleep = (ms) => new Promise (resolve => setTimeout (resolve, ms))
28
-
29
- let printTicker = async (exchange, symbol) => {
30
- let ticker = await exchange.fetchTicker (symbol)
31
- log (exchange.id.green, symbol.yellow, 'ticker',
32
- ticker['datetime'],
33
- 'high: ' + ticker['high'],
34
- 'low: ' + ticker['low'],
35
- 'bid: ' + ticker['bid'],
36
- 'ask: ' + ticker['ask'],
37
- 'volume: ' + ticker['baseVolume'])
38
- return ticker
39
- }
40
-
41
- //-----------------------------------------------------------------------------
42
-
43
- let printTickers = async (id) => {
44
-
45
- log ('Instantiating', id.green, 'exchange exchange')
46
-
47
- // instantiate the exchange by id
48
- let exchange = new ccxt[id] ({ verbose })
49
-
50
- // load all markets from the exchange
51
- let markets = await exchange.loadMarkets ()
52
-
53
- if (process.argv.length > 3) { // if a symbol was supplied, get that symbol only
54
-
55
- let symbol = process.argv[3]
56
-
57
- await printTicker (exchange, symbol)
58
-
59
- } else { // otherwise run through all symbols one by one
60
-
61
- for (let symbol of exchange.symbols)
62
- if ((symbol.indexOf ('.d') < 0)) { // skip darkpool symbols
63
-
64
- const market = exchange.markets[symbol];
65
-
66
- if (!market['active']) {
67
- log.red (exchange.id + ' ' + symbol + ' inactive');
68
- continue;
69
- }
70
-
71
- await sleep (exchange.rateLimit)
72
- await printTicker (exchange, symbol)
73
- }
74
- }
75
- }
76
-
77
- //-----------------------------------------------------------------------------
78
-
79
- ;(async function main () {
80
-
81
- if (process.argv.length > 2) {
82
-
83
- let id = process.argv[2]
84
-
85
- // check if the exchange is supported by ccxt
86
- let exchangeFound = ccxt.exchanges.indexOf (id) > -1
87
-
88
- if (exchangeFound) {
89
-
90
- await printTickers (id)
91
-
92
- } else {
93
-
94
- log ('Exchange ' + id.red + ' not found')
95
- printUsage ()
96
- }
97
-
98
- } else {
99
-
100
- printUsage ()
101
-
102
- }
103
-
104
- process.exit ()
105
-
106
- }) ()
@@ -1,61 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import ololog from 'ololog'
5
- import ansicolor from 'ansicolor';
6
-
7
- const log = ololog.configure ({ locate: false })
8
-
9
- ansicolor.nice
10
-
11
- //-----------------------------------------------------------------------------
12
-
13
- /*
14
- * Warning: Sometimes the exchanges have gaps in their OHLCV data, so it does not mean
15
- * that CCXT is broken if you see gaps in the chart.
16
- */
17
-
18
- async function fetchData(exchange, symbol, timeframe) {
19
- await exchange.loadMarkets()
20
- // exchange.verbose = true;
21
- const duration = exchange.parseTimeframe (timeframe) *1000; // in milliseconds
22
- const ohlcv = await exchange.fetchOHLCV (symbol, timeframe, undefined, undefined, {'paginate': true, 'paginationCalls': 5})
23
- validateTimeframes(ohlcv, duration, exchange, symbol)
24
- }
25
-
26
- function validateTimeframes(ohlcv, duration, exchange, symbol) {
27
- for (let j = 0; j < ohlcv.length; j++) {
28
- const [timestamp, open, high, low, close, volume] = ohlcv[j]
29
- if (j > 0) {
30
- const [prevTimestamp, prevOpen, prevHigh, prevLow, prevClose, prevVolume] = ohlcv[j - 1]
31
- if (timestamp - prevTimestamp !== duration) {
32
- log.red ('[' + j + ']',exchange.id, symbol, 'OHLCV data is not continuous, at', exchange.iso8601 (timestamp), 'diff:', ((timestamp - prevTimestamp) / 1000), 's expected:', duration/ 1000, 's')
33
- }
34
- }
35
- }
36
- log.green(exchange.id, symbol, `All the ${ohlcv.length} candles returned are continuous`)
37
- }
38
-
39
- async function main () {
40
-
41
- const exchanges = {
42
- 'binance': 'BTC/USDT',
43
- 'bitget': 'BTC/USDT',
44
- 'kucoin': 'BTC/USDT',
45
- 'kucoinfutures': 'BTC/USDT:USDT',
46
- 'okex': 'BTC/USDT',
47
- 'bybit': 'BTC/USDT'
48
- }
49
- const timeframe = '1m';
50
- const keys = Object.keys (exchanges)
51
- const promises = [];
52
- for (let i = 0; i < keys.length; i++) {
53
- const name = keys[i]
54
- const symbol = exchanges[name]
55
- const exchange = new ccxt[name] ({ enableRateLimit: true })
56
- promises.push(fetchData(exchange, symbol, timeframe))
57
- }
58
- await Promise.all(promises)
59
- }
60
-
61
- main()
@@ -1,15 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- async function example() {
4
- const binance = new ccxt.pro.binance({});
5
- const subscriptions = [
6
- ['BTC/USDT', '5m'],
7
- ['ETH/USDT', '5m'],
8
- ['BTC/USDT', '1h'],
9
- ];
10
- while (true) {
11
- const ohlcv = await binance.watchOHLCVForSymbols(subscriptions);
12
- console.log(ohlcv);
13
- }
14
- }
15
- await example();
@@ -1,12 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- async function example() {
4
- const binance = new ccxt.pro.binance({});
5
- const symbol = 'BTC/USDT';
6
- const timeframe = '1m';
7
- while (true) {
8
- const ohlcv = await binance.watchOHLCV(symbol, timeframe);
9
- console.log(ohlcv);
10
- }
11
- }
12
- await example();
@@ -1,11 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- async function example() {
4
- const binance = new ccxt.pro.binance({});
5
- const symbols = ['BTC/USDT', 'ETH/USDT', 'DOGE/USDT'];
6
- while (true) {
7
- const orderbook = await binance.watchOrderBookForSymbols(symbols);
8
- console.log(orderbook['symbol'], orderbook['asks'][0], orderbook['bids'][0]);
9
- }
10
- }
11
- await example();
@@ -1,11 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- async function example() {
4
- const binance = new ccxt.pro.binance({});
5
- const symbols = ['BTC/USDT', 'ETH/USDT', 'DOGE/USDT'];
6
- while (true) {
7
- const trades = await binance.watchTradesForSymbols(symbols);
8
- console.log(trades);
9
- }
10
- }
11
- await example();
@@ -1,11 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- async function example() {
4
- const binance = new ccxt.pro.binance({});
5
- const symbols = ['BTC/USDT', 'ETH/USDT', 'DOGE/USDT'];
6
- while (true) {
7
- const tickers = await binance.watchTickers(symbols);
8
- console.log(tickers['BTC/USDT'], tickers['ETH/USDT'], tickers['DOGE/USDT']);
9
- }
10
- }
11
- await example();