ccxt 4.2.73 → 4.2.75
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/CHANGELOG.md +206 -10
- package/README.md +10 -9
- package/build.sh +1 -1
- package/dist/ccxt.browser.js +1042 -297
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +4 -1
- package/dist/cjs/src/abstract/tradeogre.js +9 -0
- package/dist/cjs/src/ascendex.js +3 -2
- package/dist/cjs/src/base/Exchange.js +1 -1
- package/dist/cjs/src/bitget.js +62 -50
- package/dist/cjs/src/bitmart.js +1 -0
- package/dist/cjs/src/bybit.js +90 -30
- package/dist/cjs/src/coinbaseinternational.js +1 -1
- package/dist/cjs/src/coinex.js +4 -3
- package/dist/cjs/src/gate.js +1 -0
- package/dist/cjs/src/htx.js +16 -9
- package/dist/cjs/src/hyperliquid.js +2 -1
- package/dist/cjs/src/kraken.js +3 -3
- package/dist/cjs/src/kucoin.js +1 -1
- package/dist/cjs/src/pro/krakenfutures.js +8 -7
- package/dist/cjs/src/tradeogre.js +632 -0
- 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 +5 -2
- package/js/ccxt.js +4 -2
- package/js/src/abstract/tradeogre.d.ts +19 -0
- package/js/src/abstract/tradeogre.js +11 -0
- package/js/src/ascendex.d.ts +2 -7
- package/js/src/ascendex.js +3 -2
- package/js/src/base/Exchange.d.ts +7 -7
- package/js/src/base/Exchange.js +1 -1
- package/js/src/base/types.d.ts +7 -1
- package/js/src/binance.d.ts +1 -1
- package/js/src/bitget.js +62 -50
- package/js/src/bitmart.d.ts +1 -1
- package/js/src/bitmart.js +2 -1
- package/js/src/bybit.d.ts +3 -1
- package/js/src/bybit.js +90 -30
- package/js/src/coinbase.d.ts +4 -4
- package/js/src/coinbaseinternational.d.ts +1 -1
- package/js/src/coinbaseinternational.js +1 -1
- package/js/src/coinbasepro.d.ts +2 -2
- package/js/src/coinex.js +4 -3
- package/js/src/coinlist.d.ts +2 -2
- package/js/src/cryptocom.d.ts +2 -2
- package/js/src/currencycom.d.ts +2 -2
- package/js/src/deribit.d.ts +2 -2
- package/js/src/gate.d.ts +1 -1
- package/js/src/gate.js +1 -0
- package/js/src/htx.d.ts +2 -2
- package/js/src/htx.js +16 -9
- package/js/src/huobijp.d.ts +2 -2
- package/js/src/hyperliquid.js +2 -1
- package/js/src/kraken.d.ts +1 -1
- package/js/src/kraken.js +3 -3
- package/js/src/kucoin.d.ts +3 -3
- package/js/src/kucoin.js +1 -1
- package/js/src/luno.d.ts +2 -2
- package/js/src/mexc.d.ts +3 -3
- package/js/src/ndax.d.ts +2 -2
- package/js/src/novadax.d.ts +2 -2
- package/js/src/okx.d.ts +2 -2
- package/js/src/pro/bitfinex2.d.ts +1 -1
- package/js/src/pro/krakenfutures.js +8 -7
- package/js/src/tradeogre.d.ts +32 -0
- package/js/src/tradeogre.js +633 -0
- package/js/src/woo.d.ts +2 -2
- package/package.json +4 -1
- package/skip-tests.json +219 -424
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nextjs-page-router",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev",
|
|
7
|
+
"build": "next build",
|
|
8
|
+
"start": "next start",
|
|
9
|
+
"lint": "next lint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"ccxt": "^4.1.56",
|
|
13
|
+
"next": "14.0.3",
|
|
14
|
+
"react": "^18",
|
|
15
|
+
"react-dom": "^18"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^20",
|
|
19
|
+
"@types/react": "^18",
|
|
20
|
+
"@types/react-dom": "^18",
|
|
21
|
+
"autoprefixer": "^10.0.1",
|
|
22
|
+
"eslint": "^8",
|
|
23
|
+
"eslint-config-next": "14.0.3",
|
|
24
|
+
"postcss": "^8",
|
|
25
|
+
"tailwindcss": "^3.3.0",
|
|
26
|
+
"typescript": "^5"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import ccxt, { Balances } from 'ccxt'
|
|
2
|
+
|
|
3
|
+
// This is for showcase purposes in prod move this to environment variable like process.env.BINANCEUSDM_API_KEY
|
|
4
|
+
const apiKey = ""
|
|
5
|
+
const secret = ""
|
|
6
|
+
|
|
7
|
+
export async function getServerSideProps () {
|
|
8
|
+
const exchange = new ccxt.kraken({ apiKey, secret })
|
|
9
|
+
const balances = await exchange.fetchBalance()
|
|
10
|
+
// remove undefined values to prevent serializing error
|
|
11
|
+
Object.keys(balances).forEach(key => balances[key] === undefined && delete balances[key])
|
|
12
|
+
return {
|
|
13
|
+
props: {
|
|
14
|
+
balances,
|
|
15
|
+
},
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default function Balance({balances}: {balances: Balances}) {
|
|
20
|
+
return (
|
|
21
|
+
<main className={`flex min-h-screen flex-col items-center justify-between p-24`}>
|
|
22
|
+
<table>
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th>Currency</th>
|
|
26
|
+
<th>Free</th>
|
|
27
|
+
<th>Used</th>
|
|
28
|
+
<th>Total</th>
|
|
29
|
+
</tr>
|
|
30
|
+
</thead>
|
|
31
|
+
<tbody>
|
|
32
|
+
{Object.keys(balances).map((currency: string) => (
|
|
33
|
+
balances[currency].free !== undefined && (
|
|
34
|
+
<tr key={currency}>
|
|
35
|
+
<td>{currency}</td>
|
|
36
|
+
<td>{balances[currency].free}</td>
|
|
37
|
+
<td>{balances[currency].used}</td>
|
|
38
|
+
<td>{balances[currency].total}</td>
|
|
39
|
+
</tr>
|
|
40
|
+
)
|
|
41
|
+
))}
|
|
42
|
+
</tbody>
|
|
43
|
+
</table>
|
|
44
|
+
</main>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export default function Home() {
|
|
2
|
+
return (
|
|
3
|
+
<main className={`flex min-h-screen flex-col items-center space-y-10`}>
|
|
4
|
+
<a className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-700 w-120 m-4" href="/balance">Balance - Using Server Side calls</a>
|
|
5
|
+
<a className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-700 w-120 m-4" href="/tickers">Tickers - Using Client Side websockets</a>
|
|
6
|
+
</main>
|
|
7
|
+
)
|
|
8
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import ccxt, { Exchange, Ticker } from 'ccxt'
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
|
|
4
|
+
const exchangeIds = ['binance', 'bitget', 'bybit', 'cryptocom']
|
|
5
|
+
|
|
6
|
+
export default function Home() {
|
|
7
|
+
const [exchanges, setExchanges] = useState<Record<string, Exchange>>({});
|
|
8
|
+
const [tickers, setTickers] = useState<Record<string, Ticker>>({});
|
|
9
|
+
const [error, setError] = useState<string>();
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
console.log('starting exchanges...');
|
|
13
|
+
const newExchanges: Record<string, Exchange> = exchangeIds.reduce((acc: any, exchangeId) => {
|
|
14
|
+
acc[exchangeId] = new (ccxt.pro as any)[exchangeId];
|
|
15
|
+
return acc;
|
|
16
|
+
}, {});
|
|
17
|
+
setExchanges(newExchanges);
|
|
18
|
+
}, []);
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const fetchTickers = async () => {
|
|
22
|
+
for (const exchangeId in exchanges) {
|
|
23
|
+
try {
|
|
24
|
+
const newTicker = await exchanges[exchangeId].watchTicker('BTC/USDT');
|
|
25
|
+
setTickers(tickers => ({ ...tickers, [exchangeId]: newTicker }));
|
|
26
|
+
} catch (e) {
|
|
27
|
+
setError(exchangeId + ': ' + JSON.stringify(e) + '\n')
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
fetchTickers();
|
|
32
|
+
}, [tickers, exchanges, error]);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<main
|
|
36
|
+
className={`flex min-h-screen flex-col items-center justify-between p-24`}
|
|
37
|
+
>
|
|
38
|
+
<div className="z-10 max-w-5xl w-full font-mono text-sm lg:flex justify-between">
|
|
39
|
+
{exchangeIds.map((exchangeId) => (
|
|
40
|
+
<div key={exchangeId} className="flex-1">
|
|
41
|
+
<h3>{exchangeId}</h3>
|
|
42
|
+
<ul>
|
|
43
|
+
<li>{`last: ${tickers[exchangeId]?.last}`}</li>
|
|
44
|
+
<li>{`high: ${tickers[exchangeId]?.high}`}</li>
|
|
45
|
+
<li>{`low: ${tickers[exchangeId]?.low}`}</li>
|
|
46
|
+
<li>{`bid: ${tickers[exchangeId]?.bid}`}</li>
|
|
47
|
+
<li>{`ask: ${tickers[exchangeId]?.ask}`}</li>
|
|
48
|
+
<li>{`ask volume: ${tickers[exchangeId]?.askVolume}`}</li>
|
|
49
|
+
<li>{`bid volume: ${tickers[exchangeId]?.bidVolume}`}</li>
|
|
50
|
+
<li>{`close: ${tickers[exchangeId]?.close}`}</li>
|
|
51
|
+
</ul>
|
|
52
|
+
</div>
|
|
53
|
+
))}
|
|
54
|
+
</div>
|
|
55
|
+
<div>
|
|
56
|
+
<h3>Last error:</h3>
|
|
57
|
+
<p>{error ? error : "None"}</p>
|
|
58
|
+
</div>
|
|
59
|
+
</main>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--foreground-rgb: 0, 0, 0;
|
|
7
|
+
--background-start-rgb: 214, 219, 220;
|
|
8
|
+
--background-end-rgb: 255, 255, 255;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@media (prefers-color-scheme: dark) {
|
|
12
|
+
:root {
|
|
13
|
+
--foreground-rgb: 255, 255, 255;
|
|
14
|
+
--background-start-rgb: 0, 0, 0;
|
|
15
|
+
--background-end-rgb: 0, 0, 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
body {
|
|
20
|
+
color: rgb(var(--foreground-rgb));
|
|
21
|
+
background: linear-gradient(
|
|
22
|
+
to bottom,
|
|
23
|
+
transparent,
|
|
24
|
+
rgb(var(--background-end-rgb))
|
|
25
|
+
)
|
|
26
|
+
rgb(var(--background-start-rgb));
|
|
27
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Config } from 'tailwindcss'
|
|
2
|
+
|
|
3
|
+
const config: Config = {
|
|
4
|
+
content: [
|
|
5
|
+
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}',
|
|
6
|
+
'./src/components/**/*.{js,ts,jsx,tsx,mdx}',
|
|
7
|
+
'./src/app/**/*.{js,ts,jsx,tsx,mdx}',
|
|
8
|
+
],
|
|
9
|
+
theme: {
|
|
10
|
+
extend: {
|
|
11
|
+
backgroundImage: {
|
|
12
|
+
'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
|
|
13
|
+
'gradient-conic':
|
|
14
|
+
'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
plugins: [],
|
|
19
|
+
}
|
|
20
|
+
export default config
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es5",
|
|
4
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "preserve",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"paths": {
|
|
17
|
+
"@/*": ["./src/*"]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
|
|
21
|
+
"exclude": ["node_modules"]
|
|
22
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import ccxt from '../../js/ccxt.js';
|
|
3
|
+
|
|
4
|
+
// AUTO-TRANSPILE //
|
|
5
|
+
|
|
6
|
+
// ------------------------------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
async function example () {
|
|
9
|
+
const exchange = new ccxt.phemex ({
|
|
10
|
+
'apiKey': 'YOUR_API_KEY',
|
|
11
|
+
'secret': 'YOUR_API_SECRET',
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const symbol = 'XRP/USDT:USDT';
|
|
15
|
+
const side = 'buy'; // set it to 'buy' for a long position, 'sell' for a short position
|
|
16
|
+
const order_type = 'limit'; // set it to 'market' or 'limit'
|
|
17
|
+
const amount = 1; // how many contracts
|
|
18
|
+
const price = 0.5; // set a price at your desired level
|
|
19
|
+
|
|
20
|
+
// take profit and stop loss prices and types
|
|
21
|
+
const take_profit_trigger_price = 0.6;
|
|
22
|
+
const stop_loss_trigger_price = 0.4;
|
|
23
|
+
const take_profit_limit_price = 0.7;
|
|
24
|
+
const stop_loss_limit_price = 0.3;
|
|
25
|
+
|
|
26
|
+
await exchange.loadMarkets ();
|
|
27
|
+
|
|
28
|
+
// when symbol's price reaches your predefined "trigger price", stop-loss order would be activated as a "market order". but if you want it to be activated as a "limit order", then set a 'price' parameter for it
|
|
29
|
+
const params = {
|
|
30
|
+
'posSide': 'Long', // "Long" / "Short" for hedge mode
|
|
31
|
+
'stopLoss': {
|
|
32
|
+
'triggerPrice': stop_loss_trigger_price,
|
|
33
|
+
'type': 'limit',
|
|
34
|
+
'price': stop_loss_limit_price,
|
|
35
|
+
},
|
|
36
|
+
'takeProfit': {
|
|
37
|
+
'triggerPrice': take_profit_trigger_price,
|
|
38
|
+
'type': 'limit',
|
|
39
|
+
'price': take_profit_limit_price,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
console.log ('-----------------------------------------------------------------------');
|
|
44
|
+
|
|
45
|
+
// exchange.verbose = True // uncomment for debugging purposes if necessary
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const created_order = await exchange.createOrder (symbol, order_type, side, amount, price, params);
|
|
49
|
+
console.log ('Created an order', created_order);
|
|
50
|
+
|
|
51
|
+
// Fetch all your open orders for this symbol
|
|
52
|
+
const all_open_orders = await exchange.fetchOpenOrders (symbol);
|
|
53
|
+
console.log ('Fetched all your orders for this symbol', all_open_orders);
|
|
54
|
+
|
|
55
|
+
// To cancel a limit order, use "exchange.cancel_order(created_order['id'], symbol)""
|
|
56
|
+
} catch (e) {
|
|
57
|
+
console.log (e.toString ());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
await example ();
|
|
62
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
import ccxt from '../../js/ccxt.js';
|
|
3
|
+
|
|
4
|
+
// AUTO-TRANSPILE //
|
|
5
|
+
|
|
6
|
+
// ABOUT CCXT PROXIES, READ MORE AT: https://docs.ccxt.com/#/README?id=proxy
|
|
7
|
+
|
|
8
|
+
async function example_proxyUrl () {
|
|
9
|
+
const myEx = new ccxt.kucoin ();
|
|
10
|
+
myEx.proxyUrl = 'http://5.75.153.75:8090/proxy_url.php?caller=https://ccxt.com&url=';
|
|
11
|
+
console.log (await myEx.fetch ('https://api.ipify.org/'));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async function example_httpProxy () {
|
|
15
|
+
const myEx = new ccxt.kucoin ();
|
|
16
|
+
myEx.httpProxy = 'http://5.75.153.75:8002'; // "httpProxy" or "httpsProxy" (depending on your proxy protocol)
|
|
17
|
+
console.log (await myEx.fetch ('https://api.ipify.org/'));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async function example_socksProxy () {
|
|
21
|
+
const myEx = new ccxt.kucoin ();
|
|
22
|
+
myEx.socksProxy = 'socks5://127.0.0.1:1080'; // from protocols: socks, socks5, socks5h
|
|
23
|
+
console.log (await myEx.fetch ('https://api.ipify.org/'));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async function example_webSockets () {
|
|
27
|
+
const myEx = new ccxt.pro.kucoin ();
|
|
28
|
+
myEx.httpProxy = 'http://5.75.153.75:8002'; // even though you are using WebSockets, you might also need to set up proxy for the exchange's REST requests
|
|
29
|
+
myEx.wsProxy = 'http://5.75.153.75:8002'; // "wsProxy" or "wssProxy" or "wsSocksProxy" (depending on your proxy protocol)
|
|
30
|
+
await myEx.loadMarkets ();
|
|
31
|
+
while (true) {
|
|
32
|
+
const ticker = await myEx.watchTicker ('BTC/USDT');
|
|
33
|
+
console.log (ticker);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
await example_proxyUrl ();
|
|
39
|
+
// await example_httpProxy ();
|
|
40
|
+
// await example_socksProxy ();
|
|
41
|
+
// await example_webSockets ();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// JavaScript sample Proxy with CORS support
|
|
3
|
+
|
|
4
|
+
// Save this in a file like cors.js and run with:
|
|
5
|
+
// node cors [port]
|
|
6
|
+
// It will listen for your requests on the port you pass in command line (or port 8080 by default)
|
|
7
|
+
|
|
8
|
+
import cors from 'cors-anywhere'; // npm install cors-anywhere
|
|
9
|
+
|
|
10
|
+
const port = (process.argv.length > 2) ? parseInt (process.argv[2]) : 8080; // if not provided from cli, default to 8080
|
|
11
|
+
cors.createServer ({
|
|
12
|
+
// you can set origin, if needed by exchange
|
|
13
|
+
// setHeaders: { 'origin': 'https://www.bitmex.com' }
|
|
14
|
+
}).listen (port, 'localhost');
|
|
15
|
+
console.log ('Running CORS Anywhere on localhost:' + port);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const binance = new ccxt.pro.binance ({});
|
|
7
|
+
const subscriptions = [
|
|
8
|
+
[ 'BTC/USDT', '5m' ],
|
|
9
|
+
[ 'ETH/USDT', '5m' ],
|
|
10
|
+
[ 'BTC/USDT', '1h' ],
|
|
11
|
+
];
|
|
12
|
+
while (true) {
|
|
13
|
+
const ohlcv = await binance.watchOHLCVForSymbols (subscriptions);
|
|
14
|
+
console.log (ohlcv);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
await example ();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const binance = new ccxt.pro.binance ({});
|
|
7
|
+
const symbol = 'BTC/USDT';
|
|
8
|
+
const timeframe = '1m';
|
|
9
|
+
while (true) {
|
|
10
|
+
const ohlcv = await binance.watchOHLCV (symbol, timeframe);
|
|
11
|
+
console.log (ohlcv);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
await example ();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const binance = new ccxt.pro.binance ({});
|
|
7
|
+
const symbols = [ 'BTC/USDT', 'ETH/USDT', 'DOGE/USDT' ];
|
|
8
|
+
while (true) {
|
|
9
|
+
const orderbook = await binance.watchOrderBookForSymbols (symbols);
|
|
10
|
+
console.log (orderbook['symbol'], orderbook['asks'][0], orderbook['bids'][0]);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
await example ();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const binance = new ccxt.pro.binance ({});
|
|
7
|
+
const symbols = [ 'BTC/USDT', 'ETH/USDT', 'DOGE/USDT' ];
|
|
8
|
+
while (true) {
|
|
9
|
+
const trades = await binance.watchTradesForSymbols (symbols);
|
|
10
|
+
console.log (trades);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
await example ();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const binance = new ccxt.pro.binance ({});
|
|
7
|
+
const symbols = [ 'BTC/USDT', 'ETH/USDT', 'DOGE/USDT' ];
|
|
8
|
+
while (true) {
|
|
9
|
+
const tickers = await binance.watchTickers (symbols);
|
|
10
|
+
console.log (tickers['BTC/USDT'], tickers['ETH/USDT'], tickers['DOGE/USDT']);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
await example ();
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
// watch and handle constinuosly
|
|
6
|
+
async function watchPositionsContinuously (exchange) {
|
|
7
|
+
while (true) {
|
|
8
|
+
try {
|
|
9
|
+
const positions = await exchange.watchPositions ();
|
|
10
|
+
console.log ('Fetched ', exchange.id, ' - Positions: ', positions);
|
|
11
|
+
} catch (e) {
|
|
12
|
+
console.log (e);
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// start exchanges and fetch OHLCV loop
|
|
19
|
+
async function startExchange (exchangeName, config) {
|
|
20
|
+
const ex = new ccxt[exchangeName] (config);
|
|
21
|
+
const promises = [];
|
|
22
|
+
promises.push (watchPositionsContinuously (ex));
|
|
23
|
+
await Promise.all (promises);
|
|
24
|
+
await ex.close ();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// main function
|
|
28
|
+
async function example () {
|
|
29
|
+
const exchanges = {
|
|
30
|
+
'binanceusdm': {
|
|
31
|
+
'apiKey': 'YOUR_API_KEY',
|
|
32
|
+
'secret': 'YOUR_API_SECRET',
|
|
33
|
+
},
|
|
34
|
+
'okx': {
|
|
35
|
+
'apiKey': 'YOUR_API_KEY',
|
|
36
|
+
'secret': 'YOUR_API_SECRET',
|
|
37
|
+
},
|
|
38
|
+
'huobi':{
|
|
39
|
+
'apiKey': 'YOUR_API_KEY',
|
|
40
|
+
'secret': 'YOUR_API_SECRET',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const promises = [];
|
|
44
|
+
const exchangeIds = Object.keys (exchanges);
|
|
45
|
+
for (let i = 0; i < exchangeIds.length; i++) {
|
|
46
|
+
const exchangeName = exchangeIds[i];
|
|
47
|
+
const config = exchanges[exchangeName];
|
|
48
|
+
promises.push (startExchange (exchangeName, config));
|
|
49
|
+
}
|
|
50
|
+
await Promise.all (promises);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
await example ();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const exchange = new ccxt.pro.binanceusdm ({
|
|
7
|
+
'apiKey': 'YOUR_API_KEY',
|
|
8
|
+
'secret': 'YOUR_API_SECRET'
|
|
9
|
+
});
|
|
10
|
+
while (true) {
|
|
11
|
+
const trades = await exchange.watchPositions ();
|
|
12
|
+
console.log (trades);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
await example ();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import ccxt from '../../js/ccxt.js';
|
|
2
|
+
|
|
3
|
+
// AUTO-TRANSPILE //
|
|
4
|
+
|
|
5
|
+
async function example () {
|
|
6
|
+
const exchange = new ccxt.pro.binanceusdm ({
|
|
7
|
+
'apiKey': 'YOUR_API_KEY',
|
|
8
|
+
'secret': 'Your_API_SECRET'
|
|
9
|
+
});
|
|
10
|
+
const symbols = [ 'BTC/USDT:USDT', 'ETH/USDT:USDT', 'DOGE/USDT:USDT' ];
|
|
11
|
+
while (true) {
|
|
12
|
+
const trades = await exchange.watchPositions (symbols);
|
|
13
|
+
console.log (trades);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
await example ();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2020",
|
|
4
|
+
"lib": [],
|
|
5
|
+
"types": ["node"],
|
|
6
|
+
"module": "ES2022",
|
|
7
|
+
"moduleResolution": "Node",
|
|
8
|
+
"allowJs": true,
|
|
9
|
+
"checkJs": false,
|
|
10
|
+
"rootDir": "./ts",
|
|
11
|
+
"outDir": "./js",
|
|
12
|
+
"removeComments": false,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"forceConsistentCasingInFileNames": true,
|
|
15
|
+
"strict": true,
|
|
16
|
+
"noImplicitAny": false,
|
|
17
|
+
"skipLibCheck": true,
|
|
18
|
+
"strictNullChecks":false
|
|
19
|
+
},
|
|
20
|
+
"include": [
|
|
21
|
+
"./ts/*.ts",
|
|
22
|
+
],
|
|
23
|
+
"exclude": [
|
|
24
|
+
"node_modules/",
|
|
25
|
+
"./ts/cli.ts",
|
|
26
|
+
]
|
|
27
|
+
}
|
package/js/ccxt.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
|
|
|
4
4
|
import * as errors from './src/base/errors.js';
|
|
5
5
|
import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages } from './src/base/types.js';
|
|
6
6
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
|
|
7
|
-
declare const version = "4.2.
|
|
7
|
+
declare const version = "4.2.74";
|
|
8
8
|
import ace from './src/ace.js';
|
|
9
9
|
import alpaca from './src/alpaca.js';
|
|
10
10
|
import ascendex from './src/ascendex.js';
|
|
@@ -99,6 +99,7 @@ import poloniexfutures from './src/poloniexfutures.js';
|
|
|
99
99
|
import probit from './src/probit.js';
|
|
100
100
|
import timex from './src/timex.js';
|
|
101
101
|
import tokocrypto from './src/tokocrypto.js';
|
|
102
|
+
import tradeogre from './src/tradeogre.js';
|
|
102
103
|
import upbit from './src/upbit.js';
|
|
103
104
|
import wavesexchange from './src/wavesexchange.js';
|
|
104
105
|
import wazirx from './src/wazirx.js';
|
|
@@ -265,6 +266,7 @@ declare const exchanges: {
|
|
|
265
266
|
probit: typeof probit;
|
|
266
267
|
timex: typeof timex;
|
|
267
268
|
tokocrypto: typeof tokocrypto;
|
|
269
|
+
tradeogre: typeof tradeogre;
|
|
268
270
|
upbit: typeof upbit;
|
|
269
271
|
wavesexchange: typeof wavesexchange;
|
|
270
272
|
wazirx: typeof wazirx;
|
|
@@ -504,6 +506,7 @@ declare const ccxt: {
|
|
|
504
506
|
probit: typeof probit;
|
|
505
507
|
timex: typeof timex;
|
|
506
508
|
tokocrypto: typeof tokocrypto;
|
|
509
|
+
tradeogre: typeof tradeogre;
|
|
507
510
|
upbit: typeof upbit;
|
|
508
511
|
wavesexchange: typeof wavesexchange;
|
|
509
512
|
wazirx: typeof wazirx;
|
|
@@ -513,5 +516,5 @@ declare const ccxt: {
|
|
|
513
516
|
zaif: typeof zaif;
|
|
514
517
|
zonda: typeof zonda;
|
|
515
518
|
} & typeof functions & typeof errors;
|
|
516
|
-
export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseinternational, coinbasepro, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
|
|
519
|
+
export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseinternational, coinbasepro, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
|
|
517
520
|
export default ccxt;
|
package/js/ccxt.js
CHANGED
|
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
|
|
|
38
38
|
import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
|
|
39
39
|
//-----------------------------------------------------------------------------
|
|
40
40
|
// this is updated by vss.js when building
|
|
41
|
-
const version = '4.2.
|
|
41
|
+
const version = '4.2.75';
|
|
42
42
|
Exchange.ccxtVersion = version;
|
|
43
43
|
//-----------------------------------------------------------------------------
|
|
44
44
|
import ace from './src/ace.js';
|
|
@@ -135,6 +135,7 @@ import poloniexfutures from './src/poloniexfutures.js';
|
|
|
135
135
|
import probit from './src/probit.js';
|
|
136
136
|
import timex from './src/timex.js';
|
|
137
137
|
import tokocrypto from './src/tokocrypto.js';
|
|
138
|
+
import tradeogre from './src/tradeogre.js';
|
|
138
139
|
import upbit from './src/upbit.js';
|
|
139
140
|
import wavesexchange from './src/wavesexchange.js';
|
|
140
141
|
import wazirx from './src/wazirx.js';
|
|
@@ -302,6 +303,7 @@ const exchanges = {
|
|
|
302
303
|
'probit': probit,
|
|
303
304
|
'timex': timex,
|
|
304
305
|
'tokocrypto': tokocrypto,
|
|
306
|
+
'tradeogre': tradeogre,
|
|
305
307
|
'upbit': upbit,
|
|
306
308
|
'wavesexchange': wavesexchange,
|
|
307
309
|
'wazirx': wazirx,
|
|
@@ -388,6 +390,6 @@ pro.exchanges = Object.keys(pro);
|
|
|
388
390
|
pro['Exchange'] = Exchange; // now the same for rest and ts
|
|
389
391
|
//-----------------------------------------------------------------------------
|
|
390
392
|
const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
|
|
391
|
-
export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseinternational, coinbasepro, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
|
|
393
|
+
export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseinternational, coinbasepro, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
|
|
392
394
|
export default ccxt;
|
|
393
395
|
//-----------------------------------------------------------------------------
|