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,42 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('../../../ccxt');
|
|
4
|
-
|
|
5
|
-
(async () => {
|
|
6
|
-
|
|
7
|
-
const streams = {
|
|
8
|
-
'binance': 'BTC/USDT',
|
|
9
|
-
'okex': 'BTC/USDT'
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
await Promise.all (Object.keys (streams).map (exchangeId =>
|
|
13
|
-
|
|
14
|
-
(async () => {
|
|
15
|
-
|
|
16
|
-
const exchange = new ccxt.pro[exchangeId] ({
|
|
17
|
-
enableRateLimit: true,
|
|
18
|
-
options: {
|
|
19
|
-
tradesLimit: 100, // lower = better, 1000 by default
|
|
20
|
-
},
|
|
21
|
-
})
|
|
22
|
-
const symbol = streams[exchangeId]
|
|
23
|
-
let lastId = ''
|
|
24
|
-
while (true) {
|
|
25
|
-
console.log ('---')
|
|
26
|
-
try {
|
|
27
|
-
const trades = await exchange.watchTrades (symbol)
|
|
28
|
-
for (let i = 0; i < trades.length; i++) {
|
|
29
|
-
const trade = trades[i]
|
|
30
|
-
if (trade['id'] > lastId) {
|
|
31
|
-
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, trade['symbol'], trade['id'], trade['datetime'], trade['price'], trade['amount'])
|
|
32
|
-
lastId = trade['id']
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
} catch (e) {
|
|
36
|
-
console.log (symbol, e)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}) ())
|
|
41
|
-
)
|
|
42
|
-
}) ()
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const ccxt = require ('ccxt');
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
async function watchTrades (exchange, symbol) {
|
|
8
|
-
|
|
9
|
-
while (true) {
|
|
10
|
-
try {
|
|
11
|
-
const trades = await exchange.watchTrades (symbol)
|
|
12
|
-
console.log (new Date (), exchange.id, symbol, trades.length, 'trades')
|
|
13
|
-
} catch (e) {
|
|
14
|
-
console.log (symbol, e)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function main () {
|
|
20
|
-
const symbols = [ 'USDT/THB', 'BTC/THB', 'ETH/THB' ]
|
|
21
|
-
const exchange = new ccxt.pro.zipmex({
|
|
22
|
-
'newUpdates': true
|
|
23
|
-
})
|
|
24
|
-
const markets = await exchange.loadMarkets ()
|
|
25
|
-
exchange.verbose = true
|
|
26
|
-
await Promise.all (symbols.map ((symbol) => watchTrades (exchange, symbol)))
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
main()
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// see this issue for details
|
|
2
|
-
// https://github.com/ccxt/ccxt/issues/6659
|
|
3
|
-
|
|
4
|
-
const ccxt = require ('ccxt')
|
|
5
|
-
|
|
6
|
-
const exchange = new ccxt.pro.kraken ()
|
|
7
|
-
|
|
8
|
-
function yellow (s) {
|
|
9
|
-
return '\x1b[33m' + s + '\x1b[0m'
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function runWs () {
|
|
13
|
-
while (1) {
|
|
14
|
-
const book = await exchange.watchOrderBook ('ETH/BTC')
|
|
15
|
-
console.log (new Date (), 'WS ', book['datetime'], book['bids'][0][0], book['asks'][0][0])
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function runRest () {
|
|
20
|
-
while (1) {
|
|
21
|
-
const book = await exchange.fetchOrderBook ('ETH/BTC')
|
|
22
|
-
const timestamp = new Date (exchange.last_response_headers['Date']).getTime ()
|
|
23
|
-
const datetime = exchange.iso8601 (timestamp)
|
|
24
|
-
console.log (new Date (), 'REST', yellow (datetime), book['bids'][0][0], book['asks'][0][0])
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
runWs ()
|
|
29
|
-
runRest ()
|
package/examples/cs/Examples.sln
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
3
|
-
# Visual Studio Version 17
|
|
4
|
-
VisualStudioVersion = 17.0.31903.59
|
|
5
|
-
MinimumVisualStudioVersion = 10.0.40219.1
|
|
6
|
-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "c#", "c#.csproj", "{7251951E-12D3-48C3-9CE2-C06F23F0DCD9}"
|
|
7
|
-
EndProject
|
|
8
|
-
Global
|
|
9
|
-
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
10
|
-
Debug|Any CPU = Debug|Any CPU
|
|
11
|
-
Release|Any CPU = Release|Any CPU
|
|
12
|
-
EndGlobalSection
|
|
13
|
-
GlobalSection(SolutionProperties) = preSolution
|
|
14
|
-
HideSolutionNode = FALSE
|
|
15
|
-
EndGlobalSection
|
|
16
|
-
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
17
|
-
{7251951E-12D3-48C3-9CE2-C06F23F0DCD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
18
|
-
{7251951E-12D3-48C3-9CE2-C06F23F0DCD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
19
|
-
{7251951E-12D3-48C3-9CE2-C06F23F0DCD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
20
|
-
{7251951E-12D3-48C3-9CE2-C06F23F0DCD9}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
21
|
-
EndGlobalSection
|
|
22
|
-
EndGlobal
|
package/examples/cs/c#.csproj
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
-
|
|
3
|
-
<ItemGroup>
|
|
4
|
-
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
|
5
|
-
</ItemGroup>
|
|
6
|
-
|
|
7
|
-
<ItemGroup>
|
|
8
|
-
<ProjectReference Include="..\..\cs\ccxt\ccxt.csproj" />
|
|
9
|
-
</ItemGroup>
|
|
10
|
-
|
|
11
|
-
<PropertyGroup>
|
|
12
|
-
<OutputType>Exe</OutputType>
|
|
13
|
-
<TargetFramework>net7.0</TargetFramework>
|
|
14
|
-
<RootNamespace>examples</RootNamespace>
|
|
15
|
-
<ImplicitUsings>enable</ImplicitUsings>
|
|
16
|
-
<Nullable>enable</Nullable>
|
|
17
|
-
</PropertyGroup>
|
|
18
|
-
|
|
19
|
-
</Project>
|
|
@@ -1,46 +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
|
-
alert ('ccxt version ' + ccxt.version);
|
|
11
|
-
|
|
12
|
-
const exchange = new ccxt.bittrex ({
|
|
13
|
-
'proxyUrl': 'https://cors-anywhere.herokuapp.com/'
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
const symbol = 'BTC/USDT'
|
|
17
|
-
|
|
18
|
-
exchange.fetchTicker (symbol).then (ticker => {
|
|
19
|
-
|
|
20
|
-
const text = [
|
|
21
|
-
exchange.id,
|
|
22
|
-
symbol,
|
|
23
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
27
|
-
|
|
28
|
-
}).catch (e => {
|
|
29
|
-
|
|
30
|
-
const text = [
|
|
31
|
-
e.constructor.name,
|
|
32
|
-
e.message,
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
36
|
-
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
})
|
|
40
|
-
</script>
|
|
41
|
-
</head>
|
|
42
|
-
<body>
|
|
43
|
-
<h1>Hello, CCXT!</h1>
|
|
44
|
-
<pre id="content"></pre>
|
|
45
|
-
</body>
|
|
46
|
-
</html>
|
|
@@ -1,47 +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
|
-
<style type="text/css">
|
|
7
|
-
#contentA { background-color: #ccccff; }
|
|
8
|
-
#contentB { background-color: #ffcccc; }
|
|
9
|
-
</style>
|
|
10
|
-
<script>'use strict'
|
|
11
|
-
|
|
12
|
-
class MyExchange extends ccxt.coinbasepro {
|
|
13
|
-
|
|
14
|
-
async fetchTicker (symbol, params = {}) {
|
|
15
|
-
alert ("I'm about to call the parent method from the overrided class, woohooo!")
|
|
16
|
-
// just call the parent method and that's it
|
|
17
|
-
return super.fetchTicker (symbol, params);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
document.addEventListener ("DOMContentLoaded", function () {
|
|
22
|
-
|
|
23
|
-
const exchange = new MyExchange ()
|
|
24
|
-
|
|
25
|
-
const symbol = 'ETH/BTC'
|
|
26
|
-
|
|
27
|
-
const showFetchedTicker = function (ticker, elementId) {
|
|
28
|
-
|
|
29
|
-
const text = [
|
|
30
|
-
exchange.id,
|
|
31
|
-
symbol,
|
|
32
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
document.getElementById (elementId).innerHTML = text.join (' ')
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
exchange.fetchTicker (symbol).then (ticker => showFetchedTicker (ticker, 'content'))
|
|
40
|
-
})
|
|
41
|
-
</script>
|
|
42
|
-
</head>
|
|
43
|
-
<body>
|
|
44
|
-
<h1>Hello, CCXT!</h1>
|
|
45
|
-
<pre id="content"></pre>
|
|
46
|
-
</body>
|
|
47
|
-
</html>
|
|
@@ -1,52 +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
|
-
alert ('ccxt version ' + ccxt.version + ' supporting ');
|
|
11
|
-
|
|
12
|
-
const pollTickerContinuously = async function (exchange, symbol) {
|
|
13
|
-
|
|
14
|
-
while (true) {
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
|
|
18
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
19
|
-
|
|
20
|
-
const text = [
|
|
21
|
-
exchange.id,
|
|
22
|
-
symbol,
|
|
23
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
document.getElementById ('content').innerHTML = text.join (' ');
|
|
27
|
-
|
|
28
|
-
} catch (e) {
|
|
29
|
-
|
|
30
|
-
const text = [
|
|
31
|
-
e.constructor.name,
|
|
32
|
-
e.message,
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
document.getElementById ('content').innerHTML = text.join (' ');
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const exchange = new ccxt.binance ({ enableRateLimit: true })
|
|
42
|
-
const symbol = 'ETH/BTC'
|
|
43
|
-
|
|
44
|
-
pollTickerContinuously (exchange, symbol)
|
|
45
|
-
})
|
|
46
|
-
</script>
|
|
47
|
-
</head>
|
|
48
|
-
<body>
|
|
49
|
-
<h1>Hello, CCXT!</h1>
|
|
50
|
-
<pre id="content"></pre>
|
|
51
|
-
</body>
|
|
52
|
-
</html>
|
|
@@ -1,49 +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", async function () {
|
|
9
|
-
|
|
10
|
-
alert ('ccxt version ' + ccxt.version);
|
|
11
|
-
|
|
12
|
-
const enableRateLimit = true
|
|
13
|
-
const exchange = new ccxt.poloniex ({ enableRateLimit })
|
|
14
|
-
const symbol = 'ETH/BTC'
|
|
15
|
-
|
|
16
|
-
while (true) {
|
|
17
|
-
|
|
18
|
-
let text = []
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
|
|
22
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
23
|
-
|
|
24
|
-
text = [
|
|
25
|
-
exchange.id,
|
|
26
|
-
symbol,
|
|
27
|
-
JSON.stringify (exchange.omit (ticker, 'info'), undefined, '\t')
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
} catch (e) {
|
|
31
|
-
|
|
32
|
-
text = [
|
|
33
|
-
e.constructor.name,
|
|
34
|
-
e.message,
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
})
|
|
43
|
-
</script>
|
|
44
|
-
</head>
|
|
45
|
-
<body>
|
|
46
|
-
<h1>Hello, CCXT!</h1>
|
|
47
|
-
<pre id="content"></pre>
|
|
48
|
-
</body>
|
|
49
|
-
</html>
|
package/examples/html/basic.html
DELETED
|
@@ -1,43 +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
|
-
alert ('CCXT' + (ccxt.isBrowser ? ' browser' : '') + ' version ' + ccxt.version);
|
|
11
|
-
|
|
12
|
-
const exchange = new ccxt.coinbasepro ({ enableRateLimit: true })
|
|
13
|
-
const symbol = 'ETH/BTC'
|
|
14
|
-
|
|
15
|
-
exchange.fetchTicker (symbol).then (ticker => {
|
|
16
|
-
|
|
17
|
-
const text = [
|
|
18
|
-
exchange.id,
|
|
19
|
-
symbol,
|
|
20
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
24
|
-
|
|
25
|
-
}).catch (e => {
|
|
26
|
-
|
|
27
|
-
const text = [
|
|
28
|
-
e.constructor.name,
|
|
29
|
-
e.message,
|
|
30
|
-
]
|
|
31
|
-
|
|
32
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
33
|
-
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
})
|
|
37
|
-
</script>
|
|
38
|
-
</head>
|
|
39
|
-
<body>
|
|
40
|
-
<h1>Hello, CCXT!</h1>
|
|
41
|
-
<pre id="content"></pre>
|
|
42
|
-
</body>
|
|
43
|
-
</html>
|
|
@@ -1,28 +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
|
-
async function main () {
|
|
11
|
-
const exchange = new ccxt.binance ({
|
|
12
|
-
'apiKey': 'YOUR_API_KEY',
|
|
13
|
-
'secret': 'YOUR_API_SECRET',
|
|
14
|
-
'proxyUrl': 'https://cors-anywhere.herokuapp.com/',
|
|
15
|
-
})
|
|
16
|
-
const response = await exchange.fetchBalance ()
|
|
17
|
-
console.log (response)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
main ()
|
|
21
|
-
})
|
|
22
|
-
</script>
|
|
23
|
-
</head>
|
|
24
|
-
<body>
|
|
25
|
-
<h1>Hello, CCXT!</h1>
|
|
26
|
-
<pre id="content"></pre>
|
|
27
|
-
</body>
|
|
28
|
-
</html>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// JavaScript CORS Proxy
|
|
2
|
-
// Save this in a file like cors.js and run with `node cors [port]`
|
|
3
|
-
// It will listen for your requests on the port you pass in command line or port 8080 by default
|
|
4
|
-
const port = (process.argv.length > 2) ? parseInt (process.argv[2]) : 8080 // default
|
|
5
|
-
require ('cors-anywhere').createServer ({
|
|
6
|
-
setHeaders: { 'origin': 'https://www.bitmex.com' }
|
|
7
|
-
}).listen (port, '0.0.0.0')
|
|
@@ -1,46 +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
|
-
alert ('ccxt version ' + ccxt.version);
|
|
11
|
-
|
|
12
|
-
const exchange = new ccxt.bitmex ({
|
|
13
|
-
'proxyUrl': 'http://127.0.0.1:8080/',
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
const symbol = 'BTC/USDT'
|
|
17
|
-
|
|
18
|
-
exchange.fetchTicker (symbol).then (ticker => {
|
|
19
|
-
|
|
20
|
-
const text = [
|
|
21
|
-
exchange.id,
|
|
22
|
-
symbol,
|
|
23
|
-
JSON.stringify (ticker, undefined, '\n\t')
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
27
|
-
|
|
28
|
-
}).catch (e => {
|
|
29
|
-
|
|
30
|
-
const text = [
|
|
31
|
-
e.constructor.name,
|
|
32
|
-
e.message,
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
document.getElementById ('content').innerHTML = text.join (' ')
|
|
36
|
-
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
})
|
|
40
|
-
</script>
|
|
41
|
-
</head>
|
|
42
|
-
<body>
|
|
43
|
-
<h1>Hello, CCXT!</h1>
|
|
44
|
-
<pre id="content"></pre>
|
|
45
|
-
</body>
|
|
46
|
-
</html>
|
|
@@ -1,61 +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 type="text/javascript" src="https://unpkg.com/lightweight-charts@3.4.0/dist/lightweight-charts.standalone.production.js"></script>
|
|
7
|
-
<script>
|
|
8
|
-
|
|
9
|
-
document.addEventListener ("DOMContentLoaded", async function () {
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
const exchange = new ccxt.coinbasepro ({ enableRateLimit: true });
|
|
13
|
-
const symbol = 'ETH/BTC';
|
|
14
|
-
const timeframe = '1d';
|
|
15
|
-
const since = undefined;
|
|
16
|
-
const limit = 600;
|
|
17
|
-
const config = {
|
|
18
|
-
width: 600,
|
|
19
|
-
height: 300,
|
|
20
|
-
priceScale: {
|
|
21
|
-
position: 'left',
|
|
22
|
-
mode: 1,
|
|
23
|
-
autoScale: true,
|
|
24
|
-
invertScale: false,
|
|
25
|
-
},
|
|
26
|
-
timeScale: {
|
|
27
|
-
fixLeftEdge: true,
|
|
28
|
-
lockVisibleTimeRangeOnResize: true,
|
|
29
|
-
rightBarStaysOnScroll: true,
|
|
30
|
-
visible: true,
|
|
31
|
-
timeVisible: true,
|
|
32
|
-
secondsVisible: true,
|
|
33
|
-
},
|
|
34
|
-
crosshair: {
|
|
35
|
-
mode: window.LightweightCharts.CrosshairMode.Normal,
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
const chart = window.LightweightCharts.createChart(document.body, config);
|
|
39
|
-
const candleSeries = chart.addCandlestickSeries();
|
|
40
|
-
while (true) {
|
|
41
|
-
try {
|
|
42
|
-
const response = await exchange.fetchOHLCV(symbol, timeframe, since, limit);
|
|
43
|
-
const last = response[response.length - 1]
|
|
44
|
-
const [ timestamp, open, high, low, close ] = last;
|
|
45
|
-
const data = response.map (([ timestamp, open, high, low, close ]) => ({ time: exchange.iso8601 (timestamp), open, high, low, close }));
|
|
46
|
-
candleSeries.setData(data);
|
|
47
|
-
} catch (e) {
|
|
48
|
-
console.log (e.constructor.name, e.message);
|
|
49
|
-
}
|
|
50
|
-
await exchange.sleep (1000);
|
|
51
|
-
}
|
|
52
|
-
} catch (e) {
|
|
53
|
-
alert (e.constructor.name + ' ' + e.message);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
})
|
|
57
|
-
</script>
|
|
58
|
-
</head>
|
|
59
|
-
<body>
|
|
60
|
-
</body>
|
|
61
|
-
</html>
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<body>
|
|
4
|
-
<h2>CCXT running on a Webworker example</h2>
|
|
5
|
-
<p>This example uses a web worker to continuously call <b>fetchTicker</b> on a user-defined exchange, symbol and interval. Then, the web worker reaches back with the results.</p>
|
|
6
|
-
<h3>Parameters</h3>
|
|
7
|
-
<label for="exchange">Exchange:</label>
|
|
8
|
-
<input type="text" id="exchange" name="exchange" ><br><br>
|
|
9
|
-
<label for="symbol">Symbol: </label>
|
|
10
|
-
<input type="text" id="symbol" name="symbol"><br><br>
|
|
11
|
-
<label for="interval">Interval (ms): </label>
|
|
12
|
-
<input type="text" id="interval" name="interval"><br><br>
|
|
13
|
-
<button onclick="startWorker()">Start CCXT worker</button>
|
|
14
|
-
<button onclick="stopWorker()">Stop CCXT worker</button>
|
|
15
|
-
<h3> Received Results:</h3>
|
|
16
|
-
<output id="result"></output>
|
|
17
|
-
<table id="resultsTable" style="left:300px;width:400px; border:1px solid black;" >
|
|
18
|
-
<thead>
|
|
19
|
-
<tr>
|
|
20
|
-
<th>Symbol</th>
|
|
21
|
-
<th>Last Price</th>
|
|
22
|
-
<th>Base Volume</th>
|
|
23
|
-
<th>Exchange Ts</th>
|
|
24
|
-
<th>Local Ts</th>
|
|
25
|
-
</tr>
|
|
26
|
-
</thead>
|
|
27
|
-
<tbody id="tbody">
|
|
28
|
-
</tbody>
|
|
29
|
-
</table>
|
|
30
|
-
</body>
|
|
31
|
-
<script>
|
|
32
|
-
// fill in default values
|
|
33
|
-
document.addEventListener('DOMContentLoaded', function(event) {
|
|
34
|
-
document.getElementById('exchange').value = 'coinbasepro';
|
|
35
|
-
document.getElementById('symbol').value = 'BTC/USDT';
|
|
36
|
-
document.getElementById('interval').value = '1000';
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
var ccxtWorker;
|
|
40
|
-
function startWorker() {
|
|
41
|
-
|
|
42
|
-
if (typeof(Worker) !== "undefined") {
|
|
43
|
-
// if the worker does not exist yet, creates it
|
|
44
|
-
if (typeof(ccxtWorker) == "undefined") {
|
|
45
|
-
ccxtWorker = new Worker("worker.js");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// reads user-defined parameters
|
|
49
|
-
var exchange = document.getElementById('exchange').value
|
|
50
|
-
var symbol = document.getElementById('symbol').value
|
|
51
|
-
var interval = document.getElementById('interval').value
|
|
52
|
-
|
|
53
|
-
// send a message with those values
|
|
54
|
-
ccxtWorker.postMessage([exchange,symbol, interval]);
|
|
55
|
-
|
|
56
|
-
ccxtWorker.onmessage = function(event) {
|
|
57
|
-
// every time the ccxtworker posts a message
|
|
58
|
-
// this handler will be invoked
|
|
59
|
-
handleReceivedData(event.data)
|
|
60
|
-
};
|
|
61
|
-
} else {
|
|
62
|
-
document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function handleReceivedData(data) {
|
|
67
|
-
var [symbol, last, baseVolume, timestamp, ourTimestamp] = data;
|
|
68
|
-
var tableRef = document.getElementById('resultsTable');
|
|
69
|
-
var tbody = document.getElementById('tbody');
|
|
70
|
-
row = tbody.insertRow(0);
|
|
71
|
-
|
|
72
|
-
cellSymbol = row.insertCell();
|
|
73
|
-
cellSymbol.innerHTML = symbol;
|
|
74
|
-
|
|
75
|
-
cellPrice = row.insertCell();
|
|
76
|
-
cellPrice.innerHTML = last;
|
|
77
|
-
|
|
78
|
-
cellPrice = row.insertCell();
|
|
79
|
-
cellPrice.innerHTML = baseVolume;
|
|
80
|
-
|
|
81
|
-
cellTimestamp = row.insertCell();
|
|
82
|
-
cellTimestamp.innerHTML = timestamp;
|
|
83
|
-
|
|
84
|
-
cellOurtimestamp = row.insertCell();
|
|
85
|
-
cellOurtimestamp.innerHTML = ourTimestamp;
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function stopWorker() {
|
|
90
|
-
if (ccxtWorker !== undefined) {
|
|
91
|
-
ccxtWorker.terminate();
|
|
92
|
-
ccxtWorker = undefined;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
</script>
|
|
96
|
-
</body>
|
|
97
|
-
</html>
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
self.importScripts('https://unpkg.com/ccxt@1.79.2/dist/ccxt.browser.js');
|
|
2
|
-
|
|
3
|
-
console.log("Loaded ccxt version:", self.ccxt.version);
|
|
4
|
-
|
|
5
|
-
var exchangeInstance = undefined;
|
|
6
|
-
|
|
7
|
-
// handler of received messages
|
|
8
|
-
self.onmessage = async function handler(msg) {
|
|
9
|
-
await handleMessageFromMain(msg)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// get messages from the main script
|
|
13
|
-
async function handleMessageFromMain(msg) {
|
|
14
|
-
console.log(msg.data);
|
|
15
|
-
var [exchange, symbol, interval] = msg.data;
|
|
16
|
-
console.log('Worker received:', symbol,exchange, interval)
|
|
17
|
-
interval = parseInt(interval)
|
|
18
|
-
await processTicker(symbol, exchange)
|
|
19
|
-
// schedule process ticker execution
|
|
20
|
-
setInterval (async () => {
|
|
21
|
-
await processTicker(symbol, exchange)
|
|
22
|
-
}, interval)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async function processTicker(symbol, exchangeId) {
|
|
26
|
-
if (exchangeInstance === undefined) {
|
|
27
|
-
exchangeInstance = new ccxt[exchangeId]
|
|
28
|
-
}
|
|
29
|
-
var result = await fetchTicker(symbol)
|
|
30
|
-
var symbol = result['symbol']
|
|
31
|
-
var last = result['last']
|
|
32
|
-
var timestamp = result['timestamp']
|
|
33
|
-
var baseVolume = result['baseVolume']
|
|
34
|
-
var ourTimestamp = Date.now()
|
|
35
|
-
// send the data back to the main script
|
|
36
|
-
postMessage([symbol, last, baseVolume, timestamp, ourTimestamp]);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async function fetchTicker(symbol){
|
|
40
|
-
// use ccxt to fetch ticker info
|
|
41
|
-
var result = await exchangeInstance.fetchTicker(symbol)
|
|
42
|
-
return result;
|
|
43
|
-
}
|