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,65 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
// ----------------------------------------------------------------------------
|
|
6
|
-
|
|
7
|
-
const tryToCreateOrder = async function (exchange, symbol, type, side, amount, price, params) {
|
|
8
|
-
|
|
9
|
-
try {
|
|
10
|
-
|
|
11
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
12
|
-
return order
|
|
13
|
-
|
|
14
|
-
} catch (e) {
|
|
15
|
-
|
|
16
|
-
console.log (e.constructor.name, e.message)
|
|
17
|
-
|
|
18
|
-
if (e instanceof ccxt.NetworkError) {
|
|
19
|
-
|
|
20
|
-
// retry on networking errors
|
|
21
|
-
return false
|
|
22
|
-
|
|
23
|
-
} else {
|
|
24
|
-
|
|
25
|
-
throw e // break on all other exceptions
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// ----------------------------------------------------------------------------
|
|
31
|
-
|
|
32
|
-
const exchange = new ccxt.bytetrade ({
|
|
33
|
-
'apiKey': 'classic123', // edit here
|
|
34
|
-
'secret': 'ebcefff7de475ffe15e864ca3e3e410edf7e94fffd1f9af34edf9434e2bfff1b', // edit here
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
//
|
|
38
|
-
// make a classic bytetrade account - one that is linked to an email or phone number
|
|
39
|
-
// then click on your username in the top right and then export
|
|
40
|
-
// you will get a file like this:
|
|
41
|
-
//
|
|
42
|
-
// future garage icon motion panda garage motion task science head garage notable
|
|
43
|
-
// ebcefff7de475ffe15e864ca3e3e410edf7e94fffd1f9af34edf9434e2bfff1b
|
|
44
|
-
// classic123
|
|
45
|
-
//
|
|
46
|
-
// the second line is your secret and the third line is your apiKey
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
const symbol = 'XRP/USDT' // edit here
|
|
50
|
-
const type = 'limit ' // edit here
|
|
51
|
-
const side = 'buy' // edit here
|
|
52
|
-
const amount = 10 // edit here
|
|
53
|
-
const price = 1 // edit here
|
|
54
|
-
const params = {} // edit here
|
|
55
|
-
|
|
56
|
-
;(async () => {
|
|
57
|
-
let order = false
|
|
58
|
-
while (true) {
|
|
59
|
-
order = await tryToCreateOrder (exchange, symbol, type, side, amount, price, params)
|
|
60
|
-
if (order !== false) {
|
|
61
|
-
break
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
console.log (order)
|
|
65
|
-
}) ()
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
// AUTO-TRANSPILE //
|
|
3
|
-
async function example() {
|
|
4
|
-
const exchange = new ccxt.pro.binance({
|
|
5
|
-
'apiKey': 'MY_API_KEY',
|
|
6
|
-
'secret': 'MY_SECRET',
|
|
7
|
-
});
|
|
8
|
-
exchange.setSandboxMode(true);
|
|
9
|
-
exchange.verbose = true; // uncomment for debugging purposes if necessary
|
|
10
|
-
// load markets
|
|
11
|
-
await exchange.loadMarkets();
|
|
12
|
-
const symbol = 'ETH/USDT';
|
|
13
|
-
const type = 'limit';
|
|
14
|
-
const side = 'buy';
|
|
15
|
-
const amount = 0.01;
|
|
16
|
-
let price = 1000;
|
|
17
|
-
let orders = [];
|
|
18
|
-
for (let i = 1; i < 5; i++) {
|
|
19
|
-
const response = await exchange.createOrderWs(symbol, type, side, amount, price);
|
|
20
|
-
price += i;
|
|
21
|
-
orders.push(response);
|
|
22
|
-
}
|
|
23
|
-
console.log(orders);
|
|
24
|
-
}
|
|
25
|
-
await example();
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
// AUTO-TRANSPILE //
|
|
3
|
-
async function example() {
|
|
4
|
-
const exchange = new ccxt.binance({
|
|
5
|
-
'apiKey': 'MY_API_KEY',
|
|
6
|
-
'secret': 'MY_SECRET',
|
|
7
|
-
});
|
|
8
|
-
exchange.setSandboxMode(true);
|
|
9
|
-
await exchange.loadMarkets();
|
|
10
|
-
exchange.verbose = true; // uncomment for debugging purposes if necessary
|
|
11
|
-
const orders = await exchange.createOrders([
|
|
12
|
-
{ 'symbol': 'LTC/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 10, 'price': 55 },
|
|
13
|
-
{ 'symbol': 'ETH/USDT:USDT', 'type': 'market', 'side': 'buy', 'amount': 0.5 },
|
|
14
|
-
]);
|
|
15
|
-
console.log(orders);
|
|
16
|
-
}
|
|
17
|
-
await example();
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
// AUTO-TRANSPILE //
|
|
3
|
-
async function example() {
|
|
4
|
-
const exchange = new ccxt.bingx({
|
|
5
|
-
'apiKey': 'MY_API_KEY',
|
|
6
|
-
'secret': 'MY_SECRET',
|
|
7
|
-
});
|
|
8
|
-
// exchange.setSandboxMode (true);
|
|
9
|
-
// exchange.verbose = true; // uncomment for debugging purposes if necessary
|
|
10
|
-
await exchange.loadMarkets();
|
|
11
|
-
const symbol = 'BTC/USDT:USDT';
|
|
12
|
-
const order_type = 'market';
|
|
13
|
-
const side = 'sell';
|
|
14
|
-
const amount = 0.0001;
|
|
15
|
-
const price = undefined;
|
|
16
|
-
const reduceOnly = true;
|
|
17
|
-
const trailingAmount = 100;
|
|
18
|
-
// const trailingTriggerPrice = undefined; // not supported on all exchanges
|
|
19
|
-
const params = {
|
|
20
|
-
'reduceOnly': reduceOnly,
|
|
21
|
-
'trailingAmount': trailingAmount,
|
|
22
|
-
// 'trailingTriggerPrice': trailingTriggerPrice,
|
|
23
|
-
};
|
|
24
|
-
try {
|
|
25
|
-
const create_order = await exchange.createOrder(symbol, order_type, side, amount, price, params);
|
|
26
|
-
// Alternatively use the createTrailingAmountOrder method:
|
|
27
|
-
// const create_order = await exchange.createTrailingAmountOrder (symbol, order_type, side, amount, price, trailingAmount, trailingTriggerPrice, {
|
|
28
|
-
// 'reduceOnly': reduceOnly,
|
|
29
|
-
// });
|
|
30
|
-
console.log(create_order);
|
|
31
|
-
}
|
|
32
|
-
catch (e) {
|
|
33
|
-
console.log(e.toString());
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
await example();
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
// AUTO-TRANSPILE //
|
|
3
|
-
async function example() {
|
|
4
|
-
const exchange = new ccxt.bingx({
|
|
5
|
-
'apiKey': 'MY_API_KEY',
|
|
6
|
-
'secret': 'MY_SECRET',
|
|
7
|
-
});
|
|
8
|
-
// exchange.setSandboxMode (true);
|
|
9
|
-
// exchange.verbose = true; // uncomment for debugging purposes if necessary
|
|
10
|
-
await exchange.loadMarkets();
|
|
11
|
-
const symbol = 'BTC/USDT:USDT';
|
|
12
|
-
const order_type = 'market';
|
|
13
|
-
const side = 'sell';
|
|
14
|
-
const amount = 0.0001;
|
|
15
|
-
const price = undefined;
|
|
16
|
-
const reduceOnly = true;
|
|
17
|
-
const trailingPercent = 10;
|
|
18
|
-
// const trailingTriggerPrice = undefined; // not supported on all exchanges
|
|
19
|
-
const params = {
|
|
20
|
-
'reduceOnly': reduceOnly,
|
|
21
|
-
'trailingPercent': trailingPercent,
|
|
22
|
-
// 'trailingTriggerPrice': trailingTriggerPrice,
|
|
23
|
-
};
|
|
24
|
-
try {
|
|
25
|
-
const create_order = await exchange.createOrder(symbol, order_type, side, amount, price, params);
|
|
26
|
-
// Alternatively use the createTrailingAmountOrder method:
|
|
27
|
-
// const create_order = await exchange.createTrailingPercentOrder (symbol, order_type, side, amount, price, trailingPercent, trailingTriggerPrice, {
|
|
28
|
-
// 'reduceOnly': reduceOnly,
|
|
29
|
-
// });
|
|
30
|
-
console.log(create_order);
|
|
31
|
-
}
|
|
32
|
-
catch (e) {
|
|
33
|
-
console.log(e.toString());
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
await example();
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hitbtc": { "apiKey": "b6aad581670b30fb25d1c91cdbe8ca5c", "secret": "fa394ced37a488f9b5826a2d9ce39ae3" },
|
|
3
|
-
"bitso": { "apiKey": "xZnHRmdlgJ", "secret": "e156bb7f7ab3a831afbc7a80f7866b9e" },
|
|
4
|
-
"coincheck": { "apiKey": "dCyzY2T6w0DFhaco", "secret": "JpI0eMmxfa0tEpk3X-dNwyclSASJkl-S" }
|
|
5
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
// to set custom "proxy-agent" for ccxt
|
|
3
|
-
import ccxt from 'ccxt';
|
|
4
|
-
import HttpProxyAgent from 'http-proxy-agent';
|
|
5
|
-
const proxy = 'http://1.2.3.4:5678';
|
|
6
|
-
const agent = new HttpProxyAgent(proxy); // or HttpsProxyAgent if you need http
|
|
7
|
-
// then pass it through constructor:
|
|
8
|
-
const kraken = new ccxt.kraken({ agent });
|
|
9
|
-
// or set it later:
|
|
10
|
-
kraken.agent = agent;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
(async function main () {
|
|
6
|
-
|
|
7
|
-
const kraken1 = new ccxt.kraken ({
|
|
8
|
-
proxy: function (url) {
|
|
9
|
-
return 'https://example.com/?url=' + encodeURIComponent (url)
|
|
10
|
-
},
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
console.log (await kraken1.loadMarkets ())
|
|
14
|
-
|
|
15
|
-
const kraken2 = new ccxt.kraken ({
|
|
16
|
-
proxy: function (url) {
|
|
17
|
-
return 'https://cors-anywhere.herokuapp.com/' + url
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
console.log (await kraken2.loadMarkets ())
|
|
22
|
-
|
|
23
|
-
}) ()
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
console.log ('CCXT Version:', ccxt.version);
|
|
4
|
-
|
|
5
|
-
function getMaxLeverage (market, positionSize) {
|
|
6
|
-
/**
|
|
7
|
-
* @description Equation taken from https://www.delta.exchange/contracts/
|
|
8
|
-
* @param {object} market CCXT market
|
|
9
|
-
* @param {float} positionSize The value of the position in quote currency
|
|
10
|
-
* @returns The maximum leverage available for the market for the given position size
|
|
11
|
-
*/
|
|
12
|
-
const info = market['info'];
|
|
13
|
-
const maxLeverageNotional = Number (info['max_leverage_notional']);
|
|
14
|
-
const initialMarginScalingFactor = Number (info['initial_margin_scaling_factor']);
|
|
15
|
-
let initialMargin = Number (info['initial_margin']);
|
|
16
|
-
|
|
17
|
-
if (positionSize <= maxLeverageNotional) {
|
|
18
|
-
const initialMarginRatio = initialMargin / 100;
|
|
19
|
-
return 1 / initialMarginRatio;
|
|
20
|
-
} else {
|
|
21
|
-
initialMargin = initialMargin + (initialMarginScalingFactor * (positionSize - maxLeverageNotional));
|
|
22
|
-
const initialMarginRatio = initialMargin / 100;
|
|
23
|
-
return 1 / initialMarginRatio;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function getMaintenanceMarginRate (market, positionSize) {
|
|
28
|
-
/**
|
|
29
|
-
* @description Equation taken from https://www.delta.exchange/contracts/
|
|
30
|
-
* @param {object} market CCXT market
|
|
31
|
-
* @param {float} positionSize The value of the position in quote currency
|
|
32
|
-
* @returns The maintenance margin rate as a percentage for the market with the given position size
|
|
33
|
-
*/
|
|
34
|
-
const info = market['info'];
|
|
35
|
-
const maxLeverageNotional = Number (info['max_leverage_notional']);
|
|
36
|
-
const maintenanceMarginScalingFactor = Number (info['maintenance_margin_scaling_factor']);
|
|
37
|
-
const maintenanceMargin = Number (info['maintenance_margin']);
|
|
38
|
-
|
|
39
|
-
if (positionSize <= maxLeverageNotional) {
|
|
40
|
-
return maintenanceMargin;
|
|
41
|
-
} else {
|
|
42
|
-
return maintenanceMargin + (maintenanceMarginScalingFactor * (positionSize - maxLeverageNotional));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async function main () {
|
|
47
|
-
|
|
48
|
-
const exchange = new ccxt.delta();
|
|
49
|
-
await exchange.loadMarkets ();
|
|
50
|
-
|
|
51
|
-
const symbol = 'ADA/USDT:USDT';
|
|
52
|
-
const market = exchange.market (symbol);
|
|
53
|
-
|
|
54
|
-
// Gets the maximum leverage and maintenance margin rate for a position worth 100,000 USDT on the ADA/USDT:USDT market
|
|
55
|
-
const maxLeverage = getMaxLeverage(market, 100000);
|
|
56
|
-
const maintenanceMarginRate = getMaintenanceMarginRate(market, 100000);
|
|
57
|
-
console.log(maxLeverage, maintenanceMarginRate);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
main ()
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// ----------------------------------------------------------------------------
|
|
4
|
-
|
|
5
|
-
import ccxt from '../../js/ccxt.js';
|
|
6
|
-
import ololog from 'ololog'
|
|
7
|
-
|
|
8
|
-
// ----------------------------------------------------------------------------
|
|
9
|
-
|
|
10
|
-
const log = ololog.configure.handleNodeErrors (), asTable = require("as-table").configure({ delimiter: " | " });
|
|
11
|
-
|
|
12
|
-
// ----------------------------------------------------------------------------
|
|
13
|
-
|
|
14
|
-
(async () => {
|
|
15
|
-
|
|
16
|
-
const exchange = new ccxt.coinbase ({
|
|
17
|
-
verbose: process.argv.includes ('--verbose'),
|
|
18
|
-
timeout: 60000,
|
|
19
|
-
apiKey: process.env.KEY,
|
|
20
|
-
secret: process.env.SECRET
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const balance = await exchange.fetchBalance ()
|
|
24
|
-
log.green (balance)
|
|
25
|
-
|
|
26
|
-
})()
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
const verbose = process.argv.includes ('--verbose');
|
|
6
|
-
|
|
7
|
-
//-----------------------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
const printSupportedExchanges = () => console.log ('Supported exchanges:', ccxt.exchanges.join (', '))
|
|
10
|
-
|
|
11
|
-
const printUsage = () => {
|
|
12
|
-
console.log ('Usage: node', process.argv[1], 'id'.green)
|
|
13
|
-
printSupportedExchanges ()
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const run = async (id) => {
|
|
17
|
-
|
|
18
|
-
// check if the exchange is supported by ccxt
|
|
19
|
-
const exchangeFound = ccxt.exchanges.indexOf (id) > -1
|
|
20
|
-
|
|
21
|
-
if (exchangeFound) {
|
|
22
|
-
|
|
23
|
-
console.log ('Instantiating', id, 'exchange')
|
|
24
|
-
|
|
25
|
-
// instantiate the exchange by id
|
|
26
|
-
const exchange = new ccxt[id] ({ verbose })
|
|
27
|
-
|
|
28
|
-
// try to load markets and catch the errors if any
|
|
29
|
-
try {
|
|
30
|
-
|
|
31
|
-
await exchange.loadMarkets ()
|
|
32
|
-
|
|
33
|
-
} catch (e) {
|
|
34
|
-
|
|
35
|
-
if (e instanceof ccxt.NetworkError) {
|
|
36
|
-
console.log (exchange.id, 'loadMarkets failed due to a network error:', e.message)
|
|
37
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
38
|
-
console.log (exchange.id, 'loadMarkets failed due to exchange error:', e.message)
|
|
39
|
-
} else {
|
|
40
|
-
console.log (exchange.id, 'loadMarkets failed with:', e.message)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// rethrow the error "higher up" the call chain
|
|
44
|
-
throw e
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// try to fetch a ticker and catch the errors if any
|
|
48
|
-
try {
|
|
49
|
-
|
|
50
|
-
const symbol = 'ETH/BTC'
|
|
51
|
-
const response = await exchange.fetchTicker (symbol)
|
|
52
|
-
console.log (response)
|
|
53
|
-
|
|
54
|
-
} catch (e) {
|
|
55
|
-
|
|
56
|
-
if (e instanceof ccxt.NetworkError) {
|
|
57
|
-
console.log (exchange.id, 'fetchTicker failed due to a network error:', e.message)
|
|
58
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
59
|
-
console.log (exchange.id, 'fetchTicker failed due to exchange error:', e.message)
|
|
60
|
-
} else {
|
|
61
|
-
console.log (exchange.id, 'fetchTicker failed with:', e.message)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// rethrow the error "higher up" the call chain
|
|
65
|
-
throw e
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
} else {
|
|
69
|
-
|
|
70
|
-
console.log ('Exchange', id, 'not found')
|
|
71
|
-
printSupportedExchanges ()
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
;(async function main () {
|
|
76
|
-
|
|
77
|
-
if (process.argv.length > 2) {
|
|
78
|
-
|
|
79
|
-
let id = process.argv[2]
|
|
80
|
-
await run (id)
|
|
81
|
-
|
|
82
|
-
} else {
|
|
83
|
-
|
|
84
|
-
printUsage ()
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
process.exit ()
|
|
88
|
-
|
|
89
|
-
}) ()
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import ololog from 'ololog';
|
|
5
|
-
import ansicolor from 'ansicolor';
|
|
6
|
-
import asTable from 'as-table';
|
|
7
|
-
|
|
8
|
-
const { noLocate } = ololog;
|
|
9
|
-
const log = noLocate;
|
|
10
|
-
|
|
11
|
-
ansicolor.nice
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const csv = process.argv.includes ('--csv'), delimiter = csv ? ',' : '|', asTableConfig = { delimiter: ' ' + delimiter + ' ', /* print: require ('string.ify').noPretty */ }
|
|
16
|
-
|
|
17
|
-
asTable.configure (asTableConfig);
|
|
18
|
-
|
|
19
|
-
const sortCertified = process.argv.includes ('--sort-certified') || process.argv.includes ('--certified')
|
|
20
|
-
const exchangesArgument = process.argv.find (arg => arg.startsWith ('--exchanges='))
|
|
21
|
-
const exchangesArgumentParts = exchangesArgument ? exchangesArgument.split ('=') : []
|
|
22
|
-
const selectedExchanges = (exchangesArgumentParts.length > 1) ? exchangesArgumentParts[1].split (',') : []
|
|
23
|
-
|
|
24
|
-
console.log (ccxt.iso8601 (ccxt.milliseconds ()))
|
|
25
|
-
console.log ('CCXT v' + ccxt.version)
|
|
26
|
-
|
|
27
|
-
async function main () {
|
|
28
|
-
|
|
29
|
-
let total = 0
|
|
30
|
-
let notImplemented = 0
|
|
31
|
-
let inexistentApi = 0
|
|
32
|
-
let implemented = 0
|
|
33
|
-
let emulated = 0
|
|
34
|
-
|
|
35
|
-
const exchangeNames = ccxt.exchanges
|
|
36
|
-
let exchanges = exchangeNames.map (id => new ccxt[id] ())
|
|
37
|
-
exchanges = exchanges.map (exchange => exchange.pro ? new ccxt.pro[exchange.id] () : exchange)
|
|
38
|
-
if (sortCertified) {
|
|
39
|
-
exchanges.sort((a, b) => {
|
|
40
|
-
if (a.certified && !b.certified) {
|
|
41
|
-
return -1;
|
|
42
|
-
} else if (!a.certified && b.certified) {
|
|
43
|
-
return 1;
|
|
44
|
-
} else {
|
|
45
|
-
return 0;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const metainfo = ccxt.flatten (exchanges.map (exchange => Object.keys (exchange.has)))
|
|
50
|
-
const reduced = metainfo.reduce ((previous, current) => {
|
|
51
|
-
previous[current] = (previous[current] || 0) + 1
|
|
52
|
-
return previous
|
|
53
|
-
}, {})
|
|
54
|
-
const unified = Object.entries (reduced).filter (([ _, count ]) => count > 1)
|
|
55
|
-
const methods = unified.map (([ method, _ ]) => method).sort ()
|
|
56
|
-
if (selectedExchanges.length > 0) {
|
|
57
|
-
exchanges = exchanges.filter ((exchange) => selectedExchanges.includes(exchange.id))
|
|
58
|
-
}
|
|
59
|
-
const table = asTable (exchanges.map (exchange => {
|
|
60
|
-
let result = {};
|
|
61
|
-
const basics = [
|
|
62
|
-
'CORS',
|
|
63
|
-
'spot',
|
|
64
|
-
'margin',
|
|
65
|
-
'swap',
|
|
66
|
-
'future',
|
|
67
|
-
'option',
|
|
68
|
-
];
|
|
69
|
-
|
|
70
|
-
ccxt.unique (basics.concat (methods)).forEach (key => {
|
|
71
|
-
|
|
72
|
-
total += 1
|
|
73
|
-
|
|
74
|
-
let coloredString = '';
|
|
75
|
-
|
|
76
|
-
const feature = exchange.has[key]
|
|
77
|
-
const isFunction = (typeof exchange[key] === 'function')
|
|
78
|
-
const isBasic = basics.includes (key)
|
|
79
|
-
|
|
80
|
-
if (feature === false) {
|
|
81
|
-
// if explicitly set to 'false' in exchange.has (to exclude mistake, we check if it's undefined too)
|
|
82
|
-
coloredString = exchange.id.red.dim
|
|
83
|
-
inexistentApi += 1
|
|
84
|
-
} else if (feature === 'emulated') {
|
|
85
|
-
// if explicitly set to 'emulated' in exchange.has
|
|
86
|
-
coloredString = exchange.id.yellow
|
|
87
|
-
emulated += 1
|
|
88
|
-
} else if (feature) {
|
|
89
|
-
if (isBasic) {
|
|
90
|
-
// if neither 'false' nor 'emulated', and if method exists
|
|
91
|
-
coloredString = exchange.id.green
|
|
92
|
-
implemented += 1
|
|
93
|
-
} else {
|
|
94
|
-
if (isFunction) {
|
|
95
|
-
coloredString = exchange.id.green
|
|
96
|
-
implemented += 1
|
|
97
|
-
} else {
|
|
98
|
-
// the feature is available in exchange.has and not implemented
|
|
99
|
-
// this is an error
|
|
100
|
-
coloredString = exchange.id.lightMagenta
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
} else {
|
|
104
|
-
coloredString = exchange.id.lightRed
|
|
105
|
-
notImplemented += 1
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
result[key] = coloredString
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
return result
|
|
112
|
-
}))
|
|
113
|
-
|
|
114
|
-
if (csv) {
|
|
115
|
-
let lines = table.split ("\n")
|
|
116
|
-
lines = lines.slice (0, 1).concat (lines.slice (2))
|
|
117
|
-
log (lines.join ("\n"))
|
|
118
|
-
} else {
|
|
119
|
-
log (table)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
log ('Summary: ',
|
|
123
|
-
ccxt.exchanges.length.toString (), 'exchanges; ',
|
|
124
|
-
'Methods [' + total.toString () + ' total]: ',
|
|
125
|
-
implemented.toString ().green, 'implemented,',
|
|
126
|
-
emulated.toString ().yellow, 'emulated,',
|
|
127
|
-
(inexistentApi.toString ().red.dim), 'inexistentApi,',
|
|
128
|
-
(notImplemented.toString ().lightRed), 'notImplemented',
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
log("\nMessy? Try piping to less (e.g. node script.js | less -S -R)\n".red)
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
main ()
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
(async () => {
|
|
6
|
-
|
|
7
|
-
// const exchanges = [
|
|
8
|
-
// 'bittrex',
|
|
9
|
-
// 'poloniex',
|
|
10
|
-
// 'bitfinex'
|
|
11
|
-
// ]
|
|
12
|
-
|
|
13
|
-
const exchanges = ccxt.exchanges
|
|
14
|
-
|
|
15
|
-
const symbol = 'BTC/USDT'
|
|
16
|
-
const tickers = {}
|
|
17
|
-
const volumeField = 'baseVolume'
|
|
18
|
-
|
|
19
|
-
console.log ('-----------------------------------------------------------')
|
|
20
|
-
|
|
21
|
-
await Promise.all (exchanges.map (exchangeId =>
|
|
22
|
-
|
|
23
|
-
new Promise (async (resolve, reject) => {
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
|
|
27
|
-
const exchange = new ccxt[exchangeId] ()
|
|
28
|
-
|
|
29
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
30
|
-
|
|
31
|
-
if (ticker[volumeField] !== undefined) {
|
|
32
|
-
tickers[exchangeId] = ticker
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
} catch (e) {
|
|
36
|
-
|
|
37
|
-
console.log (exchangeId, e.message.slice (0, 100))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
resolve ()
|
|
41
|
-
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
))
|
|
45
|
-
|
|
46
|
-
console.log ('-----------------------------------------------------------')
|
|
47
|
-
|
|
48
|
-
console.log (Object
|
|
49
|
-
.keys (tickers)
|
|
50
|
-
.sort ((a, b) =>
|
|
51
|
-
((tickers[a][volumeField] > tickers[b][volumeField]) ? 1 : ((tickers[a][volumeField] < tickers[b][volumeField]) ? -1 : 0)))
|
|
52
|
-
.reverse ()
|
|
53
|
-
.map (id => ({
|
|
54
|
-
id,
|
|
55
|
-
symbol,
|
|
56
|
-
'volume': tickers[id][volumeField],
|
|
57
|
-
}))
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
}) ()
|
package/examples/js/exchanges.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import countries from '../../build/countries.js';
|
|
5
|
-
import asTable from 'as-table';
|
|
6
|
-
import ololog from 'ololog'
|
|
7
|
-
import ansicolor from 'ansicolor';
|
|
8
|
-
const log = ololog.configure ({ locate: false })
|
|
9
|
-
|
|
10
|
-
ansicolor.nice
|
|
11
|
-
|
|
12
|
-
process.on ('uncaughtException', e => { log.bright.red.error (e); process.exit (1) })
|
|
13
|
-
process.on ('unhandledRejection', e => { log.bright.red.error (e); process.exit (1) })
|
|
14
|
-
|
|
15
|
-
let exchanges = {}
|
|
16
|
-
|
|
17
|
-
ccxt.exchanges.forEach (id => { exchanges[id] = new (ccxt)[id] () })
|
|
18
|
-
|
|
19
|
-
log ('The ccxt library supports', (ccxt.exchanges.length.toString ()).green, 'exchanges:')
|
|
20
|
-
|
|
21
|
-
var countryName = function (code) {
|
|
22
|
-
return ((countries[code] !== undefined) ? countries[code] : code)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
log (asTable.configure ({ delimiter: ' | ' }) (Object.values (exchanges).map (exchange => {
|
|
26
|
-
|
|
27
|
-
let countries = Array.isArray (exchange.countries) ?
|
|
28
|
-
exchange.countries.map (countryName).join (', ') :
|
|
29
|
-
countryName (exchange.countries)
|
|
30
|
-
|
|
31
|
-
let website = Array.isArray (exchange.urls.www) ? exchange.urls.www[0] : exchange.urls.www
|
|
32
|
-
|
|
33
|
-
return {
|
|
34
|
-
id: exchange.id,
|
|
35
|
-
name: exchange.name,
|
|
36
|
-
url: website,
|
|
37
|
-
countries: countries,
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
})))
|