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.
Files changed (330) hide show
  1. package/README.md +6 -5
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/base/Exchange.js +3 -0
  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 +69 -5
  7. package/dist/cjs/src/bybit.js +1 -1
  8. package/dist/cjs/src/coinbase.js +2 -1
  9. package/dist/cjs/src/coinbasepro.js +1 -1
  10. package/dist/cjs/src/coinex.js +164 -206
  11. package/dist/cjs/src/cryptocom.js +5 -5
  12. package/dist/cjs/src/hyperliquid.js +74 -0
  13. package/dist/cjs/src/kraken.js +8 -3
  14. package/dist/cjs/src/kucoin.js +13 -11
  15. package/dist/cjs/src/okx.js +76 -5
  16. package/dist/cjs/src/pro/kraken.js +2 -2
  17. package/dist/cjs/src/woo.js +40 -0
  18. package/js/ccxt.d.ts +1 -1
  19. package/js/ccxt.js +1 -1
  20. package/js/src/base/Exchange.d.ts +2 -1
  21. package/js/src/base/Exchange.js +3 -0
  22. package/js/src/base/types.d.ts +5 -0
  23. package/js/src/binance.d.ts +3 -1
  24. package/js/src/binance.js +56 -0
  25. package/js/src/bingx.js +3 -3
  26. package/js/src/bitget.d.ts +1 -0
  27. package/js/src/bitget.js +69 -5
  28. package/js/src/bybit.js +1 -1
  29. package/js/src/coinbase.js +2 -1
  30. package/js/src/coinbasepro.d.ts +1 -1
  31. package/js/src/coinbasepro.js +1 -1
  32. package/js/src/coinex.js +164 -206
  33. package/js/src/cryptocom.js +5 -5
  34. package/js/src/hyperliquid.d.ts +2 -1
  35. package/js/src/hyperliquid.js +75 -1
  36. package/js/src/kraken.js +8 -3
  37. package/js/src/kucoin.js +13 -11
  38. package/js/src/okx.d.ts +1 -0
  39. package/js/src/okx.js +76 -5
  40. package/js/src/pro/kraken.js +2 -2
  41. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  42. package/js/src/woo.d.ts +1 -0
  43. package/js/src/woo.js +40 -0
  44. package/package.json +2 -1
  45. package/.dockerignore +0 -6
  46. package/.eslintignore +0 -1
  47. package/.git-templates/hooks/pre-push +0 -55
  48. package/.gitattributes +0 -7
  49. package/CHANGELOG.md +0 -6003
  50. package/CODEOWNERS +0 -1
  51. package/CONTRIBUTING.md +0 -1099
  52. package/build.sh +0 -217
  53. package/change.sh +0 -18
  54. package/cleanup.sh +0 -18
  55. package/composer-install.sh +0 -20
  56. package/dist/ccxt.browser.js +0 -327256
  57. package/dist/ccxt.browser.min.js +0 -30
  58. package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
  59. package/doc/FAQ.rst +0 -1
  60. package/doc/Makefile +0 -20
  61. package/doc/_static/css/dark.css +0 -101
  62. package/doc/_static/css/index.css +0 -128
  63. package/doc/_static/favicon.ico +0 -0
  64. package/doc/_static/javascript/binance-portal.min.js +0 -2369
  65. package/doc/_static/javascript/index.js +0 -195
  66. package/doc/_static/javascript/jquery-ui.min.js +0 -6
  67. package/doc/ccxt.pro.install.rst +0 -1
  68. package/doc/ccxt.pro.manual.rst +0 -1665
  69. package/doc/exchange-markets-by-country.rst +0 -1423
  70. package/doc/exchange-markets.rst +0 -1441
  71. package/doc/index.rst +0 -35
  72. package/doc/install.rst +0 -1
  73. package/doc/make.bat +0 -36
  74. package/doc/manual.rst +0 -7471
  75. package/doc/readme.rst +0 -2191
  76. package/doc/requirements.txt +0 -6
  77. package/examples/ccxt.pro/html/watchTicker.html +0 -51
  78. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
  79. package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
  80. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
  81. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
  82. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
  83. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
  84. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
  85. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
  86. package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
  87. package/examples/ccxt.pro/js/exchange-close.js +0 -46
  88. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
  89. package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
  90. package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
  91. package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
  92. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
  93. package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
  94. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
  95. package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
  96. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
  97. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
  98. package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
  99. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
  100. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
  101. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
  102. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
  103. package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
  104. package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
  105. package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
  106. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
  107. package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
  108. package/examples/cs/Examples.sln +0 -22
  109. package/examples/cs/c#.csproj +0 -19
  110. package/examples/html/basic-cors-proxy.html +0 -46
  111. package/examples/html/basic-inheritance.html +0 -47
  112. package/examples/html/basic-poller.html +0 -52
  113. package/examples/html/basic-rate-limiting.html +0 -49
  114. package/examples/html/basic.html +0 -43
  115. package/examples/html/binance-cors-proxy.html +0 -28
  116. package/examples/html/bitmex-browser-cors-proxy.js +0 -7
  117. package/examples/html/bitmex-cors.html +0 -46
  118. package/examples/html/tradingview-charts.html +0 -61
  119. package/examples/html/webworker/index.html +0 -97
  120. package/examples/html/webworker/worker.js +0 -43
  121. package/examples/js/advanced-error-handling.js +0 -39
  122. package/examples/js/aggregate-orderbook.js +0 -54
  123. package/examples/js/arbitrage-pairs.js +0 -130
  124. package/examples/js/basic-chart.js +0 -29
  125. package/examples/js/basic-orderbook-polling.js +0 -13
  126. package/examples/js/bcc-vs-bch.js +0 -115
  127. package/examples/js/benchmark.js +0 -104
  128. package/examples/js/binance-fetch-all-deposits.js +0 -45
  129. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
  130. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
  131. package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
  132. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
  133. package/examples/js/binance-margin-stop-order.js +0 -39
  134. package/examples/js/binance-server-time.js +0 -34
  135. package/examples/js/binance-universal-transfer.js +0 -16
  136. package/examples/js/bitfinex-fetch-trades.js +0 -35
  137. package/examples/js/bitfinex2-fetch-trades.js +0 -35
  138. package/examples/js/bitmex-browser-cors-proxy.js +0 -7
  139. package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
  140. package/examples/js/bitrue-fetch-balance.js +0 -28
  141. package/examples/js/bitstamp-private-api.js +0 -115
  142. package/examples/js/bitstamp-public-api.js +0 -39
  143. package/examples/js/bittrex-balance.js +0 -50
  144. package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
  145. package/examples/js/blockchaincom-withdrawal.js +0 -59
  146. package/examples/js/build-ohlcv-bars.js +0 -48
  147. package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
  148. package/examples/js/bybit-trailing.js +0 -62
  149. package/examples/js/bybit-updated.cjs +0 -154
  150. package/examples/js/coinbase-fetch-all-balances.js +0 -36
  151. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
  152. package/examples/js/coinex-futures.js +0 -75
  153. package/examples/js/coinone-fetch-tickers.js +0 -54
  154. package/examples/js/coinone-markets.js +0 -16
  155. package/examples/js/compare-two-exchanges-capabilities.js +0 -36
  156. package/examples/js/cors-proxy.js +0 -5
  157. package/examples/js/create-order-handle-errors.js +0 -55
  158. package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
  159. package/examples/js/create-order-with-retry.js +0 -65
  160. package/examples/js/create-order-ws-example.js +0 -25
  161. package/examples/js/create-orders-example.js +0 -17
  162. package/examples/js/create-trailing-amount-order.js +0 -36
  163. package/examples/js/create-trailing-percent-order.js +0 -36
  164. package/examples/js/credentials.json +0 -5
  165. package/examples/js/custom-proxy-agent-for-js.js +0 -10
  166. package/examples/js/custom-proxy-url.js +0 -23
  167. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
  168. package/examples/js/env-variables.js +0 -26
  169. package/examples/js/error-handling.js +0 -89
  170. package/examples/js/exchange-capabilities.js +0 -135
  171. package/examples/js/exchanges-by-volume.js +0 -60
  172. package/examples/js/exchanges.js +0 -40
  173. package/examples/js/fetch-all-balances.js +0 -219
  174. package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
  175. package/examples/js/fetch-all-tickers-to-files.js +0 -77
  176. package/examples/js/fetch-balance.js +0 -28
  177. package/examples/js/fetch-create-deposit-address.js +0 -101
  178. package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
  179. package/examples/js/fetch-funding-rate-history.js +0 -25
  180. package/examples/js/fetch-futures/prettier.config.js +0 -5
  181. package/examples/js/fetch-futures/src/index.js +0 -25
  182. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
  183. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
  184. package/examples/js/fetch-ohlcv.js +0 -16
  185. package/examples/js/fetch-okex-futures.js +0 -22
  186. package/examples/js/fetch-orders.js +0 -27
  187. package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
  188. package/examples/js/fetch-ticker-where-available.js +0 -75
  189. package/examples/js/fetch-tickers/build/index.js +0 -19
  190. package/examples/js/fetch-tickers/prettier.config.js +0 -5
  191. package/examples/js/fetch-tickers/src/index.js +0 -17
  192. package/examples/js/gateio-create-batch-order.js +0 -43
  193. package/examples/js/gateio-futures.js +0 -49
  194. package/examples/js/gateio-open-close-contract.js +0 -49
  195. package/examples/js/gateio-swaps.js +0 -74
  196. package/examples/js/gdax-fetch-trades-pagination.js +0 -29
  197. package/examples/js/hitbtc2-withdraw.js +0 -61
  198. package/examples/js/how-to-import-one-exchange-esm.js +0 -10
  199. package/examples/js/huobi-futures.js +0 -71
  200. package/examples/js/huobi-open-close-contract.js +0 -63
  201. package/examples/js/huobi-swaps.js +0 -70
  202. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
  203. package/examples/js/hybridCJSExample.cjs +0 -19
  204. package/examples/js/hybridESMExample.js +0 -19
  205. package/examples/js/idex-fetch-balance.js +0 -13
  206. package/examples/js/instantiate-all-at-once.js +0 -46
  207. package/examples/js/instantiate-all-from-json.js +0 -31
  208. package/examples/js/kraken-create-and-close-position.js +0 -54
  209. package/examples/js/kraken-fetch-order-trades.js +0 -33
  210. package/examples/js/kraken-margin-trading.js +0 -89
  211. package/examples/js/kucoin-rate-limit.js +0 -38
  212. package/examples/js/latoken-example.js +0 -108
  213. package/examples/js/live-orderbook.js +0 -106
  214. package/examples/js/live-ticker.js +0 -80
  215. package/examples/js/live-tickers.js +0 -74
  216. package/examples/js/load-all-contracts.js +0 -41
  217. package/examples/js/load-all-symbols-at-once.js +0 -69
  218. package/examples/js/load-all-tickers-at-once.js +0 -91
  219. package/examples/js/load-markets-to-files.js +0 -57
  220. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
  221. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
  222. package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
  223. package/examples/js/market-status-and-currency-status.js +0 -29
  224. package/examples/js/ohlcv-console-chart.js +0 -29
  225. package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
  226. package/examples/js/okex-transfer.js +0 -51
  227. package/examples/js/okx-poll-fetch-my-trades.js +0 -37
  228. package/examples/js/okx-poll-rate-limit.js +0 -48
  229. package/examples/js/order-book-extra-level-depth-param.js +0 -20
  230. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
  231. package/examples/js/poll-ohlcv.js +0 -43
  232. package/examples/js/poloniex-fetch-order-books.js +0 -35
  233. package/examples/js/poloniex-limits-amount-min.js +0 -62
  234. package/examples/js/proxy-round-robin.js +0 -98
  235. package/examples/js/proxy-usage.js +0 -32
  236. package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
  237. package/examples/js/search-all-exchanges.js +0 -159
  238. package/examples/js/shared-load-markets.js +0 -80
  239. package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
  240. package/examples/js/symbols.js +0 -110
  241. package/examples/js/theocean.js +0 -41
  242. package/examples/js/tickers.js +0 -106
  243. package/examples/js/validate-paginated-data.js +0 -61
  244. package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
  245. package/examples/js/watch-OHLCV.js +0 -12
  246. package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
  247. package/examples/js/watch-Trades-For-Symbols.js +0 -11
  248. package/examples/js/watch-tickers.js +0 -11
  249. package/examples/js/watchOHLCVForSymbols.js +0 -15
  250. package/examples/js/watchOrderBookForSymbols.js +0 -11
  251. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
  252. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
  253. package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
  254. package/examples/js/watchPositions.d.ts +0 -2
  255. package/examples/js/watchPositions.d.ts.map +0 -1
  256. package/examples/js/watchPositions.js +0 -13
  257. package/examples/js/watchPositionsForSymbols.d.ts +0 -2
  258. package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
  259. package/examples/js/watchPositionsForSymbols.js +0 -14
  260. package/examples/js/watchTradesForSymbols.js +0 -11
  261. package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
  262. package/examples/php/README.md +0 -7
  263. package/examples/py/README.md +0 -15
  264. package/examples/py/playing_with_ccxt_example.ipynb +0 -222
  265. package/examples/ts/.eslintrc +0 -111
  266. package/examples/ts/benchmark.ts +0 -134
  267. package/examples/ts/build-ohlcv-bars.ts +0 -53
  268. package/examples/ts/cli.ts +0 -397
  269. package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
  270. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
  271. package/examples/ts/create-order-ws-example.ts +0 -33
  272. package/examples/ts/create-orders-example.ts +0 -21
  273. package/examples/ts/create-trailing-amount-order.ts +0 -37
  274. package/examples/ts/create-trailing-percent-order.ts +0 -37
  275. package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
  276. package/examples/ts/fetch-futures/package-lock.json +0 -116
  277. package/examples/ts/fetch-futures/package.json +0 -34
  278. package/examples/ts/fetch-futures/prettier.config.js +0 -4
  279. package/examples/ts/fetch-futures/src/index.ts +0 -28
  280. package/examples/ts/fetch-futures/tsconfig.json +0 -28
  281. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
  282. package/examples/ts/fetch-ohlcv.ts +0 -17
  283. package/examples/ts/fetch-tickers/package-lock.json +0 -116
  284. package/examples/ts/fetch-tickers/package.json +0 -34
  285. package/examples/ts/fetch-tickers/prettier.config.js +0 -4
  286. package/examples/ts/fetch-tickers/src/index.ts +0 -21
  287. package/examples/ts/fetch-tickers/tsconfig.json +0 -28
  288. package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
  289. package/examples/ts/kraken-create-and-close-position.ts +0 -69
  290. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
  291. package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
  292. package/examples/ts/nextjs-page-router/README.md +0 -43
  293. package/examples/ts/nextjs-page-router/next.config.js +0 -6
  294. package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
  295. package/examples/ts/nextjs-page-router/package.json +0 -28
  296. package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
  297. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  298. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
  299. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
  300. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
  301. package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
  302. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
  303. package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
  304. package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
  305. package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
  306. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
  307. package/examples/ts/proxy-usage.ts +0 -41
  308. package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
  309. package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
  310. package/examples/ts/watch-OHLCV.ts +0 -14
  311. package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
  312. package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
  313. package/examples/ts/watch-tickers.ts +0 -13
  314. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
  315. package/examples/ts/watchPositions.ts +0 -15
  316. package/examples/ts/watchPositionsForSymbols.ts +0 -16
  317. package/examples/tsconfig.json +0 -27
  318. package/examples2md.js +0 -79
  319. package/gource.sh +0 -3
  320. package/index.html +0 -7
  321. package/jsdoc2md.js +0 -122
  322. package/multilang.sh +0 -164
  323. package/pro-tests.json +0 -57
  324. package/pyproject.toml +0 -8
  325. package/rollup.config.js +0 -60
  326. package/skip-tests.json +0 -1653
  327. package/test-commonjs.cjs +0 -65
  328. package/tests-manager.sh +0 -96
  329. package/tsconfig.json +0 -111
  330. package/webpack.config.js +0 -46
@@ -1,1665 +0,0 @@
1
-
2
- Manual
3
- ======
4
-
5
- The CCXT Pro stack is built upon `CCXT <https://ccxt.com>`__ and extends the core CCXT classes, using:
6
-
7
-
8
- * JavaScript prototype-level mixins
9
- * Python multiple inheritance
10
- * PHP Traits
11
-
12
- The CCXT Pro heavily relies on the transpiler of CCXT for `multilanguage support <https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#multilanguage-support>`__.
13
-
14
- .. code-block::
15
-
16
- User
17
-
18
- +-------------------------------------------------------------+
19
- | CCXT Pro |
20
- +------------------------------+------------------------------+
21
- | Public . Private |
22
- +=============================================================+
23
- │ . |
24
- │ The Unified CCXT Pro API |
25
- | . |
26
- | loadMarkets . watchBalance |
27
- | watchTicker . watchCreateOrder |
28
- | watchTickers . watchCancelOrder |
29
- | watchOrderBook . watchOrder |
30
- | watchOHLCV . watchOrders |
31
- | watchStatus . watchOpenOrders |
32
- | watchTrades . watchClosedOrders |
33
- | . watchMyTrades |
34
- | . watchDeposit |
35
- | . watchWithdraw |
36
- │ . |
37
- +=============================================================+
38
- │ . |
39
- | The Underlying Exchange-Specific APIs |
40
- | (Derived Classes And Their Implementations) |
41
- │ . |
42
- +=============================================================+
43
- │ . |
44
- | CCXT Pro Base Exchange Class |
45
- │ . |
46
- +=============================================================+
47
-
48
- +-------------------------------------------------------------+
49
- | |
50
- | CCXT |
51
- | |
52
- +=============================================================+
53
-
54
- Exchanges
55
- ---------
56
-
57
- The CCXT Pro library currently supports the following 46 cryptocurrency exchange markets and WebSocket trading APIs:
58
-
59
- .. list-table::
60
- :header-rows: 1
61
-
62
- * - logo
63
- - id
64
- - name
65
- - ver
66
- - certified
67
- - pro
68
- * - .. image:: https://user-images.githubusercontent.com/1294454/187234005-b864db3d-f1e3-447a-aaf9-a9fc7b955d07.jpg
69
- :target: https://alpaca.markets
70
- :alt: alpaca
71
-
72
- - alpaca
73
- - `Alpaca <https://alpaca.markets>`__
74
- - .. image:: https://img.shields.io/badge/*-lightgray
75
- :target: https://alpaca.markets/docs/
76
- :alt: API Version *
77
-
78
- -
79
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
80
- :target: https://ccxt.pro
81
- :alt: CCXT Pro
82
-
83
- * - .. image:: https://user-images.githubusercontent.com/1294454/112027508-47984600-8b48-11eb-9e17-d26459cc36c6.jpg
84
- :target: https://ascendex.com/en-us/register?inviteCode=EL6BXBQM
85
- :alt: ascendex
86
-
87
- - ascendex
88
- - `AscendEX <https://ascendex.com/en-us/register?inviteCode=EL6BXBQM>`__
89
- - .. image:: https://img.shields.io/badge/2-lightgray
90
- :target: https://ascendex.github.io/ascendex-pro-api/#ascendex-pro-api-documentation
91
- :alt: API Version 2
92
-
93
- -
94
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
95
- :target: https://ccxt.pro
96
- :alt: CCXT Pro
97
-
98
- * - .. image:: https://user-images.githubusercontent.com/1294454/55248342-a75dfe00-525a-11e9-8aa2-05e9dca943c6.jpg
99
- :target: https://bequant.io
100
- :alt: bequant
101
-
102
- - bequant
103
- - `Bequant <https://bequant.io>`__
104
- - .. image:: https://img.shields.io/badge/2-lightgray
105
- :target: https://api.bequant.io/
106
- :alt: API Version 2
107
-
108
- -
109
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
110
- :target: https://ccxt.pro
111
- :alt: CCXT Pro
112
-
113
- * - .. image:: https://user-images.githubusercontent.com/1294454/29604020-d5483cdc-87ee-11e7-94c7-d1a8d9169293.jpg
114
- :target: https://accounts.binance.com/en/register?ref=D7YA7CLY
115
- :alt: binance
116
-
117
- - binance
118
- - `Binance <https://accounts.binance.com/en/register?ref=D7YA7CLY>`__
119
- - .. image:: https://img.shields.io/badge/*-lightgray
120
- :target: https://binance-docs.github.io/apidocs/spot/en
121
- :alt: API Version *
122
-
123
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
124
- :target: https://github.com/ccxt/ccxt/wiki/Certification
125
- :alt: CCXT Certified
126
-
127
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
128
- :target: https://ccxt.pro
129
- :alt: CCXT Pro
130
-
131
- * - .. image:: https://user-images.githubusercontent.com/1294454/117738721-668c8d80-b205-11eb-8c49-3fad84c4a07f.jpg
132
- :target: https://accounts.binance.com/en/register?ref=D7YA7CLY
133
- :alt: binancecoinm
134
-
135
- - binancecoinm
136
- - `Binance COIN-M <https://accounts.binance.com/en/register?ref=D7YA7CLY>`__
137
- - .. image:: https://img.shields.io/badge/*-lightgray
138
- :target: https://binance-docs.github.io/apidocs/delivery/en/
139
- :alt: API Version *
140
-
141
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
142
- :target: https://github.com/ccxt/ccxt/wiki/Certification
143
- :alt: CCXT Certified
144
-
145
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
146
- :target: https://ccxt.pro
147
- :alt: CCXT Pro
148
-
149
- * - .. image:: https://user-images.githubusercontent.com/1294454/65177307-217b7c80-da5f-11e9-876e-0b748ba0a358.jpg
150
- :target: https://www.binance.us/?ref=35005074
151
- :alt: binanceus
152
-
153
- - binanceus
154
- - `Binance US <https://www.binance.us/?ref=35005074>`__
155
- - .. image:: https://img.shields.io/badge/*-lightgray
156
- :target: https://github.com/binance-us/binance-official-api-docs
157
- :alt: API Version *
158
-
159
- -
160
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
161
- :target: https://ccxt.pro
162
- :alt: CCXT Pro
163
-
164
- * - .. image:: https://user-images.githubusercontent.com/1294454/117738721-668c8d80-b205-11eb-8c49-3fad84c4a07f.jpg
165
- :target: https://accounts.binance.com/en/register?ref=D7YA7CLY
166
- :alt: binanceusdm
167
-
168
- - binanceusdm
169
- - `Binance USDⓈ-M <https://accounts.binance.com/en/register?ref=D7YA7CLY>`__
170
- - .. image:: https://img.shields.io/badge/*-lightgray
171
- :target: https://binance-docs.github.io/apidocs/futures/en/
172
- :alt: API Version *
173
-
174
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
175
- :target: https://github.com/ccxt/ccxt/wiki/Certification
176
- :alt: CCXT Certified
177
-
178
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
179
- :target: https://ccxt.pro
180
- :alt: CCXT Pro
181
-
182
- * - .. image:: https://user-images.githubusercontent.com/1294454/27766244-e328a50c-5ed2-11e7-947b-041416579bb3.jpg
183
- :target: https://www.bitfinex.com/?refcode=P61eYxFL
184
- :alt: bitfinex
185
-
186
- - bitfinex
187
- - `Bitfinex <https://www.bitfinex.com/?refcode=P61eYxFL>`__
188
- - .. image:: https://img.shields.io/badge/1-lightgray
189
- :target: https://docs.bitfinex.com/v1/docs
190
- :alt: API Version 1
191
-
192
- -
193
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
194
- :target: https://ccxt.pro
195
- :alt: CCXT Pro
196
-
197
- * - .. image:: https://user-images.githubusercontent.com/1294454/195989417-4253ddb0-afbe-4a1c-9dea-9dbcd121fa5d.jpg
198
- :target: https://www.bitget.com/expressly?languageType=0&channelCode=ccxt&vipCode=tg9j
199
- :alt: bitget
200
-
201
- - bitget
202
- - `Bitget <https://www.bitget.com/expressly?languageType=0&channelCode=ccxt&vipCode=tg9j>`__
203
- - .. image:: https://img.shields.io/badge/1-lightgray
204
- :target: https://bitgetlimited.github.io/apidoc/en/mix
205
- :alt: API Version 1
206
-
207
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
208
- :target: https://github.com/ccxt/ccxt/wiki/Certification
209
- :alt: CCXT Certified
210
-
211
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
212
- :target: https://ccxt.pro
213
- :alt: CCXT Pro
214
-
215
- * - .. image:: https://user-images.githubusercontent.com/1294454/129991357-8f47464b-d0f4-41d6-8a82-34122f0d1398.jpg
216
- :target: http://www.bitmart.com/?r=rQCFLh
217
- :alt: bitmart
218
-
219
- - bitmart
220
- - `BitMart <http://www.bitmart.com/?r=rQCFLh>`__
221
- - .. image:: https://img.shields.io/badge/2-lightgray
222
- :target: https://developer-pro.bitmart.com/
223
- :alt: API Version 2
224
-
225
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
226
- :target: https://github.com/ccxt/ccxt/wiki/Certification
227
- :alt: CCXT Certified
228
-
229
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
230
- :target: https://ccxt.pro
231
- :alt: CCXT Pro
232
-
233
- * - .. image:: https://user-images.githubusercontent.com/1294454/27766319-f653c6e6-5ed4-11e7-933d-f0bc3699ae8f.jpg
234
- :target: https://www.bitmex.com/register/upZpOX
235
- :alt: bitmex
236
-
237
- - bitmex
238
- - `BitMEX <https://www.bitmex.com/register/upZpOX>`__
239
- - .. image:: https://img.shields.io/badge/1-lightgray
240
- :target: https://www.bitmex.com/app/apiOverview
241
- :alt: API Version 1
242
-
243
- -
244
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
245
- :target: https://ccxt.pro
246
- :alt: CCXT Pro
247
-
248
- * - .. image:: https://user-images.githubusercontent.com/1294454/158227251-3a92a220-9222-453c-9277-977c6677fe71.jpg
249
- :target: https://www.bitopro.com
250
- :alt: bitopro
251
-
252
- - bitopro
253
- - `BitoPro <https://www.bitopro.com>`__
254
- - .. image:: https://img.shields.io/badge/3-lightgray
255
- :target: https://github.com/bitoex/bitopro-offical-api-docs/blob/master/v3-1/rest-1/rest.md
256
- :alt: API Version 3
257
-
258
- -
259
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
260
- :target: https://ccxt.pro
261
- :alt: CCXT Pro
262
-
263
- * - .. image:: https://user-images.githubusercontent.com/1294454/139516488-243a830d-05dd-446b-91c6-c1f18fe30c63.jpg
264
- :target: https://www.bitrue.com/activity/task/task-landing?inviteCode=EZWETQE&cn=900000
265
- :alt: bitrue
266
-
267
- - bitrue
268
- - `Bitrue <https://www.bitrue.com/activity/task/task-landing?inviteCode=EZWETQE&cn=900000>`__
269
- - .. image:: https://img.shields.io/badge/1-lightgray
270
- :target: https://github.com/Bitrue-exchange/bitrue-official-api-docs
271
- :alt: API Version 1
272
-
273
- -
274
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
275
- :target: https://ccxt.pro
276
- :alt: CCXT Pro
277
-
278
- * - .. image:: https://user-images.githubusercontent.com/1294454/27786377-8c8ab57e-5fe9-11e7-8ea4-2b05b6bcceec.jpg
279
- :target: https://www.bitstamp.net
280
- :alt: bitstamp
281
-
282
- - bitstamp
283
- - `Bitstamp <https://www.bitstamp.net>`__
284
- - .. image:: https://img.shields.io/badge/2-lightgray
285
- :target: https://www.bitstamp.net/api
286
- :alt: API Version 2
287
-
288
- -
289
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
290
- :target: https://ccxt.pro
291
- :alt: CCXT Pro
292
-
293
- * - .. image:: https://user-images.githubusercontent.com/51840849/87153921-edf53180-c2c0-11ea-96b9-f2a9a95a455b.jpg
294
- :target: https://bittrex.com/Account/Register?referralCode=1ZE-G0G-M3B
295
- :alt: bittrex
296
-
297
- - bittrex
298
- - `Bittrex <https://bittrex.com/Account/Register?referralCode=1ZE-G0G-M3B>`__
299
- - .. image:: https://img.shields.io/badge/3-lightgray
300
- :target: https://bittrex.github.io/api/v3
301
- :alt: API Version 3
302
-
303
- -
304
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
305
- :target: https://ccxt.pro
306
- :alt: CCXT Pro
307
-
308
- * - .. image:: https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg
309
- :target: https://bitvavo.com/?a=24F34952F7
310
- :alt: bitvavo
311
-
312
- - bitvavo
313
- - `Bitvavo <https://bitvavo.com/?a=24F34952F7>`__
314
- - .. image:: https://img.shields.io/badge/2-lightgray
315
- :target: https://docs.bitvavo.com/
316
- :alt: API Version 2
317
-
318
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
319
- :target: https://github.com/ccxt/ccxt/wiki/Certification
320
- :alt: CCXT Certified
321
-
322
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
323
- :target: https://ccxt.pro
324
- :alt: CCXT Pro
325
-
326
- * - .. image:: https://user-images.githubusercontent.com/51840849/76547799-daff5b80-649e-11ea-87fb-3be9bac08954.jpg
327
- :target: https://www.bybit.com/register?affiliate_id=35953
328
- :alt: bybit
329
-
330
- - bybit
331
- - `Bybit <https://www.bybit.com/register?affiliate_id=35953>`__
332
- - .. image:: https://img.shields.io/badge/3-lightgray
333
- :target: https://bybit-exchange.github.io/docs/inverse/
334
- :alt: API Version 3
335
-
336
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
337
- :target: https://github.com/ccxt/ccxt/wiki/Certification
338
- :alt: CCXT Certified
339
-
340
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
341
- :target: https://ccxt.pro
342
- :alt: CCXT Pro
343
-
344
- * - .. image:: https://user-images.githubusercontent.com/1294454/27766442-8ddc33b0-5ed8-11e7-8b98-f786aef0f3c9.jpg
345
- :target: https://cex.io/r/0/up105393824/0/
346
- :alt: cex
347
-
348
- - cex
349
- - `CEX.IO <https://cex.io/r/0/up105393824/0/>`__
350
- - .. image:: https://img.shields.io/badge/*-lightgray
351
- :target: https://cex.io/cex-api
352
- :alt: API Version *
353
-
354
- -
355
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
356
- :target: https://ccxt.pro
357
- :alt: CCXT Pro
358
-
359
- * - .. image:: https://user-images.githubusercontent.com/1294454/44539184-29f26e00-a70c-11e8-868f-e907fc236a7c.jpg
360
- :target: https://exchange.coinbase.com
361
- :alt: coinbaseprime
362
-
363
- - coinbaseprime
364
- - `Coinbase Prime <https://exchange.coinbase.com>`__
365
- - .. image:: https://img.shields.io/badge/*-lightgray
366
- :target: https://docs.exchange.coinbase.com
367
- :alt: API Version *
368
-
369
- -
370
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
371
- :target: https://ccxt.pro
372
- :alt: CCXT Pro
373
-
374
- * - .. image:: https://user-images.githubusercontent.com/1294454/41764625-63b7ffde-760a-11e8-996d-a6328fa9347a.jpg
375
- :target: https://pro.coinbase.com/
376
- :alt: coinbasepro
377
-
378
- - coinbasepro
379
- - `Coinbase Pro <https://pro.coinbase.com/>`__
380
- - .. image:: https://img.shields.io/badge/*-lightgray
381
- :target: https://docs.pro.coinbase.com
382
- :alt: API Version *
383
-
384
- -
385
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
386
- :target: https://ccxt.pro
387
- :alt: CCXT Pro
388
-
389
- * - .. image:: https://user-images.githubusercontent.com/51840849/87182089-1e05fa00-c2ec-11ea-8da9-cc73b45abbbc.jpg
390
- :target: https://www.coinex.com/register?refer_code=yw5fz
391
- :alt: coinex
392
-
393
- - coinex
394
- - `CoinEx <https://www.coinex.com/register?refer_code=yw5fz>`__
395
- - .. image:: https://img.shields.io/badge/1-lightgray
396
- :target: https://github.com/coinexcom/coinex_exchange_api/wiki
397
- :alt: API Version 1
398
-
399
- -
400
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
401
- :target: https://ccxt.pro
402
- :alt: CCXT Pro
403
-
404
- * - .. image:: https://user-images.githubusercontent.com/1294454/147792121-38ed5e36-c229-48d6-b49a-48d05fc19ed4.jpeg
405
- :target: https://crypto.com/exch/5835vstech
406
- :alt: cryptocom
407
-
408
- - cryptocom
409
- - `Crypto.com <https://crypto.com/exch/5835vstech>`__
410
- - .. image:: https://img.shields.io/badge/2-lightgray
411
- :target: https://exchange-docs.crypto.com/spot/index.html
412
- :alt: API Version 2
413
-
414
- -
415
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
416
- :target: https://ccxt.pro
417
- :alt: CCXT Pro
418
-
419
- * - .. image:: https://user-images.githubusercontent.com/1294454/83718672-36745c00-a63e-11ea-81a9-677b1f789a4d.jpg
420
- :target: https://currency.com/trading/signup?c=362jaimv&pid=referral
421
- :alt: currencycom
422
-
423
- - currencycom
424
- - `Currency.com <https://currency.com/trading/signup?c=362jaimv&pid=referral>`__
425
- - .. image:: https://img.shields.io/badge/2-lightgray
426
- :target: https://currency.com/api
427
- :alt: API Version 2
428
-
429
- -
430
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
431
- :target: https://ccxt.pro
432
- :alt: CCXT Pro
433
-
434
- * - .. image:: https://user-images.githubusercontent.com/1294454/41933112-9e2dd65a-798b-11e8-8440-5bab2959fcb8.jpg
435
- :target: https://www.deribit.com/reg-1189.4038
436
- :alt: deribit
437
-
438
- - deribit
439
- - `Deribit <https://www.deribit.com/reg-1189.4038>`__
440
- - .. image:: https://img.shields.io/badge/2-lightgray
441
- :target: https://docs.deribit.com/v2
442
- :alt: API Version 2
443
-
444
- -
445
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
446
- :target: https://ccxt.pro
447
- :alt: CCXT Pro
448
-
449
- * - .. image:: https://user-images.githubusercontent.com/51840849/87443317-01c0d080-c5fe-11ea-95c2-9ebe1a8fafd9.jpg
450
- :target: https://one.ndax.io/bfQiSL
451
- :alt: flowbtc
452
-
453
- - flowbtc
454
- - `flowBTC <https://one.ndax.io/bfQiSL>`__
455
- - .. image:: https://img.shields.io/badge/*-lightgray
456
- :target: https://www.flowbtc.com.br/api.html
457
- :alt: API Version *
458
-
459
- -
460
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
461
- :target: https://ccxt.pro
462
- :alt: CCXT Pro
463
-
464
- * - .. image:: https://user-images.githubusercontent.com/1294454/159177712-b685b40c-5269-4cea-ac83-f7894c49525d.jpg
465
- :target: https://fmfw.io/referral/da948b21d6c92d69
466
- :alt: fmfwio
467
-
468
- - fmfwio
469
- - `FMFW.io <https://fmfw.io/referral/da948b21d6c92d69>`__
470
- - .. image:: https://img.shields.io/badge/2-lightgray
471
- :target: https://api.fmfw.io/api/2/explore/
472
- :alt: API Version 2
473
-
474
- -
475
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
476
- :target: https://ccxt.pro
477
- :alt: CCXT Pro
478
-
479
- * - .. image:: https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg
480
- :target: https://www.gate.io/ref/2436035
481
- :alt: gate
482
-
483
- - gate
484
- - `Gate.io <https://www.gate.io/ref/2436035>`__
485
- - .. image:: https://img.shields.io/badge/4-lightgray
486
- :target: https://www.gate.io/docs/apiv4/en/index.html
487
- :alt: API Version 4
488
-
489
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
490
- :target: https://github.com/ccxt/ccxt/wiki/Certification
491
- :alt: CCXT Certified
492
-
493
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
494
- :target: https://ccxt.pro
495
- :alt: CCXT Pro
496
-
497
- * - .. image:: https://user-images.githubusercontent.com/1294454/27766555-8eaec20e-5edc-11e7-9c5b-6dc69fc42f5e.jpg
498
- :target: https://hitbtc.com/?ref_id=5a5d39a65d466
499
- :alt: hitbtc
500
-
501
- - hitbtc
502
- - `HitBTC <https://hitbtc.com/?ref_id=5a5d39a65d466>`__
503
- - .. image:: https://img.shields.io/badge/2-lightgray
504
- :target: https://api.hitbtc.com/v2
505
- :alt: API Version 2
506
-
507
- -
508
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
509
- :target: https://ccxt.pro
510
- :alt: CCXT Pro
511
-
512
- * - .. image:: https://user-images.githubusercontent.com/1294454/75841031-ca375180-5ddd-11ea-8417-b975674c23cb.jpg
513
- :target: https://pro.hollaex.com/signup?affiliation_code=QSWA6G
514
- :alt: hollaex
515
-
516
- - hollaex
517
- - `HollaEx <https://pro.hollaex.com/signup?affiliation_code=QSWA6G>`__
518
- - .. image:: https://img.shields.io/badge/2-lightgray
519
- :target: https://apidocs.hollaex.com
520
- :alt: API Version 2
521
-
522
- -
523
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
524
- :target: https://ccxt.pro
525
- :alt: CCXT Pro
526
-
527
- * - .. image:: https://user-images.githubusercontent.com/1294454/76137448-22748a80-604e-11ea-8069-6e389271911d.jpg
528
- :target: https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223
529
- :alt: huobi
530
-
531
- - huobi
532
- - `Huobi <https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223>`__
533
- - .. image:: https://img.shields.io/badge/1-lightgray
534
- :target: https://huobiapi.github.io/docs/spot/v1/cn/
535
- :alt: API Version 1
536
-
537
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
538
- :target: https://github.com/ccxt/ccxt/wiki/Certification
539
- :alt: CCXT Certified
540
-
541
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
542
- :target: https://ccxt.pro
543
- :alt: CCXT Pro
544
-
545
- * - .. image:: https://user-images.githubusercontent.com/1294454/85734211-85755480-b705-11ea-8b35-0b7f1db33a2f.jpg
546
- :target: https://www.huobi.co.jp/register/?invite_code=znnq3
547
- :alt: huobijp
548
-
549
- - huobijp
550
- - `Huobi Japan <https://www.huobi.co.jp/register/?invite_code=znnq3>`__
551
- - .. image:: https://img.shields.io/badge/1-lightgray
552
- :target: https://api-doc.huobi.co.jp
553
- :alt: API Version 1
554
-
555
- -
556
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
557
- :target: https://ccxt.pro
558
- :alt: CCXT Pro
559
-
560
- * - .. image:: https://user-images.githubusercontent.com/51840849/94481303-2f222100-01e0-11eb-97dd-bc14c5943a86.jpg
561
- :target: https://idex.io
562
- :alt: idex
563
-
564
- - idex
565
- - `IDEX <https://idex.io>`__
566
- - .. image:: https://img.shields.io/badge/3-lightgray
567
- :target: https://docs.idex.io/
568
- :alt: API Version 3
569
-
570
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
571
- :target: https://github.com/ccxt/ccxt/wiki/Certification
572
- :alt: CCXT Certified
573
-
574
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
575
- :target: https://ccxt.pro
576
- :alt: CCXT Pro
577
-
578
- * - .. image:: https://user-images.githubusercontent.com/51840849/76173629-fc67fb00-61b1-11ea-84fe-f2de582f58a3.jpg
579
- :target: https://www.kraken.com
580
- :alt: kraken
581
-
582
- - kraken
583
- - `Kraken <https://www.kraken.com>`__
584
- - .. image:: https://img.shields.io/badge/0-lightgray
585
- :target: https://www.kraken.com/features/api
586
- :alt: API Version 0
587
-
588
- -
589
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
590
- :target: https://ccxt.pro
591
- :alt: CCXT Pro
592
-
593
- * - .. image:: https://user-images.githubusercontent.com/51840849/87295558-132aaf80-c50e-11ea-9801-a2fb0c57c799.jpg
594
- :target: https://www.kucoin.com/ucenter/signup?rcode=E5wkqe
595
- :alt: kucoin
596
-
597
- - kucoin
598
- - `KuCoin <https://www.kucoin.com/ucenter/signup?rcode=E5wkqe>`__
599
- - .. image:: https://img.shields.io/badge/2-lightgray
600
- :target: https://docs.kucoin.com
601
- :alt: API Version 2
602
-
603
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
604
- :target: https://github.com/ccxt/ccxt/wiki/Certification
605
- :alt: CCXT Certified
606
-
607
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
608
- :target: https://ccxt.pro
609
- :alt: CCXT Pro
610
-
611
- * - .. image:: https://user-images.githubusercontent.com/1294454/27766607-8c1a69d8-5ede-11e7-930c-540b5eb9be24.jpg
612
- :target: https://www.luno.com/invite/44893A
613
- :alt: luno
614
-
615
- - luno
616
- - `luno <https://www.luno.com/invite/44893A>`__
617
- - .. image:: https://img.shields.io/badge/1-lightgray
618
- :target: https://www.luno.com/en/api
619
- :alt: API Version 1
620
-
621
- -
622
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
623
- :target: https://ccxt.pro
624
- :alt: CCXT Pro
625
-
626
- * - .. image:: https://user-images.githubusercontent.com/1294454/137283979-8b2a818d-8633-461b-bfca-de89e8c446b2.jpg
627
- :target: https://m.mexc.com/auth/signup?inviteCode=1FQ1G
628
- :alt: mexc
629
-
630
- - mexc
631
- - `MEXC Global <https://m.mexc.com/auth/signup?inviteCode=1FQ1G>`__
632
- - .. image:: https://img.shields.io/badge/2-lightgray
633
- :target: https://mxcdevelop.github.io/APIDoc/
634
- :alt: API Version 2
635
-
636
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
637
- :target: https://github.com/ccxt/ccxt/wiki/Certification
638
- :alt: CCXT Certified
639
-
640
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
641
- :target: https://ccxt.pro
642
- :alt: CCXT Pro
643
-
644
- * - .. image:: https://user-images.githubusercontent.com/1294454/108623144-67a3ef00-744e-11eb-8140-75c6b851e945.jpg
645
- :target: https://one.ndax.io/bfQiSL
646
- :alt: ndax
647
-
648
- - ndax
649
- - `NDAX <https://one.ndax.io/bfQiSL>`__
650
- - .. image:: https://img.shields.io/badge/*-lightgray
651
- :target: https://apidoc.ndax.io/
652
- :alt: API Version *
653
-
654
- -
655
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
656
- :target: https://ccxt.pro
657
- :alt: CCXT Pro
658
-
659
- * - .. image:: https://user-images.githubusercontent.com/51840849/87295551-102fbf00-c50e-11ea-90a9-462eebba5829.jpg
660
- :target: https://www.okcoin.com/account/register?flag=activity&channelId=600001513
661
- :alt: okcoin
662
-
663
- - okcoin
664
- - `OKCoin <https://www.okcoin.com/account/register?flag=activity&channelId=600001513>`__
665
- - .. image:: https://img.shields.io/badge/3-lightgray
666
- :target: https://www.okcoin.com/docs/en/
667
- :alt: API Version 3
668
-
669
- -
670
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
671
- :target: https://ccxt.pro
672
- :alt: CCXT Pro
673
-
674
- * - .. image:: https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg
675
- :target: https://www.okx.com/join/1888677
676
- :alt: okx
677
-
678
- - okx
679
- - `OKX <https://www.okx.com/join/1888677>`__
680
- - .. image:: https://img.shields.io/badge/5-lightgray
681
- :target: https://www.okx.com/docs-v5/en/
682
- :alt: API Version 5
683
-
684
- - .. image:: https://img.shields.io/badge/CCXT-Certified-green.svg
685
- :target: https://github.com/ccxt/ccxt/wiki/Certification
686
- :alt: CCXT Certified
687
-
688
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
689
- :target: https://ccxt.pro
690
- :alt: CCXT Pro
691
-
692
- * - .. image:: https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg
693
- :target: https://phemex.com/register?referralCode=EDNVJ
694
- :alt: phemex
695
-
696
- - phemex
697
- - `Phemex <https://phemex.com/register?referralCode=EDNVJ>`__
698
- - .. image:: https://img.shields.io/badge/1-lightgray
699
- :target: https://github.com/phemex/phemex-api-docs
700
- :alt: API Version 1
701
-
702
- -
703
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
704
- :target: https://ccxt.pro
705
- :alt: CCXT Pro
706
-
707
- * - .. image:: https://user-images.githubusercontent.com/1294454/94507548-a83d6a80-0218-11eb-9998-28b9cec54165.jpg
708
- :target: https://exchange.ripio.com
709
- :alt: ripio
710
-
711
- - ripio
712
- - `Ripio <https://exchange.ripio.com>`__
713
- - .. image:: https://img.shields.io/badge/1-lightgray
714
- :target: https://exchange.ripio.com/en/api/
715
- :alt: API Version 1
716
-
717
- -
718
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
719
- :target: https://ccxt.pro
720
- :alt: CCXT Pro
721
-
722
- * - .. image:: https://user-images.githubusercontent.com/1294454/49245610-eeaabe00-f423-11e8-9cba-4b0aed794799.jpg
723
- :target: https://upbit.com
724
- :alt: upbit
725
-
726
- - upbit
727
- - `Upbit <https://upbit.com>`__
728
- - .. image:: https://img.shields.io/badge/1-lightgray
729
- :target: https://docs.upbit.com/docs/%EC%9A%94%EC%B2%AD-%EC%88%98-%EC%A0%9C%ED%95%9C
730
- :alt: API Version 1
731
-
732
- -
733
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
734
- :target: https://ccxt.pro
735
- :alt: CCXT Pro
736
-
737
- * - .. image:: https://user-images.githubusercontent.com/1294454/148647666-c109c20b-f8ac-472f-91c3-5f658cb90f49.jpeg
738
- :target: https://wazirx.com/invite/k7rrnks5
739
- :alt: wazirx
740
-
741
- - wazirx
742
- - `WazirX <https://wazirx.com/invite/k7rrnks5>`__
743
- - .. image:: https://img.shields.io/badge/2-lightgray
744
- :target: https://docs.wazirx.com/#public-rest-api-for-wazirx
745
- :alt: API Version 2
746
-
747
- -
748
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
749
- :target: https://ccxt.pro
750
- :alt: CCXT Pro
751
-
752
- * - .. image:: https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg
753
- :target: https://referral.woo.org/BAJS6oNmZb3vi3RGA
754
- :alt: woo
755
-
756
- - woo
757
- - `WOO X <https://referral.woo.org/BAJS6oNmZb3vi3RGA>`__
758
- - .. image:: https://img.shields.io/badge/1-lightgray
759
- :target: https://docs.woo.org/
760
- :alt: API Version 1
761
-
762
- -
763
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
764
- :target: https://ccxt.pro
765
- :alt: CCXT Pro
766
-
767
- * - .. image:: https://user-images.githubusercontent.com/1294454/32859187-cd5214f0-ca5e-11e7-967d-96568e2e2bd1.jpg
768
- :target: https://www.zb.com/en/register?ref=4301lera
769
- :alt: zb
770
-
771
- - zb
772
- - `ZB <https://www.zb.com/en/register?ref=4301lera>`__
773
- - .. image:: https://img.shields.io/badge/1-lightgray
774
- :target: https://www.zb.com/i/developer
775
- :alt: API Version 1
776
-
777
- -
778
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
779
- :target: https://ccxt.pro
780
- :alt: CCXT Pro
781
-
782
- * - .. image:: https://user-images.githubusercontent.com/1294454/146103275-c39a34d9-68a4-4cd2-b1f1-c684548d311b.jpg
783
- :target: https://trade.zipmex.com/global/accounts/sign-up?aff=KLm7HyCsvN
784
- :alt: zipmex
785
-
786
- - zipmex
787
- - `Zipmex <https://trade.zipmex.com/global/accounts/sign-up?aff=KLm7HyCsvN>`__
788
- - .. image:: https://img.shields.io/badge/*-lightgray
789
- :target: https://apidoc.ndax.io/
790
- :alt: API Version *
791
-
792
- -
793
- - .. image:: https://img.shields.io/badge/CCXT-Pro-black
794
- :target: https://ccxt.pro
795
- :alt: CCXT Pro
796
-
797
-
798
-
799
- This is the list of exchanges in CCXT Pro with support for WebSockets APIs. This list will be updated with new exchanges on a regular basis.
800
-
801
- Full list of exchanges available in CCXT via REST: `Supported Cryptocurrency Exchange Markets <https://github.com/ccxt/ccxt/#supported-cryptocurrency-exchange-markets>`__.
802
-
803
- Usage
804
- -----
805
-
806
- .. code-block:: diff
807
-
808
- - this part of the doc is under heavy development right now
809
- - there may be some typos, mistakes and missing info here and there
810
- - contributions, pull requests and feedback appreciated
811
-
812
- Prerequisites
813
- -------------
814
-
815
- The best way to understand CCXT Pro is to make sure you grasp the entire CCXT Manual and practice standard CCXT first. CCXT Pro borrows from CCXT. The two libraries share a lot of commonalities, including:
816
-
817
-
818
- * the concepts of public API and private authenticated API
819
- * markets, symbols, currency codes and ids
820
- * unified data structures and formats, orderbooks, trades, orders, candles, timeframes, ...
821
- * exceptions and error mappings
822
- * authentication and API keys (for private feeds and calls)
823
- * configuration options
824
-
825
- The CCXT Pro audience consists mostly of professional algorithmic traders and developers. In order to work efficiently with this library the user is required to be well-familiar with the concepts of streaming. One has to understand the underlying differences between connection-based streaming APIs (\ `WebSocket <https://en.wikipedia.org/wiki/WebSocket>`__\ , CCXT Pro) and request-response based APIs (\ `REST <https://en.wikipedia.org/wiki/Representational_state_transfer>`__\ , CCXT).
826
-
827
- The general async-style flow for a CCXT application is as follows:
828
-
829
- .. code-block:: JavaScript
830
-
831
-
832
- // a RESTful orderbook polling request-response loop
833
-
834
- while (condition) {
835
-
836
- try {
837
-
838
- // fetch some of the public data
839
- orderbook = await exchange.fetchOrderBook (symbol, limit)
840
-
841
- // do something or react somehow based on that data
842
- // ...
843
-
844
- } catch (e) {
845
-
846
- // handle errors
847
- }
848
- }
849
-
850
- In CCXT Pro each public and private unified RESTful method having a ``fetch*`` prefix also has a corresponding stream-based counterpart method prefixed with ``watch*``\ , as follows:
851
-
852
-
853
- * Public API
854
-
855
- * ``fetchStatus`` → ``watchStatus``
856
- * ``fetchOrderBook`` → ``watchOrderBook``
857
- * ``fetchTicker`` → \ ``watchTicker``
858
- * ``fetchTickers`` → \ ``watchTickers``
859
- * ``fetchOHLCV`` → ``watchOHLCV``
860
- * ``fetchTrades`` → ``watchTrades``
861
-
862
- * Private API
863
-
864
- * ``fetchBalance`` → ``watchBalance``
865
- * ``fetchOrders`` → ``watchOrders``
866
- * ``fetchMyTrades`` → ``watchMyTrades``
867
- * ``fetchTransactions`` → ``watchTransactions``
868
- * ``fetchLedger`` → ``watchLedger``
869
- * ``createOrder`` → ``watchCreateOrder`` *(notice the ``watch`` prefix)*
870
- * ``cancelOrder`` → ``watchCancelOrder`` *(notice the ``watch`` prefix)*
871
-
872
- The Unified CCXT Pro Streaming API inherits CCXT usage patterns to make migration easier.
873
-
874
- The general async-style flow for a CCXT Pro application (as opposed to a CCXT application above) is shown below:
875
-
876
- .. code-block:: JavaScript
877
-
878
-
879
- // a stream-based (WebSocket) orderbook feed loop
880
-
881
- while (condition) {
882
-
883
- try {
884
-
885
- // watch some of the public data
886
- orderbook = await exchange.watchOrderBook (symbol, limit)
887
-
888
- // do something or react somehow based on that data
889
- // ...
890
-
891
- } catch (e) {
892
-
893
- // handle errors
894
- }
895
- }
896
-
897
- That usage pattern is usually wrapped up into a core business-logic method called *"a ``tick()`` function"*\ , since it reiterates a reaction to the incoming events (aka *ticks*\ ). From the two examples above it is obvious that the generic usage pattern in CCXT Pro and CCXT is identical.
898
-
899
- Many of the CCXT rules and concepts also apply to CCXT Pro:
900
-
901
-
902
- * CCXT Pro will load markets and will cache markets upon the first call to a unified API method
903
- * CCXT Pro will call CCXT RESTful methods under the hood if necessary
904
- * CCXT Pro will throw standard CCXT exceptions where necessary
905
- * ...
906
-
907
- Streaming Specifics
908
- -------------------
909
-
910
- Despite of the numerous commonalities, streaming-based APIs have their own specifics, because of their connection-based nature.
911
-
912
- Having a connection-based interface implies connection-handling mechanisms. Connections are managed by CCXT Pro transparently to the user. Each exchange instance manages its own set of connections.
913
-
914
- Upon your first call to any ``watch*()`` method the library will establish a connection to a specific stream/resource of the exchange and will maintain it. If the connection already exists – it is reused. The library will handle the subscription request/response messaging sequences as well as the authentication/signing if the requested stream is private.
915
-
916
- The library will also watch the status of the uplink and will keep the connection alive. Upon a critical exception, a disconnect or a connection timeout/failure, the next iteration of the tick function will call the ``watch`` method that will trigger a reconnection. This way the library handles disconnections and reconnections for the user transparently. CCXT Pro applies the necessary rate-limiting and exponential backoff reconnection delays. All of that functionality is enabled by default and can be configured via exchange properties, as usual.
917
-
918
- Most of the exchanges only have a single base URL for streaming APIs (usually, WebSocket, starting with ``ws://`` or ``wss://``\ ). Some of them may have more than one URL for each stream, depending on the feed in question.
919
-
920
- Exchanges' Streaming APIs can be classified into two different categories:
921
-
922
-
923
- * *sub* or *subscribe* allows receiving only
924
- * *pub* or *publish* allows sending and receiving
925
-
926
- Sub
927
- ^^^
928
-
929
- A *sub* interface usually allows to subscribe to a stream of data and listen for it. Most of exchanges that do support WebSockets will offer a *sub* type of API only. The *sub* type includes streaming public market data. Sometimes exchanges also allow subcribing to private user data. After the user subscribes to a data feed the channel effectively starts working one-way sending updates from the exchange towards the user continuously.
930
-
931
- Commonly appearing types of public data streams:
932
-
933
-
934
- * order book (most common) - updates on added, edited and deleted orders (aka *change deltas*\ )
935
- * ticker updates upon changing of 24 hour stats
936
- * fills feed (also common) - a live stream of public trades
937
- * ohlcv candlestick feed
938
- * heartbeat
939
- * exchange chat/trollbox
940
-
941
- Less common types of private user data streams:
942
-
943
-
944
- * the stream of private trades of the user
945
- * live order updates
946
- * balance updates
947
- * custom streams
948
- * exchange-specific and other streams
949
-
950
- Pub
951
- ^^^
952
-
953
- A *pub* interface usually allows users to send data requests towards the server. This usually includes common user actions, like:
954
-
955
-
956
- * placing orders
957
- * canceling orders
958
- * placing withdrawal requests
959
- * posting chat/trollbox messages
960
- * etc
961
-
962
- **Some exchanges do not offer a *pub* WS API, they will offer *sub* WS API only.** However, there are exchanges that have a complete Streaming API as well. In most cases a user cannot operate effectively having just the Streaming API. Exchanges will stream public market data *sub*\ , and the REST API is still needed for the *pub* part where missing.
963
-
964
- Incremental Data Structures
965
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
966
-
967
- In many cases due to a unidirectional nature of the underlying data feeds, the application listening on the client-side has to keep a local snapshot of the data in memory and merge the updates received from the exchange server into the local snapshot. The updates coming from the exchange are also often called *deltas*\ , because in most cases those updates will contain just the changes between two states of the data and will not include the data that has not changed making it necessary to store the locally cached current state S of all relevant data objects.
968
-
969
- All of that functionality is handled by CCXT Pro for the user. To work with CCXT Pro, the user does not have to track or manage subscriptions and related data. CCXT Pro will keep a cache of structures in memory to handle the underlying hassle.
970
-
971
- Each incoming update says which parts of the data have changed and the receiving side "increments" local state S by merging the update on top of current state S and moves to next local state S'. In terms of CCXT Pro that is called *"incremental state"* and the structures involved in the process of storing and updating the cached state are called *"incremental structures"*. CCXT Pro introduces several new base classes to handle the incremental state where necessary.
972
-
973
- The incremental structures returned from the unified methods of CCXT Pro are often one of two types:
974
-
975
-
976
- #. JSON-decoded object (\ ``object`` in JavaScript, ``dict`` in Python, ``array()`` in PHP). This type may be returned from public and private methods like ``watchOrderBook``\ , ``watchTicker``\ , ``watchBalance``\ , ``watchOrder``\ , etc.
977
- #. An array/list of objects (usually sorted in chronological order). This type may be returned from methods like ``watchOHLCV``\ , ``watchTrades``\ , ``watchMyTrades``\ , ``watchOrders``\ , etc.
978
-
979
- The unified methods returning arrays like ``watchOHLCV``\ , ``watchTrades``\ , ``watchMyTrades``\ , ``watchOrders``\ , are based on the caching layer. The user has to understand the inner workings of the caching layer to work with it efficiently.
980
-
981
- The cache is a fixed-size deque aka array/list with two ends. The CCXT Pro library has a reasonable limit on the number of objects stored in memory. By default the caching array structures will store up to 1000 entries of each type (1000 most recent trades, 1000 most recent candles, 1000 most recent orders). The allowed maximum number can be configured by the user upon instantiation or later:
982
-
983
- .. code-block:: Python
984
-
985
- ccxtpro.binance({
986
- 'options': {
987
- 'tradesLimit': 1000,
988
- 'OHLCVLimit': 1000,
989
- 'ordersLimit': 1000,
990
- },
991
- })
992
-
993
- # or
994
-
995
- exchange.options['tradesLimit'] = 1000
996
- exchange.options['OHLCVLimit'] = 1000
997
- exchange.options['ordersLimit'] = 1000
998
-
999
- The cache limits have to be set prior to calling any watch-methods and cannot change during a program run.
1000
-
1001
- When there is space left in the cache, new elements are simply appended to the end of it. If there's not enough room to fit a new element, the oldest element is deleted from the beginning of the cache to free some space. Thus, for example, the cache grows from 0 to 1000 most recent trades and then stays at 1000 most recent trades max, constantly renewing the stored data with each new update incoming from the exchange. It reminds a sliding frame window or a sliding door, that looks like shown below:
1002
-
1003
- .. code-block::
1004
-
1005
- past > ------------------ > time > - - - - - - - - > future
1006
-
1007
-
1008
- sliding frame
1009
- of 1000 most
1010
- recent trades
1011
- +-----------------+
1012
- | |
1013
- |===========+=====|
1014
- +----------------+------| | | - - - - - + - - - - - - - - + - - -
1015
- | | | | | | |
1016
- 0 1000 | 2000 | 3000 4000 ...
1017
- | | | | | | |
1018
- +----------------+------| | | - - - - - + - - - - - - - - + - - -
1019
- |===========+=====|
1020
- | |
1021
- +---+---------+---+
1022
- | |
1023
- since ^ ^ limit
1024
-
1025
- date-based pagination arguments
1026
- are always applied
1027
- within the cached frame
1028
-
1029
- The user can configure the cache limits using the ``exchange.options`` as was shown above. Do not confuse the cache limits with the pagination limit.
1030
-
1031
- **Note, that the ``since`` and ``limit`` :doc:`date-based pagination <Manual>` params have a different meaning and are always applied within the cached window!** If the user specifies a ``since`` argument to the ``watchTrades()`` call, CCXT Pro will return all cached trades having ``timestamp >= since``. If the user does not specify a ``since`` argument, CCXT pro will return cached trades from the beginning of the sliding window. If the user specifies a ``limit`` argument, the library will return up to ``limit`` candles starting from ``since`` or from the beginning of the cache. For that reason the user cannot paginate beyond the cached frame due to the WebSocket real-time specifics.
1032
-
1033
- .. code-block:: Python
1034
-
1035
- exchange.options['tradesLimit'] = 5 # set the size of the cache to 5
1036
-
1037
- # this call will return up to 5 cached trades
1038
- await exchange.watchTrades (symbol)
1039
-
1040
- # the following call will return the first 2 of up to 5 cached trades
1041
- await exchange.watchTrades (symbol, since=None, limit=2)
1042
-
1043
- # this call will first filter cached trades by trade['timestamp'] >= since
1044
- # and will return the first 2 of up to 5 cached trades that pass the filter
1045
- since = exchange.iso8601('2020-01-01T00:00:00Z')
1046
- limit = 2
1047
- await exchange.watchTrades (symbol, since, limit)
1048
-
1049
- newUpdates mode
1050
- ~~~~~~~~~~~~~~~
1051
-
1052
- If you want to always get just the most recent trade, **you should instantiate the exchange with the newUpdates flag set to true**.
1053
-
1054
- .. code-block:: Python
1055
-
1056
- exchange = ccxtpro.binance({'newUpdates': True})
1057
- while True:
1058
- trades = await exchange.watchTrades (symbol)
1059
- print(trades)
1060
-
1061
- The newUpdates mode continues to utilize the sliding cache in the background, but the user will only be given the new updates. This is because some exchanges use incremental structures, so we need to keep a cache of objects as the exchange may only provide partial information such as status updates.
1062
-
1063
- The result from the newUpdates mode will be one or more updates that have occurred since the last time ``exchange.watchMethod`` resolved. CCXT Pro can return one or more orders that were updated since the previous call. The result of calling ``exchange.watchOrders`` will look like shown below:
1064
-
1065
- .. code-block:: JavaScript
1066
-
1067
- [
1068
- order, // see https://docs.ccxt.com/en/latest/manual.html#order-structure
1069
- order,
1070
- order,
1071
- ...
1072
- ]
1073
-
1074
- *Deprecation Warning*\ : in the future ``newUpdates: true`` will be the default mode and you will have to set newUpdates to false to get the sliding cache.
1075
-
1076
- .. code-block:: JavaScript
1077
-
1078
- // JavaScript
1079
- const ccxtpro = require ('ccxt.pro')
1080
- console.log ('CCXT version', ccxtpro.version)
1081
- console.log ('Supported exchanges:', ccxtpro.exchanges)
1082
-
1083
- .. code-block:: Python
1084
-
1085
- # Python
1086
- import ccxt.pro as ccxtpro
1087
- print('CCXT version', ccxtpro.__version__)
1088
- print('Supported exchanges:', ccxtpro.exchanges)
1089
-
1090
- .. code-block:: PHP
1091
-
1092
- // PHP
1093
- use \ccxt\pro; // optional, since you can use fully qualified names
1094
- echo 'CCXT version ', \ccxt\pro\Exchange::VERSION, "\n";
1095
- echo 'Supported exchanges: ', json_encode(\ccxt\pro\Exchange::$exchanges), "\n";
1096
-
1097
- The imported CCXT Pro module wraps the CCXT inside itself – every exchange instantiated via CCXT Pro has all the CCXT methods as well as the additional functionality.
1098
-
1099
- Instantiation
1100
- -------------
1101
-
1102
- CCXT Pro is designed for async/await style syntax and relies heavily on async primitives such as *promises* and *futures*.
1103
-
1104
- Creating a CCXT Pro exchange instance is pretty much identical to creating a CCXT exchange instance.
1105
-
1106
- .. code-block:: JavaScript
1107
-
1108
- // JavaScript
1109
- const ccxt = require ('ccxt.pro')
1110
- const exchange = new ccxtpro.binance ({ newUpdates: false })
1111
-
1112
- The Python implementation of CCXT Pro relies on builtin `asyncio <https://docs.python.org/3/library/asyncio.html>`__ and `Event Loop <https://docs.python.org/3/library/asyncio-eventloop.html>`__ in particular. In Python it is possible to supply an asyncio's event loop instance in the constructor arguments as shown below (identical to ``ccxt.async support``\ ):
1113
-
1114
- .. code-block:: Python
1115
-
1116
- # Python
1117
- import ccxt.pro as ccxtpro
1118
- from asyncio import run
1119
-
1120
- async def main():
1121
- exchange = ccxtpro.kraken({'newUpdates': False})
1122
- while True:
1123
- orderbook = await exchange.watch_order_book('BTC/USD')
1124
- print(orderbook['asks'][0], orderbook['bids'][0])
1125
- await exchange.close()
1126
-
1127
-
1128
- run(main())
1129
-
1130
- In PHP the async primitives are borrowed from `ReactPHP <https://reactphp.org>`__. The PHP implementation of CCXT Pro relies on `Promise <https://github.com/reactphp/promise>`__ and `EventLoop <https://github.com/reactphp/event-loop>`__ in particular. In PHP the user is required to supply a ReactPHP's event loop instance in the constructor arguments as shown below:
1131
-
1132
- .. code-block:: PHP
1133
-
1134
- // PHP
1135
- error_reporting(E_ALL | E_STRICT);
1136
- date_default_timezone_set('UTC');
1137
- require_once 'vendor/autoload.php';
1138
-
1139
- $loop = \React\EventLoop\Factory::create(); // the event loop goes here ↓
1140
- $exchange = new \ccxt\pro\kucoin(array('loop' => $loop, 'newUpdates': false ));
1141
-
1142
- Exchange Properties
1143
- -------------------
1144
-
1145
- Every CCXT Pro instance contains all properties of the underlying CCXT instance. Apart from the standard CCXT properties, the CCXT Pro instance includes the following:
1146
-
1147
- .. code-block:: JavaScript
1148
-
1149
- {
1150
- 'has': { // an associative array of extended exchange capabilities
1151
- 'ws': true, // only available in CCXT Pro
1152
- 'watchOrderBook': true,
1153
- 'watchTicker': true,
1154
- 'watchTrades': true,
1155
- 'watchOHLCV': true,
1156
- 'watchBalance': true,
1157
- 'watchCreateOrder': true,
1158
- 'watchCancelOrder': true,
1159
- ...
1160
- },
1161
- 'urls': {
1162
- 'api': { // will contain a streaming API base URL, depending on the underlying protocol
1163
- 'ws': 'wss://ws.exchange.com', // https://en.wikipedia.org/wiki/WebSocket
1164
- 'signalr': 'https://signalr.exchange.com' // https://en.wikipedia.org/wiki/SignalR
1165
- 'socketio': 'wss://socket.exchange.io' // https://socket.io
1166
- },
1167
- },
1168
- 'version': '1.21',
1169
- 'streaming': {
1170
- 'keepAlive': 30000, // integer keep-alive rate in milliseconds
1171
- 'maxPingPongMisses': 2.0, // how many ping pong misses to drop and reconnect
1172
- ... // other streaming options
1173
- },
1174
- // incremental data structures
1175
- 'orderbooks': {}, // incremental order books indexed by symbol
1176
- 'ohlcvs': {}, // standard CCXT OHLCVs indexed by symbol by timeframe
1177
- 'balance': {}, // a standard CCXT balance structure, accounts indexed by currency code
1178
- 'orders': {}, // standard CCXT order structures indexed by order id
1179
- 'trades': {}, // arrays of CCXT trades indexed by symbol
1180
- 'tickers': {}, // standard CCXT tickers indexed by symbol
1181
- 'transactions': {}, // standard CCXT deposits and withdrawals indexed by id or txid
1182
- ...
1183
- }
1184
-
1185
- Unified API
1186
- -----------
1187
-
1188
- The Unified CCXT Pro API encourages direct control flow for better codestyle, more readable and architecturally superior code compared to using EventEmitters and callbacks. The latter is considered an outdated approach nowadays since it requires inversion of control (people aren't used to inverted thinking).
1189
-
1190
- CCXT Pro goes with the modern approach and it is designed for the async syntax. Under the hood, CCXT Pro will still have to use inverted control flow sometimes because of the dependencies and the WebSocket libs that can't do otherwise.
1191
-
1192
- The same is true not only for JS/ES6 but also for Python 3 async code as well. In PHP the async primitives are borrowed from `ReactPHP <https://reactphp.org/>`__.
1193
-
1194
- Modern async syntax allows you to combine and split the execution into parallel pathways and then merge them, group them, prioritize them, and what not. With promises one can easily convert from direct async-style control flow to inverted callback-style control flow, back and forth.
1195
-
1196
- Real-Time vs Throttling
1197
- ^^^^^^^^^^^^^^^^^^^^^^^
1198
-
1199
- CCXT Pro supports two modes of tick function loops – the real-time mode and the throttling mode. Both of them are shown below in pseudocode:
1200
-
1201
- .. code-block:: JavaScript
1202
-
1203
- // real-time mode
1204
- const limit = 5 // optional
1205
- while (true) {
1206
- try {
1207
- const orderbook = await exchange.watchOrderBook (symbol, limit)
1208
- // your reaction to the update takes place here
1209
- // you arrive here after receiving the update from the exchange in real time
1210
- console.log (orderbook) // every update
1211
- } catch (e) {
1212
- console.log (e)
1213
- // throw e // uncomment to stop the loop on exceptions
1214
- }
1215
- }
1216
-
1217
- .. code-block:: JavaScript
1218
-
1219
- // throttling mode
1220
- const limit = 5 // optional
1221
- // await is optional, alternatively you can launch it in bg without await
1222
- await exchange.watchOrderBook (symbol, limit)
1223
- while (true) {
1224
- // your reaction takes place here
1225
- // you arrive here every 100 ms regardless of whether there was an update or not
1226
- // in throttling mode offloading the orderbook with .limit () is required
1227
- console.log (exchange.orderbooks[symbol].limit (limit))
1228
- await exchange.sleep (100) // every 100 ms
1229
- }
1230
-
1231
- In **real-time mode** CCXT Pro will return the result as soon as each new delta arrives from the exchange. The general logic of a unified call in a real-time loop is to await for the next delta and immediately return the unified result structure to the user, over and over again. This is useful when reaction time is critical, or has to be as fast as possible.
1232
-
1233
- However, the real-time mode requires programming experience with async flows when it comes to synchronizing multiple parallel tick loops. Apart from that, the exchanges can stream a very large number of updates during periods of high activity or high volatility. Therefore the user developing a real-time algorithm has to make sure that the userland code is capable of consuming data that fast. Working in real-time mode may be more demanding for resources sometimes.
1234
-
1235
- In **throttling mode** CCXT Pro will receive and manage the data in the background. The user is responsible for calling the results from time to time when necessary. The general logic of the throttling loop is to sleep for most of the time and wake up to check the results occasionally. This is usually done at some fixed frequency, or, *"frame rate"*. The code inside a throttling loop is often easier to synchronize across multiple exchanges. The rationing of time spent in a throttled loop also helps reduce resource usage to a minimum. This is handy when your algorithm is heavy and you want to control the execution precisely to avoid running it too often.
1236
-
1237
- The obvious downside of the throttling mode is being less reactive or responsive to updates. When a trading algorithm has to wait some number milliseconds before being executed – an update or two may arrive sooner than that time expires. In throttling mode the user will only check for those updates upon next wakeup (loop iteration), so the reaction lag may vary within some number of milliseconds over time.
1238
-
1239
- Public Methods
1240
- ^^^^^^^^^^^^^^
1241
-
1242
- Market Data
1243
- ~~~~~~~~~~~
1244
-
1245
- watchOrderBook
1246
- """"""""""""""
1247
-
1248
- The ``watchOrderBook``\ 's interface is identical to `fetchOrderBook <https://docs.ccxt.com/en/latest/manual.html#order-book>`__. It accepts three arguments:
1249
-
1250
-
1251
- * ``symbol`` – string, a unified CCXT symbol, required
1252
- * ``limit`` – integer, the max number of bids/asks returned, optional
1253
- * ``params`` – assoc dictionary, optional overrides as described in `Overriding Unified API Params <https://docs.ccxt.com/en/latest/manual.html#overriding-unified-api-params>`__
1254
-
1255
- In general, the exchanges can be divided in two categories:
1256
-
1257
-
1258
- #. the exchanges that support limited orderbooks (streaming just the top part of the stack of orders)
1259
- #. the exchanges that stream full orderbooks only
1260
-
1261
- If the exchange accepts a limiting argument, the ``limit`` argument is sent towards the exchange upon subscribing to the orderbook stream over a WebSocket connection. The exchange will then send only the specified amount of orders which helps reduce the traffic. Some exchanges may only accept certain values of ``limit``\ , like 10, 25, 50, 100 and so on.
1262
-
1263
- If the underlying exchange does not accept a limiting argument, the limiting is done on the client side.
1264
-
1265
- The ``limit`` argument does not guarantee that the number of bids or asks will always be equal to ``limit``. It designates the upper boundary or the maximum, so at some moment in time there may be less than ``limit`` bids or asks, but never more than ``limit`` bids or asks. This is the case when the exchange does not have enough orders on the orderbook, or when one of the top orders in the orderbook gets matched and removed from the orderbook, leaving less than ``limit`` entries on either bids side or asks side. The free space in the orderbook usually gets quickly filled with new data.
1266
-
1267
- .. code-block:: JavaScript
1268
-
1269
- // JavaScript
1270
- if (exchange.has['watchOrderBook']) {
1271
- while (true) {
1272
- try {
1273
- const orderbook = await exchange.watchOrderBook (symbol, limit, params)
1274
- console.log (new Date (), symbol, orderbook['asks'][0], orderbook['bids'][0])
1275
- } catch (e) {
1276
- console.log (e)
1277
- // stop the loop on exception or leave it commented to retry
1278
- // throw e
1279
- }
1280
- }
1281
- }
1282
-
1283
- .. code-block:: Python
1284
-
1285
- # Python
1286
- if exchange.has['watchOrderBook']:
1287
- while True:
1288
- try:
1289
- orderbook = await exchange.watch_order_book(symbol, limit, params)
1290
- print(exchange.iso8601(exchange.milliseconds()), symbol, orderbook['asks'][0], orderbook['bids'][0])
1291
- except Exception as e:
1292
- print(e)
1293
- # stop the loop on exception or leave it commented to retry
1294
- # raise e
1295
-
1296
- .. code-block:: PHP
1297
-
1298
- // PHP
1299
- if ($exchange->has['watchOrderBook']) {
1300
- $exchange::execute_and_run(function() use ($exchange, $symbol, $limit, $params) {
1301
- while (true) {
1302
- try {
1303
- $orderbook = yield $exchange->watch_order_book($symbol, $limit, $params);
1304
- echo date('c'), ' ', $symbol, ' ', json_encode(array($orderbook['asks'][0], $orderbook['bids'][0])), "\n";
1305
- } catch (Exception $e) {
1306
- echo get_class($e), ' ', $e->getMessage(), "\n";
1307
- }
1308
- }
1309
- });
1310
- }
1311
-
1312
- watchTicker
1313
- """""""""""
1314
-
1315
- Some exchanges allow different topics to listen to tickers (ie: bookTicker). You can set this in ``exchange.options['watchTicker']['name']``
1316
-
1317
- .. code-block:: JavaScript
1318
-
1319
- // JavaScript
1320
- if (exchange.has['watchTicker']) {
1321
- while (true) {
1322
- try {
1323
- const ticker = await exchange.watchTicker (symbol, params)
1324
- console.log (new Date (), ticker)
1325
- } catch (e) {
1326
- console.log (e)
1327
- // stop the loop on exception or leave it commented to retry
1328
- // throw e
1329
- }
1330
- }
1331
- }
1332
-
1333
- .. code-block:: Python
1334
-
1335
- # Python
1336
- if exchange.has['watchTicker']:
1337
- while True:
1338
- try:
1339
- ticker = await exchange.watch_ticker(symbol, params)
1340
- print(exchange.iso8601(exchange.milliseconds()), ticker)
1341
- except Exception as e:
1342
- print(e)
1343
- # stop the loop on exception or leave it commented to retry
1344
- # raise e
1345
-
1346
- .. code-block:: PHP
1347
-
1348
- // PHP
1349
- if ($exchange->has['watchTicker']) {
1350
- $exchange::execute_and_run(function() use ($exchange, $symbol, $params) {
1351
- while (true) {
1352
- try {
1353
- $ticker = yield $exchange->watch_ticker($symbol, $params);
1354
- echo date('c'), ' ', json_encode($ticker), "\n";
1355
- } catch (Exception $e) {
1356
- echo get_class($e), ' ', $e->getMessage(), "\n";
1357
- }
1358
- }
1359
- });
1360
- }
1361
-
1362
- watchTickers
1363
- """"""""""""
1364
-
1365
- .. code-block:: JavaScript
1366
-
1367
- // JavaScript
1368
- if (exchange.has['watchTickers']) {
1369
- while (true) {
1370
- try {
1371
- const tickers = await exchange.watchTickers (symbols, params)
1372
- console.log (new Date (), tickers)
1373
- } catch (e) {
1374
- console.log (e)
1375
- // stop the loop on exception or leave it commented to retry
1376
- // throw e
1377
- }
1378
- }
1379
- }
1380
-
1381
- .. code-block:: Python
1382
-
1383
- # Python
1384
- if exchange.has['watchTickers']:
1385
- while True:
1386
- try:
1387
- tickers = await exchange.watch_tickers(symbols, params)
1388
- print(exchange.iso8601(exchange.milliseconds()), tickers)
1389
- except Exception as e:
1390
- print(e)
1391
- # stop the loop on exception or leave it commented to retry
1392
- # raise e
1393
-
1394
- .. code-block:: PHP
1395
-
1396
- // PHP
1397
- if ($exchange->has['watchTickers']) {
1398
- $exchange::execute_and_run(function() use ($exchange, $symbols, $params) {
1399
- while (true) {
1400
- try {
1401
- $tickers = yield $exchange->watch_tickers($symbols, $params);
1402
- echo date('c'), ' ', json_encode($tickers), "\n";
1403
- } catch (Exception $e) {
1404
- echo get_class($e), ' ', $e->getMessage(), "\n";
1405
- }
1406
- }
1407
- });
1408
- }
1409
-
1410
- watchOHLCV
1411
- """"""""""
1412
-
1413
- A very common misconception about WebSockets is that WS OHLCV streams can somehow speed up a trading strategy.
1414
- If the purpose of your app is to implement OHLCV-trading or a speculative algorithmic strategy, **consider the following carefully**.
1415
-
1416
- In general, there's two types of trading data used in the algorithms:
1417
-
1418
-
1419
- * 1st-order real-time data like orderbooks and trades
1420
- * 2nd-order non-real-time data like tickers, ohlcvs, etc
1421
-
1422
- When developers say *"real-time"*\ , that usually means pseudo real-time, or, put simply, *"as fast and as close to real time as possible"*.
1423
-
1424
- The 2nd-order data is **always** calculated from the 1st-order data. OHLCVs are calculated from aggregated trades. Tickers are calculated from trades and orderbooks.
1425
-
1426
- Some exchanges do the calculation of OHLCVs (2nd order data) for you on the exchange side and send you updates over WS (Binance). Other exchanges don't really think that is necessary, for a reason.
1427
-
1428
- Obviously, it takes time to calculate 2nd-order OHLCV candles from trades. Apart from that sending the calculated candle back to all connected users also takes time. Additional delays can happen during periods of high volatility if an exchange is traded very actively under high load.
1429
-
1430
- There is no strict guarantee on how much time it will take from the exchange to calculate the 2nd order data and stream it to you over WS. The delays and lags on OHLCV candles can vary significantly from exchange to exchange. For example, an exchange can send an OHLCV update ~30 seconds after the actual closing of a corresponding period. Other exchanges may send the current OHLCV updates at a regular intervals (say, once every 100ms), while in reality trades can happen much more frequently.
1431
-
1432
- Most people use WS to avoid any sorts of delays and have real-time data. So, in most cases it is much better to not wait for the exchange. Recalculating the 2nd order data from 1st order data on your own may be much faster and that can lower the unnecessary delays. Therefore it does not make much sense to use WS for watching just the OHLCV candles from the exchange. Developers would rather ``watch_trades()`` instead and recalculate the OHLCV candles using CCXT's built-in methods like ``build_ohlcvc()``.
1433
-
1434
- .. code-block:: Python
1435
-
1436
- # Python
1437
- exchange = ccxtpro.binance()
1438
- if not exchange.has['watchOHLCV']:
1439
- while True:
1440
- try:
1441
- trades = await exchange.watch_trades(symbol)
1442
- ohlcvc = exchange.build_ohlcvc(trades, '1m')
1443
- print(ohlcvc)
1444
- except Exception as e:
1445
- print(e)
1446
- # stop the loop on exception or leave it commented to retry
1447
- # raise e
1448
-
1449
- That explains why some exchanges reasonably think that OHLCVs are not necessary in the WS context, cause users can calculate that information in the userland much faster having just a WS stream of realtime 1st-order trades.
1450
-
1451
- If your application is not very time-critical, you can still subscribe to OHLCV streams, for charting purposes. If the underlying ``exchange.has['watchOHLCV']``\ , you can ``watchOHLCV()/watch_ohlcv()`` as shown below:
1452
-
1453
- .. code-block:: JavaScript
1454
-
1455
- // JavaScript
1456
- if (exchange.has['watchOHLCV']) {
1457
- while (true) {
1458
- try {
1459
- const candles = await exchange.watchOHLCV (symbol, timeframe, since, limit, params)
1460
- console.log (new Date (), candles)
1461
- } catch (e) {
1462
- console.log (e)
1463
- // stop the loop on exception or leave it commented to retry
1464
- // throw e
1465
- }
1466
- }
1467
- }
1468
-
1469
- .. code-block:: Python
1470
-
1471
- # Python
1472
- if exchange.has['watchOHLCV']:
1473
- while True:
1474
- try:
1475
- candles = await exchange.watch_ohlcv(symbol, timeframe, since, limit, params)
1476
- print(exchange.iso8601(exchange.milliseconds()), candles)
1477
- except Exception as e:
1478
- print(e)
1479
- # stop the loop on exception or leave it commented to retry
1480
- # raise e
1481
-
1482
- .. code-block:: PHP
1483
-
1484
- // PHP
1485
- if ($exchange->has['watchOHLCV']) {
1486
- $exchange::execute_and_run(function() use ($exchange, $symbol, $timeframe, $since, $limit, $params) {
1487
- while (true) {
1488
- try {
1489
- $candles = yield $exchange->watch_ohlcv($symbol, $timeframe, $since, $limit, $params);
1490
- echo date('c'), ' ', $symbol, ' ', $timeframe, ' ', json_encode($candles), "\n";
1491
- } catch (Exception $e) {
1492
- echo get_class($e), ' ', $e->getMessage(), "\n";
1493
- }
1494
- }
1495
- });
1496
- }
1497
-
1498
- watchTrades
1499
- """""""""""
1500
-
1501
- .. code-block:: JavaScript
1502
-
1503
- // JavaScript
1504
- if (exchange.has['watchTrades']) {
1505
- while (true) {
1506
- try {
1507
- const trades = await exchange.watchTrades (symbol, since, limit, params)
1508
- console.log (new Date (), trades)
1509
- } catch (e) {
1510
- console.log (e)
1511
- // stop the loop on exception or leave it commented to retry
1512
- // throw e
1513
- }
1514
- }
1515
- }
1516
-
1517
- .. code-block:: Python
1518
-
1519
- # Python
1520
- if exchange.has['watchTrades']:
1521
- while True:
1522
- try:
1523
- trades = await exchange.watch_trades(symbol, since, limit, params)
1524
- print(exchange.iso8601(exchange.milliseconds()), trades)
1525
- except Exception as e:
1526
- print(e)
1527
- # stop the loop on exception or leave it commented to retry
1528
- # raise e
1529
-
1530
- .. code-block:: PHP
1531
-
1532
- // PHP
1533
- if ($exchange->has['watchTrades']) {
1534
- $exchange::execute_and_run(function() use ($exchange, $symbol, $since, $limit, $params) {
1535
- while (true) {
1536
- try {
1537
- $trades = yield $exchange->watch_trades($symbol, $since, $limit, $params);
1538
- echo date('c'), ' ', json_encode($trades), "\n";
1539
- } catch (Exception $e) {
1540
- echo get_class($e), ' ', $e->getMessage(), "\n";
1541
- }
1542
- }
1543
- });
1544
- }
1545
-
1546
- Private Methods
1547
- ^^^^^^^^^^^^^^^
1548
-
1549
- .. code-block:: diff
1550
-
1551
- - work in progress now
1552
-
1553
- Authentication
1554
- ~~~~~~~~~~~~~~
1555
-
1556
- In most cases the authentication logic is borrowed from CCXT since the exchanges use the same keypairs and signing algorithms for REST APIs and WebSocket APIs. See `API Keys Setup <https://docs.ccxt.com/en/latest/manual.html#api-keys-setup>`__ for more details.
1557
-
1558
- Trading
1559
- ~~~~~~~
1560
-
1561
- watchBalance
1562
- """"""""""""
1563
-
1564
- .. code-block:: JavaScript
1565
-
1566
- // JavaScript
1567
- if (exchange.has['watchBalance']) {
1568
- while (true) {
1569
- try {
1570
- const balance = await exchange.watchBalance (params)
1571
- console.log (new Date (), balance)
1572
- } catch (e) {
1573
- console.log (e)
1574
- // stop the loop on exception or leave it commented to retry
1575
- // throw e
1576
- }
1577
- }
1578
- }
1579
-
1580
- .. code-block:: Python
1581
-
1582
- # Python
1583
- if exchange.has['watchBalance']:
1584
- while True:
1585
- try:
1586
- balance = await exchange.watch_balance(params)
1587
- print(exchange.iso8601(exchange.milliseconds()), balance)
1588
- except Exception as e:
1589
- print(e)
1590
- # stop the loop on exception or leave it commented to retry
1591
- # raise e
1592
-
1593
- .. code-block:: PHP
1594
-
1595
- // PHP
1596
- if ($exchange->has['watchBalance']) {
1597
- $exchange::execute_and_run(function() use ($exchange, $params) {
1598
- while (true) {
1599
- try {
1600
- $balance = yield $exchange->watch_balance($params);
1601
- echo date('c'), ' ', json_encode($balance), "\n";
1602
- } catch (Exception $e) {
1603
- echo get_class($e), ' ', $e->getMessage(), "\n";
1604
- }
1605
- }
1606
- });
1607
- }
1608
-
1609
- watchOrders
1610
- """""""""""
1611
-
1612
- .. code-block:: diff
1613
-
1614
- - this method is a work in progress now (may be unavailable)
1615
-
1616
- watchCreateOrder
1617
- """"""""""""""""
1618
-
1619
- .. code-block:: diff
1620
-
1621
- - this method is a work in progress now (may be unavailable)
1622
-
1623
- watchCancelOrder
1624
- """"""""""""""""
1625
-
1626
- .. code-block:: diff
1627
-
1628
- - this method is a work in progress now (may be unavailable)
1629
-
1630
- watchMyTrades
1631
- """""""""""""
1632
-
1633
- .. code-block:: diff
1634
-
1635
- - this method is a work in progress now (may be unavailable)
1636
-
1637
- .. code-block:: JavaScript
1638
-
1639
- // JavaScript
1640
- watchMyTrades (symbol = undefined, since = undefined, limit = undefined, params = {})
1641
-
1642
- .. code-block:: Python
1643
-
1644
- # Python
1645
- watch_my_trades(symbol=None, since=None, limit=None, params={})
1646
-
1647
- .. code-block:: PHP
1648
-
1649
- // PHP
1650
- watch_my_trades($symbol = null, $since = null, $lmit = null, $params = array());
1651
-
1652
- Funding
1653
- ~~~~~~~
1654
-
1655
- watchTransactions
1656
- """""""""""""""""
1657
-
1658
- .. code-block:: diff
1659
-
1660
- - this method is a work in progress now (may be unavailable)
1661
-
1662
- Error Handling
1663
- ^^^^^^^^^^^^^^
1664
-
1665
- In case of an error the CCXT Pro will throw a standard CCXT exception, see `Error Handling <https://docs.ccxt.com/en/latest/manual.html#error-handling>`__ for more details.