ccxt 4.2.29__py2.py3-none-any.whl → 4.2.31__py2.py3-none-any.whl

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 (133) hide show
  1. ccxt/__init__.py +3 -3
  2. ccxt/abstract/bybit.py +2 -2
  3. ccxt/abstract/coinbase.py +10 -0
  4. ccxt/abstract/okx.py +12 -1
  5. ccxt/ascendex.py +5 -5
  6. ccxt/async_support/__init__.py +3 -3
  7. ccxt/async_support/ascendex.py +5 -5
  8. ccxt/async_support/base/exchange.py +3 -3
  9. ccxt/async_support/bigone.py +2 -2
  10. ccxt/async_support/binance.py +892 -218
  11. ccxt/async_support/bingx.py +1 -1
  12. ccxt/async_support/bitfinex.py +1 -1
  13. ccxt/async_support/bitfinex2.py +421 -86
  14. ccxt/async_support/bitforex.py +3 -0
  15. ccxt/async_support/bitget.py +8 -4
  16. ccxt/async_support/bitmart.py +3 -3
  17. ccxt/async_support/bitmex.py +4 -4
  18. ccxt/async_support/bitrue.py +1 -1
  19. ccxt/async_support/bitso.py +1 -1
  20. ccxt/async_support/bitteam.py +2 -2
  21. ccxt/async_support/btcalpha.py +1 -1
  22. ccxt/async_support/bybit.py +3 -3
  23. ccxt/async_support/coinbase.py +20 -5
  24. ccxt/async_support/coincheck.py +1 -1
  25. ccxt/async_support/coinex.py +2 -2
  26. ccxt/async_support/coinlist.py +1 -1
  27. ccxt/async_support/coinmate.py +1 -1
  28. ccxt/async_support/coinmetro.py +2 -2
  29. ccxt/async_support/coinsph.py +1 -1
  30. ccxt/async_support/cryptocom.py +3 -3
  31. ccxt/async_support/deribit.py +1 -0
  32. ccxt/async_support/digifinex.py +6 -4
  33. ccxt/async_support/exmo.py +2 -2
  34. ccxt/async_support/gate.py +5 -5
  35. ccxt/async_support/gemini.py +3 -3
  36. ccxt/async_support/hitbtc.py +13 -17
  37. ccxt/async_support/hollaex.py +2 -2
  38. ccxt/async_support/htx.py +6 -6
  39. ccxt/async_support/huobijp.py +1 -1
  40. ccxt/async_support/kraken.py +3 -1
  41. ccxt/async_support/krakenfutures.py +4 -1
  42. ccxt/async_support/kucoin.py +17 -17
  43. ccxt/async_support/kucoinfutures.py +3 -3
  44. ccxt/async_support/lbank.py +4 -3
  45. ccxt/async_support/mexc.py +7 -7
  46. ccxt/async_support/novadax.py +1 -1
  47. ccxt/async_support/okcoin.py +2 -2
  48. ccxt/async_support/okx.py +22 -8
  49. ccxt/async_support/p2b.py +1 -0
  50. ccxt/async_support/phemex.py +3 -3
  51. ccxt/async_support/poloniexfutures.py +6 -3
  52. ccxt/async_support/probit.py +1 -1
  53. ccxt/async_support/timex.py +2 -2
  54. ccxt/async_support/tokocrypto.py +3 -3
  55. ccxt/async_support/wavesexchange.py +2 -2
  56. ccxt/async_support/whitebit.py +3 -3
  57. ccxt/async_support/woo.py +3 -3
  58. ccxt/async_support/yobit.py +1 -1
  59. ccxt/async_support/zaif.py +1 -1
  60. ccxt/async_support/zonda.py +3 -3
  61. ccxt/base/errors.py +13 -12
  62. ccxt/base/exchange.py +36 -26
  63. ccxt/bigone.py +2 -2
  64. ccxt/binance.py +892 -218
  65. ccxt/bingx.py +1 -1
  66. ccxt/bitfinex.py +1 -1
  67. ccxt/bitfinex2.py +421 -86
  68. ccxt/bitforex.py +3 -0
  69. ccxt/bitget.py +8 -4
  70. ccxt/bitmart.py +3 -3
  71. ccxt/bitmex.py +4 -4
  72. ccxt/bitrue.py +1 -1
  73. ccxt/bitso.py +1 -1
  74. ccxt/bitteam.py +2 -2
  75. ccxt/btcalpha.py +1 -1
  76. ccxt/bybit.py +3 -3
  77. ccxt/coinbase.py +20 -5
  78. ccxt/coincheck.py +1 -1
  79. ccxt/coinex.py +2 -2
  80. ccxt/coinlist.py +1 -1
  81. ccxt/coinmate.py +1 -1
  82. ccxt/coinmetro.py +2 -2
  83. ccxt/coinsph.py +1 -1
  84. ccxt/cryptocom.py +3 -3
  85. ccxt/deribit.py +1 -0
  86. ccxt/digifinex.py +6 -4
  87. ccxt/exmo.py +2 -2
  88. ccxt/gate.py +5 -5
  89. ccxt/gemini.py +3 -3
  90. ccxt/hitbtc.py +13 -17
  91. ccxt/hollaex.py +2 -2
  92. ccxt/htx.py +6 -6
  93. ccxt/huobijp.py +1 -1
  94. ccxt/kraken.py +3 -1
  95. ccxt/krakenfutures.py +4 -1
  96. ccxt/kucoin.py +17 -17
  97. ccxt/kucoinfutures.py +3 -3
  98. ccxt/lbank.py +4 -3
  99. ccxt/mexc.py +7 -7
  100. ccxt/novadax.py +1 -1
  101. ccxt/okcoin.py +2 -2
  102. ccxt/okx.py +22 -8
  103. ccxt/p2b.py +1 -0
  104. ccxt/phemex.py +3 -3
  105. ccxt/poloniexfutures.py +6 -3
  106. ccxt/pro/__init__.py +3 -1
  107. ccxt/pro/alpaca.py +1 -1
  108. ccxt/pro/binance.py +4 -4
  109. ccxt/pro/bitget.py +1 -1
  110. ccxt/pro/bitmart.py +1 -1
  111. ccxt/pro/bitmex.py +43 -7
  112. ccxt/pro/bitvavo.py +1 -1
  113. ccxt/pro/bybit.py +2 -2
  114. ccxt/pro/cex.py +2 -2
  115. ccxt/pro/independentreserve.py +1 -1
  116. ccxt/pro/okx.py +1 -1
  117. ccxt/pro/onetrading.py +2 -2
  118. ccxt/pro/p2b.py +407 -0
  119. ccxt/pro/probit.py +5 -5
  120. ccxt/pro/whitebit.py +1 -1
  121. ccxt/probit.py +1 -1
  122. ccxt/timex.py +2 -2
  123. ccxt/tokocrypto.py +3 -3
  124. ccxt/wavesexchange.py +2 -2
  125. ccxt/whitebit.py +3 -3
  126. ccxt/woo.py +3 -3
  127. ccxt/yobit.py +1 -1
  128. ccxt/zaif.py +1 -1
  129. ccxt/zonda.py +3 -3
  130. {ccxt-4.2.29.dist-info → ccxt-4.2.31.dist-info}/METADATA +6 -7
  131. {ccxt-4.2.29.dist-info → ccxt-4.2.31.dist-info}/RECORD +133 -132
  132. {ccxt-4.2.29.dist-info → ccxt-4.2.31.dist-info}/WHEEL +0 -0
  133. {ccxt-4.2.29.dist-info → ccxt-4.2.31.dist-info}/top_level.txt +0 -0
ccxt/tokocrypto.py CHANGED
@@ -706,7 +706,7 @@ class tokocrypto(Exchange, ImplicitAPI):
706
706
  if permissions[j] == 'TRD_GRP_003':
707
707
  active = False
708
708
  break
709
- isMarginTradingAllowed = self.safe_value(market, 'isMarginTradingAllowed', False)
709
+ isMarginTradingAllowed = self.safe_bool(market, 'isMarginTradingAllowed', False)
710
710
  entry = {
711
711
  'id': id,
712
712
  'lowercaseId': lowercaseId,
@@ -1555,7 +1555,7 @@ class tokocrypto(Exchange, ImplicitAPI):
1555
1555
  self.load_markets()
1556
1556
  market = self.market(symbol)
1557
1557
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'clientId')
1558
- postOnly = self.safe_value(params, 'postOnly', False)
1558
+ postOnly = self.safe_bool(params, 'postOnly', False)
1559
1559
  # only supported for spot/margin api
1560
1560
  if postOnly:
1561
1561
  type = 'LIMIT_MAKER'
@@ -2328,7 +2328,7 @@ class tokocrypto(Exchange, ImplicitAPI):
2328
2328
  return None # fallback to default error handler
2329
2329
  # check success value for wapi endpoints
2330
2330
  # response in format {'msg': 'The coin does not exist.', 'success': True/false}
2331
- success = self.safe_value(response, 'success', True)
2331
+ success = self.safe_bool(response, 'success', True)
2332
2332
  if not success:
2333
2333
  messageInner = self.safe_string(response, 'msg')
2334
2334
  parsedMessage = None
ccxt/wavesexchange.py CHANGED
@@ -408,7 +408,7 @@ class wavesexchange(Exchange, ImplicitAPI):
408
408
  # "matcherFee":"4077612"
409
409
  # }
410
410
  # }
411
- isDiscountFee = self.safe_value(params, 'isDiscountFee', False)
411
+ isDiscountFee = self.safe_bool(params, 'isDiscountFee', False)
412
412
  mode = None
413
413
  if isDiscountFee:
414
414
  mode = self.safe_value(response, 'discount')
@@ -2276,7 +2276,7 @@ class wavesexchange(Exchange, ImplicitAPI):
2276
2276
 
2277
2277
  def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
2278
2278
  errorCode = self.safe_string(response, 'error')
2279
- success = self.safe_value(response, 'success', True)
2279
+ success = self.safe_bool(response, 'success', True)
2280
2280
  Exception = self.safe_value(self.exceptions, errorCode)
2281
2281
  if Exception is not None:
2282
2282
  messageInner = self.safe_string(response, 'message')
ccxt/whitebit.py CHANGED
@@ -32,7 +32,7 @@ class whitebit(Exchange, ImplicitAPI):
32
32
  'name': 'WhiteBit',
33
33
  'version': 'v4',
34
34
  'countries': ['EE'],
35
- 'rateLimit': 500,
35
+ 'rateLimit': 50,
36
36
  'pro': True,
37
37
  'has': {
38
38
  'CORS': None,
@@ -429,8 +429,8 @@ class whitebit(Exchange, ImplicitAPI):
429
429
  currency = response[id]
430
430
  # breaks down in Python due to utf8 encoding issues on the exchange side
431
431
  # name = self.safe_string(currency, 'name')
432
- canDeposit = self.safe_value(currency, 'can_deposit', True)
433
- canWithdraw = self.safe_value(currency, 'can_withdraw', True)
432
+ canDeposit = self.safe_bool(currency, 'can_deposit', True)
433
+ canWithdraw = self.safe_bool(currency, 'can_withdraw', True)
434
434
  active = canDeposit and canWithdraw
435
435
  code = self.safe_currency_code(id)
436
436
  result[code] = {
ccxt/woo.py CHANGED
@@ -1065,7 +1065,7 @@ class woo(Exchange, ImplicitAPI):
1065
1065
  :param boolean [params.stop]: whether the order is a stop/algo order
1066
1066
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1067
1067
  """
1068
- stop = self.safe_value(params, 'stop', False)
1068
+ stop = self.safe_bool(params, 'stop', False)
1069
1069
  params = self.omit(params, 'stop')
1070
1070
  if not stop and (symbol is None):
1071
1071
  raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
@@ -1214,7 +1214,7 @@ class woo(Exchange, ImplicitAPI):
1214
1214
  request = {}
1215
1215
  market: Market = None
1216
1216
  stop = self.safe_value(params, 'stop')
1217
- trailing = self.safe_value(params, 'trailing', False)
1217
+ trailing = self.safe_bool(params, 'trailing', False)
1218
1218
  params = self.omit(params, ['stop', 'trailing'])
1219
1219
  if symbol is not None:
1220
1220
  market = self.market(symbol)
@@ -1947,7 +1947,7 @@ class woo(Exchange, ImplicitAPI):
1947
1947
  #
1948
1948
  transfer = self.parse_transfer(response, currency)
1949
1949
  transferOptions = self.safe_value(self.options, 'transfer', {})
1950
- fillResponseFromRequest = self.safe_value(transferOptions, 'fillResponseFromRequest', True)
1950
+ fillResponseFromRequest = self.safe_bool(transferOptions, 'fillResponseFromRequest', True)
1951
1951
  if fillResponseFromRequest:
1952
1952
  transfer['amount'] = amount
1953
1953
  transfer['fromAccount'] = fromAccount
ccxt/yobit.py CHANGED
@@ -1224,7 +1224,7 @@ class yobit(Exchange, ImplicitAPI):
1224
1224
  #
1225
1225
  # To cover points 1, 2, 3 and 4 combined self handler should work like self:
1226
1226
  #
1227
- success = self.safe_value(response, 'success', False)
1227
+ success = self.safe_bool(response, 'success', False)
1228
1228
  if isinstance(success, str):
1229
1229
  if (success == 'true') or (success == '1'):
1230
1230
  success = True
ccxt/zaif.py CHANGED
@@ -691,7 +691,7 @@ class zaif(Exchange, ImplicitAPI):
691
691
  self.throw_exactly_matched_exception(self.exceptions['exact'], error, feedback)
692
692
  self.throw_broadly_matched_exception(self.exceptions['broad'], error, feedback)
693
693
  raise ExchangeError(feedback) # unknown message
694
- success = self.safe_value(response, 'success', True)
694
+ success = self.safe_bool(response, 'success', True)
695
695
  if not success:
696
696
  raise ExchangeError(feedback)
697
697
  return None
ccxt/zonda.py CHANGED
@@ -1399,7 +1399,7 @@ class zonda(Exchange, ImplicitAPI):
1399
1399
  # }
1400
1400
  #
1401
1401
  id = self.safe_string_2(response, 'offerId', 'stopOfferId')
1402
- completed = self.safe_value(response, 'completed', False)
1402
+ completed = self.safe_bool(response, 'completed', False)
1403
1403
  status = 'closed' if completed else 'open'
1404
1404
  transactions = self.safe_value(response, 'transactions')
1405
1405
  return self.safe_order({
@@ -1457,7 +1457,7 @@ class zonda(Exchange, ImplicitAPI):
1457
1457
  'EUR': True,
1458
1458
  'PLN': True,
1459
1459
  }
1460
- return self.safe_value(fiatCurrencies, currency, False)
1460
+ return self.safe_bool(fiatCurrencies, currency, False)
1461
1461
 
1462
1462
  def parse_deposit_address(self, depositAddress, currency: Currency = None):
1463
1463
  #
@@ -1588,7 +1588,7 @@ class zonda(Exchange, ImplicitAPI):
1588
1588
  #
1589
1589
  transfer = self.parse_transfer(response, currency)
1590
1590
  transferOptions = self.safe_value(self.options, 'transfer', {})
1591
- fillResponseFromRequest = self.safe_value(transferOptions, 'fillResponseFromRequest', True)
1591
+ fillResponseFromRequest = self.safe_bool(transferOptions, 'fillResponseFromRequest', True)
1592
1592
  if fillResponseFromRequest:
1593
1593
  transfer['amount'] = amount
1594
1594
  return transfer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.29
3
+ Version: 4.2.31
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -70,7 +70,6 @@ Current feature list:
70
70
 
71
71
  ## Sponsored Promotion
72
72
 
73
- [![CCXT_APP_basic_mode_banner](https://github.com/ccxt/ccxt/assets/43336371/c112c89d-567a-4b03-bb4d-1ca7a07ae2f7)](https://x.woo.org/en/ccxt-competition-1)
74
73
 
75
74
  ## See Also
76
75
 
@@ -186,13 +185,13 @@ The CCXT library currently supports the following 94 cryptocurrency exchange mar
186
185
  | [![okcoin](https://user-images.githubusercontent.com/51840849/87295551-102fbf00-c50e-11ea-90a9-462eebba5829.jpg)](https://www.okcoin.com/account/register?flag=activity&channelId=600001513) | okcoin | [OKCoin](https://www.okcoin.com/account/register?flag=activity&channelId=600001513) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okcoin.com/docs/en/) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
187
186
  | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/join/CCXT2023) | okx | [OKX](https://www.okx.com/join/CCXT2023) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
188
187
  | [![onetrading](https://github.com/ccxt/ccxt/assets/43336371/bdbc26fd-02f2-4ca7-9f1e-17333690bb1c)](https://onetrading.com/) | onetrading | [One Trading](https://onetrading.com/) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.onetrading.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
189
- | [![p2b](https://github.com/ccxt/ccxt/assets/43336371/8da13a80-1f0a-49be-bb90-ff8b25164755)](https://p2pb2b.com?referral=ee784c53) | p2b | [p2b](https://p2pb2b.com?referral=ee784c53) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md) | | |
188
+ | [![p2b](https://github.com/ccxt/ccxt/assets/43336371/8da13a80-1f0a-49be-bb90-ff8b25164755)](https://p2pb2b.com?referral=ee784c53) | p2b | [p2b](https://p2pb2b.com?referral=ee784c53) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
190
189
  | [![paymium](https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg)](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | paymium | [Paymium](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/Paymium/api-documentation) | | |
191
190
  | [![phemex](https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg)](https://phemex.com/register?referralCode=EDNVJ) | phemex | [Phemex](https://phemex.com/register?referralCode=EDNVJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/phemex/phemex-api-docs) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
192
191
  | [![poloniex](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.poloniex.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
193
192
  | [![poloniexfutures](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniexfutures | [Poloniex Futures](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://futures-docs.poloniex.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
194
193
  | [![probit](https://user-images.githubusercontent.com/51840849/79268032-c4379480-7ea2-11ea-80b3-dd96bb29fd0d.jpg)](https://www.probit.com/r/34608773) | probit | [ProBit](https://www.probit.com/r/34608773) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs-en.probit.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
195
- | [![timex](https://user-images.githubusercontent.com/1294454/70423869-6839ab00-1a7f-11ea-8f94-13ae72c31115.jpg)](https://timex.io/?refcode=1x27vNkTbP1uwkCck) | timex | [TimeX](https://timex.io/?refcode=1x27vNkTbP1uwkCck) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.timex.io) | | |
194
+ | [![timex](https://user-images.githubusercontent.com/1294454/70423869-6839ab00-1a7f-11ea-8f94-13ae72c31115.jpg)](https://timex.io/?refcode=1x27vNkTbP1uwkCck) | timex | [TimeX](https://timex.io/?refcode=1x27vNkTbP1uwkCck) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://plasma-relay-backend.timex.io/swagger-ui/index.html) | | |
196
195
  | [![tokocrypto](https://user-images.githubusercontent.com/1294454/183870484-d3398d0c-f6a1-4cce-91b8-d58792308716.jpg)](https://tokocrypto.com) | tokocrypto | [Tokocrypto](https://tokocrypto.com) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://www.tokocrypto.com/apidocs/) | | |
197
196
  | [![upbit](https://user-images.githubusercontent.com/1294454/49245610-eeaabe00-f423-11e8-9cba-4b0aed794799.jpg)](https://upbit.com) | upbit | [Upbit](https://upbit.com) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.upbit.com/docs/%EC%9A%94%EC%B2%AD-%EC%88%98-%EC%A0%9C%ED%95%9C) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
198
197
  | [![wavesexchange](https://user-images.githubusercontent.com/1294454/84547058-5fb27d80-ad0b-11ea-8711-78ac8b3c7f31.jpg)](https://wx.network) | wavesexchange | [Waves.Exchange](https://wx.network) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.wx.network) | | |
@@ -259,13 +258,13 @@ console.log(version, Object.keys(exchanges));
259
258
 
260
259
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
261
260
 
262
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.29/dist/ccxt.browser.js
263
- * unpkg: https://unpkg.com/ccxt@4.2.29/dist/ccxt.browser.js
261
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.31/dist/ccxt.browser.js
262
+ * unpkg: https://unpkg.com/ccxt@4.2.31/dist/ccxt.browser.js
264
263
 
265
264
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
266
265
 
267
266
  ```HTML
268
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.29/dist/ccxt.browser.js"></script>
267
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.31/dist/ccxt.browser.js"></script>
269
268
  ```
270
269
 
271
270
  Creates a global `ccxt` object: