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,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
-
|
|
7
|
-
async function main () {
|
|
8
|
-
|
|
9
|
-
const exchange = new ccxt.binance({
|
|
10
|
-
'apiKey': 'YOUR_API_KEY',
|
|
11
|
-
'secret': 'YOUR_API_SECRET',
|
|
12
|
-
'options': {
|
|
13
|
-
'defaultType': 'margin',
|
|
14
|
-
},
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
const markets = await exchange.loadMarkets ()
|
|
18
|
-
|
|
19
|
-
exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
20
|
-
|
|
21
|
-
const symbol = 'BTC/USDT'
|
|
22
|
-
const type = 'STOP_LOSS_LIMIT'
|
|
23
|
-
const side = 'buy'
|
|
24
|
-
const amount = YOUR_AMOUNT_HERE
|
|
25
|
-
const price = YOUR_PRICE_HERE
|
|
26
|
-
const params = {
|
|
27
|
-
'stopPrice': YOUR_STOP_PRICE_HERE,
|
|
28
|
-
'timeInForce': 'GTC',
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
33
|
-
console.log (order)
|
|
34
|
-
} catch (e) {
|
|
35
|
-
console.log (e.constructor.name, e.message)
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
main ()
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ccxt from '../../js/ccxt.js';
|
|
3
|
-
import ololog from 'ololog'
|
|
4
|
-
|
|
5
|
-
const log = ololog.configure ({ locate: false })
|
|
6
|
-
|
|
7
|
-
const binance = new ccxt['binance'] ()
|
|
8
|
-
const recvWindow = binance.options.recvWindow
|
|
9
|
-
const aheadWindow = 1000
|
|
10
|
-
|
|
11
|
-
async function test () {
|
|
12
|
-
const localStartTime = Date.now ()
|
|
13
|
-
const { serverTime } = await binance.publicGetTime ()
|
|
14
|
-
const localFinishTime = Date.now ()
|
|
15
|
-
const estimatedLandingTime = (localFinishTime + localStartTime) / 2
|
|
16
|
-
|
|
17
|
-
const diff = serverTime - estimatedLandingTime
|
|
18
|
-
|
|
19
|
-
log (`request departure time: ${binance.iso8601 (localStartTime)}`)
|
|
20
|
-
log (`response arrival time: ${binance.iso8601 (localFinishTime)}`)
|
|
21
|
-
log (`server time: ${binance.iso8601 (serverTime)}`)
|
|
22
|
-
log (`request landing time (est): ${binance.iso8601 (estimatedLandingTime)}, ${Math.abs (diff)} ms ${Math.sign (diff) > 0 ? 'behind' : 'ahead of'} server`)
|
|
23
|
-
log ('\n')
|
|
24
|
-
|
|
25
|
-
if (diff < -aheadWindow) {
|
|
26
|
-
log.error.red (`your request will likely be rejected if local time is ahead of the server's time for more than ${aheadWindow} ms \n`)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (diff > recvWindow) {
|
|
30
|
-
log.error.red (`your request will likely be rejected if local time is behind server time for more than ${recvWindow} ms\n`)
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
test ();
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
(async () => {
|
|
4
|
-
|
|
5
|
-
// apiKey must have universal transfer permissions
|
|
6
|
-
const binance = new ccxt.binance ({
|
|
7
|
-
"apiKey": "",
|
|
8
|
-
"secret": "",
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
console.log (await binance.transfer ('USDT', 1, 'spot', 'future'))
|
|
12
|
-
const transfers = await binance.fetchTransfers ();
|
|
13
|
-
console.log ('got ', transfers.length, ' transfers')
|
|
14
|
-
console.log (await binance.transfer ('USDT', 1, 'spot', 'cross')) // For transfer to cross margin wallet
|
|
15
|
-
console.log (await binance.transfer ('USDT', 1, 'spot', 'ADA/USDT')) // For transfer to an isolated margin wallet
|
|
16
|
-
}) ()
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// ----------------------------------------------------------------------------
|
|
4
|
-
|
|
5
|
-
import ccxt from '../../js/ccxt.js';
|
|
6
|
-
import log from 'ololog';
|
|
7
|
-
import asTable from 'as-table';
|
|
8
|
-
|
|
9
|
-
// ----------------------------------------------------------------------------
|
|
10
|
-
|
|
11
|
-
const // ----------------------------------------------------------------------------
|
|
12
|
-
table = asTable.configure ({ delimiter: ' | ' });(async () => {
|
|
13
|
-
|
|
14
|
-
const exchange = new ccxt.bitfinex ({
|
|
15
|
-
'verbose': process.argv.includes ('--verbose'),
|
|
16
|
-
'timeout': 60000,
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
|
|
21
|
-
const response = await exchange.fetchTrades ('ETH/BTC', 1518983548636 - 2 * 24 * 60 * 60 * 1000)
|
|
22
|
-
log (table (response))
|
|
23
|
-
log (response.length.toString (), 'trades')
|
|
24
|
-
log.green ('Succeeded.')
|
|
25
|
-
|
|
26
|
-
} catch (e) {
|
|
27
|
-
|
|
28
|
-
log.dim ('--------------------------------------------------------')
|
|
29
|
-
log (e.constructor.name, e.message)
|
|
30
|
-
log.dim ('--------------------------------------------------------')
|
|
31
|
-
log.dim (exchange.last_http_response)
|
|
32
|
-
log.error ('Failed.')
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}) ()
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// ----------------------------------------------------------------------------
|
|
4
|
-
|
|
5
|
-
import ccxt from '../../js/ccxt.js';
|
|
6
|
-
import asTable from 'as-table';
|
|
7
|
-
import log from 'ololog';
|
|
8
|
-
|
|
9
|
-
// ----------------------------------------------------------------------------
|
|
10
|
-
|
|
11
|
-
const // ----------------------------------------------------------------------------
|
|
12
|
-
table = asTable.configure ({ delimiter: ' | ' });(async () => {
|
|
13
|
-
|
|
14
|
-
const exchange = new ccxt.bitfinex2 ({
|
|
15
|
-
'verbose': process.argv.includes ('--verbose'),
|
|
16
|
-
'timeout': 60000,
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
|
|
21
|
-
const response = await exchange.fetchTrades ('ETH/BTC', 1518983548636 - 2 * 24 * 60 * 60 * 1000)
|
|
22
|
-
log (table (response))
|
|
23
|
-
log (response.length.toString (), 'trades')
|
|
24
|
-
log.green ('Succeeded.')
|
|
25
|
-
|
|
26
|
-
} catch (e) {
|
|
27
|
-
|
|
28
|
-
log.dim ('--------------------------------------------------------')
|
|
29
|
-
log (e.constructor.name, e.message)
|
|
30
|
-
log.dim ('--------------------------------------------------------')
|
|
31
|
-
log.dim (exchange.last_http_response)
|
|
32
|
-
log.error ('Failed.')
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}) ()
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// JavaScript CORS Proxy
|
|
2
|
-
// Save this in a file like cors.js and run with `node cors [port]`
|
|
3
|
-
// It will listen for your requests on the port you pass in command line or port 8080 by default
|
|
4
|
-
let port = (process.argv.length > 2) ? parseInt (process.argv[2]) : 8080 // default
|
|
5
|
-
require ('cors-anywhere').createServer ({
|
|
6
|
-
setHeaders: { 'origin': 'https://www.bitmex.com' }
|
|
7
|
-
}).listen (port, '0.0.0.0')
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
const bitpanda = new ccxt.bitpanda ({
|
|
4
|
-
"apiKey": "INSERTYOURAPIKEY"
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// output
|
|
9
|
-
`
|
|
10
|
-
fetching USDT/EUR trades on bitpanda
|
|
11
|
-
---------------------------------------------
|
|
12
|
-
maker volume 6621.81 USDT maker fee 5.62 USDT
|
|
13
|
-
taker volume 2544.82 USDT taker fee 3.27 USDT
|
|
14
|
-
|
|
15
|
-
sold 9166.63 USDT for 7802.38 EUR
|
|
16
|
-
bought 0.00 USDT for 0.00 EUR
|
|
17
|
-
`
|
|
18
|
-
|
|
19
|
-
;(async () => {
|
|
20
|
-
const market = {
|
|
21
|
-
symbol: 'USDT/EUR',
|
|
22
|
-
base: 'USDT',
|
|
23
|
-
quote: 'EUR',
|
|
24
|
-
}
|
|
25
|
-
console.log ('fetching', market.symbol, 'trades on bitpanda')
|
|
26
|
-
console.log ('---------------------------------------------')
|
|
27
|
-
const trades = await bitpanda.fetchMyTrades ('USDT/EUR')
|
|
28
|
-
const makers = trades.filter (x => x.takerOrMaker === 'maker')
|
|
29
|
-
const takers = trades.filter (x => x.takerOrMaker === 'taker')
|
|
30
|
-
console.log ('maker volume', makers.reduce ((a, b) => a + b.amount, 0).toFixed (2), market.base, 'maker fee', makers.reduce ((a, b) => a + b.fee['cost'], 0).toFixed (2), market.base)
|
|
31
|
-
console.log ('taker volume', takers.reduce ((a, b) => a + b.amount, 0).toFixed (2), market.base, 'taker fee', takers.reduce ((a, b) => a + b.fee['cost'], 0).toFixed (2), market.base)
|
|
32
|
-
const sells = trades.filter (x => x.side === 'sell')
|
|
33
|
-
const buys = trades.filter (x => x.side === 'buy')
|
|
34
|
-
console.log ('\nsold', sells.reduce ((a, b) => a + b.amount, 0).toFixed (2), market.base, 'for', sells.reduce ((a, b) => a + b.cost, 0).toFixed (2), market.quote)
|
|
35
|
-
console.log ('bought', buys.reduce ((a, b) => a + b.amount, 0).toFixed (2), market.base, 'for', buys.reduce ((a, b) => a + b.cost, 0).toFixed (2), market.quote)
|
|
36
|
-
}) ()
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
async function main () {
|
|
6
|
-
|
|
7
|
-
console.log ('CCXT Version:', ccxt.version)
|
|
8
|
-
|
|
9
|
-
const exchange = new ccxt.bitrue ({
|
|
10
|
-
"apiKey": "YOUR_API_KEY",
|
|
11
|
-
"secret": "YOUR_SECRET",
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
await exchange.loadMarkets ()
|
|
15
|
-
|
|
16
|
-
exchange.verbose = true
|
|
17
|
-
|
|
18
|
-
try {
|
|
19
|
-
|
|
20
|
-
const balance = await exchange.fetchBalance ()
|
|
21
|
-
console.log (balance)
|
|
22
|
-
|
|
23
|
-
} catch (e) {
|
|
24
|
-
console.log (e.constructor.name, e.message);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
main ()
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
import ololog from 'ololog'
|
|
6
|
-
import ansicolor from 'ansicolor';
|
|
7
|
-
|
|
8
|
-
const log = ololog.configure({ locate: false })
|
|
9
|
-
|
|
10
|
-
ansicolor.nice
|
|
11
|
-
|
|
12
|
-
;(async () => {
|
|
13
|
-
let apiUrl = 'https://www.bitstamp.net/api';
|
|
14
|
-
|
|
15
|
-
// instantiate the exchange
|
|
16
|
-
let exchange = new ccxt.bitstamp({
|
|
17
|
-
'apiKey': 'APIKEY',
|
|
18
|
-
'secret': 'APISECRET',
|
|
19
|
-
'uid': 'ACCOUNTID',
|
|
20
|
-
'urls': {
|
|
21
|
-
'api': {
|
|
22
|
-
'public': apiUrl,
|
|
23
|
-
'private': apiUrl,
|
|
24
|
-
'v1': apiUrl
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
// fetch account balance from the exchange
|
|
31
|
-
let balance = await exchange.fetchBalance()
|
|
32
|
-
log('balance'.green, balance.total)
|
|
33
|
-
|
|
34
|
-
// fetch fees
|
|
35
|
-
let singleFee = await exchange.fetchTradingFee('BTC/USD')
|
|
36
|
-
log('fee'.green, 'BTC/USD', singleFee)
|
|
37
|
-
let tradingFees = await exchange.fetchTradingFees()
|
|
38
|
-
log('tradingFees'.green, tradingFees)
|
|
39
|
-
let fundingFees = await exchange.fetchFundingFees()
|
|
40
|
-
log('fundingFees'.green, fundingFees)
|
|
41
|
-
let fees = await exchange.fetchFees()
|
|
42
|
-
log('fees'.green, fees)
|
|
43
|
-
|
|
44
|
-
// my trades
|
|
45
|
-
let myTrades = await exchange.fetchMyTrades('BTC/USD', undefined, 5)
|
|
46
|
-
log('myTrades'.green, asTable(myTrades))
|
|
47
|
-
|
|
48
|
-
// user transactions
|
|
49
|
-
let transactions = await exchange.fetchTransactions()
|
|
50
|
-
log('Transactions'.green, asTable(transactions))
|
|
51
|
-
|
|
52
|
-
// ledger
|
|
53
|
-
let ledger = await exchange.fetchLedger()
|
|
54
|
-
log('Ledger'.green, asTable(ledger))
|
|
55
|
-
|
|
56
|
-
// deposits
|
|
57
|
-
let deposits = await exchange.fetchDeposits()
|
|
58
|
-
log('Deposits'.green, asTable(deposits))
|
|
59
|
-
|
|
60
|
-
// create new limit order
|
|
61
|
-
let newOrder = await exchange.createOrder('BTC/USD', 'limit', 'buy', 0.01, 8000)
|
|
62
|
-
console.log('New limit order'.green, newOrder);
|
|
63
|
-
|
|
64
|
-
// open orders
|
|
65
|
-
let openOrders = await exchange.fetchOpenOrders()
|
|
66
|
-
log('Open orders'.green, asTable(openOrders))
|
|
67
|
-
|
|
68
|
-
// order data
|
|
69
|
-
let orderData = await exchange.fetchOrder(newOrder.id)
|
|
70
|
-
console.log('Order data'.green, orderData);
|
|
71
|
-
|
|
72
|
-
// cancel order
|
|
73
|
-
let canceledOrder = await exchange.cancelOrder(newOrder.id)
|
|
74
|
-
console.log('Canceled order'.green, canceledOrder);
|
|
75
|
-
|
|
76
|
-
// create market order
|
|
77
|
-
let marketOrder = await exchange.createOrder('BTC/USD', 'market', 'buy', 0.01)
|
|
78
|
-
console.log('New market order'.green, marketOrder);
|
|
79
|
-
|
|
80
|
-
// open orders
|
|
81
|
-
let secondOpenOrders = await exchange.fetchOpenOrders()
|
|
82
|
-
log('Open orders'.green, asTable(secondOpenOrders))
|
|
83
|
-
|
|
84
|
-
// deposit address
|
|
85
|
-
let paxDeposit = await exchange.fetchDepositAddress("XLM")
|
|
86
|
-
log('Pax deposit address'.green, paxDeposit)
|
|
87
|
-
|
|
88
|
-
// withdrawal
|
|
89
|
-
let ethWithdraw = await exchange.withdraw("ETH", 0.01, "0x6c28cb9dd2f4e3bb6f56c822bc306f3b8a3e7c08")
|
|
90
|
-
log('ETH withdrawal'.green, ethWithdraw)
|
|
91
|
-
|
|
92
|
-
// withdrawals
|
|
93
|
-
let withdrawals = await exchange.fetchWithdrawals()
|
|
94
|
-
log('Withdrawals'.green, asTable(withdrawals))
|
|
95
|
-
|
|
96
|
-
} catch (e) {
|
|
97
|
-
|
|
98
|
-
if (e instanceof ccxt.DDoSProtection || e.message.includes('ECONNRESET')) {
|
|
99
|
-
log.bright.yellow('[DDoS Protection] ' + e.message)
|
|
100
|
-
} else if (e instanceof ccxt.RequestTimeout) {
|
|
101
|
-
log.bright.yellow('[Request Timeout] ' + e.message)
|
|
102
|
-
} else if (e instanceof ccxt.AuthenticationError) {
|
|
103
|
-
log.bright.yellow('[Authentication Error] ' + e.message)
|
|
104
|
-
} else if (e instanceof ccxt.ExchangeNotAvailable) {
|
|
105
|
-
log.bright.yellow('[Exchange Not Available Error] ' + e.message)
|
|
106
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
107
|
-
log.bright.yellow('[Exchange Error] ' + e.message)
|
|
108
|
-
} else if (e instanceof ccxt.NetworkError) {
|
|
109
|
-
log.bright.yellow('[Network Error] ' + e.message)
|
|
110
|
-
} else {
|
|
111
|
-
throw e;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
})()
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ccxt from '../../js/ccxt.js';
|
|
3
|
-
import log from 'ololog';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const table = asTable.configure ({ delimiter: ' | ' }), id = 'bitstamp', exchange = new ccxt[id] ({ enableRateLimit: true }), symbol = 'BTC/USD';(async function main () {
|
|
8
|
-
|
|
9
|
-
// Markets data
|
|
10
|
-
const markets = await exchange.fetchMarkets ()
|
|
11
|
-
console.log('Total number of markets: ', Object.keys(markets).length);
|
|
12
|
-
|
|
13
|
-
// Currencies
|
|
14
|
-
const currencies = await exchange.fetchCurrencies ()
|
|
15
|
-
console.log('Currencies: ', JSON.stringify(currencies));
|
|
16
|
-
|
|
17
|
-
// Order book data
|
|
18
|
-
const orderbook = await exchange.fetchOrderBook (symbol)
|
|
19
|
-
console.log ('Order book ', symbol, orderbook.asks[0], orderbook.bids[0])
|
|
20
|
-
|
|
21
|
-
// Ticker
|
|
22
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
23
|
-
console.log ('Ticker ', symbol, " bid ", ticker.bid, " ask ", ticker.ask)
|
|
24
|
-
|
|
25
|
-
// Trades
|
|
26
|
-
const response = await exchange.fetchTrades (symbol, null, 10)
|
|
27
|
-
log (table (response))
|
|
28
|
-
|
|
29
|
-
// OHLC data
|
|
30
|
-
const candles = await exchange.fetchOHLCV (symbol, '1m', undefined, 10);
|
|
31
|
-
const first = candles[0]
|
|
32
|
-
const last = candles[candles.length - 1]
|
|
33
|
-
console.log (
|
|
34
|
-
'Fetched', candles.length, symbol, 'candles',
|
|
35
|
-
'from', exchange.iso8601 (first[0]),
|
|
36
|
-
'to', exchange.iso8601 (last[0])
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
}) ()
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
import ansicolor from 'ansicolor';
|
|
6
|
-
import ololog from 'ololog'
|
|
7
|
-
|
|
8
|
-
const log = ololog.configure ({ locate: false })
|
|
9
|
-
|
|
10
|
-
ansicolor.nice
|
|
11
|
-
|
|
12
|
-
let sleep = (ms) => new Promise (resolve => setTimeout (resolve, ms))
|
|
13
|
-
|
|
14
|
-
;(async () => {
|
|
15
|
-
|
|
16
|
-
// instantiate the exchange
|
|
17
|
-
let exchange = new ccxt.bittrex ({
|
|
18
|
-
"apiKey": "471b47a06c384e81b24072e9a8739064",
|
|
19
|
-
"secret": "694025686e9445589787e8ca212b4cff",
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
|
|
25
|
-
// fetch account balance from the exchange
|
|
26
|
-
let balance = await exchange.fetchBalance ()
|
|
27
|
-
|
|
28
|
-
// output the result
|
|
29
|
-
log (exchange.name.green, 'balance', balance)
|
|
30
|
-
|
|
31
|
-
} catch (e) {
|
|
32
|
-
|
|
33
|
-
if (e instanceof ccxt.DDoSProtection || e.message.includes ('ECONNRESET')) {
|
|
34
|
-
log.bright.yellow ('[DDoS Protection] ' + e.message)
|
|
35
|
-
} else if (e instanceof ccxt.RequestTimeout) {
|
|
36
|
-
log.bright.yellow ('[Request Timeout] ' + e.message)
|
|
37
|
-
} else if (e instanceof ccxt.AuthenticationError) {
|
|
38
|
-
log.bright.yellow ('[Authentication Error] ' + e.message)
|
|
39
|
-
} else if (e instanceof ccxt.ExchangeNotAvailable) {
|
|
40
|
-
log.bright.yellow ('[Exchange Not Available Error] ' + e.message)
|
|
41
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
42
|
-
log.bright.yellow ('[Exchange Error] ' + e.message)
|
|
43
|
-
} else if (e instanceof ccxt.NetworkError) {
|
|
44
|
-
log.bright.yellow ('[Network Error] ' + e.message)
|
|
45
|
-
} else {
|
|
46
|
-
throw e;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
}) ()
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
import ololog from 'ololog';
|
|
3
|
-
import asTable from 'as-table';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const { noLocate } = ololog;
|
|
7
|
-
const log = noLocate;
|
|
8
|
-
|
|
9
|
-
const exchange = new ccxt.bittrex ({
|
|
10
|
-
'enableRateLimit': true,
|
|
11
|
-
'apiKey': 'YOUR_API_KEY',
|
|
12
|
-
'secret': 'YOUR_API_SECRET',
|
|
13
|
-
});(async () => {
|
|
14
|
-
|
|
15
|
-
await exchange.loadMarkets ()
|
|
16
|
-
|
|
17
|
-
const symbol = 'ETH/BTC'
|
|
18
|
-
, market = exchange.markets[symbol]
|
|
19
|
-
, startingDate = '2017-01-01T00:00:00'
|
|
20
|
-
, now = exchange.milliseconds ()
|
|
21
|
-
|
|
22
|
-
log.bright.green ('\nFetching history for:', symbol, '\n')
|
|
23
|
-
|
|
24
|
-
let allOrders = []
|
|
25
|
-
let since = exchange.parse8601 (startingDate)
|
|
26
|
-
|
|
27
|
-
while (since < now) {
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
|
|
31
|
-
log.bright.blue ('Fetching history for', symbol, 'since', exchange.iso8601 (since))
|
|
32
|
-
const orders = await exchange.fetchClosedOrders (symbol, since)
|
|
33
|
-
log.green.dim ('Fetched', orders.length, 'orders')
|
|
34
|
-
|
|
35
|
-
allOrders = allOrders.concat (orders)
|
|
36
|
-
|
|
37
|
-
if (orders.length) {
|
|
38
|
-
|
|
39
|
-
const lastOrder = orders[orders.length - 1]
|
|
40
|
-
since = lastOrder['timestamp'] + 1
|
|
41
|
-
|
|
42
|
-
} else {
|
|
43
|
-
|
|
44
|
-
break // no more orders left for this symbol, move to next one
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
} catch (e) {
|
|
48
|
-
|
|
49
|
-
log.red.unlimited (e)
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// omit the following keys for a compact table output
|
|
55
|
-
// otherwise it won't fit into the screen width
|
|
56
|
-
const omittedKeys = [
|
|
57
|
-
'info',
|
|
58
|
-
'timestamp',
|
|
59
|
-
'lastTradeTimestamp',
|
|
60
|
-
'fee',
|
|
61
|
-
]
|
|
62
|
-
|
|
63
|
-
log.yellow (asTable (allOrders.map (order => exchange.omit (order, omittedKeys))))
|
|
64
|
-
log.green ('Fetched', allOrders.length, symbol, 'orders in total')
|
|
65
|
-
|
|
66
|
-
// do whatever you want to do with them, calculate profit loss, etc...
|
|
67
|
-
|
|
68
|
-
}) ()
|
|
69
|
-
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const ccxt = require('../../ccxt.js')
|
|
4
|
-
const asTable = require('as-table')
|
|
5
|
-
const log = require('ololog').configure({ locate: false })
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const exchange = new ccxt.blockchaincom({
|
|
9
|
-
'secret': 'YOUR_API_SECRET',
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
// blockchaincom specific internal beneficiary id
|
|
13
|
-
const address = 'BENEFICIARY_ID';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
(async () => {
|
|
17
|
-
|
|
18
|
-
const markets = await exchange.loadMarkets ()
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
const code = 'USDT'
|
|
22
|
-
const amount = 5
|
|
23
|
-
|
|
24
|
-
// fetch withdrawal beneficiary ids
|
|
25
|
-
const whiteList = await exchange.privateGetWhitelistCurrency({'currency': code})
|
|
26
|
-
log('Withdrawl Whitelist', whiteList)
|
|
27
|
-
//
|
|
28
|
-
// [
|
|
29
|
-
// {
|
|
30
|
-
// "whitelistId":"adcd73fb-9ba6-41o7-8c0d-7013482cb88f", // unique id for each beneficiary, to be passed in as address into withdraw ()
|
|
31
|
-
// "name":"John Doe",
|
|
32
|
-
// "currency":"USDT"
|
|
33
|
-
// }
|
|
34
|
-
// ]
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
// withdrawal
|
|
38
|
-
let withdrawal = await exchange.withdraw(code, amount, address, undefined);
|
|
39
|
-
log('Withdrawal', withdrawal)
|
|
40
|
-
|
|
41
|
-
} catch (e) {
|
|
42
|
-
if (e instanceof ccxt.DDoSProtection || e.message.includes('ECONNRESET')) {
|
|
43
|
-
log('[DDoS Protection] ' + e.message)
|
|
44
|
-
} else if (e instanceof ccxt.RequestTimeout) {
|
|
45
|
-
log('[Request Timeout] ' + e.message)
|
|
46
|
-
} else if (e instanceof ccxt.AuthenticationError) {
|
|
47
|
-
log('[Authentication Error] ' + e.message)
|
|
48
|
-
} else if (e instanceof ccxt.ExchangeNotAvailable) {
|
|
49
|
-
log('[Exchange Not Available Error] ' + e.message)
|
|
50
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
51
|
-
log('[Exchange Error] ' + e.message)
|
|
52
|
-
} else if (e instanceof ccxt.NetworkError) {
|
|
53
|
-
log('[Network Error] ' + e.message)
|
|
54
|
-
} else {
|
|
55
|
-
throw e;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
})()
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
// AUTO-TRANSPILE //
|
|
3
|
-
// 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)
|
|
4
|
-
async function example_with_fetch_trades() {
|
|
5
|
-
const exch = new ccxt.binance({});
|
|
6
|
-
const timeframe = '1m';
|
|
7
|
-
const symbol = 'OGN/USDT';
|
|
8
|
-
const since = exch.milliseconds() - 1000 * 60 * 30; // last 30 mins
|
|
9
|
-
const limit = 1000;
|
|
10
|
-
const trades = await exch.fetchTrades(symbol, since, limit);
|
|
11
|
-
const generatedBars = exch.buildOHLCVC(trades, timeframe, since, limit);
|
|
12
|
-
// 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
|
|
13
|
-
console.log('[REST] Constructed', generatedBars.length, 'bars from trades: ', generatedBars);
|
|
14
|
-
}
|
|
15
|
-
async function example_with_watch_trades() {
|
|
16
|
-
const exch = new ccxt.pro.binance({});
|
|
17
|
-
const timeframe = '1m';
|
|
18
|
-
const symbol = 'DOGE/USDT';
|
|
19
|
-
const limit = 1000;
|
|
20
|
-
const since = exch.milliseconds() - 10 * 60 * 1000 * 1000; // last 10 hrs
|
|
21
|
-
let collectedTrades = [];
|
|
22
|
-
const collectedBars = [];
|
|
23
|
-
while (true) {
|
|
24
|
-
const wsTrades = await exch.watchTrades(symbol, since, limit, {});
|
|
25
|
-
collectedTrades = collectedTrades.concat(wsTrades);
|
|
26
|
-
const generatedBars = exch.buildOHLCVC(collectedTrades, timeframe, since, limit);
|
|
27
|
-
// 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.
|
|
28
|
-
for (let i = 0; i < generatedBars.length; i++) {
|
|
29
|
-
const bar = generatedBars[i];
|
|
30
|
-
const barTimestamp = bar[0];
|
|
31
|
-
const collectedBarsLength = collectedBars.length;
|
|
32
|
-
const lastCollectedBarTimestamp = collectedBarsLength > 0 ? collectedBars[collectedBarsLength - 1][0] : 0;
|
|
33
|
-
if (barTimestamp === lastCollectedBarTimestamp) {
|
|
34
|
-
// if timestamps are same, just updarte the last bar
|
|
35
|
-
collectedBars[collectedBarsLength - 1] = bar;
|
|
36
|
-
}
|
|
37
|
-
else if (barTimestamp > lastCollectedBarTimestamp) {
|
|
38
|
-
collectedBars.push(bar);
|
|
39
|
-
// remove the trades from saved array, which were till last collected bar's open timestamp
|
|
40
|
-
collectedTrades = exch.filterBySinceLimit(collectedTrades, barTimestamp);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// Note: first bar would carry incomplete values, please read comment in "buildOHLCVCFromWatchTrades" method definition for further explanation
|
|
44
|
-
console.log('[WS] Constructed', collectedBars.length, 'bars from', symbol, 'trades: ', collectedBars);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
await example_with_fetch_trades();
|
|
48
|
-
await example_with_watch_trades();
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import log from 'ololog';
|
|
5
|
-
import { nice as ansi } from 'ansicolor';
|
|
6
|
-
import asTable from 'as-table';
|
|
7
|
-
|
|
8
|
-
const exchange = new ccxt.coinbasepro ()
|
|
9
|
-
const repeat = 100
|
|
10
|
-
|
|
11
|
-
async function test (symbol) {
|
|
12
|
-
|
|
13
|
-
for (let i = 0; i < repeat; i++) {
|
|
14
|
-
let ticker = await exchange.fetchTicker (symbol)
|
|
15
|
-
log (exchange.id.green, exchange.iso8601 (exchange.milliseconds ()), ticker['datetime'], symbol.green, ticker['last'])
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const concurrent = [
|
|
20
|
-
test ('BTC/USD'),
|
|
21
|
-
test ('ETH/BTC'),
|
|
22
|
-
test ('ETH/USD')
|
|
23
|
-
]
|
|
24
|
-
|
|
25
|
-
Promise.all (concurrent)
|