ccxt 4.2.100 → 4.3.2

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