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.
- package/README.md +6 -5
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +3 -0
- package/dist/cjs/src/binance.js +56 -0
- package/dist/cjs/src/bingx.js +2 -2
- package/dist/cjs/src/bitget.js +69 -5
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/coinbase.js +2 -1
- package/dist/cjs/src/coinbasepro.js +1 -1
- package/dist/cjs/src/coinex.js +164 -206
- package/dist/cjs/src/cryptocom.js +5 -5
- package/dist/cjs/src/hyperliquid.js +74 -0
- package/dist/cjs/src/kraken.js +8 -3
- package/dist/cjs/src/kucoin.js +13 -11
- 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/base/Exchange.d.ts +2 -1
- package/js/src/base/Exchange.js +3 -0
- package/js/src/base/types.d.ts +5 -0
- 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 +69 -5
- package/js/src/bybit.js +1 -1
- package/js/src/coinbase.js +2 -1
- package/js/src/coinbasepro.d.ts +1 -1
- package/js/src/coinbasepro.js +1 -1
- package/js/src/coinex.js +164 -206
- package/js/src/cryptocom.js +5 -5
- package/js/src/hyperliquid.d.ts +2 -1
- package/js/src/hyperliquid.js +75 -1
- package/js/src/kraken.js +8 -3
- package/js/src/kucoin.js +13 -11
- 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/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- 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
package/doc/requirements.txt
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE HTML>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>CCXT Basic example for the browser</title>
|
|
5
|
-
<script type="text/javascript" src="https://unpkg.com/ccxt"></script>
|
|
6
|
-
<script>
|
|
7
|
-
|
|
8
|
-
document.addEventListener ("DOMContentLoaded", function () {
|
|
9
|
-
|
|
10
|
-
const pollTickerContinuously = async function (exchange, symbol) {
|
|
11
|
-
|
|
12
|
-
while (true) {
|
|
13
|
-
|
|
14
|
-
try {
|
|
15
|
-
|
|
16
|
-
const ticker = await exchange.watchTicker (symbol)
|
|
17
|
-
|
|
18
|
-
const text = [
|
|
19
|
-
exchange.id,
|
|
20
|
-
symbol,
|
|
21
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
document.getElementById ('content').innerHTML = text.join (' ');
|
|
25
|
-
|
|
26
|
-
} catch (e) {
|
|
27
|
-
|
|
28
|
-
const text = [
|
|
29
|
-
e.constructor.name,
|
|
30
|
-
e.message,
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
document.getElementById ('content').innerHTML = text.join (' ');
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const exchange = new ccxt.pro.binance ({ enableRateLimit: true })
|
|
40
|
-
const symbol = 'ETH/BTC'
|
|
41
|
-
|
|
42
|
-
pollTickerContinuously (exchange, symbol)
|
|
43
|
-
})
|
|
44
|
-
</script>
|
|
45
|
-
</head>
|
|
46
|
-
<body>
|
|
47
|
-
<h1>Hello, CCXT!</h1>
|
|
48
|
-
<p>This example uses websockets to watch changes in price of ETH/BTC</p>
|
|
49
|
-
<pre id="content"></pre>
|
|
50
|
-
</body>
|
|
51
|
-
</html>
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt')
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
// This example will run silent and will return your balance only when the balance is updated.
|
|
8
|
-
//
|
|
9
|
-
// 1. launch the example with your keys and keep it running
|
|
10
|
-
// 2. go to the trading section on the website
|
|
11
|
-
// 3. place a order on a spot market
|
|
12
|
-
// 4. see your balance updated in the example
|
|
13
|
-
//
|
|
14
|
-
// Warning! This example might produce a lot of output to your screen
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
async function watchBalance (exchange) {
|
|
18
|
-
let balance = await exchange.fetchBalance ()
|
|
19
|
-
console.log ('---------------------------------------------------------')
|
|
20
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()))
|
|
21
|
-
console.log (balance, '\n')
|
|
22
|
-
while (true) {
|
|
23
|
-
try {
|
|
24
|
-
const update = await exchange.watchBalance ()
|
|
25
|
-
balance = exchange.deep_extend (balance, update)
|
|
26
|
-
// it will print the balance update when the balance changes
|
|
27
|
-
// if the balance remains unchanged the exchange will not send it
|
|
28
|
-
console.log ('---------------------------------------------------------')
|
|
29
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()))
|
|
30
|
-
console.log (balance, '\n')
|
|
31
|
-
} catch (e) {
|
|
32
|
-
console.log (e.constructor.name, e.message)
|
|
33
|
-
break
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
async function main() {
|
|
40
|
-
|
|
41
|
-
const exchange = new ccxt.pro.binance ({
|
|
42
|
-
'apiKey': 'YOUR_API_KEY',
|
|
43
|
-
'secret': 'YOUR_SECRET',
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
await exchange.loadMarkets ()
|
|
47
|
-
|
|
48
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
49
|
-
|
|
50
|
-
await watchBalance (exchange)
|
|
51
|
-
|
|
52
|
-
await exchange.close ()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
main ()
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt')
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
let HttpsProxyAgent = undefined
|
|
8
|
-
|
|
9
|
-
try {
|
|
10
|
-
HttpsProxyAgent = require ('https-proxy-agent')
|
|
11
|
-
} catch (e) {
|
|
12
|
-
console.log (e.constructor.name, e.message)
|
|
13
|
-
console.log ("\nCould not load the HTTPS proxy agent")
|
|
14
|
-
console.log ("\nPlease, run this command to make sure it's properly installed:")
|
|
15
|
-
console.log ("\nnpm install https-proxy-agent\n")
|
|
16
|
-
process.exit ()
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function main () {
|
|
20
|
-
|
|
21
|
-
console.log ('Using proxy server', httpsProxyUrl);
|
|
22
|
-
|
|
23
|
-
// adjust for your HTTPS proxy URL
|
|
24
|
-
const httpsProxyUrl = process.env.https_proxy || 'https://username:password@your-proxy.com'
|
|
25
|
-
, httpsAgent = new HttpsProxyAgent (httpsProxyUrl)
|
|
26
|
-
, exchange = new ccxt.binance ({
|
|
27
|
-
httpsAgent: httpsAgent, // ←--------------------- httpsAgent here
|
|
28
|
-
options: {
|
|
29
|
-
'ws': {
|
|
30
|
-
'options': { agent: httpsAgent }, // ←--- httpsAgent here
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const symbol = 'BTC/USDT'
|
|
36
|
-
await exchange.loadMarkets ()
|
|
37
|
-
console.log ('Markets loaded')
|
|
38
|
-
while (true) {
|
|
39
|
-
try {
|
|
40
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
41
|
-
console.log (exchange.iso8601 (exchange.milliseconds()), symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
42
|
-
} catch (e) {
|
|
43
|
-
console.log (e.constructor.name, e.message)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
main ()
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt')
|
|
4
|
-
|
|
5
|
-
const ohlcvsBySymbol = {}
|
|
6
|
-
|
|
7
|
-
function handleAllOHLCVs (exchange, ohlcvs, symbol, timeframe) {
|
|
8
|
-
const now = exchange.iso8601 (exchange.milliseconds ())
|
|
9
|
-
const lastCandle = exchange.safeValue (ohlcvs, ohlcvs.length - 1)
|
|
10
|
-
const datetime = exchange.iso8601 (lastCandle[0])
|
|
11
|
-
console.log (now, datetime, symbol, timeframe, lastCandle.slice (1))
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function pollOHLCV (exchange, symbol, timeframe) {
|
|
15
|
-
await exchange.throttle (1000) // 1000ms delay between subscriptions
|
|
16
|
-
while (true) {
|
|
17
|
-
try {
|
|
18
|
-
const response = await exchange.watchOHLCV (symbol, timeframe)
|
|
19
|
-
ohlcvsBySymbol[symbol] = response
|
|
20
|
-
handleAllOHLCVs(exchange, response, symbol, timeframe)
|
|
21
|
-
} catch (e) {
|
|
22
|
-
console.log (e.constructor.name, e.message)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async function main () {
|
|
28
|
-
|
|
29
|
-
const exchange = new ccxt.pro.binance()
|
|
30
|
-
const markets = await exchange.loadMarkets ()
|
|
31
|
-
const timeframe = '5m'
|
|
32
|
-
|
|
33
|
-
const firstOneHundredSymbols = exchange.symbols.slice (0, 100)
|
|
34
|
-
|
|
35
|
-
await Promise.all (firstOneHundredSymbols.map (symbol => pollOHLCV (exchange, symbol, timeframe)))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
main ()
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
// your version must be 0.7+
|
|
6
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
7
|
-
|
|
8
|
-
function handle (exchange, symbol, timeframe, candles) {
|
|
9
|
-
const lastCandle = candles[candles.length - 1]
|
|
10
|
-
const lastClosingPrice = lastCandle[4]
|
|
11
|
-
console.log (new Date (), exchange.id, timeframe, symbol, '\t', lastClosingPrice)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function loop (exchange, symbol, timeframe) {
|
|
15
|
-
while (true) {
|
|
16
|
-
try {
|
|
17
|
-
const candles = await exchange.watchOHLCV (symbol, timeframe)
|
|
18
|
-
handle (exchange, symbol, timeframe, candles)
|
|
19
|
-
} catch (e) {
|
|
20
|
-
console.log (symbol, e)
|
|
21
|
-
// do nothing and retry on next loop iteration
|
|
22
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
23
|
-
// break // you can also break just this one loop if it fails
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function main () {
|
|
29
|
-
|
|
30
|
-
const exchange = new ccxt.pro.binanceusdm () // usd(s)-margined contracts
|
|
31
|
-
//
|
|
32
|
-
// or
|
|
33
|
-
//
|
|
34
|
-
// const exchange = new ccxt.pro.binance () // spot markets
|
|
35
|
-
//
|
|
36
|
-
// WARNING: when using the spot markets mind subscription limits!
|
|
37
|
-
// don't attempt to subscribe to all of them
|
|
38
|
-
// the exchanges will not allow that in general
|
|
39
|
-
// instead, specify a shorter list of symbols to subscribe to
|
|
40
|
-
//
|
|
41
|
-
// or
|
|
42
|
-
//
|
|
43
|
-
// const exchange = new ccxt.pro.binancecoinm () // coin-margined contracts
|
|
44
|
-
|
|
45
|
-
if (exchange.has['watchOHLCV']) {
|
|
46
|
-
await exchange.loadMarkets ()
|
|
47
|
-
const timeframe = '15m'
|
|
48
|
-
// many symbols
|
|
49
|
-
await Promise.all (exchange.symbols.map (symbol => loop (exchange, symbol, timeframe)))
|
|
50
|
-
//
|
|
51
|
-
// or
|
|
52
|
-
//
|
|
53
|
-
// const symbols = [ 'BTC/USDT', 'ETH/USDT' ] // specific symbols
|
|
54
|
-
// await Promise.all (symbols.map (symbol => loop (exchange, symbol, timeframe)))
|
|
55
|
-
//
|
|
56
|
-
// or
|
|
57
|
-
//
|
|
58
|
-
// await loop (exchange, 'BTC/USDT', timeframe) // one symbol
|
|
59
|
-
} else {
|
|
60
|
-
console.log (exchange.id, 'does not support watchOHLCV yet')
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
main ()
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
// your version must be 0.7+
|
|
6
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
7
|
-
|
|
8
|
-
function handle (exchange, symbol, ticker) {
|
|
9
|
-
console.log (new Date (), exchange.id, symbol, ticker['last'])
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function loop (exchange, symbol) {
|
|
13
|
-
while (true) {
|
|
14
|
-
try {
|
|
15
|
-
const ticker = await exchange.watchTicker (symbol)
|
|
16
|
-
handle (exchange, symbol, ticker)
|
|
17
|
-
} catch (e) {
|
|
18
|
-
console.log (symbol, e)
|
|
19
|
-
// do nothing and retry on next loop iteration
|
|
20
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
21
|
-
// break // you can also break just this one loop if it fails
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async function main () {
|
|
27
|
-
|
|
28
|
-
const exchange = new ccxt.pro.binanceusdm () // usd(s)-margined contracts
|
|
29
|
-
//
|
|
30
|
-
// or
|
|
31
|
-
//
|
|
32
|
-
// const exchange = new ccxt.pro.binance () // spot markets
|
|
33
|
-
//
|
|
34
|
-
// WARNING: when using the spot markets mind subscription limits!
|
|
35
|
-
// don't attempt to subscribe to all of them
|
|
36
|
-
// the exchanges will not allow that in general
|
|
37
|
-
// instead, specify a shorter list of symbols to subscribe to
|
|
38
|
-
//
|
|
39
|
-
// or
|
|
40
|
-
//
|
|
41
|
-
// const exchange = new ccxt.pro.binancecoinm () // coin-margined contracts
|
|
42
|
-
|
|
43
|
-
if (exchange.has['watchTicker']) {
|
|
44
|
-
await exchange.loadMarkets ()
|
|
45
|
-
// many symbols
|
|
46
|
-
await Promise.all (exchange.symbols.map (symbol => loop (exchange, symbol)))
|
|
47
|
-
//
|
|
48
|
-
// or
|
|
49
|
-
//
|
|
50
|
-
// const symbols = [ 'BTC/USDT', 'ETH/USDT' ] // specific symbols
|
|
51
|
-
// await Promise.all (symbols.map (symbol => loop (exchange, symbol)))
|
|
52
|
-
//
|
|
53
|
-
// or
|
|
54
|
-
//
|
|
55
|
-
// await loop (exchange, 'BTC/USDT') // one symbol
|
|
56
|
-
|
|
57
|
-
} else {
|
|
58
|
-
console.log (exchange.id, 'does not support watchTicker yet')
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
main ()
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
const asTable = require ('as-table').configure ({ delimiter: ' | ' })
|
|
5
|
-
|
|
6
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
async function loop (exchange, symbol, timeframe, completeCandlesOnly = false) {
|
|
10
|
-
const durationInSeconds = exchange.parseTimeframe (timeframe)
|
|
11
|
-
const durationInMs = durationInSeconds * 1000
|
|
12
|
-
while (true) {
|
|
13
|
-
try {
|
|
14
|
-
const trades = await exchange.watchTrades (symbol)
|
|
15
|
-
if (trades.length > 0) {
|
|
16
|
-
const currentMinute = parseInt (exchange.milliseconds () / durationInMs)
|
|
17
|
-
let ohlcvc = exchange.buildOHLCVC (trades, timeframe)
|
|
18
|
-
if (completeCandlesOnly) {
|
|
19
|
-
ohlcvc = ohlcvc.filter (candle => parseInt (candle[0] / durationInMs) < currentMinute)
|
|
20
|
-
}
|
|
21
|
-
if (ohlcvc.length > 0) {
|
|
22
|
-
console.log("Symbol:", symbol, "timeframe:", timeframe);
|
|
23
|
-
console.log ('-----------------------------------------------------------')
|
|
24
|
-
console.log (asTable (ohlcvc))
|
|
25
|
-
console.log ('-----------------------------------------------------------')
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
} catch (e) {
|
|
29
|
-
console.log (symbol, e)
|
|
30
|
-
// do nothing and retry on next loop iteration
|
|
31
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
32
|
-
// break // you can also break just this one loop if it fails
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async function main () {
|
|
38
|
-
// select the exchange
|
|
39
|
-
const exchange = new ccxt.pro.ftx ()
|
|
40
|
-
|
|
41
|
-
if (exchange.has['watchTrades']) {
|
|
42
|
-
await exchange.loadMarkets ()
|
|
43
|
-
// Change this value accordingly
|
|
44
|
-
const timeframe = '1m'
|
|
45
|
-
|
|
46
|
-
const allSymbols = exchange.symbols;
|
|
47
|
-
|
|
48
|
-
// arbitrary n symbols
|
|
49
|
-
const limit = 5;
|
|
50
|
-
// const selectedSymbols = allSymbols.slice(0, limit);
|
|
51
|
-
// you can also specify the symbols manually
|
|
52
|
-
// example:
|
|
53
|
-
// const selectedSymbols = ['BTC/USDT', 'LTC/USDT']
|
|
54
|
-
|
|
55
|
-
console.log(selectedSymbols);
|
|
56
|
-
|
|
57
|
-
// Use this variable to choose if only complete candles
|
|
58
|
-
// should be considered
|
|
59
|
-
const completeCandlesOnly = true
|
|
60
|
-
|
|
61
|
-
await Promise.all (selectedSymbols.map (symbol => loop (exchange, symbol, timeframe, completeCandlesOnly)))
|
|
62
|
-
|
|
63
|
-
} else {
|
|
64
|
-
console.log (exchange.id, 'does not support watchTrades yet')
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
main ()
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
let ohlcvs = {}
|
|
8
|
-
|
|
9
|
-
async function log (exchange, symbol, timeframe) {
|
|
10
|
-
const market = exchange.market (symbol)
|
|
11
|
-
const duration = exchange.parseTimeframe (timeframe) * 1000
|
|
12
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), 'Warming up, waiting for at least one trade...')
|
|
13
|
-
while (!Object.keys (ohlcvs).length) {
|
|
14
|
-
await exchange.throttle (1)
|
|
15
|
-
}
|
|
16
|
-
let now = exchange.milliseconds ()
|
|
17
|
-
const start = (parseInt (now / duration) + 1) * duration
|
|
18
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), 'Trades started arriving, waiting till', exchange.iso8601 (start))
|
|
19
|
-
await exchange.sleep (start - now)
|
|
20
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), 'Done warming up')
|
|
21
|
-
for (let i = 0;; i++) {
|
|
22
|
-
now = exchange.milliseconds ()
|
|
23
|
-
let candle = Object.values (ohlcvs)[0]
|
|
24
|
-
console.log ('')
|
|
25
|
-
console.log (exchange.iso8601 (now), '------------------------------------------------------')
|
|
26
|
-
console.log ('Datetime ', 'Timestamp ', ... [ 'Open', 'High', 'Low', 'Close', market['base'], market['quote'] ].map (x => x.toString ().padEnd (10, ' ')))
|
|
27
|
-
for (let j = start; j < now; j += duration) {
|
|
28
|
-
if (!(j in ohlcvs)) {
|
|
29
|
-
ohlcvs[j] = [ j, candle[4], candle[4], candle[4], candle[4], 0, 0 ]
|
|
30
|
-
}
|
|
31
|
-
candle = exchange.safeValue (ohlcvs, j);
|
|
32
|
-
console.log (exchange.iso8601 (j), ... candle.map (x => x.toString ().padEnd (10, ' ')))
|
|
33
|
-
}
|
|
34
|
-
ohlcvs = exchange.indexBy (Object.values (ohlcvs).slice (-1000), 0)
|
|
35
|
-
await exchange.sleep(1000)
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async function watch (exchange, symbol, timeframe) {
|
|
40
|
-
console.log ('Starting', exchange.id, symbol)
|
|
41
|
-
const duration = exchange.parseTimeframe (timeframe) * 1000
|
|
42
|
-
while (true) {
|
|
43
|
-
try {
|
|
44
|
-
const trades = await exchange.watchTrades(symbol)
|
|
45
|
-
for (const trade of trades) {
|
|
46
|
-
const timestamp = parseInt(trade['timestamp'] / duration) * duration
|
|
47
|
-
let candle = exchange.safe_value(ohlcvs, timestamp)
|
|
48
|
-
if (candle) {
|
|
49
|
-
candle[2] = Math.max(trade['price'], candle[2])
|
|
50
|
-
candle[3] = Math.min(trade['price'], candle[3])
|
|
51
|
-
candle[4] = trade['price']
|
|
52
|
-
candle[5] = exchange.parseNumber(exchange.amountToPrecision(symbol, trade['amount'] + candle[5]))
|
|
53
|
-
candle[6] = exchange.parseNumber(exchange.costToPrecision(symbol, trade['cost'] + candle[6]))
|
|
54
|
-
} else {
|
|
55
|
-
candle = [
|
|
56
|
-
timestamp,
|
|
57
|
-
trade['price'],
|
|
58
|
-
trade['price'],
|
|
59
|
-
trade['price'],
|
|
60
|
-
trade['price'],
|
|
61
|
-
exchange.parseNumber(exchange.amountToPrecision(symbol, trade['amount'])),
|
|
62
|
-
exchange.parseNumber(exchange.costToPrecision(symbol, trade['cost'])),
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
ohlcvs[timestamp] = candle
|
|
66
|
-
}
|
|
67
|
-
} catch (e) {
|
|
68
|
-
console.log (e.constructor.name, e.message)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async function main() {
|
|
74
|
-
const symbol = 'BTC/USDT'
|
|
75
|
-
const exchange = new ccxt.pro.binance ({ 'newUpdates': true })
|
|
76
|
-
await exchange.loadMarkets ()
|
|
77
|
-
const timeframe = '1m'
|
|
78
|
-
await Promise.all ([ watch (exchange, symbol, timeframe), log (exchange, symbol, timeframe) ])
|
|
79
|
-
await exchange.close ()
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
main()
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
async function main() {
|
|
9
|
-
let ohlcvs = {}
|
|
10
|
-
const symbol = 'BTC/USDT'
|
|
11
|
-
const exchange = new ccxt.pro.binance ({ 'newUpdates': true })
|
|
12
|
-
await exchange.loadMarkets ()
|
|
13
|
-
const market = exchange.market (symbol)
|
|
14
|
-
const timeframe = '1m'
|
|
15
|
-
const duration = exchange.parseTimeframe (timeframe) * 1000
|
|
16
|
-
console.log ('Starting', exchange.id, symbol)
|
|
17
|
-
while (true) {
|
|
18
|
-
try {
|
|
19
|
-
const trades = await exchange.watchTrades(symbol)
|
|
20
|
-
for (const trade of trades) {
|
|
21
|
-
const timestamp = parseInt(trade['timestamp'] / duration) * duration
|
|
22
|
-
let candle = exchange.safe_value(ohlcvs, timestamp)
|
|
23
|
-
if (candle) {
|
|
24
|
-
candle[2] = Math.max(trade['price'], candle[2])
|
|
25
|
-
candle[3] = Math.min(trade['price'], candle[3])
|
|
26
|
-
candle[4] = trade['price']
|
|
27
|
-
candle[5] = exchange.parseNumber(exchange.amountToPrecision(symbol, trade['amount'] + candle[5]))
|
|
28
|
-
candle[6] = exchange.parseNumber(exchange.costToPrecision(symbol, trade['cost'] + candle[6]))
|
|
29
|
-
} else {
|
|
30
|
-
candle = [
|
|
31
|
-
timestamp,
|
|
32
|
-
trade['price'],
|
|
33
|
-
trade['price'],
|
|
34
|
-
trade['price'],
|
|
35
|
-
trade['price'],
|
|
36
|
-
exchange.parseNumber(exchange.amountToPrecision(symbol, trade['amount'])),
|
|
37
|
-
exchange.parseNumber(exchange.costToPrecision(symbol, trade['cost'])),
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
ohlcvs[timestamp] = candle
|
|
41
|
-
}
|
|
42
|
-
console.log ('')
|
|
43
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), '------------------------------------------------------')
|
|
44
|
-
const values = Object.values (ohlcvs).slice (-1000)
|
|
45
|
-
ohlcvs = exchange.indexBy (values, 0)
|
|
46
|
-
console.log ('Datetime ', 'Timestamp ', ... [ 'Open', 'High', 'Low', 'Close', market['base'], market['quote'] ].map (x => x.toString ().padEnd (10, ' ')))
|
|
47
|
-
for (let i = 0; i < values.length; i++) {
|
|
48
|
-
const candle = values[i]
|
|
49
|
-
console.log (exchange.iso8601 (candle[0]), ... candle.map (x => x.toString ().padEnd (10, ' ')))
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
} catch (e) {
|
|
53
|
-
console.log (e.constructor.name, e.message)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
await exchange.close ()
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
main()
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/* ------------------------------------------------------------------------ */
|
|
4
|
-
|
|
5
|
-
const ccxt = require ('../../../ccxt.js').pro
|
|
6
|
-
, asTable = require ('as-table') // .configure ({ print: require ('string.ify').noPretty })
|
|
7
|
-
, log = require ('ololog').noLocate
|
|
8
|
-
, ansi = require ('ansicolor').nice
|
|
9
|
-
|
|
10
|
-
;(async function test () {
|
|
11
|
-
|
|
12
|
-
let total = 0
|
|
13
|
-
let missing = 0
|
|
14
|
-
let implemented = 0
|
|
15
|
-
let emulated = 0
|
|
16
|
-
|
|
17
|
-
const exchanges = ccxt.exchanges
|
|
18
|
-
.map (id => new ccxt[id]())
|
|
19
|
-
.filter (exchange => exchange.has.ws)
|
|
20
|
-
|
|
21
|
-
log (
|
|
22
|
-
asTable (
|
|
23
|
-
exchanges
|
|
24
|
-
.map (exchange => {
|
|
25
|
-
|
|
26
|
-
let result = {};
|
|
27
|
-
|
|
28
|
-
[
|
|
29
|
-
'ws',
|
|
30
|
-
'watchOrderBook',
|
|
31
|
-
'watchTicker',
|
|
32
|
-
'watchTrades',
|
|
33
|
-
'watchOHLCV',
|
|
34
|
-
'watchBalance',
|
|
35
|
-
'watchOrders',
|
|
36
|
-
'watchMyTrades',
|
|
37
|
-
|
|
38
|
-
].forEach (key => {
|
|
39
|
-
|
|
40
|
-
total += 1
|
|
41
|
-
|
|
42
|
-
let capability = (key in exchange.has) ?
|
|
43
|
-
exchange.has[key].toString () :
|
|
44
|
-
'undefined'
|
|
45
|
-
|
|
46
|
-
if (!exchange.has[key]) {
|
|
47
|
-
capability = exchange.id.red.dim
|
|
48
|
-
missing += 1
|
|
49
|
-
} else if (exchange.has[key] === 'emulated') {
|
|
50
|
-
capability = exchange.id.yellow
|
|
51
|
-
emulated += 1
|
|
52
|
-
} else {
|
|
53
|
-
capability = exchange.id.green
|
|
54
|
-
implemented += 1
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
result[key] = capability
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
return result
|
|
61
|
-
})
|
|
62
|
-
)
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
log ('Summary:',
|
|
66
|
-
exchanges.length.toString ().green, 'exchanges,',
|
|
67
|
-
implemented.toString ().green, 'methods implemented,',
|
|
68
|
-
emulated.toString ().yellow, 'emulated,',
|
|
69
|
-
missing.toString ().red, 'missing,',
|
|
70
|
-
total.toString (), 'total')
|
|
71
|
-
|
|
72
|
-
}) ()
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt')
|
|
4
|
-
|
|
5
|
-
console.log ("CCXT Pro Version:", ccxt.version)
|
|
6
|
-
|
|
7
|
-
const orderbooks = {}
|
|
8
|
-
|
|
9
|
-
let run = true
|
|
10
|
-
|
|
11
|
-
async function watchOrderBook (exchange, symbol) {
|
|
12
|
-
while (run) {
|
|
13
|
-
try {
|
|
14
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
15
|
-
orderbooks[symbol] = orderbook
|
|
16
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), orderbook['datetime'], orderbook['nonce'], symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
17
|
-
} catch (e) {
|
|
18
|
-
console.log (e.constructor.name, e.message)
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
async function stop (exchange) {
|
|
25
|
-
await exchange.sleep (10000)
|
|
26
|
-
run = false
|
|
27
|
-
await exchange.close ()
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
async function main () {
|
|
32
|
-
const exchange = new ccxt.pro.binance ()
|
|
33
|
-
await exchange.loadMarkets ()
|
|
34
|
-
exchange.verbose = true
|
|
35
|
-
const symbols = [
|
|
36
|
-
'BTC/USDT',
|
|
37
|
-
'ETH/USDT',
|
|
38
|
-
]
|
|
39
|
-
stop (exchange).then (() => {})
|
|
40
|
-
await Promise.all (symbols.map (symbol => watchOrderBook (exchange, symbol)))
|
|
41
|
-
console.log ('Sleeping for a moment...')
|
|
42
|
-
await exchange.sleep (10000)
|
|
43
|
-
console.log ('Done')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
main ()
|