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
package/examples/ts/.eslintrc
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": {
|
|
3
|
-
"es2021": true,
|
|
4
|
-
"node": true
|
|
5
|
-
},
|
|
6
|
-
"parserOptions": {
|
|
7
|
-
"ecmaVersion": 2020,
|
|
8
|
-
"sourceType": "module"
|
|
9
|
-
},
|
|
10
|
-
"parser": "@typescript-eslint/parser",
|
|
11
|
-
"plugins": ["@typescript-eslint"],
|
|
12
|
-
"extends": ["eslint:recommended", "airbnb-base", "plugin:import/typescript"],
|
|
13
|
-
"ignorePatterns": ["*/*", "cli.ts"],
|
|
14
|
-
"rules": {
|
|
15
|
-
"no-console": "off",
|
|
16
|
-
"import/no-unresolved":"off", // tmp until typescript decides to properly resolve names
|
|
17
|
-
"import/named": "off",
|
|
18
|
-
"strict": "off",
|
|
19
|
-
"semi": "error",
|
|
20
|
-
"indent": ["error", 4],
|
|
21
|
-
"init-declarations": "error",
|
|
22
|
-
"no-undef-init": "off",
|
|
23
|
-
"comma-dangle": ["error", {
|
|
24
|
-
"arrays": "always-multiline",
|
|
25
|
-
"objects": "always-multiline",
|
|
26
|
-
"imports": "always-multiline",
|
|
27
|
-
"exports": "always-multiline",
|
|
28
|
-
"functions": "never"
|
|
29
|
-
}],
|
|
30
|
-
"import/extensions": "off",
|
|
31
|
-
"brace-style": ["error", "1tbs"],
|
|
32
|
-
"multiline-comment-style": ["error", "separate-lines"],
|
|
33
|
-
"dot-notation": "off",
|
|
34
|
-
"quote-props": ["error", "always"],
|
|
35
|
-
"no-multi-spaces": ["error", { "ignoreEOLComments": true }],
|
|
36
|
-
"no-whitespace-before-property": "error",
|
|
37
|
-
"space-before-blocks": ["error", "always"],
|
|
38
|
-
"space-before-function-paren": ["error", "always"],
|
|
39
|
-
"no-spaced-func": "off",
|
|
40
|
-
"func-call-spacing": ["error", "always"],
|
|
41
|
-
"block-spacing": ["error", "always"],
|
|
42
|
-
"keyword-spacing": ["error", { "before": true, "after": true }],
|
|
43
|
-
"object-curly-spacing": ["error", "always", { "objectsInObjects": false }],
|
|
44
|
-
"object-curly-newline": ["error", { "consistent": true }],
|
|
45
|
-
"space-infix-ops": "error",
|
|
46
|
-
"space-unary-ops": "error",
|
|
47
|
-
"space-in-parens": "error",
|
|
48
|
-
"no-nested-ternary": "error",
|
|
49
|
-
"eqeqeq": "error",
|
|
50
|
-
"quotes": ["error", "single", { "avoidEscape": true }],
|
|
51
|
-
"no-unused-vars": ["warn", { "argsIgnorePattern": "^(headers|body|account|info|symbol|price|tag|side|since|limit|params|market|timeframe|api|path|code|currency|statusCode|statusText|url|method|response|requestHeaders|requestBody|bidsKey|asksKey|context|config|type|priceKey|amountKey|networkCode|marginMode|subscription|message|client)" }],
|
|
52
|
-
"new-parens": "error",
|
|
53
|
-
"new-cap": "off",
|
|
54
|
-
"no-var": "error",
|
|
55
|
-
"prefer-const": ["error", {
|
|
56
|
-
"destructuring": "any",
|
|
57
|
-
"ignoreReadBeforeAssign": false
|
|
58
|
-
}],
|
|
59
|
-
"no-warning-comments": ["warn", { "terms": ["fixme"] }],
|
|
60
|
-
"padded-blocks": ["error", "never"],
|
|
61
|
-
"lines-between-class-members": "error",
|
|
62
|
-
"no-multiple-empty-lines": ["error", { "max": 2 }],
|
|
63
|
-
"padding-line-between-statements": ["warn",
|
|
64
|
-
// { "blankLine": "never", "prev":"*", "next": "*" }, // comment this to allow blank-lines
|
|
65
|
-
{ "blankLine": "always", "prev":"directive", "next": "*" },
|
|
66
|
-
{ "blankLine": "always", "prev":"*", "next": "cjs-export" },
|
|
67
|
-
{ "blankLine": "always", "prev":"*", "next": "export" },
|
|
68
|
-
{ "blankLine": "always", "prev":"*", "next": "function" }
|
|
69
|
-
],
|
|
70
|
-
"prefer-template": "off",
|
|
71
|
-
"curly": "error",
|
|
72
|
-
"no-plusplus": "off",
|
|
73
|
-
"no-restricted-properties": "off",
|
|
74
|
-
"prefer-destructuring": "off",
|
|
75
|
-
"class-methods-use-this": "off",
|
|
76
|
-
"no-param-reassign": "off",
|
|
77
|
-
"max-len": "off",
|
|
78
|
-
"no-return-await": "off",
|
|
79
|
-
"array-bracket-spacing": ["error", "always"],
|
|
80
|
-
"radix": "off",
|
|
81
|
-
"camelcase": "off",
|
|
82
|
-
"no-lonely-if": "off",
|
|
83
|
-
"no-mixed-operators": "off",
|
|
84
|
-
"no-shadow": "off",
|
|
85
|
-
"no-useless-concat": "off",
|
|
86
|
-
"no-continue": "off",
|
|
87
|
-
"no-else-return": "off",
|
|
88
|
-
"no-unneeded-ternary": "off",
|
|
89
|
-
"operator-assignment": "off",
|
|
90
|
-
"no-underscore-dangle": "off",
|
|
91
|
-
"consistent-return": "off",
|
|
92
|
-
"no-await-in-loop": "off",
|
|
93
|
-
"prefer-exponentiation-operator": "off",
|
|
94
|
-
"no-use-before-define": ["error", {
|
|
95
|
-
"functions": false,
|
|
96
|
-
"classes": true,
|
|
97
|
-
"variables": true,
|
|
98
|
-
"allowNamedExports": false
|
|
99
|
-
}]
|
|
100
|
-
},
|
|
101
|
-
"settings": {
|
|
102
|
-
"import/resolver": {
|
|
103
|
-
"node": {
|
|
104
|
-
"extensions": [".js", ".ts"]
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
"import/parsers": {
|
|
108
|
-
"@typescript-eslint/parser": [".ts", ".js"]
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
package/examples/ts/benchmark.ts
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
2
|
-
import asTable from 'as-table';
|
|
3
|
-
import ccxt, { version } from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
interface Stats {
|
|
6
|
-
min: number;
|
|
7
|
-
average: number;
|
|
8
|
-
max: number;
|
|
9
|
-
median: number;
|
|
10
|
-
iterations: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface Test {
|
|
14
|
-
language: string;
|
|
15
|
-
method: string;
|
|
16
|
-
command: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface Benchmark extends Omit<Test, 'command'>, Stats { }
|
|
20
|
-
|
|
21
|
-
const stats = (times: number[]): Stats => {
|
|
22
|
-
// calculate statistics
|
|
23
|
-
const sum = times.reduce ((a, b) => a + b, 0);
|
|
24
|
-
const avg = Math.round (sum / times.length);
|
|
25
|
-
const min = Math.min (...times);
|
|
26
|
-
const max = Math.max (...times);
|
|
27
|
-
times.sort ((a, b) => a - b);
|
|
28
|
-
const median = times.length % 2 === 0 ? (times[times.length / 2 - 1] + times[times.length / 2]) / 2 : times[Math.floor (times.length / 2)];
|
|
29
|
-
return { min, 'average': avg, max, median, 'iterations': times.length };
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
async function benchmark (exchangeId, method, args, verbose = false, minIterations = 10, argsv = '') {
|
|
33
|
-
const exchange = new ccxt.pro[exchangeId] ({});
|
|
34
|
-
const languages = [ 'js', 'py', 'php', 'cs' ];
|
|
35
|
-
const commands: Test[] = languages.map ((language) => ({
|
|
36
|
-
'language': language,
|
|
37
|
-
'method': method,
|
|
38
|
-
'command': `npm run cli.${language} ${exchangeId} ${method} ${args.join (' ')} -- ${argsv} --poll`,
|
|
39
|
-
}));
|
|
40
|
-
const wsMethod = method + 'Ws';
|
|
41
|
-
if (exchange.has[wsMethod]) {
|
|
42
|
-
const wsCommands: Test[] = languages.map ((language) => ({
|
|
43
|
-
'language': language,
|
|
44
|
-
'method': wsMethod,
|
|
45
|
-
'command': `npm run cli.${language} ${exchangeId} ${wsMethod} ${args.join (' ')} -- ${argsv} --poll`,
|
|
46
|
-
}));
|
|
47
|
-
commands.push (...wsCommands);
|
|
48
|
-
}
|
|
49
|
-
const regex = /iteration (\d+) passed in (\d+) ms/g;
|
|
50
|
-
|
|
51
|
-
async function runCommand (command: string) {
|
|
52
|
-
if (verbose) {
|
|
53
|
-
console.log (exchange.iso8601 (new Date ().getTime ()), ' running command:', command);
|
|
54
|
-
}
|
|
55
|
-
return new Promise<{ times: number[] }> ((resolve, reject) => {
|
|
56
|
-
const [ cmd, ...args ] = command.split (' ');
|
|
57
|
-
|
|
58
|
-
const child = spawn (cmd, args);
|
|
59
|
-
const matches = [];
|
|
60
|
-
const language = command.slice (8, 15);
|
|
61
|
-
child.stdout.on ('data', (data: Buffer) => {
|
|
62
|
-
const message = data.toString ();
|
|
63
|
-
matches.push (...Array.from (message.matchAll (regex)));
|
|
64
|
-
const match = matches[matches.length - 1];
|
|
65
|
-
|
|
66
|
-
if (match && match[1] && match[2]) {
|
|
67
|
-
const iteration = parseInt (match[1]);
|
|
68
|
-
const time = parseInt (match[2]);
|
|
69
|
-
|
|
70
|
-
if (iteration <= minIterations) {
|
|
71
|
-
if (verbose) {
|
|
72
|
-
console.log (exchange.iso8601 (new Date ().getTime ()), `${language} iteration ${iteration} passed in ${time} ms`);
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
const times = matches.map ((m) => parseInt (m[2]));
|
|
76
|
-
child.kill ();
|
|
77
|
-
if (verbose) {
|
|
78
|
-
console.log (exchange.iso8601 (new Date ().getTime ()), `killed process - ${language} iteration ${iteration} passed in ${time} ms`);
|
|
79
|
-
}
|
|
80
|
-
resolve ({ times });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
child.stderr.on ('data', (data: Buffer) => {
|
|
86
|
-
const message = data.toString ();
|
|
87
|
-
console.error (exchange.iso8601 (new Date ().getTime ()), `command ${command} failed. stderr: ${message}`);
|
|
88
|
-
const times = matches.map ((m) => parseInt (m[2]));
|
|
89
|
-
resolve ({ times });
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
child.on ('close', (code: number) => {
|
|
93
|
-
const times = matches.map ((m) => parseInt (m[2]));
|
|
94
|
-
resolve ({ times });
|
|
95
|
-
console.log (exchange.iso8601 (new Date ().getTime ()), `${language} child process exited with code ${code}`);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
child.on ('error', (err) => {
|
|
99
|
-
console.error (exchange.iso8601 (new Date ().getTime ()), `command ${command} failed. error: ${err}`);
|
|
100
|
-
reject (err);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const benchmarks: Benchmark[] = [];
|
|
106
|
-
const results = await Promise.all (commands.map ((c) => runCommand (c.command)));
|
|
107
|
-
for (let i = 0; i < results.length; i++) {
|
|
108
|
-
const result = results[i];
|
|
109
|
-
benchmarks.push ({ 'language': commands[i].language, 'method': commands[i].method, ...stats (result.times) });
|
|
110
|
-
}
|
|
111
|
-
if (verbose) {
|
|
112
|
-
const rawResults = results.map ((r, i) => ({ 'language': commands[i].language, 'method': commands[i].method, ...stats (r.times), 'times': r.times }));
|
|
113
|
-
console.log (rawResults);
|
|
114
|
-
}
|
|
115
|
-
console.log (asTable (benchmarks));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const [ _, , exchangeId, methodName, ...params ] = process.argv.filter ((x) => !x.startsWith ('--'));
|
|
119
|
-
const verbose = process.argv.includes ('--verbose');
|
|
120
|
-
const minIterationsString = process.argv.find ((x) => x.startsWith ('--min-iterations='))?.slice (18);
|
|
121
|
-
const minIterations = minIterationsString ? parseInt (minIterationsString) : 10;
|
|
122
|
-
const argsv = process.argv.filter ((x) => x.startsWith ('--') && !x.startsWith ('--min-iterations')).join (' ');
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
console.log ((new Date ()).toISOString ());
|
|
126
|
-
console.log ('Node.js:', process.version);
|
|
127
|
-
console.log ('CCXT v' + version);
|
|
128
|
-
|
|
129
|
-
const start = new Date ().getTime ();
|
|
130
|
-
await benchmark (exchangeId, methodName, params, verbose, minIterations, argsv);
|
|
131
|
-
const end = new Date ().getTime ();
|
|
132
|
-
|
|
133
|
-
console.log ((new Date ().toISOString ()), 'Total time:', end - start, 'ms');
|
|
134
|
-
process.exit (0);
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
// AUTO-TRANSPILE //
|
|
4
|
-
|
|
5
|
-
// Bulding OHLCV array from trades (executions) data is a bit tricky. For example, if you want to build 100 ohlcv bars of 1-minute timeframe, then you have to fetch the 100 minutes of trading data. So, higher timeframe bars require more trading data (i.e. building 100 bars of 1-day timeframe OHLCV would require massive amount of trading data, which might not be desirable for user, because of data-usage rate limits)
|
|
6
|
-
|
|
7
|
-
async function example_with_fetch_trades () {
|
|
8
|
-
const exch = new ccxt.binance ({});
|
|
9
|
-
const timeframe = '1m';
|
|
10
|
-
const symbol = 'OGN/USDT';
|
|
11
|
-
const since = exch.milliseconds () - 1000 * 60 * 30; // last 30 mins
|
|
12
|
-
const limit = 1000;
|
|
13
|
-
const trades = await exch.fetchTrades (symbol, since, limit);
|
|
14
|
-
const generatedBars = exch.buildOHLCVC (trades, timeframe, since, limit);
|
|
15
|
-
// you can ignore 6th index ("count" field) from ohlcv entries, which is not part of OHLCV standard structure and is just added internally by `buildOHLCVC` method
|
|
16
|
-
console.log ('[REST] Constructed', generatedBars.length, 'bars from trades: ', generatedBars);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function example_with_watch_trades () {
|
|
20
|
-
const exch = new ccxt.pro.binance ({});
|
|
21
|
-
const timeframe = '1m';
|
|
22
|
-
const symbol = 'DOGE/USDT';
|
|
23
|
-
const limit = 1000;
|
|
24
|
-
const since = exch.milliseconds () - 10 * 60 * 1000 * 1000; // last 10 hrs
|
|
25
|
-
let collectedTrades = [];
|
|
26
|
-
const collectedBars = [];
|
|
27
|
-
while (true) {
|
|
28
|
-
const wsTrades = await exch.watchTrades (symbol, since, limit, {});
|
|
29
|
-
collectedTrades = collectedTrades.concat (wsTrades);
|
|
30
|
-
const generatedBars = exch.buildOHLCVC (collectedTrades, timeframe, since, limit);
|
|
31
|
-
// Note: first bar would be partially constructed bar and its 'open' & 'high' & 'low' prices (except 'close' price) would probably have different values compared to real bar on chart, because the first obtained trade timestamp might be somewhere in the middle of timeframe period, so the pre-period would be missing because we would not have trades data. To fix that, you can get older data with `fetchTrades` to fill up bars till start bar.
|
|
32
|
-
for (let i = 0; i < generatedBars.length; i++) {
|
|
33
|
-
const bar = generatedBars[i];
|
|
34
|
-
const barTimestamp = bar[0];
|
|
35
|
-
const collectedBarsLength = collectedBars.length;
|
|
36
|
-
const lastCollectedBarTimestamp = collectedBarsLength > 0 ? collectedBars[collectedBarsLength - 1][0] : 0;
|
|
37
|
-
if (barTimestamp === lastCollectedBarTimestamp) {
|
|
38
|
-
// if timestamps are same, just updarte the last bar
|
|
39
|
-
collectedBars[collectedBarsLength - 1] = bar;
|
|
40
|
-
} else if (barTimestamp > lastCollectedBarTimestamp) {
|
|
41
|
-
collectedBars.push (bar);
|
|
42
|
-
// remove the trades from saved array, which were till last collected bar's open timestamp
|
|
43
|
-
collectedTrades = exch.filterBySinceLimit (collectedTrades, barTimestamp);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Note: first bar would carry incomplete values, please read comment in "buildOHLCVCFromWatchTrades" method definition for further explanation
|
|
47
|
-
console.log ('[WS] Constructed', collectedBars.length, 'bars from', symbol, 'trades: ', collectedBars);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
await example_with_fetch_trades ();
|
|
53
|
-
await example_with_watch_trades ();
|