ccxt 4.2.100 → 4.3.2
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 +6 -5
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/Exchange.js +3 -0
- package/dist/cjs/src/binance.js +56 -0
- package/dist/cjs/src/bingx.js +2 -2
- package/dist/cjs/src/bitget.js +69 -5
- package/dist/cjs/src/bybit.js +1 -1
- package/dist/cjs/src/coinbase.js +2 -1
- package/dist/cjs/src/coinbasepro.js +1 -1
- package/dist/cjs/src/coinex.js +164 -206
- package/dist/cjs/src/cryptocom.js +5 -5
- package/dist/cjs/src/hyperliquid.js +74 -0
- package/dist/cjs/src/kraken.js +8 -3
- package/dist/cjs/src/kucoin.js +13 -11
- 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/base/Exchange.d.ts +2 -1
- package/js/src/base/Exchange.js +3 -0
- package/js/src/base/types.d.ts +5 -0
- 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 +69 -5
- package/js/src/bybit.js +1 -1
- package/js/src/coinbase.js +2 -1
- package/js/src/coinbasepro.d.ts +1 -1
- package/js/src/coinbasepro.js +1 -1
- package/js/src/coinex.js +164 -206
- package/js/src/cryptocom.js +5 -5
- package/js/src/hyperliquid.d.ts +2 -1
- package/js/src/hyperliquid.js +75 -1
- package/js/src/kraken.js +8 -3
- package/js/src/kucoin.js +13 -11
- 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/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
- 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,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
|
|
5
|
-
async function test () {
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.okex ()
|
|
8
|
-
await exchange.loadMarkets ()
|
|
9
|
-
|
|
10
|
-
for (let symbol in exchange.markets) {
|
|
11
|
-
|
|
12
|
-
const market = exchange.markets[symbol]
|
|
13
|
-
|
|
14
|
-
if (market['future']) {
|
|
15
|
-
console.log ('----------------------------------------------------')
|
|
16
|
-
console.log (symbol, await exchange.fetchTicker (symbol))
|
|
17
|
-
await ccxt.sleep (exchange.rateLimit)
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
test ()
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
import log from 'ololog';
|
|
6
|
-
import ansicolor from 'ansicolor';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ansicolor.nice
|
|
10
|
-
|
|
11
|
-
const exchange = new ccxt.bittrex ({
|
|
12
|
-
apiKey: "YOUR_API_KEY",
|
|
13
|
-
secret: "YOUR_SECRET",
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
async function test () {
|
|
17
|
-
|
|
18
|
-
const orders = await exchange.fetchOrders ()
|
|
19
|
-
|
|
20
|
-
log (asTable (orders.map (order => ccxt.omit (order, [ 'timestamp', 'info' ]))))
|
|
21
|
-
|
|
22
|
-
const order = await exchange.fetchOrder (orders[0]['id'])
|
|
23
|
-
|
|
24
|
-
log (order)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
test ()
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
(async () => {
|
|
5
|
-
|
|
6
|
-
const exchanges = [
|
|
7
|
-
'bittrex',
|
|
8
|
-
'poloniex',
|
|
9
|
-
]
|
|
10
|
-
|
|
11
|
-
const symbol = 'BTC/USDT'
|
|
12
|
-
const tickers = {}
|
|
13
|
-
|
|
14
|
-
await Promise.all (exchanges.map (exchangeId =>
|
|
15
|
-
|
|
16
|
-
new Promise (async (resolve, reject) => {
|
|
17
|
-
|
|
18
|
-
const exchange = new ccxt[exchangeId] ()
|
|
19
|
-
|
|
20
|
-
while (true) {
|
|
21
|
-
|
|
22
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
23
|
-
tickers[exchangeId] = ticker
|
|
24
|
-
|
|
25
|
-
Object.keys (tickers).map (exchangeId => {
|
|
26
|
-
const ticker = tickers[exchangeId]
|
|
27
|
-
console.log (ticker['datetime'], exchangeId, ticker['bid'], ticker['ask'])
|
|
28
|
-
})
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
))
|
|
34
|
-
|
|
35
|
-
}) ()
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
import log from 'ololog';
|
|
6
|
-
import ansicolor from 'ansicolor';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ansicolor.nice
|
|
10
|
-
|
|
11
|
-
let printUsage = function () {
|
|
12
|
-
log ('Usage: node', process.argv[1], 'symbol'.green)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
;(async function main () {
|
|
16
|
-
|
|
17
|
-
if (process.argv.length > 2) {
|
|
18
|
-
|
|
19
|
-
let symbol = process.argv[2].toUpperCase ()
|
|
20
|
-
|
|
21
|
-
for (let i = 0; i < ccxt.exchanges.length; i++) {
|
|
22
|
-
|
|
23
|
-
let id = ccxt.exchanges[i]
|
|
24
|
-
|
|
25
|
-
const exchange = new ccxt[id] ()
|
|
26
|
-
if (exchange.has.fetchTicker) {
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
|
|
30
|
-
await exchange.loadMarkets ()
|
|
31
|
-
|
|
32
|
-
if (exchange.symbols.includes (symbol)) {
|
|
33
|
-
|
|
34
|
-
log (id.green)
|
|
35
|
-
|
|
36
|
-
const ticker = await exchange.fetchTicker (symbol)
|
|
37
|
-
|
|
38
|
-
log.dim (ticker)
|
|
39
|
-
|
|
40
|
-
if (ticker['baseVolume'] && ticker['quoteVolume']) {
|
|
41
|
-
|
|
42
|
-
if (ticker['bid'] > 1) {
|
|
43
|
-
|
|
44
|
-
if (ticker['baseVolume'] > ticker['quoteVolume'])
|
|
45
|
-
log (id.bright, 'baseVolume > quoteVolume ← !'.bright)
|
|
46
|
-
|
|
47
|
-
} else {
|
|
48
|
-
|
|
49
|
-
if (ticker['baseVolume'] < ticker['quoteVolume'])
|
|
50
|
-
log (id.bright, 'baseVolume < quoteVolume ← !'.bright)
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
} else {
|
|
57
|
-
|
|
58
|
-
log (id.yellow)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
} catch (e) {
|
|
62
|
-
|
|
63
|
-
log.error (id.red, e.toString ().red)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
} else {
|
|
69
|
-
|
|
70
|
-
printUsage ()
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
process.exit ()
|
|
74
|
-
|
|
75
|
-
}) ()
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Example code in typescript
|
|
3
|
-
// Based on /examples/js/fetch-from-many-exchanges-simultaneously.js
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
const ccxt = require("ccxt");
|
|
6
|
-
const log = require('ololog');
|
|
7
|
-
const symbol = 'BTC/USD';
|
|
8
|
-
const exchanges = ['coinbasepro', 'gemini', 'kraken'];
|
|
9
|
-
const fetchTickers = async (symbol) => {
|
|
10
|
-
const result = await Promise.all(exchanges.map(async (id) => {
|
|
11
|
-
const CCXT = ccxt; // Hack!
|
|
12
|
-
const exchange = new CCXT[id]({ 'enableRateLimit': true });
|
|
13
|
-
const ticker = await exchange.fetchTicker(symbol);
|
|
14
|
-
const exchangeExtended = exchange.extend({ 'exchange': id }, ticker);
|
|
15
|
-
return exchangeExtended;
|
|
16
|
-
}));
|
|
17
|
-
log(result);
|
|
18
|
-
};
|
|
19
|
-
fetchTickers(symbol);
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Example code in typescript
|
|
2
|
-
// Based on /examples/js/fetch-from-many-exchanges-simultaneously.js
|
|
3
|
-
import * as ccxt from 'ccxt';
|
|
4
|
-
const log = require('ololog');
|
|
5
|
-
const symbol = 'BTC/USD';
|
|
6
|
-
const exchanges = ['coinbasepro', 'gemini', 'kraken'];
|
|
7
|
-
const fetchTickers = async (symbol) => {
|
|
8
|
-
const result = await Promise.all(exchanges.map(async (id) => {
|
|
9
|
-
const CCXT = ccxt; // Hack!
|
|
10
|
-
const exchange = new CCXT[id]({ 'enableRateLimit': true });
|
|
11
|
-
const ticker = await exchange.fetchTicker(symbol);
|
|
12
|
-
const exchangeExtended = exchange.extend({ 'exchange': id }, ticker);
|
|
13
|
-
return exchangeExtended;
|
|
14
|
-
}));
|
|
15
|
-
log(result);
|
|
16
|
-
};
|
|
17
|
-
fetchTickers(symbol);
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
const ccxt = require ('../../ccxt');
|
|
2
|
-
|
|
3
|
-
console.log ('CCXT Version:', ccxt.version);
|
|
4
|
-
|
|
5
|
-
async function main () {
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.gateio ({
|
|
8
|
-
'apiKey': 'YOUR_API_KEY',
|
|
9
|
-
'secret': 'YOUR_API_SECRET',
|
|
10
|
-
});
|
|
11
|
-
await exchange.loadMarkets ();
|
|
12
|
-
|
|
13
|
-
const ada = exchange.market ('ADA/USDT');
|
|
14
|
-
const xrp = exchange.market ('XRP/USDT');
|
|
15
|
-
|
|
16
|
-
const orders = await exchange.privateSpotPostBatchOrders (
|
|
17
|
-
[
|
|
18
|
-
{
|
|
19
|
-
text: "t-123456",
|
|
20
|
-
currency_pair: ada['id'],
|
|
21
|
-
type: "limit",
|
|
22
|
-
account: "spot",
|
|
23
|
-
side: "buy",
|
|
24
|
-
amount: "3",
|
|
25
|
-
price: "0.4",
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
text: "t-123456",
|
|
29
|
-
currency_pair: xrp['id'],
|
|
30
|
-
type: "limit",
|
|
31
|
-
account: "spot",
|
|
32
|
-
side: "buy",
|
|
33
|
-
amount: "3",
|
|
34
|
-
price: "0.47",
|
|
35
|
-
},
|
|
36
|
-
]
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
console.log (orders);
|
|
40
|
-
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
main ();
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const exchange = new ccxt.gateio ({
|
|
5
|
-
'apiKey': 'YOUR_API_KEY',
|
|
6
|
-
'secret': 'YOUR_SECRET_KEY',
|
|
7
|
-
'options': {
|
|
8
|
-
'defaultType': 'future',
|
|
9
|
-
},
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
;(async () => {
|
|
13
|
-
// exchange.setSandboxMode (true)
|
|
14
|
-
|
|
15
|
-
const markets = await exchange.loadMarkets ()
|
|
16
|
-
|
|
17
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
18
|
-
|
|
19
|
-
// Example 1: Creating a future (market) order
|
|
20
|
-
try {
|
|
21
|
-
|
|
22
|
-
// find a future
|
|
23
|
-
const futures = []
|
|
24
|
-
for (const [key, market] of Object.entries(markets)) {
|
|
25
|
-
if (market['future']) {
|
|
26
|
-
futures.push(market);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (futures.length > 0) {
|
|
30
|
-
const market = futures[0];
|
|
31
|
-
const symbol = market['symbol'] // example: BTC/USDT:USDT-220318
|
|
32
|
-
const type = 'market'
|
|
33
|
-
const side = 'buy'
|
|
34
|
-
const amount = 1
|
|
35
|
-
|
|
36
|
-
// placing an order
|
|
37
|
-
const order = await exchange.createOrder (symbol, type, side, amount)
|
|
38
|
-
console.log (order)
|
|
39
|
-
|
|
40
|
-
// fetching open orders
|
|
41
|
-
const openOrders = await exchange.fetchOpenOrders(symbol)
|
|
42
|
-
console.log(openOrders)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
} catch (e) {
|
|
46
|
-
console.log (e.constructor.name, e.message)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
}) ()
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
const ccxt = require ('../../ccxt');
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const exchange = new ccxt.gateio ({
|
|
5
|
-
'apiKey': 'YOUR_API_KEY',
|
|
6
|
-
'secret': 'YOUR_SECRET',
|
|
7
|
-
'options': {
|
|
8
|
-
'defaultType': 'swap',
|
|
9
|
-
'marginMode': 'cross'
|
|
10
|
-
},
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
;(async () => {
|
|
15
|
-
|
|
16
|
-
// exchange.setSandboxMode (true)
|
|
17
|
-
|
|
18
|
-
const markets = await exchange.loadMarkets ()
|
|
19
|
-
|
|
20
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
21
|
-
|
|
22
|
-
// Example: creating and closing a contract
|
|
23
|
-
let symbol = 'LTC/USDT:USDT'
|
|
24
|
-
let type = 'market'
|
|
25
|
-
let side = 'buy'
|
|
26
|
-
let amount = 1
|
|
27
|
-
let price = undefined
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
// fetching current balance
|
|
31
|
-
const balance = await exchange.fetchBalance()
|
|
32
|
-
console.log(balance)
|
|
33
|
-
|
|
34
|
-
// placing an order / opening contract position
|
|
35
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price)
|
|
36
|
-
console.log (order)
|
|
37
|
-
|
|
38
|
-
// closing it by issuing an oposite contract
|
|
39
|
-
// and therefore close our previous position
|
|
40
|
-
side = 'sell'
|
|
41
|
-
type = 'market'
|
|
42
|
-
reduce_only = true
|
|
43
|
-
params = {'reduce_only': reduce_only}
|
|
44
|
-
const opositeOrder = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
45
|
-
console.log (opositeOrder)
|
|
46
|
-
} catch (e) {
|
|
47
|
-
console.log (e.constructor.name, e.message)
|
|
48
|
-
}
|
|
49
|
-
}) ()
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
const exchange = new ccxt.gateio ({
|
|
4
|
-
'apiKey': 'YOUR_API_KEY',
|
|
5
|
-
'secret': 'YOUR_SECRET_KEY',
|
|
6
|
-
'options': {
|
|
7
|
-
'defaultType': 'swap',
|
|
8
|
-
},
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
;(async () => {
|
|
12
|
-
// exchange.setSandboxMode (true)
|
|
13
|
-
|
|
14
|
-
const markets = await exchange.loadMarkets ()
|
|
15
|
-
|
|
16
|
-
exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
17
|
-
|
|
18
|
-
// Example 1: Creating and canceling a linear swap (limit) order
|
|
19
|
-
try {
|
|
20
|
-
const symbol = 'LTC/USDT:USDT'
|
|
21
|
-
const type = 'limit'
|
|
22
|
-
const side = 'buy'
|
|
23
|
-
const amount = 1
|
|
24
|
-
const price = 55
|
|
25
|
-
|
|
26
|
-
// placing an order
|
|
27
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price)
|
|
28
|
-
console.log (order)
|
|
29
|
-
|
|
30
|
-
// fetching open orders
|
|
31
|
-
const openOrders = await exchange.fetchOpenOrders(symbol)
|
|
32
|
-
console.log(openOrders)
|
|
33
|
-
|
|
34
|
-
// canceling an order
|
|
35
|
-
const cancel = await exchange.cancelOrder (order['id'], symbol)
|
|
36
|
-
console.log (cancel)
|
|
37
|
-
} catch (e) {
|
|
38
|
-
console.log (e.constructor.name, e.message)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Example 2: Creating and canceling a linear swap (stop-limit) order with leverage
|
|
42
|
-
try {
|
|
43
|
-
const symbol = 'LTC/USDT:USDT'
|
|
44
|
-
const type = 'limit'
|
|
45
|
-
const side = 'buy'
|
|
46
|
-
const amount = 1
|
|
47
|
-
const price = 55
|
|
48
|
-
|
|
49
|
-
const stopPrice = 130
|
|
50
|
-
const params = {
|
|
51
|
-
'stopPrice': stopPrice,
|
|
52
|
-
}
|
|
53
|
-
//set leverage
|
|
54
|
-
const leverage = await exchange.setLeverage(3, symbol);
|
|
55
|
-
console.log(leverage)
|
|
56
|
-
|
|
57
|
-
// placing an order
|
|
58
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
59
|
-
console.log (order)
|
|
60
|
-
|
|
61
|
-
// canceling an order
|
|
62
|
-
const cancelParams = {
|
|
63
|
-
isStop: true,
|
|
64
|
-
};
|
|
65
|
-
const cancel = await exchange.cancelOrder (order['id'], symbol, cancelParams)
|
|
66
|
-
console.log (cancel)
|
|
67
|
-
|
|
68
|
-
//reset leverage
|
|
69
|
-
exchange.setLeverage(1, symbol);
|
|
70
|
-
} catch (e) {
|
|
71
|
-
console.log (e.constructor.name, e.message)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
}) ()
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
import ololog from 'ololog';
|
|
3
|
-
|
|
4
|
-
const { noLocate } = ololog;
|
|
5
|
-
const log = noLocate;
|
|
6
|
-
|
|
7
|
-
const exchange = new ccxt.coinbasepro ()
|
|
8
|
-
|
|
9
|
-
;(async () => {
|
|
10
|
-
|
|
11
|
-
const symbol = 'ETH/BTC'
|
|
12
|
-
const params = {}
|
|
13
|
-
await exchange.loadMarkets ()
|
|
14
|
-
while (true) {
|
|
15
|
-
const trades = await exchange.fetchTrades (symbol, undefined, undefined, params)
|
|
16
|
-
if (trades.length) {
|
|
17
|
-
const firstTrade = trades[0]
|
|
18
|
-
const lastTrade = trades[trades.length - 1]
|
|
19
|
-
log.yellow ('Fetched', trades.length, symbol, 'trades from', firstTrade['datetime'], 'to', lastTrade['datetime'])
|
|
20
|
-
if ('Cb-After' in exchange.last_response_headers) {
|
|
21
|
-
params['after'] = exchange.last_response_headers['Cb-After'];
|
|
22
|
-
}
|
|
23
|
-
} else {
|
|
24
|
-
log.green ('Done.')
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
}) ()
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import ccxt from '../../js/ccxt.js';
|
|
4
|
-
import asTable from 'as-table';
|
|
5
|
-
import ololog from 'ololog';
|
|
6
|
-
const log = ololog.configure ({ locate: false })
|
|
7
|
-
|
|
8
|
-
require ('ansicolor').nice
|
|
9
|
-
|
|
10
|
-
const getPositiveAccounts = function (balance) {
|
|
11
|
-
const result = {}
|
|
12
|
-
Object.keys (balance)
|
|
13
|
-
.filter (currency => balance[currency] && (balance[currency] > 0))
|
|
14
|
-
.forEach (currency => {
|
|
15
|
-
result[currency] = balance[currency]
|
|
16
|
-
})
|
|
17
|
-
return result
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
;(async () => {
|
|
21
|
-
|
|
22
|
-
// instantiate the exchange
|
|
23
|
-
let exchange = new ccxt.hitbtc2 ({
|
|
24
|
-
"apiKey": "YOUR_API_KEY",
|
|
25
|
-
"secret": "YOUR_SECRET",
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
|
|
30
|
-
let tradingBalance = await exchange.fetchBalance ()
|
|
31
|
-
let accountBalance = await exchange.fetchBalance ({ type: 'account' })
|
|
32
|
-
|
|
33
|
-
log.cyan ('Trading balance:', getPositiveAccounts (tradingBalance.total))
|
|
34
|
-
log.magenta ('Account balance:', getPositiveAccounts (accountBalance.total))
|
|
35
|
-
|
|
36
|
-
// withdraw
|
|
37
|
-
let withdraw = await exchange.withdraw ('ETH', 0.01, '0x811DCfeb6dC0b9ed825808B6B060Ca469b83fB81')
|
|
38
|
-
|
|
39
|
-
// output the result
|
|
40
|
-
log (exchange.name.green, 'withdraw', withdraw)
|
|
41
|
-
|
|
42
|
-
} catch (e) {
|
|
43
|
-
|
|
44
|
-
if (e instanceof ccxt.DDoSProtection || e.message.includes ('ECONNRESET')) {
|
|
45
|
-
log.bright.yellow ('[DDoS Protection] ' + e.message)
|
|
46
|
-
} else if (e instanceof ccxt.RequestTimeout) {
|
|
47
|
-
log.bright.yellow ('[Request Timeout] ' + e.message)
|
|
48
|
-
} else if (e instanceof ccxt.AuthenticationError) {
|
|
49
|
-
log.bright.yellow ('[Authentication Error] ' + e.message)
|
|
50
|
-
} else if (e instanceof ccxt.ExchangeNotAvailable) {
|
|
51
|
-
log.bright.yellow ('[Exchange Not Available Error] ' + e.message)
|
|
52
|
-
} else if (e instanceof ccxt.ExchangeError) {
|
|
53
|
-
log.bright.yellow ('[Exchange Error] ' + e.message)
|
|
54
|
-
} else if (e instanceof ccxt.NetworkError) {
|
|
55
|
-
log.bright.yellow ('[Network Error] ' + e.message)
|
|
56
|
-
} else {
|
|
57
|
-
throw e
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}) ()
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { binance } from '../../js/ccxt.js';
|
|
2
|
-
async function example() {
|
|
3
|
-
const exchange = new binance({});
|
|
4
|
-
const ob = await exchange.fetchOrderBook('BTC/USDT', 3);
|
|
5
|
-
const asks = ob['asks'];
|
|
6
|
-
const bids = ob['bids'];
|
|
7
|
-
console.log(asks);
|
|
8
|
-
console.log(bids);
|
|
9
|
-
}
|
|
10
|
-
example();
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
const exchange = new ccxt.huobi ({
|
|
4
|
-
'apiKey': 'YOUR_API_KEY',
|
|
5
|
-
'secret': 'YOUR_SECRET',
|
|
6
|
-
'options': {
|
|
7
|
-
'defaultType': 'future',
|
|
8
|
-
},
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
;(async () => {
|
|
12
|
-
const markets = await exchange.loadMarkets ()
|
|
13
|
-
|
|
14
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
15
|
-
|
|
16
|
-
// creating and canceling a linear future (limit) order
|
|
17
|
-
let symbol = 'ETH/USDT:USDT-220121' // the last segment is the date of expiration (can be next week, next quarter, ...) adjust it accordingly
|
|
18
|
-
let type = 'limit'
|
|
19
|
-
let side = 'buy'
|
|
20
|
-
let offset= 'open'
|
|
21
|
-
let leverage = 1
|
|
22
|
-
let amount = 1
|
|
23
|
-
let price = 1
|
|
24
|
-
let params = {
|
|
25
|
-
'offset': offset,
|
|
26
|
-
'lever_rate': leverage,
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
// fetching current balance
|
|
31
|
-
const balance = await exchange.fetchBalance()
|
|
32
|
-
// console.log(balance)
|
|
33
|
-
|
|
34
|
-
// placing an order
|
|
35
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
36
|
-
console.log (order)
|
|
37
|
-
|
|
38
|
-
// fetching open orders
|
|
39
|
-
const openOrders = await exchange.fetchOpenOrders(symbol)
|
|
40
|
-
console.log(openOrders)
|
|
41
|
-
|
|
42
|
-
// canceling an order
|
|
43
|
-
const cancel = await exchange.cancelOrder (order['id'], symbol)
|
|
44
|
-
console.log (cancel)
|
|
45
|
-
} catch (e) {
|
|
46
|
-
console.log (e.constructor.name, e.message)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// creating and canceling a inverse future (limit) order
|
|
50
|
-
symbol = 'ADA/USD:ADA-220121' // the last segment is the date of expiration (can be next week, next quarter, ...) adjust it accordingly
|
|
51
|
-
type = 'limit'
|
|
52
|
-
side = 'buy'
|
|
53
|
-
offset= 'open'
|
|
54
|
-
leverage = 1
|
|
55
|
-
amount = 1
|
|
56
|
-
price = 1 // 1 contract = 10 ADA = 10 usd in this case
|
|
57
|
-
params = {
|
|
58
|
-
'offset': offset,
|
|
59
|
-
'lever_rate': leverage,
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
try {
|
|
63
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
64
|
-
console.log (order)
|
|
65
|
-
const cancel = await exchange.cancelOrder (order['id'], symbol)
|
|
66
|
-
console.log (cancel)
|
|
67
|
-
} catch (e) {
|
|
68
|
-
console.log (e.constructor.name, e.message)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
}) ()
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import ccxt from '../../js/ccxt.js';
|
|
2
|
-
|
|
3
|
-
const exchange = new ccxt.huobi ({
|
|
4
|
-
'apiKey': 'YOUR_API_KEY',
|
|
5
|
-
'secret': 'YOUR_SECRET',
|
|
6
|
-
'options': {
|
|
7
|
-
'defaultType': 'swap',
|
|
8
|
-
'marginMode': 'cross'
|
|
9
|
-
},
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
;(async () => {
|
|
13
|
-
const markets = await exchange.loadMarkets ()
|
|
14
|
-
|
|
15
|
-
// exchange.verbose = true // uncomment for debugging purposes if necessary
|
|
16
|
-
|
|
17
|
-
// Example: creating and closing a contract
|
|
18
|
-
let symbol = 'ADA/USDT:USDT' // market positions for contracts not available
|
|
19
|
-
let type = 'limit'
|
|
20
|
-
let side = 'buy'
|
|
21
|
-
let offset= 'open'
|
|
22
|
-
let leverage = 1
|
|
23
|
-
let amount = 1
|
|
24
|
-
let price = 1
|
|
25
|
-
let clientOrderId = 6;
|
|
26
|
-
let params = {
|
|
27
|
-
'offset': offset,
|
|
28
|
-
'lever_rate': leverage,
|
|
29
|
-
'client_order_id': clientOrderId
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
// fetching current balance
|
|
34
|
-
const balance = await exchange.fetchBalance()
|
|
35
|
-
console.log(balance)
|
|
36
|
-
|
|
37
|
-
// placing an order
|
|
38
|
-
const order = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
39
|
-
console.log (order)
|
|
40
|
-
|
|
41
|
-
// fetching position
|
|
42
|
-
const position = await exchange.fetchPosition(symbol)
|
|
43
|
-
console.log(position)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// closing it by issuing an oposite contract
|
|
47
|
-
// warning: since we can only place limit orders
|
|
48
|
-
// it might take a while (depending on the price we choose and market fluctuations)
|
|
49
|
-
// to the order be fulfilled
|
|
50
|
-
// and therefore close our previous position
|
|
51
|
-
side = 'sell'
|
|
52
|
-
type = 'limit'
|
|
53
|
-
offset = 'close'
|
|
54
|
-
reduce_only = 1 // 1 : yes, 0: no
|
|
55
|
-
clientOrderId = 9
|
|
56
|
-
price = 1.147 // adjust this accordingly
|
|
57
|
-
params = {'offset': offset, 'reduce_only': reduce_only, 'client_order_id': clientOrderId}
|
|
58
|
-
const opositeOrder = await exchange.createOrder (symbol, type, side, amount, price, params)
|
|
59
|
-
console.log (opositeOrder)
|
|
60
|
-
} catch (e) {
|
|
61
|
-
console.log (e.constructor.name, e.message)
|
|
62
|
-
}
|
|
63
|
-
}) ()
|