ccxt 4.2.73 → 4.2.74
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 +5 -5
- package/build.sh +1 -1
- package/dist/ccxt.browser.js +181 -100
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +1 -1
- package/dist/cjs/src/bitget.js +62 -50
- package/dist/cjs/src/bybit.js +90 -30
- package/dist/cjs/src/coinbaseinternational.js +1 -1
- package/dist/cjs/src/htx.js +16 -9
- package/dist/cjs/src/hyperliquid.js +2 -1
- package/dist/cjs/src/pro/krakenfutures.js +8 -7
- package/examples/README.md +308 -0
- package/examples/ccxt.pro/html/watchTicker.html +51 -0
- package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +55 -0
- package/examples/ccxt.pro/js/binance-https-proxy.js +48 -0
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +38 -0
- package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +64 -0
- package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +62 -0
- package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +68 -0
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +82 -0
- package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +59 -0
- package/examples/ccxt.pro/js/exchange-capabitities.js +72 -0
- package/examples/ccxt.pro/js/exchange-close.js +46 -0
- package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +30 -0
- package/examples/ccxt.pro/js/gateio-watch-balance.js +23 -0
- package/examples/ccxt.pro/js/gateio-watch-order-book.js +71 -0
- package/examples/ccxt.pro/js/graceful-shutdown.js +43 -0
- package/examples/ccxt.pro/js/many-exchanges-many-streams.js +37 -0
- package/examples/ccxt.pro/js/okex-create-futures-order.js +48 -0
- package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +54 -0
- package/examples/ccxt.pro/js/okx-watch-tickers.js +31 -0
- package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +46 -0
- package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +26 -0
- package/examples/ccxt.pro/js/one-exchange-many-streams.js +28 -0
- package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +30 -0
- package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +40 -0
- package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +38 -0
- package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +40 -0
- package/examples/ccxt.pro/js/watch-many-orderbooks.js +27 -0
- package/examples/ccxt.pro/js/watch-new-trades-only.js +43 -0
- package/examples/ccxt.pro/js/watch-new-trades.js +42 -0
- package/examples/ccxt.pro/js/watch-trades-many-symbols.js +29 -0
- package/examples/ccxt.pro/js/watch-vs-fetch.js +29 -0
- package/examples/cs/Examples.sln +22 -0
- package/examples/cs/c#.csproj +19 -0
- package/examples/html/basic-cors-proxy.html +46 -0
- package/examples/html/basic-inheritance.html +47 -0
- package/examples/html/basic-poller.html +52 -0
- package/examples/html/basic-rate-limiting.html +49 -0
- package/examples/html/basic.html +43 -0
- package/examples/html/binance-cors-proxy.html +28 -0
- package/examples/html/bitmex-browser-cors-proxy.js +7 -0
- package/examples/html/bitmex-cors.html +46 -0
- package/examples/html/tradingview-charts.html +61 -0
- package/examples/html/webworker/index.html +97 -0
- package/examples/html/webworker/worker.js +43 -0
- package/examples/js/README.md +15 -0
- package/examples/js/advanced-error-handling.js +39 -0
- package/examples/js/aggregate-orderbook.js +54 -0
- package/examples/js/arbitrage-pairs.js +130 -0
- package/examples/js/basic-chart.js +29 -0
- package/examples/js/basic-orderbook-polling.js +13 -0
- package/examples/js/bcc-vs-bch.js +115 -0
- package/examples/js/binance-fetch-all-deposits.js +45 -0
- package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +34 -0
- package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +33 -0
- package/examples/js/binance-fetchTicker-delivery-vs-future.js +31 -0
- package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +41 -0
- package/examples/js/binance-margin-stop-order.js +39 -0
- package/examples/js/binance-server-time.js +34 -0
- package/examples/js/binance-universal-transfer.js +16 -0
- package/examples/js/bitfinex-fetch-trades.js +35 -0
- package/examples/js/bitfinex2-fetch-trades.js +35 -0
- package/examples/js/bitmex-browser-cors-proxy.js +7 -0
- package/examples/js/bitpanda-fetchMyTrades-reduce.js +36 -0
- package/examples/js/bitrue-fetch-balance.js +28 -0
- package/examples/js/bitstamp-private-api.js +115 -0
- package/examples/js/bitstamp-public-api.js +39 -0
- package/examples/js/bittrex-balance.js +50 -0
- package/examples/js/bittrex-fetch-closed-orders-history.js +69 -0
- package/examples/js/blockchaincom-withdrawal.js +59 -0
- package/examples/js/build-ohlcv-bars.js +48 -0
- package/examples/js/builtin-rate-limiting-rest-poller.js +25 -0
- package/examples/js/bybit-trailing.js +62 -0
- package/examples/js/bybit-updated.cjs +154 -0
- package/examples/js/cli.js +405 -0
- package/examples/js/coinbase-fetch-all-balances.js +36 -0
- package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +47 -0
- package/examples/js/coinex-futures.js +75 -0
- package/examples/js/coinone-fetch-tickers.js +54 -0
- package/examples/js/coinone-markets.js +16 -0
- package/examples/js/compare-two-exchanges-capabilities.js +36 -0
- package/examples/js/cors-proxy.js +5 -0
- package/examples/js/create-order-handle-errors.js +55 -0
- package/examples/js/create-order-position-with-takeprofit-stoploss.js +71 -0
- package/examples/js/create-order-with-retry.js +65 -0
- package/examples/js/create-order-ws-example.js +25 -0
- package/examples/js/create-orders-example.js +17 -0
- package/examples/js/create-trailing-amount-order.js +36 -0
- package/examples/js/create-trailing-percent-order.js +36 -0
- package/examples/js/credentials.json +5 -0
- package/examples/js/custom-proxy-agent-for-js.js +10 -0
- package/examples/js/custom-proxy-url.js +23 -0
- package/examples/js/delta-maintenance-margin-rate-max-leverage.js +60 -0
- package/examples/js/env-variables.js +26 -0
- package/examples/js/error-handling.js +89 -0
- package/examples/js/exchange-capabilities.js +135 -0
- package/examples/js/exchanges-by-volume.js +60 -0
- package/examples/js/exchanges.js +40 -0
- package/examples/js/fetch-all-balances.js +219 -0
- package/examples/js/fetch-all-tickers-to-files-2.js +53 -0
- package/examples/js/fetch-all-tickers-to-files.js +77 -0
- package/examples/js/fetch-balance.js +28 -0
- package/examples/js/fetch-create-deposit-address.js +101 -0
- package/examples/js/fetch-from-many-exchanges-simultaneously.js +21 -0
- package/examples/js/fetch-funding-rate-history.js +25 -0
- package/examples/js/fetch-futures/prettier.config.js +5 -0
- package/examples/js/fetch-futures/src/index.js +25 -0
- package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +72 -0
- package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +39 -0
- package/examples/js/fetch-ohlcv.js +16 -0
- package/examples/js/fetch-okex-futures.js +22 -0
- package/examples/js/fetch-orders.js +27 -0
- package/examples/js/fetch-ticker-from-multiple-exchanges.js +35 -0
- package/examples/js/fetch-ticker-where-available.js +75 -0
- package/examples/js/fetch-tickers/build/index.js +19 -0
- package/examples/js/fetch-tickers/prettier.config.js +5 -0
- package/examples/js/fetch-tickers/src/index.js +17 -0
- package/examples/js/gateio-create-batch-order.js +43 -0
- package/examples/js/gateio-futures.js +49 -0
- package/examples/js/gateio-open-close-contract.js +49 -0
- package/examples/js/gateio-swaps.js +74 -0
- package/examples/js/gdax-fetch-trades-pagination.js +29 -0
- package/examples/js/hitbtc2-withdraw.js +61 -0
- package/examples/js/how-to-import-one-exchange-esm.js +10 -0
- package/examples/js/huobi-futures.js +71 -0
- package/examples/js/huobi-open-close-contract.js +63 -0
- package/examples/js/huobi-swaps.js +70 -0
- package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +98 -0
- package/examples/js/hybridCJSExample.cjs +19 -0
- package/examples/js/hybridESMExample.js +19 -0
- package/examples/js/idex-fetch-balance.js +13 -0
- package/examples/js/instantiate-all-at-once.js +46 -0
- package/examples/js/instantiate-all-from-json.js +31 -0
- package/examples/js/kraken-create-and-close-position.js +54 -0
- package/examples/js/kraken-fetch-order-trades.js +33 -0
- package/examples/js/kraken-margin-trading.js +89 -0
- package/examples/js/kucoin-rate-limit.js +38 -0
- package/examples/js/latoken-example.js +108 -0
- package/examples/js/live-orderbook.js +106 -0
- package/examples/js/live-ticker.js +80 -0
- package/examples/js/live-tickers.js +74 -0
- package/examples/js/load-all-contracts.js +41 -0
- package/examples/js/load-all-symbols-at-once.js +69 -0
- package/examples/js/load-all-tickers-at-once.js +91 -0
- package/examples/js/load-markets-to-files.js +57 -0
- package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +61 -0
- package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +91 -0
- package/examples/js/margin-loan-borrow-buy-sell-repay.js +70 -0
- package/examples/js/market-status-and-currency-status.js +29 -0
- package/examples/js/ohlcv-console-chart.js +29 -0
- package/examples/js/okex-fetch-closed-orders-archive.js +31 -0
- package/examples/js/okex-transfer.js +51 -0
- package/examples/js/okx-poll-fetch-my-trades.js +37 -0
- package/examples/js/okx-poll-rate-limit.js +48 -0
- package/examples/js/order-book-extra-level-depth-param.js +20 -0
- package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +49 -0
- package/examples/js/poll-ohlcv.js +43 -0
- package/examples/js/poloniex-fetch-order-books.js +35 -0
- package/examples/js/poloniex-limits-amount-min.js +62 -0
- package/examples/js/proxy-round-robin.js +98 -0
- package/examples/js/proxy-usage.js +32 -0
- package/examples/js/sample-local-proxy-server-with-cors.js +12 -0
- package/examples/js/search-all-exchanges.js +159 -0
- package/examples/js/shared-load-markets.js +80 -0
- package/examples/js/sort-swap-markets-by-hourly-price-change.js +55 -0
- package/examples/js/symbols.js +110 -0
- package/examples/js/theocean.js +41 -0
- package/examples/js/tickers.js +106 -0
- package/examples/js/validate-paginated-data.js +61 -0
- package/examples/js/watch-OHLCV-For-Symbols.js +15 -0
- package/examples/js/watch-OHLCV.js +12 -0
- package/examples/js/watch-OrderBook-For-Symbols.js +11 -0
- package/examples/js/watch-Trades-For-Symbols.js +11 -0
- package/examples/js/watch-tickers.js +11 -0
- package/examples/js/watchOHLCVForSymbols.js +15 -0
- package/examples/js/watchOrderBookForSymbols.js +11 -0
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +2 -0
- package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +1 -0
- package/examples/js/watchPositions-many-exchanges-continuosly.js +49 -0
- package/examples/js/watchPositions.d.ts +2 -0
- package/examples/js/watchPositions.d.ts.map +1 -0
- package/examples/js/watchPositions.js +13 -0
- package/examples/js/watchPositionsForSymbols.d.ts +2 -0
- package/examples/js/watchPositionsForSymbols.d.ts.map +1 -0
- package/examples/js/watchPositionsForSymbols.js +14 -0
- package/examples/js/watchTradesForSymbols.js +11 -0
- package/examples/js/withdraw-from-one-exchange-to-another.js +50 -0
- package/examples/php/README.md +7 -0
- package/examples/py/README.md +15 -0
- package/examples/py/playing_with_ccxt_example.ipynb +222 -0
- package/examples/ts/.eslintrc +111 -0
- package/examples/ts/build-ohlcv-bars.ts +53 -0
- package/examples/ts/cli.ts +397 -0
- package/examples/ts/compare-two-exchanges-capabilities.ts +36 -0
- package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +89 -0
- package/examples/ts/create-order-ws-example.ts +33 -0
- package/examples/ts/create-orders-example.ts +21 -0
- package/examples/ts/create-trailing-amount-order.ts +37 -0
- package/examples/ts/create-trailing-percent-order.ts +37 -0
- package/examples/ts/custom-proxy-agent-for-js.ts +14 -0
- package/examples/ts/fetch-futures/package-lock.json +116 -0
- package/examples/ts/fetch-futures/package.json +34 -0
- package/examples/ts/fetch-futures/prettier.config.js +4 -0
- package/examples/ts/fetch-futures/src/index.ts +28 -0
- package/examples/ts/fetch-futures/tsconfig.json +28 -0
- package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +44 -0
- package/examples/ts/fetch-ohlcv.ts +17 -0
- package/examples/ts/fetch-tickers/package-lock.json +116 -0
- package/examples/ts/fetch-tickers/package.json +34 -0
- package/examples/ts/fetch-tickers/prettier.config.js +4 -0
- package/examples/ts/fetch-tickers/src/index.ts +21 -0
- package/examples/ts/fetch-tickers/tsconfig.json +28 -0
- package/examples/ts/how-to-import-one-exchange-esm.ts +11 -0
- package/examples/ts/kraken-create-and-close-position.ts +69 -0
- package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +72 -0
- package/examples/ts/nextjs-page-router/.eslintrc.json +3 -0
- package/examples/ts/nextjs-page-router/README.md +43 -0
- package/examples/ts/nextjs-page-router/next.config.js +6 -0
- package/examples/ts/nextjs-page-router/package-lock.json +7425 -0
- package/examples/ts/nextjs-page-router/package.json +28 -0
- package/examples/ts/nextjs-page-router/postcss.config.js +6 -0
- package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
- package/examples/ts/nextjs-page-router/src/pages/_app.tsx +6 -0
- package/examples/ts/nextjs-page-router/src/pages/_document.tsx +13 -0
- package/examples/ts/nextjs-page-router/src/pages/balance.tsx +46 -0
- package/examples/ts/nextjs-page-router/src/pages/index.tsx +8 -0
- package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +61 -0
- package/examples/ts/nextjs-page-router/src/styles/globals.css +27 -0
- package/examples/ts/nextjs-page-router/tailwind.config.ts +20 -0
- package/examples/ts/nextjs-page-router/tsconfig.json +22 -0
- package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +62 -0
- package/examples/ts/proxy-usage.ts +41 -0
- package/examples/ts/sample-local-proxy-server-with-cors.ts +15 -0
- package/examples/ts/watch-OHLCV-For-Symbols.ts +17 -0
- package/examples/ts/watch-OHLCV.ts +14 -0
- package/examples/ts/watch-OrderBook-For-Symbols.ts +13 -0
- package/examples/ts/watch-Trades-For-Symbols.ts +13 -0
- package/examples/ts/watch-tickers.ts +13 -0
- package/examples/ts/watchPositions-many-exchanges-continuosly.ts +53 -0
- package/examples/ts/watchPositions.ts +15 -0
- package/examples/ts/watchPositionsForSymbols.ts +16 -0
- package/examples/tsconfig.json +27 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/base/Exchange.d.ts +2 -2
- package/js/src/base/Exchange.js +1 -1
- package/js/src/bitget.js +62 -50
- package/js/src/bybit.d.ts +3 -1
- package/js/src/bybit.js +90 -30
- package/js/src/coinbaseinternational.js +1 -1
- package/js/src/htx.js +16 -9
- package/js/src/hyperliquid.js +2 -1
- package/js/src/pro/krakenfutures.js +8 -7
- package/package.json +4 -1
- package/skip-tests.json +214 -424
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import ccxt from '../../js/ccxt.js';
|
|
4
|
+
import asTable from 'as-table';
|
|
5
|
+
import ololog from 'ololog'
|
|
6
|
+
import config from '../../keys.json';
|
|
7
|
+
import ansicolor from 'ansicolor';
|
|
8
|
+
|
|
9
|
+
const log = ololog.configure ({ locate: false })
|
|
10
|
+
|
|
11
|
+
ansicolor.nice
|
|
12
|
+
|
|
13
|
+
let sleep = (ms) => new Promise (resolve => setTimeout (resolve, ms))
|
|
14
|
+
|
|
15
|
+
let proxies = [
|
|
16
|
+
'', // no proxy by default
|
|
17
|
+
'https://crossorigin.me/',
|
|
18
|
+
'https://cors-anywhere.herokuapp.com/',
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
;(async function main () {
|
|
22
|
+
|
|
23
|
+
let ids = ccxt.exchanges
|
|
24
|
+
let exchanges = {}
|
|
25
|
+
|
|
26
|
+
// instantiate all exchanges
|
|
27
|
+
ccxt.exchanges.forEach (id => {
|
|
28
|
+
if (id in ccxt)
|
|
29
|
+
exchanges[id] = new (ccxt)[id] ({
|
|
30
|
+
verbose: false,
|
|
31
|
+
substituteCommonCurrencyCodes: true,
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
// set up api keys appropriately
|
|
36
|
+
for (let id in config) {
|
|
37
|
+
if (id in exchanges)
|
|
38
|
+
for (let key in config[id])
|
|
39
|
+
exchanges[id][key] = config[id][key]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
log (ids.join (', ').yellow)
|
|
43
|
+
|
|
44
|
+
// load all markets from all exchanges
|
|
45
|
+
|
|
46
|
+
await Promise.all (ids.map (async id => {
|
|
47
|
+
|
|
48
|
+
let exchange = exchanges[id]
|
|
49
|
+
|
|
50
|
+
// basic round-robin proxy scheduler
|
|
51
|
+
let currentProxy = 0
|
|
52
|
+
let maxRetries = proxies.length
|
|
53
|
+
|
|
54
|
+
for (let numRetries = 0; numRetries < maxRetries; numRetries++) {
|
|
55
|
+
|
|
56
|
+
try { // try to load exchange markets using current proxy
|
|
57
|
+
|
|
58
|
+
exchange.proxy = proxies[currentProxy]
|
|
59
|
+
await exchange.loadMarkets ()
|
|
60
|
+
|
|
61
|
+
} catch (e) { // rotate proxies in case of connectivity errors, catch all other exceptions
|
|
62
|
+
|
|
63
|
+
// swallow connectivity exceptions only
|
|
64
|
+
if ((e instanceof ccxt.DDoSProtection) || e.message.includes ('ECONNRESET')) {
|
|
65
|
+
log.bright.yellow (exchange.id + ' [DDoS Protection]')
|
|
66
|
+
} else if (e instanceof ccxt.RequestTimeout) {
|
|
67
|
+
log.bright.yellow (exchange.id + ' [Request Timeout] ' + e.message)
|
|
68
|
+
} else if (e instanceof ccxt.AuthenticationError) {
|
|
69
|
+
log.bright.yellow (exchange.id + ' [Authentication Error] ' + e.message)
|
|
70
|
+
} else if (e instanceof ccxt.ExchangeNotAvailable) {
|
|
71
|
+
log.bright.yellow (exchange.id + ' [Exchange Not Available] ' + e.message)
|
|
72
|
+
} else if (e instanceof ccxt.ExchangeError) {
|
|
73
|
+
log.bright.yellow (exchange.id + ' [Exchange Error] ' + e.message)
|
|
74
|
+
} else {
|
|
75
|
+
throw e; // rethrow all other exceptions
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// retry next proxy in round-robin fashion in case of error
|
|
79
|
+
currentProxy = ++currentProxy % proxies.length
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (exchange.symbols)
|
|
84
|
+
log (id.green, 'loaded', exchange.symbols.length.toString ().green, 'markets')
|
|
85
|
+
|
|
86
|
+
}))
|
|
87
|
+
|
|
88
|
+
log ('Loaded all markets'.green)
|
|
89
|
+
|
|
90
|
+
let table = ccxt.exchanges.map (id => {
|
|
91
|
+
console.log (id)
|
|
92
|
+
let exchange = exchanges[id]
|
|
93
|
+
if (exchange.currencies) {
|
|
94
|
+
let hasBCC = exchange.currencies.includes ('BCC')
|
|
95
|
+
let hasBCH = exchange.currencies.includes ('BCH')
|
|
96
|
+
let hasBoth = (hasBCC && hasBCH)
|
|
97
|
+
return {
|
|
98
|
+
id,
|
|
99
|
+
'BCC': hasBoth ? id.green : (hasBCC ? id.yellow : ''),
|
|
100
|
+
'BCH': hasBCH ? id.green : '',
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
return {
|
|
104
|
+
'id': id.red,
|
|
105
|
+
'BCC': '',
|
|
106
|
+
'BCH': '',
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
log (asTable.configure ({ delimiter: ' | ' }) (table))
|
|
112
|
+
|
|
113
|
+
process.exit ()
|
|
114
|
+
|
|
115
|
+
}) ()
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import ccxt from '../../js/ccxt.js';
|
|
4
|
+
|
|
5
|
+
(async function main () {
|
|
6
|
+
|
|
7
|
+
const exchange = new ccxt.binance ({
|
|
8
|
+
'apiKey': 'YOUR_API_KEY',
|
|
9
|
+
'secret': 'YOUR_SECRET',
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
await exchange.loadMarkets ()
|
|
13
|
+
|
|
14
|
+
// exchange.verbose = true // uncomment for debugging
|
|
15
|
+
|
|
16
|
+
const ninetyDays = 90 * 24 * 60 * 60 * 1000;
|
|
17
|
+
let startTime = exchange.parse8601 ('2018-01-01T00:00:00')
|
|
18
|
+
const now = exchange.milliseconds ()
|
|
19
|
+
const currencyCode = undefined // any currency
|
|
20
|
+
|
|
21
|
+
let allTransactions = []
|
|
22
|
+
|
|
23
|
+
while (startTime < now) {
|
|
24
|
+
|
|
25
|
+
const endTime = startTime + ninetyDays
|
|
26
|
+
|
|
27
|
+
const transactions = await exchange.fetchDeposits (currencyCode, startTime, undefined, {
|
|
28
|
+
'endTime': endTime,
|
|
29
|
+
})
|
|
30
|
+
if (transactions.length) {
|
|
31
|
+
const lastTransaction = transactions[transactions.length - 1]
|
|
32
|
+
startTime = lastTransaction['timestamp'] + 1
|
|
33
|
+
allTransactions = allTransactions.concat (transactions)
|
|
34
|
+
} else {
|
|
35
|
+
startTime = endTime;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
console.log ('Fetched', allTransactions.length, 'transactions')
|
|
40
|
+
for (let i = 0; i < allTransactions.length; i++) {
|
|
41
|
+
const transaction = allTransactions[i]
|
|
42
|
+
console.log (i, transaction['datetime'], transaction['txid'], transaction['currency'], transaction['amount'])
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}) ()
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ccxt = require ('../../ccxt.js')
|
|
4
|
+
|
|
5
|
+
console.log('CCXT Version:', ccxt.version)
|
|
6
|
+
|
|
7
|
+
async function symbolLoop (exchange, symbol, timeframe) {
|
|
8
|
+
while (true) {
|
|
9
|
+
try {
|
|
10
|
+
const ohlcvs = await exchange.fetchOHLCV (symbol, timeframe)
|
|
11
|
+
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, symbol, ohlcvs.length, 'OHLCV candles received')
|
|
12
|
+
// await exchange.sleep (60 * 1000) // sleep if necessary, though not required
|
|
13
|
+
} catch (e) {
|
|
14
|
+
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, symbol, e.constructor.name, e.message)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function main () {
|
|
20
|
+
const exchange = new ccxt.binance ()
|
|
21
|
+
await exchange.loadMarkets ()
|
|
22
|
+
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
23
|
+
const symbols = [
|
|
24
|
+
'BTC/USDT', // unified symbols used here as opposed to exchange-specific market ids
|
|
25
|
+
'ETH/USDT', // more about unified symbols vs exchange-specific ids here:
|
|
26
|
+
'ADA/USDT', // https://github.com/ccxt/ccxt/wiki/Manual#markets
|
|
27
|
+
]
|
|
28
|
+
const timeframe = '1m'
|
|
29
|
+
const loops = symbols.map (symbol => symbolLoop (exchange, symbol, timeframe))
|
|
30
|
+
await Promise.all (loops)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
main ()
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ccxt = require ('../../ccxt.js')
|
|
4
|
+
|
|
5
|
+
console.log('CCXT Version:', ccxt.version)
|
|
6
|
+
|
|
7
|
+
function symbolLoop (exchange, symbol, timeframe) {
|
|
8
|
+
exchange.fetchOHLCV (symbol, timeframe).then (ohlcvs => {
|
|
9
|
+
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, symbol, ohlcvs.length, 'OHLCV candles received')
|
|
10
|
+
setTimeout (() => symbolLoop (exchange, symbol, timeframe), 0)
|
|
11
|
+
}).catch (e => {
|
|
12
|
+
console.log (exchange.iso8601 (exchange.milliseconds ()), exchange.id, symbol, e.constructor.name, e.message)
|
|
13
|
+
setTimeout (() => symbolLoop (exchange, symbol, timeframe), 0)
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function main () {
|
|
18
|
+
const exchange = new ccxt.binance ()
|
|
19
|
+
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
20
|
+
const symbols = [
|
|
21
|
+
'BTC/USDT', // unified symbols used here as opposed to exchange-specific market ids
|
|
22
|
+
'ETH/USDT', // more about unified symbols vs exchange-specific ids here:
|
|
23
|
+
'ADA/USDT', // https://github.com/ccxt/ccxt/wiki/Manual#markets
|
|
24
|
+
]
|
|
25
|
+
const timeframe = '1m'
|
|
26
|
+
exchange.loadMarkets ().then (markets => {
|
|
27
|
+
for (const symbol of symbols) {
|
|
28
|
+
setTimeout (() => symbolLoop (exchange, symbol, timeframe), 0)
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
main ()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import ccxt from '../../js/ccxt.js';
|
|
4
|
+
|
|
5
|
+
async function fetchTickers (exchange) {
|
|
6
|
+
let tickers = undefined
|
|
7
|
+
try {
|
|
8
|
+
// await exchange.loadMarkets () // optional
|
|
9
|
+
tickers = await exchange.fetchTickers ()
|
|
10
|
+
} catch (e) {
|
|
11
|
+
console.error (e.constructor.name, e.message)
|
|
12
|
+
}
|
|
13
|
+
return tickers
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
(async () => {
|
|
17
|
+
|
|
18
|
+
const future = new ccxt.binance ({ options: { defaultType: 'future' }})
|
|
19
|
+
const delivery = new ccxt.binance ({ options: { defaultType: 'delivery' }})
|
|
20
|
+
|
|
21
|
+
// ...
|
|
22
|
+
|
|
23
|
+
const futureTickers = await fetchTickers (future);
|
|
24
|
+
console.log (futureTickers)
|
|
25
|
+
|
|
26
|
+
console.log ('-------------------------------------------')
|
|
27
|
+
|
|
28
|
+
const deliveryTickers = await fetchTickers (delivery);
|
|
29
|
+
console.log (deliveryTickers)
|
|
30
|
+
|
|
31
|
+
}) ()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import ccxt from '../../js/ccxt.js';
|
|
4
|
+
|
|
5
|
+
console.log ('CCXT Version:', ccxt.version)
|
|
6
|
+
|
|
7
|
+
// https://github.com/ccxt/ccxt/issues/10181
|
|
8
|
+
|
|
9
|
+
async function main () {
|
|
10
|
+
|
|
11
|
+
const exchange = new ccxt.binance ({
|
|
12
|
+
'apiKey': 'YOUR_API_KEY',
|
|
13
|
+
'secret': 'YOUR_SECRET',
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const markets = await exchange.loadMarkets ()
|
|
17
|
+
|
|
18
|
+
// exchange.verbose = true // uncomment for debugging purposes
|
|
19
|
+
|
|
20
|
+
const fromEmail = 'sender@example.com' // edit for your values
|
|
21
|
+
, toEmail = 'receiver@example.com' // edit for your values
|
|
22
|
+
, code = 'USDT' // edit for your values
|
|
23
|
+
, amount = 100 // edit for your values
|
|
24
|
+
, futuresType = 1 // 1 for USDT-margined futures,2 for coin-margined futures
|
|
25
|
+
|
|
26
|
+
const currency = exchange.currency (code);
|
|
27
|
+
|
|
28
|
+
const response = await exchange.sapiPostSubAccountFuturesInternalTransfer ({
|
|
29
|
+
'fromEmail': fromEmail, // sender email
|
|
30
|
+
'toEmail': toEmail, // recipient email
|
|
31
|
+
'futuresType': futuresType, // 1 for USDT-margined futures,2 for coin-margined futures
|
|
32
|
+
'asset': currency['id'],
|
|
33
|
+
'amount': exchange.currencyToPrecision (code, amount),
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
console.log (response)
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
main ()
|
|
41
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
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 ()
|
|
@@ -0,0 +1,34 @@
|
|
|
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 ();
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
}) ()
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
}) ()
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
}) ()
|
|
@@ -0,0 +1,7 @@
|
|
|
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')
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
}) ()
|
|
@@ -0,0 +1,28 @@
|
|
|
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 ()
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
})()
|