ccxt 4.2.99 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/binance.js +56 -0
- package/dist/cjs/src/bingx.js +2 -2
- package/dist/cjs/src/bitget.js +64 -2
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/coinex.js +55 -60
- package/dist/cjs/src/kraken.js +8 -3
- package/dist/cjs/src/kucoin.js +19 -17
- package/dist/cjs/src/okx.js +76 -5
- package/dist/cjs/src/pro/kraken.js +2 -2
- package/dist/cjs/src/woo.js +40 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/ascendex.js +2 -2
- package/js/src/binance.d.ts +3 -1
- package/js/src/binance.js +56 -0
- package/js/src/bingx.js +3 -3
- package/js/src/bitget.d.ts +1 -0
- package/js/src/bitget.js +64 -2
- package/js/src/bybit.js +1 -1
- package/js/src/coinex.js +55 -60
- package/js/src/kraken.js +8 -3
- package/js/src/kucoin.js +19 -17
- package/js/src/okx.d.ts +1 -0
- package/js/src/okx.js +76 -5
- package/js/src/pro/kraken.js +2 -2
- package/js/src/woo.d.ts +1 -0
- package/js/src/woo.js +40 -0
- package/package.json +2 -1
- package/.dockerignore +0 -6
- package/.eslintignore +0 -1
- package/.git-templates/hooks/pre-push +0 -55
- package/.gitattributes +0 -7
- package/CHANGELOG.md +0 -6003
- package/CODEOWNERS +0 -1
- package/CONTRIBUTING.md +0 -1099
- package/build.sh +0 -217
- package/change.sh +0 -18
- package/cleanup.sh +0 -18
- package/composer-install.sh +0 -20
- package/dist/ccxt.browser.js +0 -327256
- package/dist/ccxt.browser.min.js +0 -30
- package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
- package/doc/FAQ.rst +0 -1
- package/doc/Makefile +0 -20
- package/doc/_static/css/dark.css +0 -101
- package/doc/_static/css/index.css +0 -128
- package/doc/_static/favicon.ico +0 -0
- package/doc/_static/javascript/binance-portal.min.js +0 -2369
- package/doc/_static/javascript/index.js +0 -195
- package/doc/_static/javascript/jquery-ui.min.js +0 -6
- package/doc/ccxt.pro.install.rst +0 -1
- package/doc/ccxt.pro.manual.rst +0 -1665
- package/doc/exchange-markets-by-country.rst +0 -1423
- package/doc/exchange-markets.rst +0 -1441
- package/doc/index.rst +0 -35
- package/doc/install.rst +0 -1
- package/doc/make.bat +0 -36
- package/doc/manual.rst +0 -7471
- package/doc/readme.rst +0 -2191
- package/doc/requirements.txt +0 -6
- package/examples/ccxt.pro/html/watchTicker.html +0 -51
- package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
- package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
- package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
- package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
- package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
- package/examples/ccxt.pro/js/exchange-close.js +0 -46
- package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
- package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
- package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
- package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
- package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
- package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
- package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
- package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
- package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
- package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
- package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
- package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
- package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
- package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
- package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
- package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
- package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
- package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
- package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
- package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
- package/examples/cs/Examples.sln +0 -22
- package/examples/cs/c#.csproj +0 -19
- package/examples/html/basic-cors-proxy.html +0 -46
- package/examples/html/basic-inheritance.html +0 -47
- package/examples/html/basic-poller.html +0 -52
- package/examples/html/basic-rate-limiting.html +0 -49
- package/examples/html/basic.html +0 -43
- package/examples/html/binance-cors-proxy.html +0 -28
- package/examples/html/bitmex-browser-cors-proxy.js +0 -7
- package/examples/html/bitmex-cors.html +0 -46
- package/examples/html/tradingview-charts.html +0 -61
- package/examples/html/webworker/index.html +0 -97
- package/examples/html/webworker/worker.js +0 -43
- package/examples/js/advanced-error-handling.js +0 -39
- package/examples/js/aggregate-orderbook.js +0 -54
- package/examples/js/arbitrage-pairs.js +0 -130
- package/examples/js/basic-chart.js +0 -29
- package/examples/js/basic-orderbook-polling.js +0 -13
- package/examples/js/bcc-vs-bch.js +0 -115
- package/examples/js/benchmark.js +0 -104
- package/examples/js/binance-fetch-all-deposits.js +0 -45
- package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
- package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
- package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
- package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
- package/examples/js/binance-margin-stop-order.js +0 -39
- package/examples/js/binance-server-time.js +0 -34
- package/examples/js/binance-universal-transfer.js +0 -16
- package/examples/js/bitfinex-fetch-trades.js +0 -35
- package/examples/js/bitfinex2-fetch-trades.js +0 -35
- package/examples/js/bitmex-browser-cors-proxy.js +0 -7
- package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
- package/examples/js/bitrue-fetch-balance.js +0 -28
- package/examples/js/bitstamp-private-api.js +0 -115
- package/examples/js/bitstamp-public-api.js +0 -39
- package/examples/js/bittrex-balance.js +0 -50
- package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
- package/examples/js/blockchaincom-withdrawal.js +0 -59
- package/examples/js/build-ohlcv-bars.js +0 -48
- package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
- package/examples/js/bybit-trailing.js +0 -62
- package/examples/js/bybit-updated.cjs +0 -154
- package/examples/js/coinbase-fetch-all-balances.js +0 -36
- package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
- package/examples/js/coinex-futures.js +0 -75
- package/examples/js/coinone-fetch-tickers.js +0 -54
- package/examples/js/coinone-markets.js +0 -16
- package/examples/js/compare-two-exchanges-capabilities.js +0 -36
- package/examples/js/cors-proxy.js +0 -5
- package/examples/js/create-order-handle-errors.js +0 -55
- package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
- package/examples/js/create-order-with-retry.js +0 -65
- package/examples/js/create-order-ws-example.js +0 -25
- package/examples/js/create-orders-example.js +0 -17
- package/examples/js/create-trailing-amount-order.js +0 -36
- package/examples/js/create-trailing-percent-order.js +0 -36
- package/examples/js/credentials.json +0 -5
- package/examples/js/custom-proxy-agent-for-js.js +0 -10
- package/examples/js/custom-proxy-url.js +0 -23
- package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
- package/examples/js/env-variables.js +0 -26
- package/examples/js/error-handling.js +0 -89
- package/examples/js/exchange-capabilities.js +0 -135
- package/examples/js/exchanges-by-volume.js +0 -60
- package/examples/js/exchanges.js +0 -40
- package/examples/js/fetch-all-balances.js +0 -219
- package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
- package/examples/js/fetch-all-tickers-to-files.js +0 -77
- package/examples/js/fetch-balance.js +0 -28
- package/examples/js/fetch-create-deposit-address.js +0 -101
- package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
- package/examples/js/fetch-funding-rate-history.js +0 -25
- package/examples/js/fetch-futures/prettier.config.js +0 -5
- package/examples/js/fetch-futures/src/index.js +0 -25
- package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
- package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
- package/examples/js/fetch-ohlcv.js +0 -16
- package/examples/js/fetch-okex-futures.js +0 -22
- package/examples/js/fetch-orders.js +0 -27
- package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
- package/examples/js/fetch-ticker-where-available.js +0 -75
- package/examples/js/fetch-tickers/build/index.js +0 -19
- package/examples/js/fetch-tickers/prettier.config.js +0 -5
- package/examples/js/fetch-tickers/src/index.js +0 -17
- package/examples/js/gateio-create-batch-order.js +0 -43
- package/examples/js/gateio-futures.js +0 -49
- package/examples/js/gateio-open-close-contract.js +0 -49
- package/examples/js/gateio-swaps.js +0 -74
- package/examples/js/gdax-fetch-trades-pagination.js +0 -29
- package/examples/js/hitbtc2-withdraw.js +0 -61
- package/examples/js/how-to-import-one-exchange-esm.js +0 -10
- package/examples/js/huobi-futures.js +0 -71
- package/examples/js/huobi-open-close-contract.js +0 -63
- package/examples/js/huobi-swaps.js +0 -70
- package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
- package/examples/js/hybridCJSExample.cjs +0 -19
- package/examples/js/hybridESMExample.js +0 -19
- package/examples/js/idex-fetch-balance.js +0 -13
- package/examples/js/instantiate-all-at-once.js +0 -46
- package/examples/js/instantiate-all-from-json.js +0 -31
- package/examples/js/kraken-create-and-close-position.js +0 -54
- package/examples/js/kraken-fetch-order-trades.js +0 -33
- package/examples/js/kraken-margin-trading.js +0 -89
- package/examples/js/kucoin-rate-limit.js +0 -38
- package/examples/js/latoken-example.js +0 -108
- package/examples/js/live-orderbook.js +0 -106
- package/examples/js/live-ticker.js +0 -80
- package/examples/js/live-tickers.js +0 -74
- package/examples/js/load-all-contracts.js +0 -41
- package/examples/js/load-all-symbols-at-once.js +0 -69
- package/examples/js/load-all-tickers-at-once.js +0 -91
- package/examples/js/load-markets-to-files.js +0 -57
- package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
- package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
- package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
- package/examples/js/market-status-and-currency-status.js +0 -29
- package/examples/js/ohlcv-console-chart.js +0 -29
- package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
- package/examples/js/okex-transfer.js +0 -51
- package/examples/js/okx-poll-fetch-my-trades.js +0 -37
- package/examples/js/okx-poll-rate-limit.js +0 -48
- package/examples/js/order-book-extra-level-depth-param.js +0 -20
- package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
- package/examples/js/poll-ohlcv.js +0 -43
- package/examples/js/poloniex-fetch-order-books.js +0 -35
- package/examples/js/poloniex-limits-amount-min.js +0 -62
- package/examples/js/proxy-round-robin.js +0 -98
- package/examples/js/proxy-usage.js +0 -32
- package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
- package/examples/js/search-all-exchanges.js +0 -159
- package/examples/js/shared-load-markets.js +0 -80
- package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
- package/examples/js/symbols.js +0 -110
- package/examples/js/theocean.js +0 -41
- package/examples/js/tickers.js +0 -106
- package/examples/js/validate-paginated-data.js +0 -61
- package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
- package/examples/js/watch-OHLCV.js +0 -12
- package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
- package/examples/js/watch-Trades-For-Symbols.js +0 -11
- package/examples/js/watch-tickers.js +0 -11
- package/examples/js/watchOHLCVForSymbols.js +0 -15
- package/examples/js/watchOrderBookForSymbols.js +0 -11
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
- package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
- package/examples/js/watchPositions.d.ts +0 -2
- package/examples/js/watchPositions.d.ts.map +0 -1
- package/examples/js/watchPositions.js +0 -13
- package/examples/js/watchPositionsForSymbols.d.ts +0 -2
- package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
- package/examples/js/watchPositionsForSymbols.js +0 -14
- package/examples/js/watchTradesForSymbols.js +0 -11
- package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
- package/examples/php/README.md +0 -7
- package/examples/py/README.md +0 -15
- package/examples/py/playing_with_ccxt_example.ipynb +0 -222
- package/examples/ts/.eslintrc +0 -111
- package/examples/ts/benchmark.ts +0 -134
- package/examples/ts/build-ohlcv-bars.ts +0 -53
- package/examples/ts/cli.ts +0 -397
- package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
- package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
- package/examples/ts/create-order-ws-example.ts +0 -33
- package/examples/ts/create-orders-example.ts +0 -21
- package/examples/ts/create-trailing-amount-order.ts +0 -37
- package/examples/ts/create-trailing-percent-order.ts +0 -37
- package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
- package/examples/ts/fetch-futures/package-lock.json +0 -116
- package/examples/ts/fetch-futures/package.json +0 -34
- package/examples/ts/fetch-futures/prettier.config.js +0 -4
- package/examples/ts/fetch-futures/src/index.ts +0 -28
- package/examples/ts/fetch-futures/tsconfig.json +0 -28
- package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
- package/examples/ts/fetch-ohlcv.ts +0 -17
- package/examples/ts/fetch-tickers/package-lock.json +0 -116
- package/examples/ts/fetch-tickers/package.json +0 -34
- package/examples/ts/fetch-tickers/prettier.config.js +0 -4
- package/examples/ts/fetch-tickers/src/index.ts +0 -21
- package/examples/ts/fetch-tickers/tsconfig.json +0 -28
- package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
- package/examples/ts/kraken-create-and-close-position.ts +0 -69
- package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
- package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
- package/examples/ts/nextjs-page-router/README.md +0 -43
- package/examples/ts/nextjs-page-router/next.config.js +0 -6
- package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
- package/examples/ts/nextjs-page-router/package.json +0 -28
- package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
- package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
- package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
- package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
- package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
- package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
- package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
- package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
- package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
- package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
- package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
- package/examples/ts/proxy-usage.ts +0 -41
- package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
- package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
- package/examples/ts/watch-OHLCV.ts +0 -14
- package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
- package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
- package/examples/ts/watch-tickers.ts +0 -13
- package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
- package/examples/ts/watchPositions.ts +0 -15
- package/examples/ts/watchPositionsForSymbols.ts +0 -16
- package/examples/tsconfig.json +0 -27
- package/examples2md.js +0 -79
- package/gource.sh +0 -3
- package/index.html +0 -7
- package/jsdoc2md.js +0 -122
- package/multilang.sh +0 -164
- package/pro-tests.json +0 -57
- package/pyproject.toml +0 -8
- package/rollup.config.js +0 -60
- package/skip-tests.json +0 -1653
- package/test-commonjs.cjs +0 -65
- package/tests-manager.sh +0 -96
- package/tsconfig.json +0 -111
- package/webpack.config.js +0 -46
|
@@ -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
|
-
}) ()
|