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
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt')
|
|
4
|
-
|
|
5
|
-
console.log ("CCXT Pro Version:", ccxt.version)
|
|
6
|
-
|
|
7
|
-
async function loop (exchange, method, symbol) {
|
|
8
|
-
while (true) {
|
|
9
|
-
try {
|
|
10
|
-
const orderbook = await exchange[method] (symbol)
|
|
11
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), orderbook['datetime'], orderbook['nonce'], symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
12
|
-
} catch (e) {
|
|
13
|
-
console.log (e.constructor.name, e.message)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function main () {
|
|
19
|
-
const exchange = new ccxt.pro.gateio ({
|
|
20
|
-
'options': {'defaultType':'swap'}
|
|
21
|
-
})
|
|
22
|
-
await exchange.loadMarkets ()
|
|
23
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
24
|
-
const symbols = [
|
|
25
|
-
'ANC/USDT:USDT',
|
|
26
|
-
]
|
|
27
|
-
await Promise.all (symbols.map (symbol => loop (exchange, 'fetchOrderBook', symbol)))
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
main ()
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
const ccxt = require ('../../../ccxt')
|
|
2
|
-
|
|
3
|
-
console.log ('CCXT Pro version:', ccxt.version)
|
|
4
|
-
|
|
5
|
-
async function main () {
|
|
6
|
-
const exchange = new ccxt.pro.gateio ({
|
|
7
|
-
'apiKey': 'YOUR_API_KEY',
|
|
8
|
-
'secret': 'YOUR_SECRET',
|
|
9
|
-
})
|
|
10
|
-
await exchange.loadMarkets ()
|
|
11
|
-
exchange.verbose = true
|
|
12
|
-
while (true) {
|
|
13
|
-
try {
|
|
14
|
-
const response = await exchange.watchBalance ()
|
|
15
|
-
console.log (new Date (), response)
|
|
16
|
-
} catch (e) {
|
|
17
|
-
console.log (e.constructor.name, e.message)
|
|
18
|
-
await exchange.sleep (1000)
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
main ()
|
|
@@ -1,71 +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
|
-
async function watchAllSymbols (exchange, symbols) {
|
|
10
|
-
while (true) {
|
|
11
|
-
const keys = Object.keys (orderbooks);
|
|
12
|
-
if (symbols.length === keys.length) {
|
|
13
|
-
console.log ('\n\n\n\n\n')
|
|
14
|
-
console.log ('----------------------------------------------------')
|
|
15
|
-
console.log ('All orderbooks received at least one update:');
|
|
16
|
-
for (let i = 0; i < symbols.length; i++) {
|
|
17
|
-
const symbol = symbols[i]
|
|
18
|
-
const orderbook = orderbooks[symbol]
|
|
19
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), orderbook['datetime'], orderbook['nonce'], symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
20
|
-
}
|
|
21
|
-
console.log ('----------------------------------------------------')
|
|
22
|
-
console.log ('\n\n\n\n\n')
|
|
23
|
-
// process.exit () // stop here if you want
|
|
24
|
-
break
|
|
25
|
-
} else {
|
|
26
|
-
await exchange.sleep (1000);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async function watchOrderBook (exchange, symbol) {
|
|
32
|
-
while (true) {
|
|
33
|
-
try {
|
|
34
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
35
|
-
orderbooks[symbol] = orderbook
|
|
36
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), orderbook['datetime'], orderbook['nonce'], symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
37
|
-
} catch (e) {
|
|
38
|
-
console.log (e.constructor.name, e.message)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async function main () {
|
|
44
|
-
const exchange = new ccxt.pro.gateio ({
|
|
45
|
-
'options': {
|
|
46
|
-
'defaultType': 'swap',
|
|
47
|
-
},
|
|
48
|
-
})
|
|
49
|
-
await exchange.loadMarkets ()
|
|
50
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
51
|
-
const symbols = [
|
|
52
|
-
// 'SOS/USDT:USDT',
|
|
53
|
-
// 'JASMY/USDT:USDT',
|
|
54
|
-
// 'SLP/USDT:USDT',
|
|
55
|
-
'ACH/USDT:USDT',
|
|
56
|
-
'MKISHU/USDT:USDT',
|
|
57
|
-
// 'GMT/USDT:USDT',
|
|
58
|
-
// 'ASTR/USDT:USDT',
|
|
59
|
-
'RAMP/USDT:USDT',
|
|
60
|
-
'RSR/USDT:USDT',
|
|
61
|
-
// 'RACA/USDT:USDT',
|
|
62
|
-
// 'ROOK/USDT:USDT',
|
|
63
|
-
// 'ROSE/USDT:USDT',
|
|
64
|
-
]
|
|
65
|
-
await Promise.all ([
|
|
66
|
-
watchAllSymbols (exchange, symbols),
|
|
67
|
-
... symbols.map (symbol => watchOrderBook (exchange, symbol))
|
|
68
|
-
])
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
main ()
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
let stop = false
|
|
6
|
-
|
|
7
|
-
async function shutdown (milliseconds) {
|
|
8
|
-
await ccxt.sleep (10000)
|
|
9
|
-
stop = true
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function watchOrderBook (exchangeId, symbol) {
|
|
13
|
-
|
|
14
|
-
const exchange = new ccxt.pro[exchangeId] ()
|
|
15
|
-
await exchange.loadMarkets ()
|
|
16
|
-
// exchange.verbose = true
|
|
17
|
-
while (!stop) {
|
|
18
|
-
try {
|
|
19
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
20
|
-
console.log (new Date (), exchange.id, symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
21
|
-
} catch (e) {
|
|
22
|
-
console.log (symbol, e)
|
|
23
|
-
stop = true
|
|
24
|
-
break
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
await exchange.close ()
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async function main () {
|
|
31
|
-
const streams = {
|
|
32
|
-
'binance': 'BTC/USDT',
|
|
33
|
-
'ftx': 'BTC/USDT',
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
await Promise.all ([
|
|
37
|
-
shutdown (10000),
|
|
38
|
-
... Object.entries (streams).map (([ exchangeId, symbol ]) => watchOrderBook (exchangeId, symbol))
|
|
39
|
-
])
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
main()
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
(async () => {
|
|
6
|
-
|
|
7
|
-
const streams = {
|
|
8
|
-
'binance': 'BTC/USDT',
|
|
9
|
-
'bittrex': 'BTC/USDT',
|
|
10
|
-
'poloniex': 'BTC/USDT',
|
|
11
|
-
'bitfinex': 'BTC/USDT',
|
|
12
|
-
'hitbtc': 'BTC/USDT',
|
|
13
|
-
'upbit': 'BTC/USDT',
|
|
14
|
-
'coinbasepro': 'BTC/USD',
|
|
15
|
-
'ftx': 'BTC/USDT',
|
|
16
|
-
'okex': 'BTC/USDT',
|
|
17
|
-
'gateio': 'BTC/USDT',
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
await Promise.all (Object.keys (streams).map (exchangeId =>
|
|
21
|
-
|
|
22
|
-
(async () => {
|
|
23
|
-
|
|
24
|
-
const exchange = new ccxt.pro[exchangeId] ({ enableRateLimit: true })
|
|
25
|
-
const symbol = streams[exchangeId]
|
|
26
|
-
while (true) {
|
|
27
|
-
try {
|
|
28
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
29
|
-
console.log (new Date (), exchange.id, symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
30
|
-
} catch (e) {
|
|
31
|
-
console.log (symbol, e)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}) ())
|
|
36
|
-
)
|
|
37
|
-
}) ()
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt')
|
|
4
|
-
, exchange = new ccxt.okex ({
|
|
5
|
-
apiKey: 'YOUR_API_KEY',
|
|
6
|
-
secret: 'YOUR_API_SECRET',
|
|
7
|
-
password: 'YOUR_API_PASSWORD',
|
|
8
|
-
enableRateLimit: true,
|
|
9
|
-
options: { defaultType: 'futures' },
|
|
10
|
-
})
|
|
11
|
-
, symbol = 'BTC/USDT:USDT-201225'
|
|
12
|
-
, amount = 1 // how may contracts
|
|
13
|
-
, price = undefined // or your limit price
|
|
14
|
-
, side = 'buy' // or 'sell'
|
|
15
|
-
, type = '1' // 1 open long, 2 open short, 3 close long, 4 close short for futures
|
|
16
|
-
, order_type = '4' // 0 = limit order, 4 = market order
|
|
17
|
-
|
|
18
|
-
console.log ('CCXT Pro Version: ', ccxt.version)
|
|
19
|
-
|
|
20
|
-
async function main () {
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
|
|
24
|
-
await exchange.loadMarkets ()
|
|
25
|
-
|
|
26
|
-
// exchange.verbose = true // uncomment for debugging
|
|
27
|
-
// open long market price order
|
|
28
|
-
const order = await exchange.createOrder(symbol, 'market', side, amount, price, { type });
|
|
29
|
-
// --------------------------------------------------------------------
|
|
30
|
-
// open long market price order
|
|
31
|
-
// const order = await exchange.createOrder(symbol, type, side, amount, price, { order_type });
|
|
32
|
-
// --------------------------------------------------------------------
|
|
33
|
-
// close short market price order
|
|
34
|
-
// const order = await exchange.createOrder(symbol, 'market', side, amount, price, { type, order_type });
|
|
35
|
-
// --------------------------------------------------------------------
|
|
36
|
-
// close short market price order
|
|
37
|
-
// const order = await exchange.createOrder(symbol, '4', side, amount, price, { order_type });
|
|
38
|
-
// ...
|
|
39
|
-
|
|
40
|
-
console.log (order)
|
|
41
|
-
|
|
42
|
-
} catch (e) {
|
|
43
|
-
|
|
44
|
-
console.log (e.constructor.name, e.message)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
main ()
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
const ccxt = require ('ccxt')
|
|
2
|
-
|
|
3
|
-
console.log ('Node.js:', process.version)
|
|
4
|
-
console.log ('CCXT Pro v' + ccxt.version)
|
|
5
|
-
|
|
6
|
-
const exchange = new ccxt.pro.okex ({
|
|
7
|
-
'apiKey': 'YOUR_API_KEY',
|
|
8
|
-
'secret': 'YOUR_API_SECRET',
|
|
9
|
-
'password': 'YOUR_API_PASWORD'
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
async function watchBalance (code) {
|
|
13
|
-
|
|
14
|
-
while (true) {
|
|
15
|
-
const balance = await exchange.watchBalance ({
|
|
16
|
-
'code': code,
|
|
17
|
-
})
|
|
18
|
-
console.log ('New', code, 'balance is: ', balance[code])
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async function createOrder (symbol, type, side, amount, price = undefined, params = {}) {
|
|
23
|
-
|
|
24
|
-
console.log ('Creating', symbol, type, 'order')
|
|
25
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params);
|
|
26
|
-
console.log (symbol, type, side, 'order created')
|
|
27
|
-
console.log (order)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
;(async () => {
|
|
31
|
-
|
|
32
|
-
await exchange.loadMarkets ()
|
|
33
|
-
console.log (exchange.id, 'markets loaded')
|
|
34
|
-
|
|
35
|
-
const symbol = 'ETH/USDT'
|
|
36
|
-
const market = exchange.market (symbol)
|
|
37
|
-
const quote = market['quote']
|
|
38
|
-
|
|
39
|
-
// run in parallel without await
|
|
40
|
-
console.log ('Watching', quote, 'balance')
|
|
41
|
-
watchBalance (quote)
|
|
42
|
-
|
|
43
|
-
// wait a bit to allow it to subscribe
|
|
44
|
-
await exchange.sleep (3000)
|
|
45
|
-
|
|
46
|
-
const ticker = await exchange.watchTicker (symbol)
|
|
47
|
-
const type = 'market'
|
|
48
|
-
const side = 'buy'
|
|
49
|
-
const amount = 0.1
|
|
50
|
-
const price = ticker['bid']
|
|
51
|
-
|
|
52
|
-
await createOrder (symbol, type, side, amount, price)
|
|
53
|
-
|
|
54
|
-
}) ()
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
async function main() {
|
|
4
|
-
const exchange = new ccxt.pro.okx()
|
|
5
|
-
await exchange.loadMarkets()
|
|
6
|
-
// exchange.verbose = true
|
|
7
|
-
while (true) {
|
|
8
|
-
try {
|
|
9
|
-
|
|
10
|
-
// don't do this, specify a list of symbols to watch for watchTickers
|
|
11
|
-
// or a very large subscription message will crash your WS connection
|
|
12
|
-
// const tickers = await exchange.watchTickers ()
|
|
13
|
-
|
|
14
|
-
// do this instead
|
|
15
|
-
const symbols = [
|
|
16
|
-
'ETH/BTC',
|
|
17
|
-
'BTC/USDT',
|
|
18
|
-
'ETH/USDT',
|
|
19
|
-
// ...
|
|
20
|
-
]
|
|
21
|
-
const tickers = await exchange.watchTickers (symbols)
|
|
22
|
-
symbols = Object.keys(tickers)
|
|
23
|
-
console.log (new Date(), 'received', symbols.length, 'symbols', ... symbols.slice(0,5).join(', '), '...')
|
|
24
|
-
} catch (e) {
|
|
25
|
-
console.log (new Date(), e.constructor.name, e.message)
|
|
26
|
-
break
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
main()
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt')
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
async function watchOrders(exchange) {
|
|
8
|
-
while (true) {
|
|
9
|
-
try {
|
|
10
|
-
const orders = await exchange.watchOrders() // await here
|
|
11
|
-
console.log(orders)
|
|
12
|
-
} catch (e) {
|
|
13
|
-
console.log(e)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function watchBalance(exchange) {
|
|
19
|
-
while (true) {
|
|
20
|
-
try {
|
|
21
|
-
const balance = await exchange.watchBalance() // await here
|
|
22
|
-
console.log(balance)
|
|
23
|
-
} catch (e) {
|
|
24
|
-
console.log(e)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async function main() {
|
|
30
|
-
const exchange = new ccxt.pro.binance({
|
|
31
|
-
'apiKey': 'YOUR_API_KEY',
|
|
32
|
-
'secret': 'YOUR_SECRET',
|
|
33
|
-
'password': 'IF NECESSARY',
|
|
34
|
-
// etc...
|
|
35
|
-
})
|
|
36
|
-
await exchange.loadMarkets () // await here
|
|
37
|
-
|
|
38
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
39
|
-
|
|
40
|
-
watchOrders(exchange) // no await
|
|
41
|
-
watchBalance(exchange) // no await
|
|
42
|
-
|
|
43
|
-
await exchange.close()
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
main()
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
(async () => {
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.pro.binance ({ enableRateLimit: true })
|
|
8
|
-
const symbols = [ 'BTC/USDT', 'ETH/BTC', 'ETH/USDT' ]
|
|
9
|
-
|
|
10
|
-
const loop = async (symbol) => {
|
|
11
|
-
while (true) {
|
|
12
|
-
try {
|
|
13
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
14
|
-
console.log (new Date (), symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
15
|
-
} catch (e) {
|
|
16
|
-
console.log (symbol, e)
|
|
17
|
-
// do nothing and retry on next loop iteration
|
|
18
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
19
|
-
// break // you can also break just this one loop if it fails
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
await Promise.all (symbols.map (symbol => loop (symbol)))
|
|
25
|
-
|
|
26
|
-
}) ()
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
(async () => {
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.pro.binance ({ enableRateLimit: true })
|
|
8
|
-
const symbols = [ 'BTC/USDT', 'ETH/BTC', 'ETH/USDT' ]
|
|
9
|
-
|
|
10
|
-
await Promise.all (symbols.map (symbol =>
|
|
11
|
-
|
|
12
|
-
(async () => {
|
|
13
|
-
|
|
14
|
-
while (true) {
|
|
15
|
-
try {
|
|
16
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
17
|
-
console.log (new Date (), symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
18
|
-
} catch (e) {
|
|
19
|
-
console.log (symbol, e)
|
|
20
|
-
// do nothing and retry on next loop iteration
|
|
21
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
22
|
-
// break // you can also break just this one loop if it fails
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
}) ())
|
|
27
|
-
)
|
|
28
|
-
}) ()
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt')
|
|
4
|
-
, SocksProxyAgent = require ('socks-proxy-agent')
|
|
5
|
-
, socks = 'socks://127.0.0.1:7000'
|
|
6
|
-
, socksAgent = new SocksProxyAgent (socks)
|
|
7
|
-
, exchange = new ccxt.binance ({
|
|
8
|
-
enableRatLimit: true,
|
|
9
|
-
httpsAgent: socksAgent, // ←--------------------- socksAgent here
|
|
10
|
-
options: {
|
|
11
|
-
'ws': {
|
|
12
|
-
'options': { agent: socksAgent }, // ←--- socksAgent here
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
;(async () => {
|
|
18
|
-
console.log (socks)
|
|
19
|
-
const symbol = 'BTC/USDT'
|
|
20
|
-
await exchange.loadMarkets ()
|
|
21
|
-
console.log ('Markets loaded')
|
|
22
|
-
while (true) {
|
|
23
|
-
try {
|
|
24
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
25
|
-
console.log (exchange.iso8601 (exchange.milliseconds()), symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
26
|
-
} catch (e) {
|
|
27
|
-
console.log (e.constructor.name, e.message)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}) ()
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
async function watchOrderBook (exchange, symbol) {
|
|
6
|
-
while (true) {
|
|
7
|
-
try {
|
|
8
|
-
const method = exchange.has.watchOrderBook ? 'watchOrderBook' : 'fetchOrderBook'
|
|
9
|
-
const orderbook = await exchange[method](symbol)
|
|
10
|
-
console.log (new Date (), exchange.id, symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
11
|
-
} catch (e) {
|
|
12
|
-
console.log (symbol, e)
|
|
13
|
-
process.exit ()
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function watchExchange (exchangeId, symbols) {
|
|
19
|
-
const exchange = new ccxt.pro[exchangeId] ()
|
|
20
|
-
await exchange.loadMarkets ()
|
|
21
|
-
await Promise.all (symbols.map (symbol => watchOrderBook (exchange, symbol)))
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
async function main () {
|
|
25
|
-
const streams = {
|
|
26
|
-
'ftx': [
|
|
27
|
-
'BTC/USDT',
|
|
28
|
-
'ETH/BTC',
|
|
29
|
-
],
|
|
30
|
-
'coinex': [
|
|
31
|
-
'BTC/USDT',
|
|
32
|
-
'ETH/BTC',
|
|
33
|
-
],
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const entries = Object.entries (streams)
|
|
37
|
-
await Promise.all (entries.map (([ exchangeId, symbols ]) => watchExchange (exchangeId, symbols)))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
main()
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
async function watchOrderBook (exchange, symbol) {
|
|
6
|
-
while (true) {
|
|
7
|
-
try {
|
|
8
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
9
|
-
console.log (new Date (), exchange.id, symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
10
|
-
} catch (e) {
|
|
11
|
-
console.log (symbol, e)
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function watchExchange (exchangeId, symbols) {
|
|
17
|
-
const exchange = new ccxt.pro[exchangeId] ()
|
|
18
|
-
await exchange.loadMarkets ()
|
|
19
|
-
await Promise.all (symbols.map (symbol => watchOrderBook (exchange, symbol)))
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async function main () {
|
|
23
|
-
const streams = {
|
|
24
|
-
'binance': [
|
|
25
|
-
'BTC/USDT',
|
|
26
|
-
'ETH/BTC',
|
|
27
|
-
],
|
|
28
|
-
'ftx': [
|
|
29
|
-
'BTC/USDT',
|
|
30
|
-
'ETH/BTC',
|
|
31
|
-
],
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const entries = Object.entries (streams)
|
|
35
|
-
await Promise.all (entries.map (([ exchangeId, symbols ]) => watchExchange (exchangeId, symbols)))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
main()
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
async function watchTickerLoop (exchange, symbol) {
|
|
9
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
10
|
-
while (true) {
|
|
11
|
-
try {
|
|
12
|
-
const ticker = await exchange.watchTicker (symbol)
|
|
13
|
-
console.log (new Date (), exchange.id, symbol, ticker['last'])
|
|
14
|
-
} catch (e) {
|
|
15
|
-
console.log (symbol, e)
|
|
16
|
-
// do nothing and retry on next loop iteration
|
|
17
|
-
// throw e // uncomment to break all loops in case of an error in any one of them
|
|
18
|
-
// break // you can also break just this one loop if it fails
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async function exchangeLoop (exchangeId, symbols) {
|
|
24
|
-
const exchange = new ccxt.pro[exchangeId]()
|
|
25
|
-
await exchange.loadMarkets ()
|
|
26
|
-
const loops = symbols.map (symbol => watchTickerLoop (exchange, symbol))
|
|
27
|
-
await Promise.all (loops)
|
|
28
|
-
await exchange.close ()
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async function main () {
|
|
32
|
-
const exchanges = {
|
|
33
|
-
'binance': [ 'BTC/USDT', 'ETH/USDT' ],
|
|
34
|
-
'ftx': [ 'BTC/USD', 'ETH/USD' ],
|
|
35
|
-
}
|
|
36
|
-
const loops = Object.entries (exchanges).map (([ exchangeId, symbols ]) => exchangeLoop (exchangeId, symbols))
|
|
37
|
-
await Promise.all (loops)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
main ()
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
async function watchOrderBook (exchangeId, symbol) {
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.pro[exchangeId] ()
|
|
8
|
-
while (true) {
|
|
9
|
-
try {
|
|
10
|
-
const orderbook = await exchange.watchOrderBook (symbol)
|
|
11
|
-
console.log (new Date (), exchange.id, symbol, orderbook['asks'][0], orderbook['bids'][0])
|
|
12
|
-
} catch (e) {
|
|
13
|
-
console.log (symbol, e)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function main () {
|
|
19
|
-
const streams = {
|
|
20
|
-
'binance': 'BTC/USDT',
|
|
21
|
-
'ftx': 'BTC/USDT',
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
await Promise.all (Object.entries (streams).map (([ exchangeId, symbol ]) => watchOrderBook (exchangeId, symbol)))
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
main()
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version);
|
|
6
|
-
|
|
7
|
-
async function watchExchange (exchangeId, symbol) {
|
|
8
|
-
|
|
9
|
-
const exchange = new ccxt.pro[exchangeId] ({
|
|
10
|
-
newUpdates: true,
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
await exchange.loadMarkets ();
|
|
14
|
-
|
|
15
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
16
|
-
|
|
17
|
-
while (true) {
|
|
18
|
-
try {
|
|
19
|
-
const trades = await exchange.watchTrades (symbol)
|
|
20
|
-
for (let i = 0; i < trades.length; i++) {
|
|
21
|
-
const trade = trades[i]
|
|
22
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, trade['symbol'], trade['id'], trade['datetime'], trade['price'], trade['amount'])
|
|
23
|
-
}
|
|
24
|
-
} catch (e) {
|
|
25
|
-
console.log (symbol, e)
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async function main () {
|
|
31
|
-
|
|
32
|
-
const streams = {
|
|
33
|
-
'binance': 'BTC/USDT',
|
|
34
|
-
'okex': 'BTC/USDT',
|
|
35
|
-
'kraken': 'BTC/USD',
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const values = Object.entries (streams)
|
|
39
|
-
const promises = values.map (([ exchangeId, symbol ]) => watchExchange (exchangeId, symbol))
|
|
40
|
-
await Promise.all (promises)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
main ()
|