ccxt 4.2.99 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/ascendex.js +1 -1
  4. package/dist/cjs/src/binance.js +56 -0
  5. package/dist/cjs/src/bingx.js +2 -2
  6. package/dist/cjs/src/bitget.js +64 -2
  7. package/dist/cjs/src/bybit.js +1 -1
  8. package/dist/cjs/src/coinex.js +55 -60
  9. package/dist/cjs/src/kraken.js +8 -3
  10. package/dist/cjs/src/kucoin.js +19 -17
  11. package/dist/cjs/src/okx.js +76 -5
  12. package/dist/cjs/src/pro/kraken.js +2 -2
  13. package/dist/cjs/src/woo.js +40 -0
  14. package/js/ccxt.d.ts +1 -1
  15. package/js/ccxt.js +1 -1
  16. package/js/src/ascendex.js +2 -2
  17. package/js/src/binance.d.ts +3 -1
  18. package/js/src/binance.js +56 -0
  19. package/js/src/bingx.js +3 -3
  20. package/js/src/bitget.d.ts +1 -0
  21. package/js/src/bitget.js +64 -2
  22. package/js/src/bybit.js +1 -1
  23. package/js/src/coinex.js +55 -60
  24. package/js/src/kraken.js +8 -3
  25. package/js/src/kucoin.js +19 -17
  26. package/js/src/okx.d.ts +1 -0
  27. package/js/src/okx.js +76 -5
  28. package/js/src/pro/kraken.js +2 -2
  29. package/js/src/woo.d.ts +1 -0
  30. package/js/src/woo.js +40 -0
  31. package/package.json +2 -1
  32. package/.dockerignore +0 -6
  33. package/.eslintignore +0 -1
  34. package/.git-templates/hooks/pre-push +0 -55
  35. package/.gitattributes +0 -7
  36. package/CHANGELOG.md +0 -6003
  37. package/CODEOWNERS +0 -1
  38. package/CONTRIBUTING.md +0 -1099
  39. package/build.sh +0 -217
  40. package/change.sh +0 -18
  41. package/cleanup.sh +0 -18
  42. package/composer-install.sh +0 -20
  43. package/dist/ccxt.browser.js +0 -327256
  44. package/dist/ccxt.browser.min.js +0 -30
  45. package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
  46. package/doc/FAQ.rst +0 -1
  47. package/doc/Makefile +0 -20
  48. package/doc/_static/css/dark.css +0 -101
  49. package/doc/_static/css/index.css +0 -128
  50. package/doc/_static/favicon.ico +0 -0
  51. package/doc/_static/javascript/binance-portal.min.js +0 -2369
  52. package/doc/_static/javascript/index.js +0 -195
  53. package/doc/_static/javascript/jquery-ui.min.js +0 -6
  54. package/doc/ccxt.pro.install.rst +0 -1
  55. package/doc/ccxt.pro.manual.rst +0 -1665
  56. package/doc/exchange-markets-by-country.rst +0 -1423
  57. package/doc/exchange-markets.rst +0 -1441
  58. package/doc/index.rst +0 -35
  59. package/doc/install.rst +0 -1
  60. package/doc/make.bat +0 -36
  61. package/doc/manual.rst +0 -7471
  62. package/doc/readme.rst +0 -2191
  63. package/doc/requirements.txt +0 -6
  64. package/examples/ccxt.pro/html/watchTicker.html +0 -51
  65. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
  66. package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
  67. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
  68. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
  69. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
  70. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
  71. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
  72. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
  73. package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
  74. package/examples/ccxt.pro/js/exchange-close.js +0 -46
  75. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
  76. package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
  77. package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
  78. package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
  79. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
  80. package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
  81. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
  82. package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
  83. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
  84. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
  85. package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
  86. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
  87. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
  88. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
  89. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
  90. package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
  91. package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
  92. package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
  93. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
  94. package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
  95. package/examples/cs/Examples.sln +0 -22
  96. package/examples/cs/c#.csproj +0 -19
  97. package/examples/html/basic-cors-proxy.html +0 -46
  98. package/examples/html/basic-inheritance.html +0 -47
  99. package/examples/html/basic-poller.html +0 -52
  100. package/examples/html/basic-rate-limiting.html +0 -49
  101. package/examples/html/basic.html +0 -43
  102. package/examples/html/binance-cors-proxy.html +0 -28
  103. package/examples/html/bitmex-browser-cors-proxy.js +0 -7
  104. package/examples/html/bitmex-cors.html +0 -46
  105. package/examples/html/tradingview-charts.html +0 -61
  106. package/examples/html/webworker/index.html +0 -97
  107. package/examples/html/webworker/worker.js +0 -43
  108. package/examples/js/advanced-error-handling.js +0 -39
  109. package/examples/js/aggregate-orderbook.js +0 -54
  110. package/examples/js/arbitrage-pairs.js +0 -130
  111. package/examples/js/basic-chart.js +0 -29
  112. package/examples/js/basic-orderbook-polling.js +0 -13
  113. package/examples/js/bcc-vs-bch.js +0 -115
  114. package/examples/js/benchmark.js +0 -104
  115. package/examples/js/binance-fetch-all-deposits.js +0 -45
  116. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
  117. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
  118. package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
  119. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
  120. package/examples/js/binance-margin-stop-order.js +0 -39
  121. package/examples/js/binance-server-time.js +0 -34
  122. package/examples/js/binance-universal-transfer.js +0 -16
  123. package/examples/js/bitfinex-fetch-trades.js +0 -35
  124. package/examples/js/bitfinex2-fetch-trades.js +0 -35
  125. package/examples/js/bitmex-browser-cors-proxy.js +0 -7
  126. package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
  127. package/examples/js/bitrue-fetch-balance.js +0 -28
  128. package/examples/js/bitstamp-private-api.js +0 -115
  129. package/examples/js/bitstamp-public-api.js +0 -39
  130. package/examples/js/bittrex-balance.js +0 -50
  131. package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
  132. package/examples/js/blockchaincom-withdrawal.js +0 -59
  133. package/examples/js/build-ohlcv-bars.js +0 -48
  134. package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
  135. package/examples/js/bybit-trailing.js +0 -62
  136. package/examples/js/bybit-updated.cjs +0 -154
  137. package/examples/js/coinbase-fetch-all-balances.js +0 -36
  138. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
  139. package/examples/js/coinex-futures.js +0 -75
  140. package/examples/js/coinone-fetch-tickers.js +0 -54
  141. package/examples/js/coinone-markets.js +0 -16
  142. package/examples/js/compare-two-exchanges-capabilities.js +0 -36
  143. package/examples/js/cors-proxy.js +0 -5
  144. package/examples/js/create-order-handle-errors.js +0 -55
  145. package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
  146. package/examples/js/create-order-with-retry.js +0 -65
  147. package/examples/js/create-order-ws-example.js +0 -25
  148. package/examples/js/create-orders-example.js +0 -17
  149. package/examples/js/create-trailing-amount-order.js +0 -36
  150. package/examples/js/create-trailing-percent-order.js +0 -36
  151. package/examples/js/credentials.json +0 -5
  152. package/examples/js/custom-proxy-agent-for-js.js +0 -10
  153. package/examples/js/custom-proxy-url.js +0 -23
  154. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
  155. package/examples/js/env-variables.js +0 -26
  156. package/examples/js/error-handling.js +0 -89
  157. package/examples/js/exchange-capabilities.js +0 -135
  158. package/examples/js/exchanges-by-volume.js +0 -60
  159. package/examples/js/exchanges.js +0 -40
  160. package/examples/js/fetch-all-balances.js +0 -219
  161. package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
  162. package/examples/js/fetch-all-tickers-to-files.js +0 -77
  163. package/examples/js/fetch-balance.js +0 -28
  164. package/examples/js/fetch-create-deposit-address.js +0 -101
  165. package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
  166. package/examples/js/fetch-funding-rate-history.js +0 -25
  167. package/examples/js/fetch-futures/prettier.config.js +0 -5
  168. package/examples/js/fetch-futures/src/index.js +0 -25
  169. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
  170. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
  171. package/examples/js/fetch-ohlcv.js +0 -16
  172. package/examples/js/fetch-okex-futures.js +0 -22
  173. package/examples/js/fetch-orders.js +0 -27
  174. package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
  175. package/examples/js/fetch-ticker-where-available.js +0 -75
  176. package/examples/js/fetch-tickers/build/index.js +0 -19
  177. package/examples/js/fetch-tickers/prettier.config.js +0 -5
  178. package/examples/js/fetch-tickers/src/index.js +0 -17
  179. package/examples/js/gateio-create-batch-order.js +0 -43
  180. package/examples/js/gateio-futures.js +0 -49
  181. package/examples/js/gateio-open-close-contract.js +0 -49
  182. package/examples/js/gateio-swaps.js +0 -74
  183. package/examples/js/gdax-fetch-trades-pagination.js +0 -29
  184. package/examples/js/hitbtc2-withdraw.js +0 -61
  185. package/examples/js/how-to-import-one-exchange-esm.js +0 -10
  186. package/examples/js/huobi-futures.js +0 -71
  187. package/examples/js/huobi-open-close-contract.js +0 -63
  188. package/examples/js/huobi-swaps.js +0 -70
  189. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
  190. package/examples/js/hybridCJSExample.cjs +0 -19
  191. package/examples/js/hybridESMExample.js +0 -19
  192. package/examples/js/idex-fetch-balance.js +0 -13
  193. package/examples/js/instantiate-all-at-once.js +0 -46
  194. package/examples/js/instantiate-all-from-json.js +0 -31
  195. package/examples/js/kraken-create-and-close-position.js +0 -54
  196. package/examples/js/kraken-fetch-order-trades.js +0 -33
  197. package/examples/js/kraken-margin-trading.js +0 -89
  198. package/examples/js/kucoin-rate-limit.js +0 -38
  199. package/examples/js/latoken-example.js +0 -108
  200. package/examples/js/live-orderbook.js +0 -106
  201. package/examples/js/live-ticker.js +0 -80
  202. package/examples/js/live-tickers.js +0 -74
  203. package/examples/js/load-all-contracts.js +0 -41
  204. package/examples/js/load-all-symbols-at-once.js +0 -69
  205. package/examples/js/load-all-tickers-at-once.js +0 -91
  206. package/examples/js/load-markets-to-files.js +0 -57
  207. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
  208. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
  209. package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
  210. package/examples/js/market-status-and-currency-status.js +0 -29
  211. package/examples/js/ohlcv-console-chart.js +0 -29
  212. package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
  213. package/examples/js/okex-transfer.js +0 -51
  214. package/examples/js/okx-poll-fetch-my-trades.js +0 -37
  215. package/examples/js/okx-poll-rate-limit.js +0 -48
  216. package/examples/js/order-book-extra-level-depth-param.js +0 -20
  217. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
  218. package/examples/js/poll-ohlcv.js +0 -43
  219. package/examples/js/poloniex-fetch-order-books.js +0 -35
  220. package/examples/js/poloniex-limits-amount-min.js +0 -62
  221. package/examples/js/proxy-round-robin.js +0 -98
  222. package/examples/js/proxy-usage.js +0 -32
  223. package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
  224. package/examples/js/search-all-exchanges.js +0 -159
  225. package/examples/js/shared-load-markets.js +0 -80
  226. package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
  227. package/examples/js/symbols.js +0 -110
  228. package/examples/js/theocean.js +0 -41
  229. package/examples/js/tickers.js +0 -106
  230. package/examples/js/validate-paginated-data.js +0 -61
  231. package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
  232. package/examples/js/watch-OHLCV.js +0 -12
  233. package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
  234. package/examples/js/watch-Trades-For-Symbols.js +0 -11
  235. package/examples/js/watch-tickers.js +0 -11
  236. package/examples/js/watchOHLCVForSymbols.js +0 -15
  237. package/examples/js/watchOrderBookForSymbols.js +0 -11
  238. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
  239. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
  240. package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
  241. package/examples/js/watchPositions.d.ts +0 -2
  242. package/examples/js/watchPositions.d.ts.map +0 -1
  243. package/examples/js/watchPositions.js +0 -13
  244. package/examples/js/watchPositionsForSymbols.d.ts +0 -2
  245. package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
  246. package/examples/js/watchPositionsForSymbols.js +0 -14
  247. package/examples/js/watchTradesForSymbols.js +0 -11
  248. package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
  249. package/examples/php/README.md +0 -7
  250. package/examples/py/README.md +0 -15
  251. package/examples/py/playing_with_ccxt_example.ipynb +0 -222
  252. package/examples/ts/.eslintrc +0 -111
  253. package/examples/ts/benchmark.ts +0 -134
  254. package/examples/ts/build-ohlcv-bars.ts +0 -53
  255. package/examples/ts/cli.ts +0 -397
  256. package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
  257. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
  258. package/examples/ts/create-order-ws-example.ts +0 -33
  259. package/examples/ts/create-orders-example.ts +0 -21
  260. package/examples/ts/create-trailing-amount-order.ts +0 -37
  261. package/examples/ts/create-trailing-percent-order.ts +0 -37
  262. package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
  263. package/examples/ts/fetch-futures/package-lock.json +0 -116
  264. package/examples/ts/fetch-futures/package.json +0 -34
  265. package/examples/ts/fetch-futures/prettier.config.js +0 -4
  266. package/examples/ts/fetch-futures/src/index.ts +0 -28
  267. package/examples/ts/fetch-futures/tsconfig.json +0 -28
  268. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
  269. package/examples/ts/fetch-ohlcv.ts +0 -17
  270. package/examples/ts/fetch-tickers/package-lock.json +0 -116
  271. package/examples/ts/fetch-tickers/package.json +0 -34
  272. package/examples/ts/fetch-tickers/prettier.config.js +0 -4
  273. package/examples/ts/fetch-tickers/src/index.ts +0 -21
  274. package/examples/ts/fetch-tickers/tsconfig.json +0 -28
  275. package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
  276. package/examples/ts/kraken-create-and-close-position.ts +0 -69
  277. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
  278. package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
  279. package/examples/ts/nextjs-page-router/README.md +0 -43
  280. package/examples/ts/nextjs-page-router/next.config.js +0 -6
  281. package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
  282. package/examples/ts/nextjs-page-router/package.json +0 -28
  283. package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
  284. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  285. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
  286. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
  287. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
  288. package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
  289. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
  290. package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
  291. package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
  292. package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
  293. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
  294. package/examples/ts/proxy-usage.ts +0 -41
  295. package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
  296. package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
  297. package/examples/ts/watch-OHLCV.ts +0 -14
  298. package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
  299. package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
  300. package/examples/ts/watch-tickers.ts +0 -13
  301. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
  302. package/examples/ts/watchPositions.ts +0 -15
  303. package/examples/ts/watchPositionsForSymbols.ts +0 -16
  304. package/examples/tsconfig.json +0 -27
  305. package/examples2md.js +0 -79
  306. package/gource.sh +0 -3
  307. package/index.html +0 -7
  308. package/jsdoc2md.js +0 -122
  309. package/multilang.sh +0 -164
  310. package/pro-tests.json +0 -57
  311. package/pyproject.toml +0 -8
  312. package/rollup.config.js +0 -60
  313. package/skip-tests.json +0 -1653
  314. package/test-commonjs.cjs +0 -65
  315. package/tests-manager.sh +0 -96
  316. package/tsconfig.json +0 -111
  317. package/webpack.config.js +0 -46
@@ -1,70 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- // Note, this is just an example and might not yet work on other exchanges, which are being still unified.
4
- async function example() {
5
- // ########## user inputs ##########
6
- const exchange = new ccxt['binance']({ 'apiKey': 'xxx', 'secret': 'xxx' });
7
- const symbol = 'BUSD/USDT'; // set target symbol
8
- const marginMode = 'isolated'; // margin mode (cross or isolated)
9
- const collateral_coin = 'USDT'; // which asset you want to use for margin-borrow collateral
10
- const borrow_coin = 'BUSD'; // which coin to borrow
11
- const order_side = 'sell'; // which side to trade
12
- const amount_to_trade = 14; // how many coins to sell
13
- const order_type = 'limit'; // order type (can be market, limit or etc)
14
- const limit_price = 0.99; // price to sell at (set undefined/null/None if market-order)
15
- const margin_magnitude = 5; // target margin (aka 'leverage'). This might also be obtainable using other unified methods, but for example purposes, we set here manually
16
- // ########## end of user-inputs ##########
17
- //
18
- // for example purposes, let's also check available balance at first
19
- const balance_margin = await exchange.fetchBalance({ 'defaultType': 'margin', 'marginMode': marginMode }); // use `defaultType` because of temporary bug, otherwise, after several days, you can use `type` too.
20
- // if we don't have enought coins, then we have to borrow at first
21
- let needed_amount_to_borrow = undefined; // will be auto-set below
22
- if (amount_to_trade > balance_margin[symbol][borrow_coin]['free']) {
23
- needed_amount_to_borrow = amount_to_trade - balance_margin[symbol][borrow_coin]['free'];
24
- console.log('hmm, I have only ', balance_margin[symbol][borrow_coin]['free'], ' ', borrow_coin, ' in margin balance, and still need additional ', needed_amount_to_borrow, ' to make an order. Lets borrow it.');
25
- // To initate a borrow, at first, check if we have enough collateral (for this example, as we make a sell-short, we need '-1' to keep for collateral currency)
26
- const needed_collateral_amount = needed_amount_to_borrow / (margin_magnitude - 1);
27
- // Check if we have any collateral to get permission for borrow
28
- if (balance_margin[symbol][collateral_coin]['free'] < needed_collateral_amount) {
29
- // If we don't have enough collateral, then let's try to transfer collateral-asset from spot-balance to margin-balance
30
- console.log('hmm, I have only ', balance_margin[symbol][collateral_coin]['free'], ' in balance, but ', needed_collateral_amount, ' collateral is needed. I should transfer ', needed_collateral_amount, ' from spot');
31
- // let's check if we have spot balance at all
32
- const balance_spot = await exchange.fetchBalance({ 'type': 'spot' });
33
- if (exchange.parseNumber(balance_spot[collateral_coin]['free']) < needed_collateral_amount) {
34
- console.log('hmm, I neither do have enough balance on spot - only ', balance_spot[collateral_coin]['free'], '. Script can not continue...');
35
- return;
36
- }
37
- else {
38
- console.log('Transferring ', needed_collateral_amount, ' to margin account');
39
- await exchange.transfer(collateral_coin, needed_collateral_amount, 'spot', marginMode, { 'symbol': symbol });
40
- }
41
- }
42
- // now, as we have enough margin collateral, initiate borrow
43
- console.log('Initiating margin borrow of ', needed_amount_to_borrow, ' ', borrow_coin);
44
- const borrowResult = await exchange.borrowMargin(borrow_coin, needed_amount_to_borrow, symbol, { 'marginMode': marginMode });
45
- }
46
- console.log('Submitting order.');
47
- const order = await exchange.createOrder(symbol, order_type, order_side, amount_to_trade, limit_price, { 'marginMode': marginMode });
48
- console.log('Order was submitted !', order['id']);
49
- //
50
- //
51
- // ...
52
- // ...
53
- // some time later, if you want to repay the loan back (like 'close the position')...
54
- // ...
55
- // ...
56
- //
57
- //
58
- // set the "repay-back" amount (for this example snippet, this will be same amount that we borrowed above)
59
- if (needed_amount_to_borrow !== undefined) {
60
- const amount_to_repay_back = needed_amount_to_borrow;
61
- // At first, you need to get back the borrowed coin, by making an opposide trade
62
- console.log('Making purchase back of ', amount_to_repay_back, ' ', borrow_coin, ' to repay it back.');
63
- const purchase_back_price = 1.01;
64
- const order_back = await exchange.createOrder(symbol, order_type, (order_side === 'buy' ? 'sell' : 'buy'), amount_to_repay_back, purchase_back_price, { 'marginMode': marginMode });
65
- console.log('Now, repaying the loan.');
66
- const repayResult = await exchange.repayMargin(borrow_coin, amount_to_repay_back, symbol, { 'marginMode': marginMode });
67
- console.log('finished.');
68
- }
69
- }
70
- await example();
@@ -1,29 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import log from 'ololog';
5
- import asTable from 'as-table';
6
-
7
- (async function main () {
8
-
9
- let kraken = new ccxt.kraken ()
10
- await kraken.loadMarkets ()
11
-
12
- const markets = Object.values (kraken.markets).map (market => ({
13
- symbol: market.symbol,
14
- active: market.active,
15
- }))
16
-
17
- log.bright.green.noLocate ('Markets:')
18
- log.green.noLocate (asTable (markets), '\n')
19
-
20
- const currencies = Object.values (kraken.currencies).map (currency => ({
21
- code: currency.code,
22
- active: currency.active,
23
- status: currency.status,
24
- }))
25
-
26
- log.bright.yellow.noLocate ('Currencies:')
27
- log.yellow.noLocate (asTable (currencies))
28
-
29
- }) ()
@@ -1,29 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asciichart from 'asciichart';
5
- import asTable from 'as-table';
6
- import ololog from 'ololog'
7
- import ansicolor from 'ansicolor';
8
-
9
- const log = ololog.configure ({ locate: false })
10
-
11
- ansicolor.nice
12
-
13
- //-----------------------------------------------------------------------------
14
-
15
- ;(async function main () {
16
-
17
- // experimental, not yet implemented for all exchanges
18
- // your contributions are welcome ;)
19
-
20
- const indexOfClose = 4 // [ timestamp, open, high, low, close, volume ]
21
- const ohlcv = await new ccxt.cex ().fetchOHLCV ('BTC/USD', '1m')
22
- const lastPrice = ohlcv[ohlcv.length - 1][indexOfClose] // closing price
23
- const plotSeriesData = ohlcv.slice (-80).map (x => x[indexOfClose]) // closing price
24
- const bitcoinRate = ('₿ = $' + lastPrice).green
25
- const chart = asciichart.plot (plotSeriesData, { height: 15, padding: ' ' })
26
- log.yellow ("\n" + chart, bitcoinRate, "\n")
27
- process.exit ()
28
-
29
- }) ()
@@ -1,31 +0,0 @@
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/10179
8
-
9
- async function main () {
10
-
11
- const exchange = new ccxt.okex ({
12
- 'apiKey': 'YOUR_API_KEY',
13
- 'secret': 'YOUR_SECRET',
14
- 'password': 'YOUR_PASSWORD',
15
- 'options': {
16
- 'fetchClosedOrders': {
17
- 'method': 'privateGetTradeOrdersHistoryArchive'
18
- }
19
- }
20
- })
21
-
22
- const markets = await exchange.loadMarkets ()
23
-
24
- exchange.verbose = true
25
-
26
- const orders = await exchange.fetchClosedOrders ()
27
- console.log (orders)
28
-
29
- }
30
-
31
- main ()
@@ -1,51 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
-
5
- console.log ('CCXT version:', ccxt.version)
6
- console.log ('This example requires CCXT version 1.54.92 or higher')
7
-
8
- async function main () {
9
-
10
- const exchange = new ccxt.okex ({
11
- 'apiKey': 'YOUR_API_KEY',
12
- 'secret': 'YOUR_SECRET',
13
- 'password': 'YOUR_API_KEY_PASSWORD',
14
- })
15
-
16
- await exchange.loadMarkets ()
17
-
18
- const code = 'USDT'
19
- let tradingBalance = await exchange.fetchFreeBalance (/* { 'type': 'trading' } */)
20
- let fundingBalance = await exchange.fetchFreeBalance ({ 'type': 'funding' })
21
- console.log ('Trading:', tradingBalance[code], code)
22
- console.log ('Funding:', fundingBalance[code], code)
23
-
24
- const oldVerboseMode = exchange.verbose
25
- exchange.verbose = process.argv.includes ('--verbose') || process.argv.includes ('-v')
26
-
27
- // https://www.okex.com/docs-v5/en/#rest-api-funding-funds-transfer
28
- //
29
- // 'spot' == '1'
30
- // 'futures' == '3',
31
- // 'margin' == '5',
32
- // 'swap' == '9',
33
- // 'option' == '12',
34
- // 'trading' == '18', // unified trading account
35
- // 'unified' == '18',
36
- //
37
- const from = 'trading'
38
- const to = 'funding'
39
- const amount = 1
40
- const transfer = await exchange.transfer (code, amount, from, to)
41
- console.log (transfer)
42
-
43
- exchange.verbose = oldVerboseMode
44
-
45
- tradingBalance = await exchange.fetchFreeBalance (/* { 'type': 'spot' } */)
46
- fundingBalance = await exchange.fetchFreeBalance ({ 'type': 'funding' })
47
- console.log ('Trading:', tradingBalance[code], code)
48
- console.log ('Funding:', fundingBalance[code], code)
49
- }
50
-
51
- main ()
@@ -1,37 +0,0 @@
1
- import ccxt from '../../js/ccxt.js'
2
-
3
- console.log ('CCXT Version:', ccxt.version)
4
-
5
- async function main () {
6
-
7
- const exchange = new ccxt.okx ({
8
-
9
- // edit for your credentials
10
- 'apiKey': 'YOUR_API_KEY',
11
- 'secret': 'YOUR_API_SECRET',
12
- 'password': 'YOUR_API_PASSWORD',
13
- })
14
-
15
- await exchange.loadMarkets ()
16
-
17
- // if this script fails with a rate limiter error
18
- // uncomment the following line for debugging purposes
19
-
20
- // exchange.verbose = true
21
-
22
- while (true) {
23
-
24
- try {
25
-
26
- const trades = await exchange.fetchMyTrades ()
27
- console.log (new Date(), 'fetched', trades.length, 'trades')
28
-
29
- } catch (e) {
30
-
31
- console.log (e.constructor.name, e.message)
32
- break;
33
- }
34
- }
35
- }
36
-
37
- main ()
@@ -1,48 +0,0 @@
1
- import ccxt from '../../js/ccxt.js'
2
-
3
- console.log ('CCXT Version:', ccxt.version)
4
-
5
- async function main () {
6
-
7
- const exchange = new ccxt.okx ({
8
-
9
- // edit for your credentials
10
- 'apiKey': 'YOUR_API_KEY',
11
- 'secret': 'YOUR_API_SECRET',
12
- 'password': 'YOUR_API_PASSWORD',
13
-
14
- 'api': {
15
- 'private': {
16
- 'get': {
17
- 'trade/fills-history': 2.2,
18
- },
19
- },
20
- },
21
-
22
- })
23
-
24
- await exchange.loadMarkets ()
25
-
26
- // if this script fails with a rate limiter error
27
- // uncomment the following line for debugging purposes
28
-
29
- // exchange.verbose = true
30
-
31
- const promises=[];
32
- for(let i=0;i<100;i++){
33
- promises.push(exchange.fetchMyTrades());
34
- }
35
-
36
- const allResponses = await Promise.allSettled(promises);
37
- allResponses.forEach((result, i) => {
38
-
39
- if(result.status == "fulfilled"){
40
- console.log (new Date(), i + 6, 'fetched', result.value.length, 'trades')
41
- } else {
42
- console.log ("Rejected:", i + 6, result.reason);
43
- }
44
- });
45
-
46
- }
47
-
48
- main ()
@@ -1,20 +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
- ansicolor.nice
9
-
10
- ;(async function test () {
11
-
12
- const exchange = new ccxt.bitfinex ()
13
- const limit = 5
14
- const orders = await exchange.fetchOrderBook ('BTC/USD', limit, {
15
- // this parameter is exchange-specific, all extra params have unique names per exchange
16
- 'group': 1, // 1 = orders are grouped by price, 0 = orders are separate
17
- })
18
-
19
- log (orders)
20
- }) ()
@@ -1,49 +0,0 @@
1
- // @ts-nocheck
2
- import ccxt from '../../js/ccxt.js';
3
- // AUTO-TRANSPILE //
4
- // ------------------------------------------------------------------------------
5
- async function example() {
6
- const exchange = new ccxt.phemex({
7
- 'apiKey': 'YOUR_API_KEY',
8
- 'secret': 'YOUR_API_SECRET',
9
- });
10
- const symbol = 'XRP/USDT:USDT';
11
- const side = 'buy'; // set it to 'buy' for a long position, 'sell' for a short position
12
- const order_type = 'limit'; // set it to 'market' or 'limit'
13
- const amount = 1; // how many contracts
14
- const price = 0.5; // set a price at your desired level
15
- // take profit and stop loss prices and types
16
- const take_profit_trigger_price = 0.6;
17
- const stop_loss_trigger_price = 0.4;
18
- const take_profit_limit_price = 0.7;
19
- const stop_loss_limit_price = 0.3;
20
- await exchange.loadMarkets();
21
- // 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
22
- const params = {
23
- 'posSide': 'Long',
24
- 'stopLoss': {
25
- 'triggerPrice': stop_loss_trigger_price,
26
- 'type': 'limit',
27
- 'price': stop_loss_limit_price,
28
- },
29
- 'takeProfit': {
30
- 'triggerPrice': take_profit_trigger_price,
31
- 'type': 'limit',
32
- 'price': take_profit_limit_price,
33
- },
34
- };
35
- console.log('-----------------------------------------------------------------------');
36
- // exchange.verbose = True // uncomment for debugging purposes if necessary
37
- try {
38
- const created_order = await exchange.createOrder(symbol, order_type, side, amount, price, params);
39
- console.log('Created an order', created_order);
40
- // Fetch all your open orders for this symbol
41
- const all_open_orders = await exchange.fetchOpenOrders(symbol);
42
- console.log('Fetched all your orders for this symbol', all_open_orders);
43
- // To cancel a limit order, use "exchange.cancel_order(created_order['id'], symbol)""
44
- }
45
- catch (e) {
46
- console.log(e.toString());
47
- }
48
- }
49
- await example();
@@ -1,43 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
-
5
- const ohlcvsBySymbol = {}
6
-
7
- function handleAllOHLCVs (exchange, ohlcvs, symbol, timeframe) {
8
- console.log ('----------------------------------------------------------')
9
- console.log ('Last updated:', exchange.iso8601 (exchange.milliseconds ()))
10
- const symbols = Object.keys (ohlcvsBySymbol)
11
- for (let i = 0; i < symbols.length; i++) {
12
- const symbol = symbols[i]
13
- const ohlcvs = ohlcvsBySymbol[symbol]
14
- const lastCandle = exchange.safeValue (ohlcvs, ohlcvs.length - 1)
15
- const lastTimestamp = lastCandle[0]
16
- console.log (exchange.iso8601 (lastTimestamp), symbol, timeframe, lastCandle.slice (1))
17
- }
18
- }
19
-
20
- async function pollOHLCV (exchange, symbol, timeframe) {
21
- while (true) {
22
- try {
23
- const response = await exchange.fetchOHLCV (symbol, timeframe)
24
- ohlcvsBySymbol[symbol] = response
25
- handleAllOHLCVs(exchange, response, symbol, timeframe)
26
- } catch (e) {
27
- console.log (e.constructor.name, e.message)
28
- }
29
- }
30
- }
31
-
32
- async function main () {
33
-
34
- const exchange = new ccxt.binance()
35
- const markets = await exchange.loadMarkets ()
36
- const timeframe = '5m'
37
-
38
- const firstOneHundredSymbols = exchange.symbols.slice (0, 100)
39
-
40
- await Promise.all (firstOneHundredSymbols.map (symbol => pollOHLCV (exchange, symbol, timeframe)))
41
- }
42
-
43
- main ()
@@ -1,35 +0,0 @@
1
-
2
-
3
- // ----------------------------------------------------------------------------
4
-
5
- import ccxt from '../../js/ccxt.js';
6
-
7
- // ----------------------------------------------------------------------------
8
-
9
- (async () => {
10
-
11
- const exchange = new ccxt.poloniex ({
12
- 'verbose': process.argv.includes ('--verbose'),
13
- 'timeout': 60000,
14
- })
15
-
16
- try {
17
-
18
- const response = await exchange.fetchOrderBooks ([
19
- 'ETH/BTC',
20
- 'LTC/BTC',
21
- 'OMG/BTC',
22
- ])
23
- console.log (response);
24
- console.log ('Succeeded.')
25
-
26
- } catch (e) {
27
-
28
- console.log ('--------------------------------------------------------')
29
- console.log (e.constructor.name, e.message)
30
- console.log ('--------------------------------------------------------')
31
- console.log (exchange.last_http_response)
32
- console.log ('Failed.')
33
- }
34
-
35
- }) ()
@@ -1,62 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- import fs from 'fs';
3
- import ololog from 'ololog'
4
-
5
- const log = ololog.configure.unlimited.noLocate,
6
- verbose = process.argv.includes ('--verbose'),
7
- keysGlobal = 'keys.json',
8
- keysLocal = 'keys.local.json',
9
- keysFile = fs.existsSync (keysLocal) ? keysLocal : (fs.existsSync (keysGlobal) ? keysGlobal : false),
10
- config = keysFile ? require ('../../' + keysFile) : {},
11
- exchange = new ccxt.poloniex (ccxt.extend ({
12
- enableRateLimit: true,
13
- verbose,
14
- }, config.poloniex || {}));(async () => {
15
-
16
- const test = async function (symbol) {
17
-
18
- try {
19
-
20
- await exchange.createOrder (symbol, 'limit', 'buy', 0, 0)
21
-
22
- } catch (e) {
23
-
24
- if (e instanceof ccxt.InvalidOrder) {
25
-
26
- const words = e.message.split (' ')
27
- let minAmount = parseFloat (words[words.length - 1])
28
- log.green ("'" + symbol + "': " + minAmount.toString () + ',')
29
-
30
- } else {
31
-
32
- throw e
33
- }
34
- }
35
- }
36
-
37
- await exchange.loadMarkets ()
38
-
39
- for (let i = 0; i < exchange.symbols.length; i++) {
40
-
41
- try {
42
-
43
- await test (exchange.symbols[i])
44
-
45
- } catch (e) {
46
-
47
- if (e instanceof ccxt.InvalidNonce) {
48
-
49
- log.yellow (e)
50
-
51
- } else {
52
-
53
- log.red (e)
54
- throw e
55
- }
56
- }
57
-
58
-
59
- await ccxt.sleep (5000) // sleep 5 seconds, no rush, safe delay
60
- }
61
-
62
- }) ()
@@ -1,98 +0,0 @@
1
-
2
-
3
- import ccxt from '../../js/ccxt.js';
4
- import asTable from 'as-table';
5
- import ololog from 'ololog';
6
- import ansicolor from 'ansicolor';
7
-
8
- const log = ololog.configure ({ locate: false })
9
-
10
- ansicolor.nice
11
-
12
- //-----------------------------------------------------------------------------
13
-
14
- // this script loads markets from all exchanges
15
- // if it cannot connect to an exchange, it falls back to an alternative route via proxy
16
- // it will retry to load a exchange until it either reaches the exchange or runs out of proxies
17
-
18
- //-----------------------------------------------------------------------------
19
-
20
- process.on ('uncaughtException', e => { log.bright.red.error (e); process.exit (1) })
21
- process.on ('unhandledRejection', e => { log.bright.red.error (e); process.exit (1) })
22
-
23
- //-----------------------------------------------------------------------------
24
-
25
- let loadExchange = async exchange => {
26
- await exchange.loadMarkets ()
27
- log (exchange.id.green, 'loaded',
28
- exchange.symbols.length.toString ().bright.green, 'symbols',
29
- (exchange.proxy ? exchange.proxy : '_').blue)
30
- }
31
-
32
- //-----------------------------------------------------------------------------
33
-
34
- let tryAllProxies = async function (exchange, proxies) {
35
-
36
- let currentProxy = 0
37
- let maxRetries = proxies.length
38
-
39
- // a special case for ccex
40
- if (exchange.id == 'ccex')
41
- currentProxy = 1
42
-
43
- for (let numRetries = 0; numRetries < maxRetries; numRetries++) {
44
-
45
- try {
46
-
47
- exchange.proxy = proxies[currentProxy]
48
- await loadExchange (exchange)
49
- break
50
-
51
- } catch (e) {
52
-
53
- currentProxy = ++currentProxy % proxies.length
54
- if (e instanceof ccxt.DDoSProtection) {
55
- log.bright.yellow (exchange.id, '[DDoS Protection] ' + e.message)
56
- } else if (e instanceof ccxt.RequestTimeout) {
57
- log.bright.yellow (exchange.id, '[Request Timeout] ' + e.message)
58
- } else if (e instanceof ccxt.AuthenticationError) {
59
- log.bright.yellow (exchange.id, '[Authentication Error] ' + e.message)
60
- } else if (e instanceof ccxt.ExchangeNotAvailable) {
61
- log.bright.yellow (exchange.id, '[Exchange Not Available] ' + e.message)
62
- } else if (e instanceof ccxt.ExchangeError) {
63
- log.bright.yellow (exchange.id, '[Exchange Error] ' + e.message)
64
- } else if (e instanceof ccxt.NetworkError) {
65
- log.bright.yellow (exchange.id, '[Network Error] ' + e.message)
66
- } else {
67
- throw e;
68
- }
69
- }
70
-
71
- }
72
- }
73
-
74
- //-----------------------------------------------------------------------------
75
-
76
- let proxies = [
77
- '',
78
- 'https://cors-anywhere.herokuapp.com/',
79
- 'https://crossorigin.me/',
80
- ]
81
-
82
- let exchanges = []
83
-
84
- async function main () {
85
- // instantiate all exchanges
86
- await Promise.all (ccxt.exchanges.map (async id => {
87
- let exchange = new (ccxt)[id] ()
88
- exchanges.push (exchange)
89
- await tryAllProxies (exchange, proxies)
90
- }))
91
-
92
- let succeeded = exchanges.filter (exchange => exchange.markets ? true : false).length.toString ().bright.green
93
- let failed = exchanges.filter (exchange => exchange.markets ? false : true).length
94
- let total = ccxt.exchanges.length.toString ().bright.white
95
- console.log (succeeded, 'of', total, 'exchanges loaded', ('(' + failed + ' errors)').red)
96
- }
97
-
98
- main ()
@@ -1,32 +0,0 @@
1
- import ccxt from '../../js/ccxt.js';
2
- // AUTO-TRANSPILE //
3
- // ABOUT CCXT PROXIES, READ MORE AT: https://docs.ccxt.com/#/README?id=proxy
4
- async function example_proxyUrl() {
5
- const myEx = new ccxt.kucoin();
6
- myEx.proxyUrl = 'http://5.75.153.75:8090/proxy_url.php?caller=https://ccxt.com&url=';
7
- console.log(await myEx.fetch('https://api.ipify.org/'));
8
- }
9
- async function example_httpProxy() {
10
- const myEx = new ccxt.kucoin();
11
- myEx.httpProxy = 'http://5.75.153.75:8002'; // "httpProxy" or "httpsProxy" (depending on your proxy protocol)
12
- console.log(await myEx.fetch('https://api.ipify.org/'));
13
- }
14
- async function example_socksProxy() {
15
- const myEx = new ccxt.kucoin();
16
- myEx.socksProxy = 'socks5://127.0.0.1:1080'; // from protocols: socks, socks5, socks5h
17
- console.log(await myEx.fetch('https://api.ipify.org/'));
18
- }
19
- async function example_webSockets() {
20
- const myEx = new ccxt.pro.kucoin();
21
- 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
22
- myEx.wsProxy = 'http://5.75.153.75:8002'; // "wsProxy" or "wssProxy" or "wsSocksProxy" (depending on your proxy protocol)
23
- await myEx.loadMarkets();
24
- while (true) {
25
- const ticker = await myEx.watchTicker('BTC/USDT');
26
- console.log(ticker);
27
- }
28
- }
29
- await example_proxyUrl();
30
- // await example_httpProxy ();
31
- // await example_socksProxy ();
32
- // await example_webSockets ();
@@ -1,12 +0,0 @@
1
- // @ts-nocheck
2
- // JavaScript sample Proxy with CORS support
3
- // Save this in a file like cors.js and run with:
4
- // node cors [port]
5
- // It will listen for your requests on the port you pass in command line (or port 8080 by default)
6
- import cors from 'cors-anywhere'; // npm install cors-anywhere
7
- const port = (process.argv.length > 2) ? parseInt(process.argv[2]) : 8080; // if not provided from cli, default to 8080
8
- cors.createServer({
9
- // you can set origin, if needed by exchange
10
- // setHeaders: { 'origin': 'https://www.bitmex.com' }
11
- }).listen(port, 'localhost');
12
- console.log('Running CORS Anywhere on localhost:' + port);