ccxt 4.2.72 → 4.2.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +124 -122
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +3277 -460
  4. package/dist/ccxt.browser.min.js +4 -4
  5. package/dist/cjs/ccxt.js +6 -1
  6. package/dist/cjs/src/abstract/coinbaseinternational.js +9 -0
  7. package/dist/cjs/src/base/Exchange.js +31 -7
  8. package/dist/cjs/src/bitget.js +62 -50
  9. package/dist/cjs/src/btcturk.js +3 -3
  10. package/dist/cjs/src/bybit.js +90 -30
  11. package/dist/cjs/src/coinbaseinternational.js +2019 -0
  12. package/dist/cjs/src/gate.js +1 -1
  13. package/dist/cjs/src/htx.js +16 -9
  14. package/dist/cjs/src/hyperliquid.js +9 -2
  15. package/dist/cjs/src/mexc.js +1 -1
  16. package/dist/cjs/src/okx.js +1 -1
  17. package/dist/cjs/src/pro/coinbaseinternational.js +645 -0
  18. package/dist/cjs/src/pro/krakenfutures.js +8 -7
  19. package/examples/README.md +308 -0
  20. package/examples/ccxt.pro/html/watchTicker.html +51 -0
  21. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +55 -0
  22. package/examples/ccxt.pro/js/binance-https-proxy.js +48 -0
  23. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +38 -0
  24. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +64 -0
  25. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +62 -0
  26. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +68 -0
  27. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +82 -0
  28. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +59 -0
  29. package/examples/ccxt.pro/js/exchange-capabitities.js +72 -0
  30. package/examples/ccxt.pro/js/exchange-close.js +46 -0
  31. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +30 -0
  32. package/examples/ccxt.pro/js/gateio-watch-balance.js +23 -0
  33. package/examples/ccxt.pro/js/gateio-watch-order-book.js +71 -0
  34. package/examples/ccxt.pro/js/graceful-shutdown.js +43 -0
  35. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +37 -0
  36. package/examples/ccxt.pro/js/okex-create-futures-order.js +48 -0
  37. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +54 -0
  38. package/examples/ccxt.pro/js/okx-watch-tickers.js +31 -0
  39. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +46 -0
  40. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +26 -0
  41. package/examples/ccxt.pro/js/one-exchange-many-streams.js +28 -0
  42. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +30 -0
  43. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +40 -0
  44. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +38 -0
  45. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +40 -0
  46. package/examples/ccxt.pro/js/watch-many-orderbooks.js +27 -0
  47. package/examples/ccxt.pro/js/watch-new-trades-only.js +43 -0
  48. package/examples/ccxt.pro/js/watch-new-trades.js +42 -0
  49. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +29 -0
  50. package/examples/ccxt.pro/js/watch-vs-fetch.js +29 -0
  51. package/examples/cs/Examples.sln +22 -0
  52. package/examples/cs/c#.csproj +19 -0
  53. package/examples/html/basic-cors-proxy.html +46 -0
  54. package/examples/html/basic-inheritance.html +47 -0
  55. package/examples/html/basic-poller.html +52 -0
  56. package/examples/html/basic-rate-limiting.html +49 -0
  57. package/examples/html/basic.html +43 -0
  58. package/examples/html/binance-cors-proxy.html +28 -0
  59. package/examples/html/bitmex-browser-cors-proxy.js +7 -0
  60. package/examples/html/bitmex-cors.html +46 -0
  61. package/examples/html/tradingview-charts.html +61 -0
  62. package/examples/html/webworker/index.html +97 -0
  63. package/examples/html/webworker/worker.js +43 -0
  64. package/examples/js/README.md +15 -0
  65. package/examples/js/advanced-error-handling.js +39 -0
  66. package/examples/js/aggregate-orderbook.js +54 -0
  67. package/examples/js/arbitrage-pairs.js +130 -0
  68. package/examples/js/basic-chart.js +29 -0
  69. package/examples/js/basic-orderbook-polling.js +13 -0
  70. package/examples/js/bcc-vs-bch.js +115 -0
  71. package/examples/js/binance-fetch-all-deposits.js +45 -0
  72. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +34 -0
  73. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +33 -0
  74. package/examples/js/binance-fetchTicker-delivery-vs-future.js +31 -0
  75. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +41 -0
  76. package/examples/js/binance-margin-stop-order.js +39 -0
  77. package/examples/js/binance-server-time.js +34 -0
  78. package/examples/js/binance-universal-transfer.js +16 -0
  79. package/examples/js/bitfinex-fetch-trades.js +35 -0
  80. package/examples/js/bitfinex2-fetch-trades.js +35 -0
  81. package/examples/js/bitmex-browser-cors-proxy.js +7 -0
  82. package/examples/js/bitpanda-fetchMyTrades-reduce.js +36 -0
  83. package/examples/js/bitrue-fetch-balance.js +28 -0
  84. package/examples/js/bitstamp-private-api.js +115 -0
  85. package/examples/js/bitstamp-public-api.js +39 -0
  86. package/examples/js/bittrex-balance.js +50 -0
  87. package/examples/js/bittrex-fetch-closed-orders-history.js +69 -0
  88. package/examples/js/blockchaincom-withdrawal.js +59 -0
  89. package/examples/js/build-ohlcv-bars.js +48 -0
  90. package/examples/js/builtin-rate-limiting-rest-poller.js +25 -0
  91. package/examples/js/bybit-trailing.js +62 -0
  92. package/examples/js/bybit-updated.cjs +154 -0
  93. package/examples/js/cli.js +405 -0
  94. package/examples/js/coinbase-fetch-all-balances.js +36 -0
  95. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +47 -0
  96. package/examples/js/coinex-futures.js +75 -0
  97. package/examples/js/coinone-fetch-tickers.js +54 -0
  98. package/examples/js/coinone-markets.js +16 -0
  99. package/examples/js/compare-two-exchanges-capabilities.js +36 -0
  100. package/examples/js/cors-proxy.js +5 -0
  101. package/examples/js/create-order-handle-errors.js +55 -0
  102. package/examples/js/create-order-position-with-takeprofit-stoploss.js +71 -0
  103. package/examples/js/create-order-with-retry.js +65 -0
  104. package/examples/js/create-order-ws-example.js +25 -0
  105. package/examples/js/create-orders-example.js +17 -0
  106. package/examples/js/create-trailing-amount-order.js +36 -0
  107. package/examples/js/create-trailing-percent-order.js +36 -0
  108. package/examples/js/credentials.json +5 -0
  109. package/examples/js/custom-proxy-agent-for-js.js +10 -0
  110. package/examples/js/custom-proxy-url.js +23 -0
  111. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +60 -0
  112. package/examples/js/env-variables.js +26 -0
  113. package/examples/js/error-handling.js +89 -0
  114. package/examples/js/exchange-capabilities.js +135 -0
  115. package/examples/js/exchanges-by-volume.js +60 -0
  116. package/examples/js/exchanges.js +40 -0
  117. package/examples/js/fetch-all-balances.js +219 -0
  118. package/examples/js/fetch-all-tickers-to-files-2.js +53 -0
  119. package/examples/js/fetch-all-tickers-to-files.js +77 -0
  120. package/examples/js/fetch-balance.js +28 -0
  121. package/examples/js/fetch-create-deposit-address.js +101 -0
  122. package/examples/js/fetch-from-many-exchanges-simultaneously.js +21 -0
  123. package/examples/js/fetch-funding-rate-history.js +25 -0
  124. package/examples/js/fetch-futures/prettier.config.js +5 -0
  125. package/examples/js/fetch-futures/src/index.js +25 -0
  126. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +72 -0
  127. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +39 -0
  128. package/examples/js/fetch-ohlcv.js +16 -0
  129. package/examples/js/fetch-okex-futures.js +22 -0
  130. package/examples/js/fetch-orders.js +27 -0
  131. package/examples/js/fetch-ticker-from-multiple-exchanges.js +35 -0
  132. package/examples/js/fetch-ticker-where-available.js +75 -0
  133. package/examples/js/fetch-tickers/build/index.js +19 -0
  134. package/examples/js/fetch-tickers/prettier.config.js +5 -0
  135. package/examples/js/fetch-tickers/src/index.js +17 -0
  136. package/examples/js/gateio-create-batch-order.js +43 -0
  137. package/examples/js/gateio-futures.js +49 -0
  138. package/examples/js/gateio-open-close-contract.js +49 -0
  139. package/examples/js/gateio-swaps.js +74 -0
  140. package/examples/js/gdax-fetch-trades-pagination.js +29 -0
  141. package/examples/js/hitbtc2-withdraw.js +61 -0
  142. package/examples/js/how-to-import-one-exchange-esm.js +10 -0
  143. package/examples/js/huobi-futures.js +71 -0
  144. package/examples/js/huobi-open-close-contract.js +63 -0
  145. package/examples/js/huobi-swaps.js +70 -0
  146. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +98 -0
  147. package/examples/js/hybridCJSExample.cjs +19 -0
  148. package/examples/js/hybridESMExample.js +19 -0
  149. package/examples/js/idex-fetch-balance.js +13 -0
  150. package/examples/js/instantiate-all-at-once.js +46 -0
  151. package/examples/js/instantiate-all-from-json.js +31 -0
  152. package/examples/js/kraken-create-and-close-position.js +54 -0
  153. package/examples/js/kraken-fetch-order-trades.js +33 -0
  154. package/examples/js/kraken-margin-trading.js +89 -0
  155. package/examples/js/kucoin-rate-limit.js +38 -0
  156. package/examples/js/latoken-example.js +108 -0
  157. package/examples/js/live-orderbook.js +106 -0
  158. package/examples/js/live-ticker.js +80 -0
  159. package/examples/js/live-tickers.js +74 -0
  160. package/examples/js/load-all-contracts.js +41 -0
  161. package/examples/js/load-all-symbols-at-once.js +69 -0
  162. package/examples/js/load-all-tickers-at-once.js +91 -0
  163. package/examples/js/load-markets-to-files.js +57 -0
  164. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +61 -0
  165. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +91 -0
  166. package/examples/js/margin-loan-borrow-buy-sell-repay.js +70 -0
  167. package/examples/js/market-status-and-currency-status.js +29 -0
  168. package/examples/js/ohlcv-console-chart.js +29 -0
  169. package/examples/js/okex-fetch-closed-orders-archive.js +31 -0
  170. package/examples/js/okex-transfer.js +51 -0
  171. package/examples/js/okx-poll-fetch-my-trades.js +37 -0
  172. package/examples/js/okx-poll-rate-limit.js +48 -0
  173. package/examples/js/order-book-extra-level-depth-param.js +20 -0
  174. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +49 -0
  175. package/examples/js/poll-ohlcv.js +43 -0
  176. package/examples/js/poloniex-fetch-order-books.js +35 -0
  177. package/examples/js/poloniex-limits-amount-min.js +62 -0
  178. package/examples/js/proxy-round-robin.js +98 -0
  179. package/examples/js/proxy-usage.js +32 -0
  180. package/examples/js/sample-local-proxy-server-with-cors.js +12 -0
  181. package/examples/js/search-all-exchanges.js +159 -0
  182. package/examples/js/shared-load-markets.js +80 -0
  183. package/examples/js/sort-swap-markets-by-hourly-price-change.js +55 -0
  184. package/examples/js/symbols.js +110 -0
  185. package/examples/js/theocean.js +41 -0
  186. package/examples/js/tickers.js +106 -0
  187. package/examples/js/validate-paginated-data.js +61 -0
  188. package/examples/js/watch-OHLCV-For-Symbols.js +15 -0
  189. package/examples/js/watch-OHLCV.js +12 -0
  190. package/examples/js/watch-OrderBook-For-Symbols.js +11 -0
  191. package/examples/js/watch-Trades-For-Symbols.js +11 -0
  192. package/examples/js/watch-tickers.js +11 -0
  193. package/examples/js/watchOHLCVForSymbols.js +15 -0
  194. package/examples/js/watchOrderBookForSymbols.js +11 -0
  195. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +2 -0
  196. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +1 -0
  197. package/examples/js/watchPositions-many-exchanges-continuosly.js +49 -0
  198. package/examples/js/watchPositions.d.ts +2 -0
  199. package/examples/js/watchPositions.d.ts.map +1 -0
  200. package/examples/js/watchPositions.js +13 -0
  201. package/examples/js/watchPositionsForSymbols.d.ts +2 -0
  202. package/examples/js/watchPositionsForSymbols.d.ts.map +1 -0
  203. package/examples/js/watchPositionsForSymbols.js +14 -0
  204. package/examples/js/watchTradesForSymbols.js +11 -0
  205. package/examples/js/withdraw-from-one-exchange-to-another.js +50 -0
  206. package/examples/php/README.md +7 -0
  207. package/examples/py/README.md +15 -0
  208. package/examples/py/playing_with_ccxt_example.ipynb +222 -0
  209. package/examples/ts/.eslintrc +111 -0
  210. package/examples/ts/build-ohlcv-bars.ts +53 -0
  211. package/examples/ts/cli.ts +397 -0
  212. package/examples/ts/compare-two-exchanges-capabilities.ts +36 -0
  213. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +89 -0
  214. package/examples/ts/create-order-ws-example.ts +33 -0
  215. package/examples/ts/create-orders-example.ts +21 -0
  216. package/examples/ts/create-trailing-amount-order.ts +37 -0
  217. package/examples/ts/create-trailing-percent-order.ts +37 -0
  218. package/examples/ts/custom-proxy-agent-for-js.ts +14 -0
  219. package/examples/ts/fetch-futures/package-lock.json +116 -0
  220. package/examples/ts/fetch-futures/package.json +34 -0
  221. package/examples/ts/fetch-futures/prettier.config.js +4 -0
  222. package/examples/ts/fetch-futures/src/index.ts +28 -0
  223. package/examples/ts/fetch-futures/tsconfig.json +28 -0
  224. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +44 -0
  225. package/examples/ts/fetch-ohlcv.ts +17 -0
  226. package/examples/ts/fetch-tickers/package-lock.json +116 -0
  227. package/examples/ts/fetch-tickers/package.json +34 -0
  228. package/examples/ts/fetch-tickers/prettier.config.js +4 -0
  229. package/examples/ts/fetch-tickers/src/index.ts +21 -0
  230. package/examples/ts/fetch-tickers/tsconfig.json +28 -0
  231. package/examples/ts/how-to-import-one-exchange-esm.ts +11 -0
  232. package/examples/ts/kraken-create-and-close-position.ts +69 -0
  233. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +72 -0
  234. package/examples/ts/nextjs-page-router/.eslintrc.json +3 -0
  235. package/examples/ts/nextjs-page-router/README.md +43 -0
  236. package/examples/ts/nextjs-page-router/next.config.js +6 -0
  237. package/examples/ts/nextjs-page-router/package-lock.json +7425 -0
  238. package/examples/ts/nextjs-page-router/package.json +28 -0
  239. package/examples/ts/nextjs-page-router/postcss.config.js +6 -0
  240. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  241. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +6 -0
  242. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +13 -0
  243. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +46 -0
  244. package/examples/ts/nextjs-page-router/src/pages/index.tsx +8 -0
  245. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +61 -0
  246. package/examples/ts/nextjs-page-router/src/styles/globals.css +27 -0
  247. package/examples/ts/nextjs-page-router/tailwind.config.ts +20 -0
  248. package/examples/ts/nextjs-page-router/tsconfig.json +22 -0
  249. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +62 -0
  250. package/examples/ts/proxy-usage.ts +41 -0
  251. package/examples/ts/sample-local-proxy-server-with-cors.ts +15 -0
  252. package/examples/ts/watch-OHLCV-For-Symbols.ts +17 -0
  253. package/examples/ts/watch-OHLCV.ts +14 -0
  254. package/examples/ts/watch-OrderBook-For-Symbols.ts +13 -0
  255. package/examples/ts/watch-Trades-For-Symbols.ts +13 -0
  256. package/examples/ts/watch-tickers.ts +13 -0
  257. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +53 -0
  258. package/examples/ts/watchPositions.ts +15 -0
  259. package/examples/ts/watchPositionsForSymbols.ts +16 -0
  260. package/examples/tsconfig.json +27 -0
  261. package/js/ccxt.d.ts +8 -2
  262. package/js/ccxt.js +6 -2
  263. package/js/src/abstract/coinbaseinternational.d.ts +42 -0
  264. package/js/src/abstract/coinbaseinternational.js +11 -0
  265. package/js/src/ace.d.ts +2 -2
  266. package/js/src/alpaca.d.ts +2 -2
  267. package/js/src/ascendex.d.ts +3 -3
  268. package/js/src/base/Exchange.d.ts +27 -24
  269. package/js/src/base/Exchange.js +31 -7
  270. package/js/src/bigone.d.ts +2 -2
  271. package/js/src/binance.d.ts +7 -7
  272. package/js/src/bingx.d.ts +4 -4
  273. package/js/src/bit2c.d.ts +2 -2
  274. package/js/src/bitbank.d.ts +2 -2
  275. package/js/src/bitbns.d.ts +2 -2
  276. package/js/src/bitfinex.d.ts +3 -3
  277. package/js/src/bitfinex2.d.ts +4 -4
  278. package/js/src/bitflyer.d.ts +2 -2
  279. package/js/src/bitget.d.ts +4 -4
  280. package/js/src/bitget.js +62 -50
  281. package/js/src/bithumb.d.ts +2 -2
  282. package/js/src/bitmart.d.ts +4 -4
  283. package/js/src/bitmex.d.ts +3 -3
  284. package/js/src/bitopro.d.ts +2 -2
  285. package/js/src/bitrue.d.ts +2 -2
  286. package/js/src/bitso.d.ts +2 -2
  287. package/js/src/bitstamp.d.ts +2 -2
  288. package/js/src/bitteam.d.ts +2 -2
  289. package/js/src/bitvavo.d.ts +4 -4
  290. package/js/src/bl3p.d.ts +2 -2
  291. package/js/src/blockchaincom.d.ts +2 -2
  292. package/js/src/blofin.d.ts +4 -4
  293. package/js/src/btcalpha.d.ts +2 -2
  294. package/js/src/btcbox.d.ts +2 -2
  295. package/js/src/btcmarkets.d.ts +2 -2
  296. package/js/src/btcturk.d.ts +2 -2
  297. package/js/src/btcturk.js +3 -3
  298. package/js/src/bybit.d.ts +8 -6
  299. package/js/src/bybit.js +90 -30
  300. package/js/src/cex.d.ts +3 -3
  301. package/js/src/coinbase.d.ts +3 -3
  302. package/js/src/coinbaseinternational.d.ts +146 -0
  303. package/js/src/coinbaseinternational.js +2020 -0
  304. package/js/src/coinbasepro.d.ts +2 -2
  305. package/js/src/coincheck.d.ts +2 -2
  306. package/js/src/coinex.d.ts +4 -4
  307. package/js/src/coinlist.d.ts +3 -3
  308. package/js/src/coinmate.d.ts +2 -2
  309. package/js/src/coinmetro.d.ts +2 -2
  310. package/js/src/coinone.d.ts +2 -2
  311. package/js/src/coinsph.d.ts +2 -2
  312. package/js/src/coinspot.d.ts +2 -2
  313. package/js/src/cryptocom.d.ts +4 -4
  314. package/js/src/currencycom.d.ts +2 -2
  315. package/js/src/delta.d.ts +3 -3
  316. package/js/src/deribit.d.ts +3 -3
  317. package/js/src/digifinex.d.ts +3 -3
  318. package/js/src/exmo.d.ts +3 -3
  319. package/js/src/gate.d.ts +4 -4
  320. package/js/src/gate.js +1 -1
  321. package/js/src/gemini.d.ts +2 -2
  322. package/js/src/hitbtc.d.ts +4 -4
  323. package/js/src/hollaex.d.ts +2 -2
  324. package/js/src/htx.d.ts +5 -5
  325. package/js/src/htx.js +16 -9
  326. package/js/src/huobijp.d.ts +2 -2
  327. package/js/src/hyperliquid.d.ts +4 -3
  328. package/js/src/hyperliquid.js +10 -3
  329. package/js/src/idex.d.ts +2 -2
  330. package/js/src/independentreserve.d.ts +2 -2
  331. package/js/src/indodax.d.ts +2 -2
  332. package/js/src/kraken.d.ts +3 -3
  333. package/js/src/krakenfutures.d.ts +4 -4
  334. package/js/src/kucoin.d.ts +4 -4
  335. package/js/src/kucoinfutures.d.ts +3 -3
  336. package/js/src/kuna.d.ts +2 -2
  337. package/js/src/latoken.d.ts +2 -2
  338. package/js/src/lbank.d.ts +2 -2
  339. package/js/src/luno.d.ts +2 -2
  340. package/js/src/lykke.d.ts +2 -2
  341. package/js/src/mercado.d.ts +2 -2
  342. package/js/src/mexc.d.ts +2 -2
  343. package/js/src/mexc.js +1 -1
  344. package/js/src/ndax.d.ts +3 -3
  345. package/js/src/novadax.d.ts +2 -2
  346. package/js/src/oceanex.d.ts +2 -2
  347. package/js/src/okcoin.d.ts +3 -3
  348. package/js/src/okx.d.ts +4 -4
  349. package/js/src/okx.js +1 -1
  350. package/js/src/onetrading.d.ts +2 -2
  351. package/js/src/p2b.d.ts +2 -2
  352. package/js/src/paymium.d.ts +2 -2
  353. package/js/src/phemex.d.ts +3 -3
  354. package/js/src/poloniex.d.ts +3 -3
  355. package/js/src/poloniexfutures.d.ts +2 -2
  356. package/js/src/pro/binance.d.ts +3 -3
  357. package/js/src/pro/bitvavo.d.ts +3 -3
  358. package/js/src/pro/cex.d.ts +3 -3
  359. package/js/src/pro/coinbaseinternational.d.ts +28 -0
  360. package/js/src/pro/coinbaseinternational.js +646 -0
  361. package/js/src/pro/cryptocom.d.ts +2 -2
  362. package/js/src/pro/hitbtc.d.ts +2 -2
  363. package/js/src/pro/kraken.d.ts +3 -3
  364. package/js/src/pro/krakenfutures.js +8 -7
  365. package/js/src/pro/okx.d.ts +3 -3
  366. package/js/src/pro/poloniex.d.ts +2 -2
  367. package/js/src/probit.d.ts +2 -2
  368. package/js/src/timex.d.ts +3 -3
  369. package/js/src/tokocrypto.d.ts +2 -2
  370. package/js/src/upbit.d.ts +2 -2
  371. package/js/src/wavesexchange.d.ts +2 -2
  372. package/js/src/wazirx.d.ts +2 -2
  373. package/js/src/whitebit.d.ts +2 -2
  374. package/js/src/woo.d.ts +5 -5
  375. package/js/src/yobit.d.ts +2 -2
  376. package/js/src/zaif.d.ts +2 -2
  377. package/js/src/zonda.d.ts +2 -2
  378. package/package.json +4 -1
  379. package/skip-tests.json +227 -424
@@ -0,0 +1,89 @@
1
+ // @ts-nocheck
2
+ import ccxt from '../../js/ccxt.js';
3
+
4
+ // AUTO-TRANSPILE //
5
+
6
+ console.log ('CCXT Version:', ccxt.version);
7
+
8
+ // ------------------------------------------------------------------------------
9
+
10
+ async function example () {
11
+ // at this moment, only OKX support embedded stop-loss & take-profit orders in unified manner. other exchanges are being added actively and will be available soon.
12
+ const exchange = new ccxt.okx ({
13
+ "apiKey": "YOUR_API_KEY",
14
+ "secret": "YOUR_API_SECRET",
15
+ "password": "YOUR_API_PASSWORD", // if exchange does not require password, comment out this line
16
+ });
17
+
18
+ const symbol = 'DOGE/USDT:USDT';
19
+ const side = 'buy'; // 'buy' | 'sell'
20
+ const order_type = 'limit'; // 'market' | 'limit'
21
+ const amount = 1; // how many contracts (see `market(symbol).contractSize` to find out coin portion per one contract)
22
+
23
+ await exchange.loadMarkets ();
24
+ const market = exchange.market (symbol);
25
+
26
+ const ticker = await exchange.fetchTicker (symbol);
27
+
28
+ const last_price = ticker['last'];
29
+ const ask_price = ticker['ask'];
30
+ const bid_price = ticker['bid'];
31
+
32
+ // if order_type is 'market', then price is not needed
33
+ let price = undefined;
34
+ // if order_type is 'limit', then set a price at your desired level
35
+ if (order_type === 'limit') {
36
+ price = (side === 'buy') ? bid_price * 0.95 : ask_price * 1.05; // i.e. 5% from current price
37
+ }
38
+
39
+ // set trigger price for stop-loss/take-profit to 2% from current price
40
+ // (note, across different exchanges "trigger" price can be also mentioned with different synonyms, like "activation price", "stop price", "conditional price", etc. )
41
+ const stop_loss_trigger_price = (order_type === 'market' ? last_price : price) * (side === 'buy' ? 0.98 : 1.02);
42
+ const take_profit_trigger_price = (order_type === 'market' ? last_price : price) * (side === 'buy' ? 1.02 : 0.98);
43
+
44
+ // 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
45
+ const params = {
46
+ 'stopLoss': {
47
+ 'triggerPrice': stop_loss_trigger_price,
48
+ // set a 'price' to act as limit order, otherwise remove it for a market order
49
+ 'price': stop_loss_trigger_price * 0.98,
50
+ },
51
+ 'takeProfit': {
52
+ 'triggerPrice': take_profit_trigger_price,
53
+ // set a 'price' to act as limit order, otherwise remove it for a market order
54
+ 'price': take_profit_trigger_price * 0.98,
55
+ },
56
+ // note that some exchanges might require some exchange specific parameter when opening a position, i.e.:
57
+ // 'posSide': 'long', // for phemex hedge-mode api
58
+ };
59
+
60
+ const position_amount = market['contractSize'] * amount;
61
+ const position_value = position_amount * last_price;
62
+ // log
63
+ console.log ('Going to open a position', 'for', amount, 'contracts worth', position_amount, market['base'], '~', position_value, market['settle'], 'using', side, order_type, 'order (', (order_type === 'limit' ? exchange.priceToPrecision (symbol, price) : ''), '), using the following params:');
64
+ console.log (params);
65
+ console.log ('-----------------------------------------------------------------------');
66
+
67
+ // exchange.verbose = True // uncomment for debugging purposes if necessary
68
+
69
+ try {
70
+ const created_order = await exchange.createOrder (symbol, order_type, side, amount, price, params);
71
+ console.log ("Created an order", created_order);
72
+
73
+ // Fetch all your open orders for this symbol
74
+ // - use 'fetchOpenOrders' or 'fetchOrders' and filter with 'open' status
75
+ // - note, that some exchanges might return one order object with embedded stoploss/takeprofit fields, while other exchanges might have separate stoploss/takeprofit order objects
76
+ const all_open_orders = await exchange.fetchOpenOrders (symbol);
77
+ console.log ("Fetched all your orders for this symbol", all_open_orders);
78
+
79
+ // To cancel a limit order, use "exchange.cancel_order(created_order['id'], symbol)""
80
+ } catch (e) {
81
+ console.log (e.toString ());
82
+ }
83
+ }
84
+
85
+
86
+ await example ();
87
+
88
+ // NOTES:
89
+ // - Sometimes you might experience, when their stop-loss/take-profit order might not become activated, even though on chart the price had crossed that "trigger-price" order was not executed . That happens because some exchange might be using mark-price (instead of last-price) as a reference-price, so that mark-price might reach your trigger-price and it would activate your SL/TP order (even though on your symbol's chart you are viewing the "last-price" by default, which could have different movements than the mark-price).
@@ -0,0 +1,33 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ async function example () {
6
+ const exchange = new ccxt.pro.binance ({
7
+ 'apiKey': 'MY_API_KEY',
8
+ 'secret': 'MY_SECRET',
9
+ });
10
+ exchange.setSandboxMode (true);
11
+ exchange.verbose = true; // uncomment for debugging purposes if necessary
12
+ // load markets
13
+ await exchange.loadMarkets ();
14
+ const symbol = 'ETH/USDT';
15
+ const type = 'limit';
16
+ const side = 'buy';
17
+ const amount = 0.01;
18
+ let price = 1000;
19
+ let orders = [];
20
+ for (let i=1; i<5; i++) {
21
+ const response = await exchange.createOrderWs (
22
+ symbol,
23
+ type,
24
+ side,
25
+ amount,
26
+ price
27
+ );
28
+ price += i;
29
+ orders.push (response);
30
+ }
31
+ console.log (orders);
32
+ }
33
+ await example ();
@@ -0,0 +1,21 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ async function example () {
6
+ const exchange = new ccxt.binance ({
7
+ 'apiKey': 'MY_API_KEY',
8
+ 'secret': 'MY_SECRET',
9
+ });
10
+ exchange.setSandboxMode (true);
11
+ await exchange.loadMarkets ();
12
+ exchange.verbose = true; // uncomment for debugging purposes if necessary
13
+ const orders = await exchange.createOrders (
14
+ [
15
+ { 'symbol': 'LTC/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 10, 'price': 55 },
16
+ { 'symbol': 'ETH/USDT:USDT', 'type': 'market', 'side': 'buy', 'amount': 0.5 },
17
+ ]
18
+ );
19
+ console.log (orders);
20
+ }
21
+ await example ();
@@ -0,0 +1,37 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ async function example () {
6
+ const exchange = new ccxt.bingx ({
7
+ 'apiKey': 'MY_API_KEY',
8
+ 'secret': 'MY_SECRET',
9
+ });
10
+ // exchange.setSandboxMode (true);
11
+ // exchange.verbose = true; // uncomment for debugging purposes if necessary
12
+ await exchange.loadMarkets ();
13
+ const symbol = 'BTC/USDT:USDT';
14
+ const order_type = 'market';
15
+ const side = 'sell';
16
+ const amount = 0.0001;
17
+ const price = undefined;
18
+ const reduceOnly = true;
19
+ const trailingAmount = 100;
20
+ // const trailingTriggerPrice = undefined; // not supported on all exchanges
21
+ const params = {
22
+ 'reduceOnly': reduceOnly,
23
+ 'trailingAmount': trailingAmount,
24
+ // 'trailingTriggerPrice': trailingTriggerPrice,
25
+ };
26
+ try {
27
+ const create_order = await exchange.createOrder (symbol, order_type, side, amount, price, params);
28
+ // Alternatively use the createTrailingAmountOrder method:
29
+ // const create_order = await exchange.createTrailingAmountOrder (symbol, order_type, side, amount, price, trailingAmount, trailingTriggerPrice, {
30
+ // 'reduceOnly': reduceOnly,
31
+ // });
32
+ console.log (create_order);
33
+ } catch (e) {
34
+ console.log (e.toString ());
35
+ }
36
+ }
37
+ await example ();
@@ -0,0 +1,37 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ async function example () {
6
+ const exchange = new ccxt.bingx ({
7
+ 'apiKey': 'MY_API_KEY',
8
+ 'secret': 'MY_SECRET',
9
+ });
10
+ // exchange.setSandboxMode (true);
11
+ // exchange.verbose = true; // uncomment for debugging purposes if necessary
12
+ await exchange.loadMarkets ();
13
+ const symbol = 'BTC/USDT:USDT';
14
+ const order_type = 'market';
15
+ const side = 'sell';
16
+ const amount = 0.0001;
17
+ const price = undefined;
18
+ const reduceOnly = true;
19
+ const trailingPercent = 10;
20
+ // const trailingTriggerPrice = undefined; // not supported on all exchanges
21
+ const params = {
22
+ 'reduceOnly': reduceOnly,
23
+ 'trailingPercent': trailingPercent,
24
+ // 'trailingTriggerPrice': trailingTriggerPrice,
25
+ };
26
+ try {
27
+ const create_order = await exchange.createOrder (symbol, order_type, side, amount, price, params);
28
+ // Alternatively use the createTrailingAmountOrder method:
29
+ // const create_order = await exchange.createTrailingPercentOrder (symbol, order_type, side, amount, price, trailingPercent, trailingTriggerPrice, {
30
+ // 'reduceOnly': reduceOnly,
31
+ // });
32
+ console.log (create_order);
33
+ } catch (e) {
34
+ console.log (e.toString ());
35
+ }
36
+ }
37
+ await example ();
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+
3
+ // to set custom "proxy-agent" for ccxt
4
+
5
+ import ccxt from 'ccxt';
6
+ import HttpProxyAgent from 'http-proxy-agent';
7
+ import HttpsProxyAgent from 'https-proxy-agent';
8
+
9
+ const proxy = 'http://1.2.3.4:5678';
10
+ const agent = new HttpProxyAgent (proxy); // or HttpsProxyAgent if you need http
11
+ // then pass it through constructor:
12
+ const kraken = new ccxt.kraken ({ agent });
13
+ // or set it later:
14
+ kraken.agent = agent;
@@ -0,0 +1,116 @@
1
+ {
2
+ "name": "fetch-futures",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "@types/node": {
8
+ "version": "10.14.18",
9
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.18.tgz",
10
+ "integrity": "sha512-ryO3Q3++yZC/+b8j8BdKd/dn9JlzlHBPdm80656xwYUdmPkpTGTjkAdt6BByiNupGPE8w0FhBgvYy/fX9hRNGQ==",
11
+ "dev": true
12
+ },
13
+ "ansicolor": {
14
+ "version": "1.1.92",
15
+ "resolved": "https://registry.npmjs.org/ansicolor/-/ansicolor-1.1.92.tgz",
16
+ "integrity": "sha512-2jRpULfLpLvFeYYxIu1z6i0LQ4Khj/UxecsrdJ+837P0AVOW3smdKHpHmeKVYHZPG67o3jQFdMjNvPwktwPmZg=="
17
+ },
18
+ "as-table": {
19
+ "version": "1.0.55",
20
+ "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
21
+ "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
22
+ "requires": {
23
+ "printable-characters": "^1.0.42"
24
+ }
25
+ },
26
+ "ccxt": {
27
+ "version": "1.18.1145",
28
+ "resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.18.1145.tgz",
29
+ "integrity": "sha512-orU4kGB59RCMo3Ed04HBpRWqZdnpPcZ3VENPkF4ImacCm/ilte0boXAS+mYJVZSXLljyQzfm4D9fY7IukWsmIA=="
30
+ },
31
+ "data-uri-to-buffer": {
32
+ "version": "2.0.1",
33
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz",
34
+ "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==",
35
+ "requires": {
36
+ "@types/node": "^8.0.7"
37
+ },
38
+ "dependencies": {
39
+ "@types/node": {
40
+ "version": "8.10.54",
41
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
42
+ "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg=="
43
+ }
44
+ }
45
+ },
46
+ "get-source": {
47
+ "version": "1.0.40",
48
+ "resolved": "https://registry.npmjs.org/get-source/-/get-source-1.0.40.tgz",
49
+ "integrity": "sha512-grbzSLO9gCVpb+ngrUf2ch4nzcfAs9pYqlnu0v2+Ho0rOpwnJqhZsHWLXaqdNHMtmnY+OwGgS4SPdzMRXEwVtQ==",
50
+ "requires": {
51
+ "data-uri-to-buffer": "^2.0.0",
52
+ "source-map": "^0.6.1"
53
+ }
54
+ },
55
+ "ololog": {
56
+ "version": "1.1.146",
57
+ "resolved": "https://registry.npmjs.org/ololog/-/ololog-1.1.146.tgz",
58
+ "integrity": "sha512-C68zLVMFgIZC1Rdz7LTmtIEuAsth/2yllA/kb3OUfdWI9+U5x4F7EXO3xgfp9Rhn/tiETffo6DnWGPQaVHjKiw==",
59
+ "requires": {
60
+ "ansicolor": "^1.1.84",
61
+ "pipez": "^1.1.12",
62
+ "printable-characters": "^1.0.42",
63
+ "stacktracey": "^1.2.117",
64
+ "string.bullet": "^1.0.12",
65
+ "string.ify": "^1.0.57"
66
+ }
67
+ },
68
+ "pipez": {
69
+ "version": "1.1.12",
70
+ "resolved": "https://registry.npmjs.org/pipez/-/pipez-1.1.12.tgz",
71
+ "integrity": "sha1-s1nOVAHpNfEp+koJT83omvuENtg="
72
+ },
73
+ "printable-characters": {
74
+ "version": "1.0.42",
75
+ "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
76
+ "integrity": "sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g="
77
+ },
78
+ "source-map": {
79
+ "version": "0.6.1",
80
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
81
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
82
+ },
83
+ "stacktracey": {
84
+ "version": "1.2.117",
85
+ "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-1.2.117.tgz",
86
+ "integrity": "sha512-sj9olGCco8jxMw3fcmhL5er1yuVL2qSMhNfycwx+iIWz6uVpG+bQ2YNpVSlWscGmSskt61gSmUBjZ0Mb5jYBLw==",
87
+ "requires": {
88
+ "as-table": "^1.0.36",
89
+ "get-source": "^1.0.34"
90
+ }
91
+ },
92
+ "string.bullet": {
93
+ "version": "1.0.12",
94
+ "resolved": "https://registry.npmjs.org/string.bullet/-/string.bullet-1.0.12.tgz",
95
+ "integrity": "sha1-tB/EF4UKV+QEK/PPNHtu7iV+4lM=",
96
+ "requires": {
97
+ "printable-characters": "^1.0.26"
98
+ }
99
+ },
100
+ "string.ify": {
101
+ "version": "1.0.61",
102
+ "resolved": "https://registry.npmjs.org/string.ify/-/string.ify-1.0.61.tgz",
103
+ "integrity": "sha512-ROVOYWN8B62bP1LUJIDK6/NooBrN8xIvpV8Ugssbw7Oa4YKJmiOeoEomhDLLRVpYHo0vOBCpEM8RFpxUk9KDIQ==",
104
+ "requires": {
105
+ "printable-characters": "^1.0.42",
106
+ "string.bullet": "^1.0.12"
107
+ }
108
+ },
109
+ "typescript": {
110
+ "version": "3.5.3",
111
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
112
+ "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
113
+ "dev": true
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "fetch-futures",
3
+ "version": "0.1.0",
4
+ "description": "ccxt example code in typescript.",
5
+ "main": "build/src/index.js",
6
+ "types": "build/src/index.d.ts",
7
+ "files": [
8
+ "build/src"
9
+ ],
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/ccxt/ccxt.git"
14
+ },
15
+ "keywords": [],
16
+ "scripts": {
17
+ "test": "echo \"Error: no test specified\" && exit 1",
18
+ "build": "tsc -p .",
19
+ "start": "node ./build/index"
20
+ },
21
+ "dependencies": {
22
+ "ansicolor": "^1.1.92",
23
+ "as-table": "^1.0.55",
24
+ "ccxt": "^2.0.0",
25
+ "ololog": "^1.1.146"
26
+ },
27
+ "devDependencies": {
28
+ "typescript": "~3.5.0",
29
+ "@types/node": "^10.0.3"
30
+ },
31
+ "engines": {
32
+ "node": ">=7.6.0"
33
+ }
34
+ }
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ singleQuote: true,
3
+ trailingComma: 'es5',
4
+ };
@@ -0,0 +1,28 @@
1
+ // Example code in typescript
2
+ // Based on /examples/js/fetch-okex-futures.js
3
+
4
+ import * as ccxt from 'ccxt';
5
+ const log = require('ololog');
6
+
7
+ const fetchFutures = async () => {
8
+ const exchange = new ccxt.bitmex();
9
+ exchange.markets = await exchange.loadMarkets(true);
10
+
11
+ for (let symbol in exchange.markets) {
12
+ log('----------------------------------------------------');
13
+ log(`symbol = ${symbol}`);
14
+ try {
15
+ const market = exchange.markets[symbol];
16
+ if (market['future']) {
17
+ const ticker = await exchange.fetchTicker(symbol);
18
+ log('----------------------------------------------------');
19
+ log(symbol, ticker);
20
+ await (ccxt as any).sleep(exchange.rateLimit); // Missing type information.
21
+ }
22
+ } catch (error) {
23
+ log('error =', error);
24
+ }
25
+ }
26
+ };
27
+
28
+ fetchFutures();
@@ -0,0 +1,28 @@
1
+ {
2
+ "compilerOptions": {
3
+ "rootDir": "src",
4
+ "outDir": "build",
5
+ "allowUnreachableCode": false,
6
+ "allowUnusedLabels": false,
7
+ "declaration": true,
8
+ "forceConsistentCasingInFileNames": true,
9
+ "lib": [
10
+ "es2016"
11
+ ],
12
+ "module": "commonjs",
13
+ "noEmitOnError": true,
14
+ "noFallthroughCasesInSwitch": true,
15
+ "noImplicitReturns": true,
16
+ "pretty": true,
17
+ "sourceMap": true,
18
+ "strict": true,
19
+ "target": "es2017"
20
+ },
21
+ "include": [
22
+ "src/**/*.ts",
23
+ "test/**/*.ts"
24
+ ],
25
+ "exclude": [
26
+ "node_modules"
27
+ ]
28
+ }
@@ -0,0 +1,44 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ // fetch and handle constinuosly
6
+ async function fetchOHLCVContinuously (exchange, symbol) {
7
+ while (true) {
8
+ try {
9
+ const ohlcv = await exchange.fetchOHLCV (symbol);
10
+ const ohlcvLength = ohlcv.length;
11
+ console.log ('Fetched ', exchange.id, ' - ', symbol, ' candles. last candle: ', ohlcv[ohlcvLength - 1]);
12
+ } catch (e) {
13
+ console.log (e);
14
+ break;
15
+ }
16
+ }
17
+ }
18
+
19
+ // start exchanges and fetch OHLCV loop
20
+ async function startExchange (exchangeName, symbols) {
21
+ const ex = new ccxt[exchangeName] ({});
22
+ const promises = [];
23
+ for (let i = 0; i < symbols.length; i++) {
24
+ const symbol = symbols[i];
25
+ promises.push (fetchOHLCVContinuously (ex, symbol));
26
+ }
27
+ await Promise.all (promises);
28
+ await ex.close ();
29
+ }
30
+
31
+ // main function
32
+ async function example () {
33
+ const exchanges = [ 'binance', 'okx', 'kraken' ];
34
+ const symbols = [ 'BTC/USDT', 'ETH/USDT' ];
35
+ const promises = [];
36
+ for (let i = 0; i < exchanges.length; i++) {
37
+ const exchangeName = exchanges[i];
38
+ promises.push (startExchange (exchangeName, symbols));
39
+ }
40
+ await Promise.all (promises);
41
+ }
42
+
43
+
44
+ await example ();
@@ -0,0 +1,17 @@
1
+ import ccxt from '../../js/ccxt.js';
2
+
3
+ // AUTO-TRANSPILE //
4
+
5
+ async function example () {
6
+ const myex = new ccxt.okx ({});
7
+ const fromTimestamp = myex.milliseconds () - 86400 * 1000;// last 24 hrs
8
+ const ohlcv = await myex.fetchOHLCV ('BTC/USDT', '1m', fromTimestamp, 3, { 'whatever': 123 });
9
+ const length = ohlcv.length;
10
+ if (length > 0) {
11
+ const lastPrice = ohlcv[length - 1][4];
12
+ console.log ('Fetched ', length, ' candles for ', myex.id, ': last close ', lastPrice);
13
+ } else {
14
+ console.log ('No candles have been fetched');
15
+ }
16
+ }
17
+ await example ();
@@ -0,0 +1,116 @@
1
+ {
2
+ "name": "fetch-tickers",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "@types/node": {
8
+ "version": "10.14.18",
9
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.18.tgz",
10
+ "integrity": "sha512-ryO3Q3++yZC/+b8j8BdKd/dn9JlzlHBPdm80656xwYUdmPkpTGTjkAdt6BByiNupGPE8w0FhBgvYy/fX9hRNGQ==",
11
+ "dev": true
12
+ },
13
+ "ansicolor": {
14
+ "version": "1.1.92",
15
+ "resolved": "https://registry.npmjs.org/ansicolor/-/ansicolor-1.1.92.tgz",
16
+ "integrity": "sha512-2jRpULfLpLvFeYYxIu1z6i0LQ4Khj/UxecsrdJ+837P0AVOW3smdKHpHmeKVYHZPG67o3jQFdMjNvPwktwPmZg=="
17
+ },
18
+ "as-table": {
19
+ "version": "1.0.55",
20
+ "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
21
+ "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
22
+ "requires": {
23
+ "printable-characters": "^1.0.42"
24
+ }
25
+ },
26
+ "ccxt": {
27
+ "version": "1.18.1147",
28
+ "resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.18.1147.tgz",
29
+ "integrity": "sha512-3iflgpmBKgbskca3hwUDW/ewepKQ9rFEvxMV9s8NkWJFloO0ZAQzf3SfyxdRDGcJHcNNxSmbRFX/zRp3ucH0jw=="
30
+ },
31
+ "data-uri-to-buffer": {
32
+ "version": "2.0.1",
33
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz",
34
+ "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==",
35
+ "requires": {
36
+ "@types/node": "^8.0.7"
37
+ },
38
+ "dependencies": {
39
+ "@types/node": {
40
+ "version": "8.10.54",
41
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
42
+ "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg=="
43
+ }
44
+ }
45
+ },
46
+ "get-source": {
47
+ "version": "1.0.40",
48
+ "resolved": "https://registry.npmjs.org/get-source/-/get-source-1.0.40.tgz",
49
+ "integrity": "sha512-grbzSLO9gCVpb+ngrUf2ch4nzcfAs9pYqlnu0v2+Ho0rOpwnJqhZsHWLXaqdNHMtmnY+OwGgS4SPdzMRXEwVtQ==",
50
+ "requires": {
51
+ "data-uri-to-buffer": "^2.0.0",
52
+ "source-map": "^0.6.1"
53
+ }
54
+ },
55
+ "ololog": {
56
+ "version": "1.1.146",
57
+ "resolved": "https://registry.npmjs.org/ololog/-/ololog-1.1.146.tgz",
58
+ "integrity": "sha512-C68zLVMFgIZC1Rdz7LTmtIEuAsth/2yllA/kb3OUfdWI9+U5x4F7EXO3xgfp9Rhn/tiETffo6DnWGPQaVHjKiw==",
59
+ "requires": {
60
+ "ansicolor": "^1.1.84",
61
+ "pipez": "^1.1.12",
62
+ "printable-characters": "^1.0.42",
63
+ "stacktracey": "^1.2.117",
64
+ "string.bullet": "^1.0.12",
65
+ "string.ify": "^1.0.57"
66
+ }
67
+ },
68
+ "pipez": {
69
+ "version": "1.1.12",
70
+ "resolved": "https://registry.npmjs.org/pipez/-/pipez-1.1.12.tgz",
71
+ "integrity": "sha1-s1nOVAHpNfEp+koJT83omvuENtg="
72
+ },
73
+ "printable-characters": {
74
+ "version": "1.0.42",
75
+ "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
76
+ "integrity": "sha1-Pxjpd6m9jrN/zE/1ZZ176Qhos9g="
77
+ },
78
+ "source-map": {
79
+ "version": "0.6.1",
80
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
81
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
82
+ },
83
+ "stacktracey": {
84
+ "version": "1.2.117",
85
+ "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-1.2.117.tgz",
86
+ "integrity": "sha512-sj9olGCco8jxMw3fcmhL5er1yuVL2qSMhNfycwx+iIWz6uVpG+bQ2YNpVSlWscGmSskt61gSmUBjZ0Mb5jYBLw==",
87
+ "requires": {
88
+ "as-table": "^1.0.36",
89
+ "get-source": "^1.0.34"
90
+ }
91
+ },
92
+ "string.bullet": {
93
+ "version": "1.0.12",
94
+ "resolved": "https://registry.npmjs.org/string.bullet/-/string.bullet-1.0.12.tgz",
95
+ "integrity": "sha1-tB/EF4UKV+QEK/PPNHtu7iV+4lM=",
96
+ "requires": {
97
+ "printable-characters": "^1.0.26"
98
+ }
99
+ },
100
+ "string.ify": {
101
+ "version": "1.0.61",
102
+ "resolved": "https://registry.npmjs.org/string.ify/-/string.ify-1.0.61.tgz",
103
+ "integrity": "sha512-ROVOYWN8B62bP1LUJIDK6/NooBrN8xIvpV8Ugssbw7Oa4YKJmiOeoEomhDLLRVpYHo0vOBCpEM8RFpxUk9KDIQ==",
104
+ "requires": {
105
+ "printable-characters": "^1.0.42",
106
+ "string.bullet": "^1.0.12"
107
+ }
108
+ },
109
+ "typescript": {
110
+ "version": "3.5.3",
111
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
112
+ "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
113
+ "dev": true
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "fetch-tickers",
3
+ "version": "0.1.0",
4
+ "description": "ccxt example code in typescript.",
5
+ "main": "build/src/index.js",
6
+ "types": "build/src/index.d.ts",
7
+ "files": [
8
+ "build/src"
9
+ ],
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/ccxt/ccxt.git"
14
+ },
15
+ "keywords": [],
16
+ "scripts": {
17
+ "test": "echo \"Error: no test specified\" && exit 1",
18
+ "build": "tsc -p .",
19
+ "start": "node ./build/index"
20
+ },
21
+ "dependencies": {
22
+ "ansicolor": "^1.1.92",
23
+ "as-table": "^1.0.55",
24
+ "ccxt": "^2.0.0",
25
+ "ololog": "^1.1.146"
26
+ },
27
+ "devDependencies": {
28
+ "typescript": "~3.5.0",
29
+ "@types/node": "^10.0.3"
30
+ },
31
+ "engines": {
32
+ "node": ">=7.6.0"
33
+ }
34
+ }