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,106 +0,0 @@
1
-
2
-
3
- import asTable from 'as-table';
4
- import ololog from 'ololog';
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
- let printSupportedExchanges = function () {
14
- log ('Supported exchanges:', ccxt.exchanges.join (', ').green)
15
- }
16
-
17
- let printUsage = function () {
18
- log ('Usage: node', process.argv[1], 'exchange'.green, 'symbol'.yellow, 'depth'.cyan)
19
- printSupportedExchanges ()
20
- }
21
-
22
- let printOrderBook = async (id, symbol, depth) => {
23
-
24
- // check if the exchange is supported by ccxt
25
- let exchangeFound = ccxt.exchanges.indexOf (id) > -1
26
- if (exchangeFound) {
27
-
28
- log ('Instantiating', id.green, 'exchange')
29
-
30
- // instantiate the exchange by id
31
- let exchange = new ccxt[id] ()
32
-
33
- // load all markets from the exchange
34
- let markets = await exchange.loadMarkets ()
35
-
36
- // output a list of all market symbols
37
- // log (id.green, 'has', exchange.symbols.length, 'symbols:', exchange.symbols.join (', ').yellow)
38
-
39
- if (symbol in exchange.markets) {
40
-
41
- const market = exchange.markets[symbol]
42
- const pricePrecision = market.precision ? market.precision.price : 8
43
- const amountPrecision = market.precision ? market.precision.amount : 8
44
-
45
- // Object.values (markets).forEach (market => log (market))
46
-
47
- // make a table of all markets
48
- // const table = asTable.configure ({ delimiter: ' | ' }) (Object.values (markets))
49
- // log (table)
50
-
51
- const priceVolumeHelper = color => ([price, amount]) => ({
52
- price: price.toFixed (pricePrecision)[color],
53
- amount: amount.toFixed (amountPrecision)[color],
54
- ' ': ' ',
55
- })
56
-
57
- const cursorUp = '\u001b[1A'
58
- const tableHeight = depth * 2 + 4 // bids + asks + headers
59
-
60
- log (' ') // empty line
61
-
62
- while (true) {
63
-
64
- const orderbook = await exchange.fetchOrderBook (symbol)
65
-
66
- log (symbol.green, exchange.iso8601 (exchange.milliseconds ()))
67
-
68
- log (asTable.configure ({ delimiter: ' | '.dim, right: true }) ([
69
- ... orderbook.asks.slice (0, depth).reverse ().map (priceVolumeHelper ('red')),
70
- // { price: '--------'.dim, amount: '--------'.dim },
71
- ... orderbook.bids.slice (0, depth).map (priceVolumeHelper ('green')),
72
- ]))
73
-
74
- log (cursorUp.repeat (tableHeight))
75
- }
76
-
77
- } else {
78
-
79
- log.error ('Symbol', symbol.bright, 'not found')
80
- }
81
-
82
-
83
- } else {
84
-
85
- log ('Exchange ' + id.red + ' not found')
86
- printSupportedExchanges ()
87
- }
88
- }
89
-
90
- ;(async function main () {
91
-
92
- if (process.argv.length > 4) {
93
-
94
- const id = process.argv[2]
95
- const symbol = process.argv[3].toUpperCase ()
96
- const depth = parseInt (process.argv[4])
97
- await printOrderBook (id, symbol, depth)
98
-
99
- } else {
100
-
101
- printUsage ()
102
- }
103
-
104
- process.exit ()
105
-
106
- }) ()
@@ -1,80 +0,0 @@
1
-
2
-
3
- import asTable from 'as-table';
4
- import ololog from 'ololog';
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
- let printSupportedExchanges = function () {
14
- log ('Supported exchanges:', ccxt.exchanges.join (', ').green)
15
- }
16
-
17
- let printUsage = function () {
18
- log ('Usage: node', process.argv[1], 'exchange'.green, 'symbol'.yellow, '[rateLimit]'.magenta)
19
- printSupportedExchanges ()
20
- }
21
-
22
- let printTicker = async (id, symbol, rateLimit = undefined) => {
23
-
24
- // check if the exchange is supported by ccxt
25
- let exchangeFound = ccxt.exchanges.indexOf (id) > -1
26
- if (exchangeFound) {
27
-
28
- log ('Instantiating', id.green, 'exchange')
29
-
30
- // instantiate the exchange by id
31
- let exchange = new ccxt[id] ()
32
-
33
- exchange.rateLimit = rateLimit ? rateLimit : exchange.rateLimit
34
-
35
- log.green ('Rate limit:', exchange.rateLimit.toString ().bright)
36
-
37
- // load all markets from the exchange
38
- let markets = await exchange.loadMarkets ()
39
-
40
- if (symbol in exchange.markets) {
41
-
42
- while (true) {
43
-
44
- const ticker = await exchange.fetchTicker (symbol)
45
-
46
- log ('--------------------------------------------------------')
47
- log (exchange.id.green, symbol.yellow, exchange.iso8601 (exchange.milliseconds ()))
48
- log (ccxt.omit (ticker, 'info'))
49
- }
50
-
51
- } else {
52
-
53
- log.error ('Symbol', symbol.bright, 'not found')
54
- }
55
-
56
-
57
- } else {
58
-
59
- log ('Exchange ' + id.red + ' not found')
60
- printSupportedExchanges ()
61
- }
62
- }
63
-
64
- ;(async function main () {
65
-
66
- if (process.argv.length > 3) {
67
-
68
- const id = process.argv[2]
69
- const symbol = process.argv[3].toUpperCase ()
70
- const rateLimit = process.argv[4] ? parseInt (process.argv[4]) : undefined
71
- await printTicker (id, symbol, rateLimit)
72
-
73
- } else {
74
-
75
- printUsage ()
76
- }
77
-
78
- process.exit ()
79
-
80
- }) ()
@@ -1,74 +0,0 @@
1
-
2
-
3
- import asTable from 'as-table';
4
- import ololog from 'ololog';
5
- import ansicolor from 'ansicolor';
6
- import ccxt from '../../js/ccxt.js';
7
-
8
- ansicolor.nice
9
-
10
- const { noLocate } = ololog;
11
- const log = noLocate;
12
-
13
- let printSupportedExchanges = function () {
14
- log ('Supported exchanges:', ccxt.exchanges.join (', ').green)
15
- }
16
-
17
- let printUsage = function () {
18
- log ('Usage: node', process.argv[1], 'exchange'.green)
19
- printSupportedExchanges ()
20
- }
21
-
22
- let printTickers = async (id) => {
23
-
24
- // check if the exchange is supported by ccxt
25
- let exchangeFound = ccxt.exchanges.indexOf (id) > -1
26
- if (exchangeFound) {
27
-
28
- log ('Instantiating', id.green, 'exchange')
29
-
30
- // instantiate the exchange by id
31
- let exchange = new ccxt[id] ()
32
-
33
- // load all markets from the exchange
34
- let markets = await exchange.loadMarkets ()
35
-
36
- while (true) {
37
-
38
- const tickers = await exchange.fetchTickers ()
39
-
40
- log ('--------------------------------------------------------')
41
- log (exchange.id.green, exchange.iso8601 (exchange.milliseconds ()))
42
- log ('Fetched', Object.values (tickers).length.toString ().green, 'tickers:')
43
- log (asTable.configure ({ delimiter: ' | '.dim, right: true }) (
44
- ccxt.sortBy (Object.values (tickers), 'quoteVolume', true)
45
- .slice (0,20)
46
- .map (ticker => ({
47
- symbol: ticker['symbol'],
48
- price: ticker['last'].toFixed (8),
49
- datetime: ticker['datetime'],
50
- }))))
51
- }
52
-
53
- } else {
54
-
55
- log ('Exchange ' + id.red + ' not found')
56
- printSupportedExchanges ()
57
- }
58
- }
59
-
60
- ;(async function main () {
61
-
62
- if (process.argv.length > 2) {
63
-
64
- const id = process.argv[2]
65
- await printTickers (id)
66
-
67
- } else {
68
-
69
- printUsage ()
70
- }
71
-
72
- process.exit ()
73
-
74
- }) ()
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- const ccxt = require ('../../ccxt.js')
4
-
5
- console.log ('CCXT Version:', ccxt.version)
6
-
7
- async function loadExchange (exchange) {
8
- try {
9
- await exchange.loadMarkets ()
10
- exchange.symbols.map (symbol => {
11
- const market = exchange.market (symbol)
12
- if (market['contract']) {
13
- console.log (exchange.id, 'loaded', market['type'], symbol, 'market')
14
- }
15
- })
16
- } catch (e) {
17
- console.log (e.constructor.name, e.message)
18
- }
19
- }
20
-
21
- async function loadAllExchanges (exchangeId) {
22
- try {
23
-
24
- const exchanges = [];
25
- [ 'swap', 'future', 'options' ].forEach (defaultType => {
26
- const exchange = new ccxt[exchangeId]()
27
- if (exchange.has[defaultType]) {
28
- exchanges.push (exchange);
29
- }
30
- })
31
- await Promise.all (exchanges.map (exchange => loadExchange (exchange)))
32
- } catch (e) {
33
- console.log (e.constructor.name, e.message)
34
- }
35
- }
36
-
37
- async function main () {
38
- await Promise.all (ccxt.exchanges.map (exchangeId => loadAllExchanges (exchangeId)))
39
- }
40
-
41
- main ()
@@ -1,69 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asTable from 'as-table';
5
- import ololog from 'ololog';
6
- import ansicolor from 'ansicolor';
7
- const log = ololog.configure ({ locate: false })
8
-
9
- ansicolor.nice
10
-
11
- //-----------------------------------------------------------------------------
12
-
13
- process.on ('uncaughtException', e => { log.bright.red.error (e); process.exit (1) })
14
- process.on ('unhandledRejection', e => { log.bright.red.error (e); process.exit (1) })
15
-
16
- //-----------------------------------------------------------------------------
17
-
18
- let test = async function (exchange) {
19
-
20
- try {
21
-
22
- await exchange.loadMarkets ()
23
- log (exchange.id.green, 'loaded', exchange.symbols.length.toString ().bright.green, 'symbols')
24
-
25
- } catch (e) {
26
-
27
- if (e instanceof ccxt.DDoSProtection) {
28
- log.bright.yellow (exchange.id, '[DDoS Protection] ' + e.message)
29
- } else if (e instanceof ccxt.RequestTimeout) {
30
- log.bright.yellow (exchange.id, '[Request Timeout] ' + e.message)
31
- } else if (e instanceof ccxt.AuthenticationError) {
32
- log.bright.yellow (exchange.id, '[Authentication Error] ' + e.message)
33
- } else if (e instanceof ccxt.ExchangeNotAvailable) {
34
- log.bright.yellow (exchange.id, '[Exchange Not Available] ' + e.message)
35
- } else if (e instanceof ccxt.ExchangeError) {
36
- log.bright.yellow (exchange.id, '[Exchange Error] ' + e.message)
37
- } else if (e instanceof ccxt.NetworkError) {
38
- log.bright.yellow (exchange.id, '[Network Error] ' + e.message)
39
- } else {
40
- throw e
41
- }
42
- }
43
- }
44
-
45
- //-----------------------------------------------------------------------------
46
-
47
- let exchanges = []
48
-
49
- async function main () {
50
-
51
- // instantiate all exchanges
52
- await Promise.all (ccxt.exchanges.map (async id => {
53
- let exchange = new (ccxt)[id] ()
54
- exchanges.push (exchange)
55
- await test (exchange)
56
- }))
57
-
58
- let succeeded = exchanges.filter (exchange => exchange.markets ? true : false).length.toString ().bright.green
59
- let failed = exchanges.filter (exchange => exchange.markets ? false : true).length
60
- let total = ccxt.exchanges.length.toString ().bright.white
61
- let numSymbols = 0;
62
- exchanges.map (exchange => {
63
- numSymbols += exchange.symbols ? exchange.symbols.length : 0;
64
- })
65
- log (numSymbols, 'symbols from', succeeded, 'of', total, 'exchanges loaded', ('(' + failed + ' errors)').red)
66
-
67
- }
68
-
69
- main ()
@@ -1,91 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asTable from 'as-table';
5
- import ololog from 'ololog';
6
- import ansicolor from 'ansicolor';
7
-
8
- const log = ololog.configure ({ locate: false })
9
-
10
- ansicolor.nice
11
-
12
- //-----------------------------------------------------------------------------
13
-
14
- process.on ('uncaughtException', e => { log.bright.red.error (e); process.exit (1) })
15
- process.on ('unhandledRejection', e => { log.bright.red.error (e); process.exit (1) })
16
-
17
- //-----------------------------------------------------------------------------
18
-
19
- let human_value = function (price) {
20
- return price === undefined ? 'N/A' : price
21
- }
22
-
23
- //-----------------------------------------------------------------------------
24
-
25
- let test = async function (exchange, symbol) {
26
-
27
- try {
28
-
29
- await exchange.loadMarkets ()
30
-
31
- if (symbol in exchange.markets) {
32
-
33
- let ticker = await exchange.fetchTicker (symbol)
34
-
35
- log (exchange.id.green, symbol.green, 'ticker',
36
- ticker['datetime'],
37
- 'high: ' + human_value (ticker['high']),
38
- 'low: ' + human_value (ticker['low']),
39
- 'bid: ' + human_value (ticker['bid']),
40
- 'ask: ' + human_value (ticker['ask']),
41
- 'volume: ' + human_value (ticker['quoteVolume']))
42
- } else {
43
-
44
- // do nothing or throw an error
45
- log.bright.yellow (exchange.id + ' does not have ' + symbol)
46
- }
47
-
48
- } catch (e) {
49
-
50
- if (e instanceof ccxt.DDoSProtection) {
51
- log.bright.yellow (exchange.id, '[DDoS Protection]')
52
- } else if (e instanceof ccxt.RequestTimeout) {
53
- log.bright.yellow (exchange.id, '[Request Timeout]')
54
- } else if (e instanceof ccxt.AuthenticationError) {
55
- log.bright.yellow (exchange.id, '[Authentication Error]')
56
- } else if (e instanceof ccxt.ExchangeNotAvailable) {
57
- log.bright.yellow (exchange.id, '[Exchange Not Available]')
58
- } else if (e instanceof ccxt.ExchangeError) {
59
- log.bright.yellow (exchange.id, '[Exchange Error]')
60
- } else if (e instanceof ccxt.NetworkError) {
61
- log.bright.yellow (exchange.id, '[Network Error]')
62
- } else {
63
- throw e
64
- }
65
- }
66
- }
67
-
68
- //-----------------------------------------------------------------------------
69
-
70
- const symbol = 'BTC/USD'
71
-
72
- //-----------------------------------------------------------------------------
73
-
74
- async function main () {
75
-
76
- let exchanges = []
77
-
78
- // instantiate all exchanges
79
- await Promise.all (ccxt.exchanges.map (async id => {
80
- let exchange = new (ccxt)[id] ()
81
- exchanges.push (exchange)
82
- await test (exchange, symbol)
83
- }))
84
-
85
- let succeeded = exchanges.filter (exchange => exchange.markets ? true : false).length.toString ().bright.green
86
- let failed = exchanges.filter (exchange => exchange.markets ? false : true).length
87
- let total = ccxt.exchanges.length.toString ().bright.white
88
- console.log (succeeded, 'of', total, 'exchanges loaded', ('(' + failed + ' errors)').red)
89
- }
90
-
91
- main ()
@@ -1,57 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import path from 'path';
5
- import fs from 'fs';
6
-
7
- const enableRateLimit = true,
8
- // exchange defaults
9
- // ------------------------------------------------------------------------
10
- // path to your folder, for example '/myproject/markets' or 'C:/myproject/markets'
11
- options = { enableRateLimit },
12
- // writes to current working directory if left empty
13
- // ------------------------------------------------------------------------
14
- // use a reasonable value for maxConcurrency to avoid network congestion
15
- // a burst of requests in a short period of time will cause
16
- // excessive competition for networking resources within the application
17
- folder = '',
18
- maxConcurrency = 7;
19
-
20
- async function main () {
21
-
22
- const allExchanges = ccxt.exchanges.map (id => {
23
- try {
24
- return new ccxt[id] (options)
25
- } catch (e) {
26
- console.log ('Failed to initialize', id, e.constructor.name)
27
- }
28
- }).filter (x => x)
29
- , allExchangesByIds = ccxt.indexBy (allExchanges, 'id')
30
- , exchangeIds = Object.keys (allExchangesByIds)
31
-
32
- const load = async () => {
33
- while (exchangeIds.length > 0) {
34
- const id = exchangeIds.pop ()
35
- const exchange = allExchangesByIds[id]
36
- const file = path.join (folder, `saved-markets-${exchange.id}.json`)
37
- try {
38
- await exchange.loadMarkets ()
39
- const { id, markets } = exchange
40
- await writeFile (file, JSON.stringify ({ id, markets }))
41
- console.log ('Loaded markets from', id, 'to', file)
42
- } catch (e) {
43
- console.log ('Failed to load markets from', id, 'to', file, e.constructor.name)
44
- }
45
- }
46
- }
47
-
48
- const started = ccxt.milliseconds ()
49
- const loaders = Array (maxConcurrency).fill ().map (x => load ())
50
- await Promise.all (loaders)
51
- const stopped = ccxt.milliseconds ()
52
- console.log ('Done loading', allExchanges.length, 'exchanges in', ((stopped - started) / 1000).toFixed (2), 'seconds')
53
-
54
- // other code...
55
- }
56
-
57
- main ()
@@ -1,61 +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
- ;(async () => {
15
-
16
- const exchanges = [ 'bittrex', 'poloniex', 'hitbtc2' ]
17
-
18
- for (let exchangeId of exchanges) {
19
-
20
- // create the exchange instance
21
- const exchange = new ccxt[exchangeId] ()
22
-
23
- // preload all markets first, as explained in the Manual:
24
- // https://github.com/ccxt/ccxt/wiki/Manual#loading-markets
25
-
26
- // add error/exception handling as required by the Manual:
27
- // https://github.com/ccxt/ccxt/wiki/Manual#error-handling
28
-
29
- try {
30
-
31
- await exchange.loadMarkets ();
32
-
33
- } catch (e) {
34
-
35
- log.red ('Could not load markets from', exchange.id + ':', e.constructor.name, e.message)
36
-
37
- continue; // skip this exchange if markets failed to load
38
-
39
- }
40
-
41
- for (let symbol in exchange.markets) {
42
-
43
- console.log (exchange.id, symbol)
44
-
45
- // add error/exception handling as required by the Manual:
46
- // https://github.com/ccxt/ccxt/wiki/Manual#error-handling
47
-
48
- try { // try fetching the ticker for a symbol existing with that exchange
49
-
50
- const ticker = await exchange.fetchTicker (symbol)
51
- log.green (ticker)
52
-
53
- } catch (e) { // catch the error (if any) and handle it or ignore it
54
-
55
- log.red ('Could not fetch', symbol, 'ticker from', exchange.id + ':', e.constructor.name, e.message)
56
-
57
- }
58
- }
59
- }
60
-
61
- }) ()
@@ -1,91 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asTable from 'as-table';
5
- import ololog from 'ololog';
6
- import ansicolor from 'ansicolor';
7
-
8
- const log = ololog.configure ({ locate: false }), verbose = process.argv.includes ('--verbose');
9
-
10
- ansicolor.nice
11
-
12
- //-----------------------------------------------------------------------------
13
-
14
- ;(async () => {
15
-
16
- const exchanges = {};
17
- const symbols = [ 'ETH/BTC', 'XRP/BTC', 'BTC/USDT' ]
18
-
19
- for (let symbol of symbols) {
20
-
21
- for (let exchangeId of ccxt.exchanges) {
22
-
23
- let exchange = undefined
24
-
25
- try { // try creating the exchange instance first and handle errors if any
26
-
27
- // check if we have created an instance of this exchange already
28
-
29
- exchange = exchanges[exchangeId]
30
-
31
- if (exchange === undefined) {
32
-
33
- // create the exchange instance
34
- exchange = new ccxt[exchangeId] ()
35
- }
36
-
37
- exchanges[exchangeId] = exchange // save it for later use
38
-
39
- } catch (e) {
40
-
41
- log.red ('Could not create exchange', exchangeId + ':', e.constructor.name, e.message)
42
-
43
- // uncomment the following line to interrupt program execution on error
44
- // or leave it commented out to do nothing
45
-
46
- // process.exit ()
47
-
48
- }
49
-
50
- if (exchange !== undefined) {
51
-
52
- // preload all markets first, as explained in the Manual:
53
- // https://github.com/ccxt/ccxt/wiki/Manual#loading-markets
54
-
55
- // add error/exception handling as required by the Manual:
56
- // https://github.com/ccxt/ccxt/wiki/Manual#error-handling
57
-
58
- try {
59
-
60
- await exchange.loadMarkets ();
61
-
62
- } catch (e) {
63
-
64
- log.red ('Could not load markets from', exchange.id + ':', e.constructor.name, e.message)
65
- continue; // skip this exchange if markets failed to load
66
-
67
- }
68
-
69
- for (let symbol of symbols) {
70
-
71
- console.log (exchange.id, symbol)
72
-
73
- // add error/exception handling as required by the Manual:
74
- // https://github.com/ccxt/ccxt/wiki/Manual#error-handling
75
-
76
- try { // try fetching the ticker for a symbol existing with that exchange
77
-
78
- const ticker = await exchange.fetchTicker (symbol)
79
- log.green (ticker)
80
-
81
- } catch (e) { // catch the error (if any) and handle it or ignore it
82
-
83
- log.red ('Could not fetch', symbol, 'ticker from', exchange.id + ':', e.constructor.name, e.message)
84
-
85
- }
86
- }
87
- }
88
- }
89
- }
90
-
91
- }) ()