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,116 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fetch-futures",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"lockfileVersion": 1,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"dependencies": {
|
|
7
|
-
"@types/node": {
|
|
8
|
-
"version": "10.14.18",
|
|
9
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.18.tgz",
|
|
10
|
-
"integrity": "sha512-ryO3Q3++yZC/+b8j8BdKd/dn9JlzlHBPdm80656xwYUdmPkpTGTjkAdt6BByiNupGPE8w0FhBgvYy/fX9hRNGQ==",
|
|
11
|
-
"dev": true
|
|
12
|
-
},
|
|
13
|
-
"ansicolor": {
|
|
14
|
-
"version": "1.1.92",
|
|
15
|
-
"resolved": "https://registry.npmjs.org/ansicolor/-/ansicolor-1.1.92.tgz",
|
|
16
|
-
"integrity": "sha512-2jRpULfLpLvFeYYxIu1z6i0LQ4Khj/UxecsrdJ+837P0AVOW3smdKHpHmeKVYHZPG67o3jQFdMjNvPwktwPmZg=="
|
|
17
|
-
},
|
|
18
|
-
"as-table": {
|
|
19
|
-
"version": "1.0.55",
|
|
20
|
-
"resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
|
|
21
|
-
"integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
|
|
22
|
-
"requires": {
|
|
23
|
-
"printable-characters": "^1.0.42"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"ccxt": {
|
|
27
|
-
"version": "1.18.1145",
|
|
28
|
-
"resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.18.1145.tgz",
|
|
29
|
-
"integrity": "sha512-orU4kGB59RCMo3Ed04HBpRWqZdnpPcZ3VENPkF4ImacCm/ilte0boXAS+mYJVZSXLljyQzfm4D9fY7IukWsmIA=="
|
|
30
|
-
},
|
|
31
|
-
"data-uri-to-buffer": {
|
|
32
|
-
"version": "2.0.1",
|
|
33
|
-
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz",
|
|
34
|
-
"integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==",
|
|
35
|
-
"requires": {
|
|
36
|
-
"@types/node": "^8.0.7"
|
|
37
|
-
},
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"@types/node": {
|
|
40
|
-
"version": "8.10.54",
|
|
41
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
|
|
42
|
-
"integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg=="
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"get-source": {
|
|
47
|
-
"version": "1.0.40",
|
|
48
|
-
"resolved": "https://registry.npmjs.org/get-source/-/get-source-1.0.40.tgz",
|
|
49
|
-
"integrity": "sha512-grbzSLO9gCVpb+ngrUf2ch4nzcfAs9pYqlnu0v2+Ho0rOpwnJqhZsHWLXaqdNHMtmnY+OwGgS4SPdzMRXEwVtQ==",
|
|
50
|
-
"requires": {
|
|
51
|
-
"data-uri-to-buffer": "^2.0.0",
|
|
52
|
-
"source-map": "^0.6.1"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"ololog": {
|
|
56
|
-
"version": "1.1.146",
|
|
57
|
-
"resolved": "https://registry.npmjs.org/ololog/-/ololog-1.1.146.tgz",
|
|
58
|
-
"integrity": "sha512-C68zLVMFgIZC1Rdz7LTmtIEuAsth/2yllA/kb3OUfdWI9+U5x4F7EXO3xgfp9Rhn/tiETffo6DnWGPQaVHjKiw==",
|
|
59
|
-
"requires": {
|
|
60
|
-
"ansicolor": "^1.1.84",
|
|
61
|
-
"pipez": "^1.1.12",
|
|
62
|
-
"printable-characters": "^1.0.42",
|
|
63
|
-
"stacktracey": "^1.2.117",
|
|
64
|
-
"string.bullet": "^1.0.12",
|
|
65
|
-
"string.ify": "^1.0.57"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"pipez": {
|
|
69
|
-
"version": "1.1.12",
|
|
70
|
-
"resolved": "https://registry.npmjs.org/pipez/-/pipez-1.1.12.tgz",
|
|
71
|
-
"integrity": "sha1-s1nOVAHpNfEp+koJT83omvuENtg="
|
|
72
|
-
},
|
|
73
|
-
"printable-characters": {
|
|
74
|
-
"version": "1.0.42",
|
|
75
|
-
"resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
|
|
76
|
-
"integrity": "sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g="
|
|
77
|
-
},
|
|
78
|
-
"source-map": {
|
|
79
|
-
"version": "0.6.1",
|
|
80
|
-
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
|
81
|
-
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
|
82
|
-
},
|
|
83
|
-
"stacktracey": {
|
|
84
|
-
"version": "1.2.117",
|
|
85
|
-
"resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-1.2.117.tgz",
|
|
86
|
-
"integrity": "sha512-sj9olGCco8jxMw3fcmhL5er1yuVL2qSMhNfycwx+iIWz6uVpG+bQ2YNpVSlWscGmSskt61gSmUBjZ0Mb5jYBLw==",
|
|
87
|
-
"requires": {
|
|
88
|
-
"as-table": "^1.0.36",
|
|
89
|
-
"get-source": "^1.0.34"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"string.bullet": {
|
|
93
|
-
"version": "1.0.12",
|
|
94
|
-
"resolved": "https://registry.npmjs.org/string.bullet/-/string.bullet-1.0.12.tgz",
|
|
95
|
-
"integrity": "sha1-tB/EF4UKV+QEK/PPNHtu7iV+4lM=",
|
|
96
|
-
"requires": {
|
|
97
|
-
"printable-characters": "^1.0.26"
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
"string.ify": {
|
|
101
|
-
"version": "1.0.61",
|
|
102
|
-
"resolved": "https://registry.npmjs.org/string.ify/-/string.ify-1.0.61.tgz",
|
|
103
|
-
"integrity": "sha512-ROVOYWN8B62bP1LUJIDK6/NooBrN8xIvpV8Ugssbw7Oa4YKJmiOeoEomhDLLRVpYHo0vOBCpEM8RFpxUk9KDIQ==",
|
|
104
|
-
"requires": {
|
|
105
|
-
"printable-characters": "^1.0.42",
|
|
106
|
-
"string.bullet": "^1.0.12"
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"typescript": {
|
|
110
|
-
"version": "3.5.3",
|
|
111
|
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
|
|
112
|
-
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
|
|
113
|
-
"dev": true
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fetch-futures",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "ccxt example code in typescript.",
|
|
5
|
-
"main": "build/src/index.js",
|
|
6
|
-
"types": "build/src/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"build/src"
|
|
9
|
-
],
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/ccxt/ccxt.git"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
18
|
-
"build": "tsc -p .",
|
|
19
|
-
"start": "node ./build/index"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"ansicolor": "^1.1.92",
|
|
23
|
-
"as-table": "^1.0.55",
|
|
24
|
-
"ccxt": "^2.0.0",
|
|
25
|
-
"ololog": "^1.1.146"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"typescript": "~3.5.0",
|
|
29
|
-
"@types/node": "^10.0.3"
|
|
30
|
-
},
|
|
31
|
-
"engines": {
|
|
32
|
-
"node": ">=7.6.0"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// Example code in typescript
|
|
2
|
-
// Based on /examples/js/fetch-okex-futures.js
|
|
3
|
-
|
|
4
|
-
import * as ccxt from 'ccxt';
|
|
5
|
-
const log = require('ololog');
|
|
6
|
-
|
|
7
|
-
const fetchFutures = async () => {
|
|
8
|
-
const exchange = new ccxt.bitmex();
|
|
9
|
-
exchange.markets = await exchange.loadMarkets(true);
|
|
10
|
-
|
|
11
|
-
for (let symbol in exchange.markets) {
|
|
12
|
-
log('----------------------------------------------------');
|
|
13
|
-
log(`symbol = ${symbol}`);
|
|
14
|
-
try {
|
|
15
|
-
const market = exchange.markets[symbol];
|
|
16
|
-
if (market['future']) {
|
|
17
|
-
const ticker = await exchange.fetchTicker(symbol);
|
|
18
|
-
log('----------------------------------------------------');
|
|
19
|
-
log(symbol, ticker);
|
|
20
|
-
await (ccxt as any).sleep(exchange.rateLimit); // Missing type information.
|
|
21
|
-
}
|
|
22
|
-
} catch (error) {
|
|
23
|
-
log('error =', error);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
fetchFutures();
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"rootDir": "src",
|
|
4
|
-
"outDir": "build",
|
|
5
|
-
"allowUnreachableCode": false,
|
|
6
|
-
"allowUnusedLabels": false,
|
|
7
|
-
"declaration": true,
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"lib": [
|
|
10
|
-
"es2016"
|
|
11
|
-
],
|
|
12
|
-
"module": "commonjs",
|
|
13
|
-
"noEmitOnError": true,
|
|
14
|
-
"noFallthroughCasesInSwitch": true,
|
|
15
|
-
"noImplicitReturns": true,
|
|
16
|
-
"pretty": true,
|
|
17
|
-
"sourceMap": true,
|
|
18
|
-
"strict": true,
|
|
19
|
-
"target": "es2017"
|
|
20
|
-
},
|
|
21
|
-
"include": [
|
|
22
|
-
"src/**/*.ts",
|
|
23
|
-
"test/**/*.ts"
|
|
24
|
-
],
|
|
25
|
-
"exclude": [
|
|
26
|
-
"node_modules"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
// AUTO-TRANSPILE //
|
|
4
|
-
|
|
5
|
-
// fetch and handle constinuosly
|
|
6
|
-
async function fetchOHLCVContinuously (exchange, symbol) {
|
|
7
|
-
while (true) {
|
|
8
|
-
try {
|
|
9
|
-
const ohlcv = await exchange.fetchOHLCV (symbol);
|
|
10
|
-
const ohlcvLength = ohlcv.length;
|
|
11
|
-
console.log ('Fetched ', exchange.id, ' - ', symbol, ' candles. last candle: ', ohlcv[ohlcvLength - 1]);
|
|
12
|
-
} catch (e) {
|
|
13
|
-
console.log (e);
|
|
14
|
-
break;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// start exchanges and fetch OHLCV loop
|
|
20
|
-
async function startExchange (exchangeName, symbols) {
|
|
21
|
-
const ex = new ccxt[exchangeName] ({});
|
|
22
|
-
const promises = [];
|
|
23
|
-
for (let i = 0; i < symbols.length; i++) {
|
|
24
|
-
const symbol = symbols[i];
|
|
25
|
-
promises.push (fetchOHLCVContinuously (ex, symbol));
|
|
26
|
-
}
|
|
27
|
-
await Promise.all (promises);
|
|
28
|
-
await ex.close ();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// main function
|
|
32
|
-
async function example () {
|
|
33
|
-
const exchanges = [ 'binance', 'okx', 'kraken' ];
|
|
34
|
-
const symbols = [ 'BTC/USDT', 'ETH/USDT' ];
|
|
35
|
-
const promises = [];
|
|
36
|
-
for (let i = 0; i < exchanges.length; i++) {
|
|
37
|
-
const exchangeName = exchanges[i];
|
|
38
|
-
promises.push (startExchange (exchangeName, symbols));
|
|
39
|
-
}
|
|
40
|
-
await Promise.all (promises);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
await example ();
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
// AUTO-TRANSPILE //
|
|
4
|
-
|
|
5
|
-
async function example () {
|
|
6
|
-
const myex = new ccxt.okx ({});
|
|
7
|
-
const fromTimestamp = myex.milliseconds () - 86400 * 1000;// last 24 hrs
|
|
8
|
-
const ohlcv = await myex.fetchOHLCV ('BTC/USDT', '1m', fromTimestamp, 3, { 'whatever': 123 });
|
|
9
|
-
const length = ohlcv.length;
|
|
10
|
-
if (length > 0) {
|
|
11
|
-
const lastPrice = ohlcv[length - 1][4];
|
|
12
|
-
console.log ('Fetched ', length, ' candles for ', myex.id, ': last close ', lastPrice);
|
|
13
|
-
} else {
|
|
14
|
-
console.log ('No candles have been fetched');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
await example ();
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fetch-tickers",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"lockfileVersion": 1,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"dependencies": {
|
|
7
|
-
"@types/node": {
|
|
8
|
-
"version": "10.14.18",
|
|
9
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.18.tgz",
|
|
10
|
-
"integrity": "sha512-ryO3Q3++yZC/+b8j8BdKd/dn9JlzlHBPdm80656xwYUdmPkpTGTjkAdt6BByiNupGPE8w0FhBgvYy/fX9hRNGQ==",
|
|
11
|
-
"dev": true
|
|
12
|
-
},
|
|
13
|
-
"ansicolor": {
|
|
14
|
-
"version": "1.1.92",
|
|
15
|
-
"resolved": "https://registry.npmjs.org/ansicolor/-/ansicolor-1.1.92.tgz",
|
|
16
|
-
"integrity": "sha512-2jRpULfLpLvFeYYxIu1z6i0LQ4Khj/UxecsrdJ+837P0AVOW3smdKHpHmeKVYHZPG67o3jQFdMjNvPwktwPmZg=="
|
|
17
|
-
},
|
|
18
|
-
"as-table": {
|
|
19
|
-
"version": "1.0.55",
|
|
20
|
-
"resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
|
|
21
|
-
"integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
|
|
22
|
-
"requires": {
|
|
23
|
-
"printable-characters": "^1.0.42"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"ccxt": {
|
|
27
|
-
"version": "1.18.1147",
|
|
28
|
-
"resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.18.1147.tgz",
|
|
29
|
-
"integrity": "sha512-3iflgpmBKgbskca3hwUDW/ewepKQ9rFEvxMV9s8NkWJFloO0ZAQzf3SfyxdRDGcJHcNNxSmbRFX/zRp3ucH0jw=="
|
|
30
|
-
},
|
|
31
|
-
"data-uri-to-buffer": {
|
|
32
|
-
"version": "2.0.1",
|
|
33
|
-
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz",
|
|
34
|
-
"integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==",
|
|
35
|
-
"requires": {
|
|
36
|
-
"@types/node": "^8.0.7"
|
|
37
|
-
},
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"@types/node": {
|
|
40
|
-
"version": "8.10.54",
|
|
41
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
|
|
42
|
-
"integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg=="
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"get-source": {
|
|
47
|
-
"version": "1.0.40",
|
|
48
|
-
"resolved": "https://registry.npmjs.org/get-source/-/get-source-1.0.40.tgz",
|
|
49
|
-
"integrity": "sha512-grbzSLO9gCVpb+ngrUf2ch4nzcfAs9pYqlnu0v2+Ho0rOpwnJqhZsHWLXaqdNHMtmnY+OwGgS4SPdzMRXEwVtQ==",
|
|
50
|
-
"requires": {
|
|
51
|
-
"data-uri-to-buffer": "^2.0.0",
|
|
52
|
-
"source-map": "^0.6.1"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"ololog": {
|
|
56
|
-
"version": "1.1.146",
|
|
57
|
-
"resolved": "https://registry.npmjs.org/ololog/-/ololog-1.1.146.tgz",
|
|
58
|
-
"integrity": "sha512-C68zLVMFgIZC1Rdz7LTmtIEuAsth/2yllA/kb3OUfdWI9+U5x4F7EXO3xgfp9Rhn/tiETffo6DnWGPQaVHjKiw==",
|
|
59
|
-
"requires": {
|
|
60
|
-
"ansicolor": "^1.1.84",
|
|
61
|
-
"pipez": "^1.1.12",
|
|
62
|
-
"printable-characters": "^1.0.42",
|
|
63
|
-
"stacktracey": "^1.2.117",
|
|
64
|
-
"string.bullet": "^1.0.12",
|
|
65
|
-
"string.ify": "^1.0.57"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"pipez": {
|
|
69
|
-
"version": "1.1.12",
|
|
70
|
-
"resolved": "https://registry.npmjs.org/pipez/-/pipez-1.1.12.tgz",
|
|
71
|
-
"integrity": "sha1-s1nOVAHpNfEp+koJT83omvuENtg="
|
|
72
|
-
},
|
|
73
|
-
"printable-characters": {
|
|
74
|
-
"version": "1.0.42",
|
|
75
|
-
"resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
|
|
76
|
-
"integrity": "sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g="
|
|
77
|
-
},
|
|
78
|
-
"source-map": {
|
|
79
|
-
"version": "0.6.1",
|
|
80
|
-
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
|
81
|
-
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
|
82
|
-
},
|
|
83
|
-
"stacktracey": {
|
|
84
|
-
"version": "1.2.117",
|
|
85
|
-
"resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-1.2.117.tgz",
|
|
86
|
-
"integrity": "sha512-sj9olGCco8jxMw3fcmhL5er1yuVL2qSMhNfycwx+iIWz6uVpG+bQ2YNpVSlWscGmSskt61gSmUBjZ0Mb5jYBLw==",
|
|
87
|
-
"requires": {
|
|
88
|
-
"as-table": "^1.0.36",
|
|
89
|
-
"get-source": "^1.0.34"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"string.bullet": {
|
|
93
|
-
"version": "1.0.12",
|
|
94
|
-
"resolved": "https://registry.npmjs.org/string.bullet/-/string.bullet-1.0.12.tgz",
|
|
95
|
-
"integrity": "sha1-tB/EF4UKV+QEK/PPNHtu7iV+4lM=",
|
|
96
|
-
"requires": {
|
|
97
|
-
"printable-characters": "^1.0.26"
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
"string.ify": {
|
|
101
|
-
"version": "1.0.61",
|
|
102
|
-
"resolved": "https://registry.npmjs.org/string.ify/-/string.ify-1.0.61.tgz",
|
|
103
|
-
"integrity": "sha512-ROVOYWN8B62bP1LUJIDK6/NooBrN8xIvpV8Ugssbw7Oa4YKJmiOeoEomhDLLRVpYHo0vOBCpEM8RFpxUk9KDIQ==",
|
|
104
|
-
"requires": {
|
|
105
|
-
"printable-characters": "^1.0.42",
|
|
106
|
-
"string.bullet": "^1.0.12"
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"typescript": {
|
|
110
|
-
"version": "3.5.3",
|
|
111
|
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
|
|
112
|
-
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
|
|
113
|
-
"dev": true
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fetch-tickers",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "ccxt example code in typescript.",
|
|
5
|
-
"main": "build/src/index.js",
|
|
6
|
-
"types": "build/src/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"build/src"
|
|
9
|
-
],
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/ccxt/ccxt.git"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
18
|
-
"build": "tsc -p .",
|
|
19
|
-
"start": "node ./build/index"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"ansicolor": "^1.1.92",
|
|
23
|
-
"as-table": "^1.0.55",
|
|
24
|
-
"ccxt": "^2.0.0",
|
|
25
|
-
"ololog": "^1.1.146"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"typescript": "~3.5.0",
|
|
29
|
-
"@types/node": "^10.0.3"
|
|
30
|
-
},
|
|
31
|
-
"engines": {
|
|
32
|
-
"node": ">=7.6.0"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// Example code in typescript
|
|
2
|
-
// Based on /examples/js/fetch-from-many-exchanges-simultaneously.js
|
|
3
|
-
|
|
4
|
-
import * as ccxt from 'ccxt';
|
|
5
|
-
const log = require('ololog');
|
|
6
|
-
|
|
7
|
-
const symbol = 'BTC/USD';
|
|
8
|
-
const exchanges = ['coinbasepro', 'gemini', 'kraken'];
|
|
9
|
-
|
|
10
|
-
const fetchTickers = async (symbol: string) => {
|
|
11
|
-
const result = await Promise.all(exchanges.map(async (id: string): Promise<ccxt.Exchange> => {
|
|
12
|
-
const CCXT = ccxt as any; // Hack!
|
|
13
|
-
const exchange = new CCXT[id]({ 'enableRateLimit': true }) as ccxt.Exchange;
|
|
14
|
-
const ticker = await exchange.fetchTicker(symbol);
|
|
15
|
-
const exchangeExtended = exchange.extend({ 'exchange': id }, ticker) as ccxt.Exchange;
|
|
16
|
-
return exchangeExtended;
|
|
17
|
-
}));
|
|
18
|
-
log(result);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
fetchTickers(symbol);
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"rootDir": "src",
|
|
4
|
-
"outDir": "build",
|
|
5
|
-
"allowUnreachableCode": false,
|
|
6
|
-
"allowUnusedLabels": false,
|
|
7
|
-
"declaration": true,
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"lib": [
|
|
10
|
-
"es2016"
|
|
11
|
-
],
|
|
12
|
-
"module": "commonjs",
|
|
13
|
-
"noEmitOnError": true,
|
|
14
|
-
"noFallthroughCasesInSwitch": true,
|
|
15
|
-
"noImplicitReturns": true,
|
|
16
|
-
"pretty": true,
|
|
17
|
-
"sourceMap": true,
|
|
18
|
-
"strict": true,
|
|
19
|
-
"target": "es2017"
|
|
20
|
-
},
|
|
21
|
-
"include": [
|
|
22
|
-
"src/**/*.ts",
|
|
23
|
-
"test/**/*.ts"
|
|
24
|
-
],
|
|
25
|
-
"exclude": [
|
|
26
|
-
"node_modules"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { binance } from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
async function example () {
|
|
4
|
-
const exchange = new binance ({});
|
|
5
|
-
const ob = await exchange.fetchOrderBook ('BTC/USDT', 3);
|
|
6
|
-
const asks = ob['asks'];
|
|
7
|
-
const bids = ob['bids'];
|
|
8
|
-
console.log (asks);
|
|
9
|
-
console.log (bids);
|
|
10
|
-
}
|
|
11
|
-
example ();
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import ccxt from '../../js/ccxt.js';
|
|
3
|
-
|
|
4
|
-
// AUTO-TRANSPILE //
|
|
5
|
-
|
|
6
|
-
console.log ('CCXT Version:', ccxt.version);
|
|
7
|
-
|
|
8
|
-
// ------------------------------------------------------------------------------
|
|
9
|
-
|
|
10
|
-
async function example () {
|
|
11
|
-
const exchange = new ccxt.kraken ({
|
|
12
|
-
"apiKey": "YOUR_API_KEY",
|
|
13
|
-
"secret": "YOUR_API_SECRET",
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
const symbol = 'UNI/USD';
|
|
17
|
-
let side = 'buy'; // set it to 'buy' for a long position, 'sell' for a short position
|
|
18
|
-
const order_type = 'market'; // set it to 'market' or 'limit'
|
|
19
|
-
const amount = 1;
|
|
20
|
-
const leverage = 2;
|
|
21
|
-
|
|
22
|
-
await exchange.loadMarkets ();
|
|
23
|
-
const market = exchange.market (symbol);
|
|
24
|
-
|
|
25
|
-
// if order_type is 'market', then price is not needed
|
|
26
|
-
let price = undefined;
|
|
27
|
-
// if order_type is 'limit', then set a price at your desired level
|
|
28
|
-
// you can fetch the ticker and update price
|
|
29
|
-
// const ticker = await exchange.fetchTicker (symbol);
|
|
30
|
-
// const last_price = ticker['last'];
|
|
31
|
-
// const ask_price = ticker['ask'];
|
|
32
|
-
// const bid_price = ticker['bid'];
|
|
33
|
-
// if (order_type === 'limit') {
|
|
34
|
-
// price = (side === 'buy') ? bid_price * 0.95 : ask_price * 1.05; // i.e. 5% from current price
|
|
35
|
-
// }
|
|
36
|
-
|
|
37
|
-
const params = {
|
|
38
|
-
'leverage': leverage,
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// log
|
|
42
|
-
console.log ('Going to open a position', 'for', amount, 'worth', amount, market['base'], '~', market['settle'], 'using', side, order_type, 'order (', (order_type === 'limit' ? exchange.priceToPrecision (symbol, price) : ''), '), using the following params:');
|
|
43
|
-
console.log (params);
|
|
44
|
-
console.log ('-----------------------------------------------------------------------');
|
|
45
|
-
|
|
46
|
-
// exchange.verbose = True // uncomment for debugging purposes if necessary
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
const created_order = await exchange.createOrder (symbol, order_type, side, amount, price, params);
|
|
50
|
-
console.log ("Created an order", created_order);
|
|
51
|
-
|
|
52
|
-
// Fetch all your closed orders for this symbol (because we used market order)
|
|
53
|
-
// - use 'fetchClosedOrders' or 'fetchOrders' and filter with 'closed' status
|
|
54
|
-
const all_closed_orders = await exchange.fetchClosedOrders (symbol);
|
|
55
|
-
console.log ("Fetched all your closed orders for this symbol", all_closed_orders);
|
|
56
|
-
|
|
57
|
-
const all_open_positions = await exchange.fetchPositions (symbol);
|
|
58
|
-
console.log ("Fetched all your positions for this symbol", all_open_positions);
|
|
59
|
-
|
|
60
|
-
// To close a position:
|
|
61
|
-
// - long position (buy), you can create a sell order: exchange.createOrder (symbol, order_type, 'sell', amount, price, params);
|
|
62
|
-
// - short position (sell), you can create a buy order: exchange.createOrder (symbol, order_type, 'buy', amount, price, params);
|
|
63
|
-
} catch (e) {
|
|
64
|
-
console.log (e.toString ());
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
await example ();
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
// AUTO-TRANSPILE //
|
|
4
|
-
|
|
5
|
-
// Note, this is just an example and might not yet work on other exchanges, which are being still unified.
|
|
6
|
-
|
|
7
|
-
async function example () {
|
|
8
|
-
// ########## user inputs ##########
|
|
9
|
-
const exchange = new ccxt['binance'] ({ 'apiKey': 'xxx', 'secret': 'xxx' });
|
|
10
|
-
const symbol = 'BUSD/USDT'; // set target symbol
|
|
11
|
-
const marginMode = 'isolated'; // margin mode (cross or isolated)
|
|
12
|
-
const collateral_coin = 'USDT'; // which asset you want to use for margin-borrow collateral
|
|
13
|
-
const borrow_coin = 'BUSD'; // which coin to borrow
|
|
14
|
-
const order_side: any = 'sell'; // which side to trade
|
|
15
|
-
const amount_to_trade = 14; // how many coins to sell
|
|
16
|
-
const order_type = 'limit'; // order type (can be market, limit or etc)
|
|
17
|
-
const limit_price: any = 0.99; // price to sell at (set undefined/null/None if market-order)
|
|
18
|
-
const margin_magnitude = 5; // target margin (aka 'leverage'). This might also be obtainable using other unified methods, but for example purposes, we set here manually
|
|
19
|
-
// ########## end of user-inputs ##########
|
|
20
|
-
//
|
|
21
|
-
// for example purposes, let's also check available balance at first
|
|
22
|
-
const balance_margin = await exchange.fetchBalance ({ 'defaultType': 'margin', 'marginMode': marginMode }); // use `defaultType` because of temporary bug, otherwise, after several days, you can use `type` too.
|
|
23
|
-
// if we don't have enought coins, then we have to borrow at first
|
|
24
|
-
let needed_amount_to_borrow: any = undefined; // will be auto-set below
|
|
25
|
-
if (amount_to_trade > balance_margin[symbol][borrow_coin]['free']) {
|
|
26
|
-
needed_amount_to_borrow = amount_to_trade - balance_margin[symbol][borrow_coin]['free'];
|
|
27
|
-
console.log ('hmm, I have only ', balance_margin[symbol][borrow_coin]['free'], ' ', borrow_coin, ' in margin balance, and still need additional ', needed_amount_to_borrow, ' to make an order. Lets borrow it.');
|
|
28
|
-
// To initate a borrow, at first, check if we have enough collateral (for this example, as we make a sell-short, we need '-1' to keep for collateral currency)
|
|
29
|
-
const needed_collateral_amount = needed_amount_to_borrow / (margin_magnitude - 1);
|
|
30
|
-
// Check if we have any collateral to get permission for borrow
|
|
31
|
-
if (balance_margin[symbol][collateral_coin]['free'] < needed_collateral_amount) {
|
|
32
|
-
// If we don't have enough collateral, then let's try to transfer collateral-asset from spot-balance to margin-balance
|
|
33
|
-
console.log ('hmm, I have only ', balance_margin[symbol][collateral_coin]['free'], ' in balance, but ', needed_collateral_amount, ' collateral is needed. I should transfer ', needed_collateral_amount, ' from spot');
|
|
34
|
-
// let's check if we have spot balance at all
|
|
35
|
-
const balance_spot = await exchange.fetchBalance ({ 'type': 'spot' });
|
|
36
|
-
if (exchange.parseNumber (balance_spot[collateral_coin]['free']) < needed_collateral_amount) {
|
|
37
|
-
console.log ('hmm, I neither do have enough balance on spot - only ', balance_spot[collateral_coin]['free'], '. Script can not continue...');
|
|
38
|
-
return;
|
|
39
|
-
} else {
|
|
40
|
-
console.log ('Transferring ', needed_collateral_amount, ' to margin account');
|
|
41
|
-
await exchange.transfer (collateral_coin, needed_collateral_amount, 'spot', marginMode, { 'symbol': symbol });
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// now, as we have enough margin collateral, initiate borrow
|
|
45
|
-
console.log ('Initiating margin borrow of ', needed_amount_to_borrow, ' ', borrow_coin);
|
|
46
|
-
const borrowResult = await exchange.borrowMargin (borrow_coin, needed_amount_to_borrow, symbol, { 'marginMode': marginMode });
|
|
47
|
-
}
|
|
48
|
-
console.log ('Submitting order.');
|
|
49
|
-
const order = await exchange.createOrder (symbol, order_type, order_side, amount_to_trade, limit_price, { 'marginMode': marginMode });
|
|
50
|
-
console.log ('Order was submitted !', order['id']);
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
// ...
|
|
54
|
-
// ...
|
|
55
|
-
// some time later, if you want to repay the loan back (like 'close the position')...
|
|
56
|
-
// ...
|
|
57
|
-
// ...
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
// set the "repay-back" amount (for this example snippet, this will be same amount that we borrowed above)
|
|
61
|
-
if (needed_amount_to_borrow !== undefined) {
|
|
62
|
-
const amount_to_repay_back = needed_amount_to_borrow;
|
|
63
|
-
// At first, you need to get back the borrowed coin, by making an opposide trade
|
|
64
|
-
console.log ('Making purchase back of ', amount_to_repay_back, ' ', borrow_coin, ' to repay it back.');
|
|
65
|
-
const purchase_back_price: any = 1.01;
|
|
66
|
-
const order_back = await exchange.createOrder (symbol, order_type, (order_side === 'buy' ? 'sell' : 'buy'), amount_to_repay_back, purchase_back_price, { 'marginMode': marginMode });
|
|
67
|
-
console.log ('Now, repaying the loan.');
|
|
68
|
-
const repayResult = await exchange.repayMargin (borrow_coin, amount_to_repay_back, symbol, { 'marginMode': marginMode });
|
|
69
|
-
console.log ('finished.');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
await example ();
|