ccxt 4.4.4__py2.py3-none-any.whl → 4.4.6__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.
ccxt/mexc.py CHANGED
@@ -44,6 +44,9 @@ class mexc(Exchange, ImplicitAPI):
44
44
  'future': False,
45
45
  'option': False,
46
46
  'addMargin': True,
47
+ 'borrowCrossMargin': False,
48
+ 'borrowIsolatedMargin': False,
49
+ 'borrowMargin': False,
47
50
  'cancelAllOrders': True,
48
51
  'cancelOrder': True,
49
52
  'cancelOrders': None,
@@ -57,12 +60,21 @@ class mexc(Exchange, ImplicitAPI):
57
60
  'createOrders': True,
58
61
  'createPostOnlyOrder': True,
59
62
  'createReduceOnlyOrder': True,
63
+ 'createStopLimitOrder': True,
64
+ 'createStopMarketOrder': True,
65
+ 'createStopOrder': True,
66
+ 'createTriggerOrder': True,
60
67
  'deposit': None,
61
68
  'editOrder': None,
62
69
  'fetchAccounts': True,
63
70
  'fetchBalance': True,
64
71
  'fetchBidsAsks': True,
65
- 'fetchBorrowRateHistory': None,
72
+ 'fetchBorrowInterest': False,
73
+ 'fetchBorrowRate': False,
74
+ 'fetchBorrowRateHistories': False,
75
+ 'fetchBorrowRateHistory': False,
76
+ 'fetchBorrowRates': False,
77
+ 'fetchBorrowRatesPerSymbol': False,
66
78
  'fetchCanceledOrders': True,
67
79
  'fetchClosedOrder': None,
68
80
  'fetchClosedOrders': True,
@@ -83,6 +95,7 @@ class mexc(Exchange, ImplicitAPI):
83
95
  'fetchIndexOHLCV': True,
84
96
  'fetchIsolatedBorrowRate': False,
85
97
  'fetchIsolatedBorrowRates': False,
98
+ 'fetchIsolatedPositions': False,
86
99
  'fetchL2OrderBook': True,
87
100
  'fetchLedger': None,
88
101
  'fetchLedgerEntry': None,
@@ -91,11 +104,13 @@ class mexc(Exchange, ImplicitAPI):
91
104
  'fetchLeverageTiers': True,
92
105
  'fetchMarginAdjustmentHistory': False,
93
106
  'fetchMarginMode': False,
94
- 'fetchMarketLeverageTiers': None,
107
+ 'fetchMarketLeverageTiers': 'emulated',
95
108
  'fetchMarkets': True,
96
109
  'fetchMarkOHLCV': True,
97
110
  'fetchMyTrades': True,
98
111
  'fetchOHLCV': True,
112
+ 'fetchOpenInterest': False,
113
+ 'fetchOpenInterestHistory': False,
99
114
  'fetchOpenOrder': None,
100
115
  'fetchOpenOrders': True,
101
116
  'fetchOrder': True,
@@ -103,7 +118,7 @@ class mexc(Exchange, ImplicitAPI):
103
118
  'fetchOrderBooks': None,
104
119
  'fetchOrders': True,
105
120
  'fetchOrderTrades': True,
106
- 'fetchPosition': True,
121
+ 'fetchPosition': 'emulated',
107
122
  'fetchPositionHistory': 'emulated',
108
123
  'fetchPositionMode': True,
109
124
  'fetchPositions': True,
@@ -413,6 +428,8 @@ class mexc(Exchange, ImplicitAPI):
413
428
  },
414
429
  },
415
430
  'options': {
431
+ 'adjustForTimeDifference': False,
432
+ 'timeDifference': 0,
416
433
  'createMarketBuyOrderRequiresPrice': True,
417
434
  'unavailableContracts': {
418
435
  'BTC/USDT:USDT': True,
@@ -467,6 +484,7 @@ class mexc(Exchange, ImplicitAPI):
467
484
  'AVAXC': 'AVAX_CCHAIN',
468
485
  'ERC20': 'ETH',
469
486
  'ACA': 'ACALA',
487
+ 'BEP20': 'BSC',
470
488
  # 'ADA': 'Cardano(ADA)',
471
489
  # 'AE': 'AE',
472
490
  # 'ALGO': 'Algorand(ALGO)',
@@ -1007,6 +1025,8 @@ class mexc(Exchange, ImplicitAPI):
1007
1025
  :param dict [params]: extra parameters specific to the exchange API endpoint
1008
1026
  :returns dict[]: an array of objects representing market data
1009
1027
  """
1028
+ if self.options['adjustForTimeDifference']:
1029
+ self.load_time_difference()
1010
1030
  spotMarketPromise = self.fetch_spot_markets(params)
1011
1031
  swapMarketPromise = self.fetch_swap_markets(params)
1012
1032
  spotMarket, swapMarket = [spotMarketPromise, swapMarketPromise]
@@ -2736,6 +2756,9 @@ class mexc(Exchange, ImplicitAPI):
2736
2756
  def cancel_order(self, id: str, symbol: Str = None, params={}):
2737
2757
  """
2738
2758
  cancels an open order
2759
+ :see: https://mexcdevelop.github.io/apidocs/spot_v3_en/#cancel-order
2760
+ :see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#cancel-the-order-under-maintenance
2761
+ :see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#cancel-the-stop-limit-trigger-order-under-maintenance
2739
2762
  :param str id: order id
2740
2763
  :param str symbol: unified symbol of the market the order was made in
2741
2764
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -2838,6 +2861,7 @@ class mexc(Exchange, ImplicitAPI):
2838
2861
  def cancel_orders(self, ids, symbol: Str = None, params={}):
2839
2862
  """
2840
2863
  cancel multiple orders
2864
+ :see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#cancel-the-order-under-maintenance
2841
2865
  :param str[] ids: order ids
2842
2866
  :param str symbol: unified market symbol, default is None
2843
2867
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -4243,7 +4267,7 @@ class mexc(Exchange, ImplicitAPI):
4243
4267
  # 'coin': currency['id'] + network example: USDT-TRX,
4244
4268
  # 'status': 'status',
4245
4269
  # 'startTime': since, # default 90 days
4246
- # 'endTime': self.milliseconds(),
4270
+ # 'endTime': self.nonce(),
4247
4271
  # 'limit': limit, # default 1000, maximum 1000
4248
4272
  }
4249
4273
  currency = None
@@ -4296,7 +4320,7 @@ class mexc(Exchange, ImplicitAPI):
4296
4320
  # 'coin': currency['id'],
4297
4321
  # 'status': 'status',
4298
4322
  # 'startTime': since, # default 90 days
4299
- # 'endTime': self.milliseconds(),
4323
+ # 'endTime': self.nonce(),
4300
4324
  # 'limit': limit, # default 1000, maximum 1000
4301
4325
  }
4302
4326
  currency = None
@@ -4451,6 +4475,7 @@ class mexc(Exchange, ImplicitAPI):
4451
4475
  def fetch_position(self, symbol: str, params={}):
4452
4476
  """
4453
4477
  fetch data on a single open contract trade position
4478
+ :see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-the-user-s-history-position-information
4454
4479
  :param str symbol: unified market symbol of the market the position is held in, default is None
4455
4480
  :param dict [params]: extra parameters specific to the exchange API endpoint
4456
4481
  :returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
@@ -4466,6 +4491,7 @@ class mexc(Exchange, ImplicitAPI):
4466
4491
  def fetch_positions(self, symbols: Strings = None, params={}):
4467
4492
  """
4468
4493
  fetch all open positions
4494
+ :see: https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-the-user-s-history-position-information
4469
4495
  :param str[]|None symbols: list of unified market symbols
4470
4496
  :param dict [params]: extra parameters specific to the exchange API endpoint
4471
4497
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
@@ -5259,6 +5285,9 @@ class mexc(Exchange, ImplicitAPI):
5259
5285
  positions = self.parse_positions(data, symbols, params)
5260
5286
  return self.filter_by_since_limit(positions, since, limit)
5261
5287
 
5288
+ def nonce(self):
5289
+ return self.milliseconds() - self.safe_integer(self.options, 'timeDifference', 0)
5290
+
5262
5291
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
5263
5292
  section = self.safe_string(api, 0)
5264
5293
  access = self.safe_string(api, 1)
@@ -5271,7 +5300,7 @@ class mexc(Exchange, ImplicitAPI):
5271
5300
  url = self.urls['api'][section][access] + '/api/' + self.version + '/' + path
5272
5301
  paramsEncoded = ''
5273
5302
  if access == 'private':
5274
- params['timestamp'] = self.milliseconds()
5303
+ params['timestamp'] = self.nonce()
5275
5304
  params['recvWindow'] = self.safe_integer(self.options, 'recvWindow', 5000)
5276
5305
  if params:
5277
5306
  paramsEncoded = self.urlencode(params)
@@ -5294,7 +5323,7 @@ class mexc(Exchange, ImplicitAPI):
5294
5323
  url += '?' + self.urlencode(params)
5295
5324
  else:
5296
5325
  self.check_required_credentials()
5297
- timestamp = str(self.milliseconds())
5326
+ timestamp = str(self.nonce())
5298
5327
  auth = ''
5299
5328
  headers = {
5300
5329
  'ApiKey': self.apiKey,
ccxt/paradex.py CHANGED
@@ -640,7 +640,7 @@ class paradex(Exchange, ImplicitAPI):
640
640
  'low': None,
641
641
  'bid': self.safe_string(ticker, 'bid'),
642
642
  'bidVolume': None,
643
- 'ask': self.safe_string(ticker, 'sdk'),
643
+ 'ask': self.safe_string(ticker, 'ask'),
644
644
  'askVolume': None,
645
645
  'vwap': None,
646
646
  'open': None,
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.4'
7
+ __version__ = '4.4.6'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/binance.py CHANGED
@@ -20,7 +20,11 @@ from ccxt.base.precise import Precise
20
20
  class binance(ccxt.async_support.binance):
21
21
 
22
22
  def describe(self):
23
- return self.deep_extend(super(binance, self).describe(), {
23
+ superDescribe = super(binance, self).describe()
24
+ return self.deep_extend(superDescribe, self.describe_data())
25
+
26
+ def describe_data(self):
27
+ return {
24
28
  'has': {
25
29
  'ws': True,
26
30
  'watchBalance': True,
@@ -162,7 +166,7 @@ class binance(ccxt.async_support.binance):
162
166
  'bookTicker': 'bookTicker',
163
167
  },
164
168
  },
165
- })
169
+ }
166
170
 
167
171
  def request_id(self, url):
168
172
  options = self.safe_dict(self.options, 'requestId', self.create_safe_dictionary())
ccxt/pro/binanceus.py CHANGED
@@ -14,7 +14,8 @@ class binanceus(binance):
14
14
  # eslint-disable-next-line new-cap
15
15
  restInstance = binanceusRest()
16
16
  restDescribe = restInstance.describe()
17
- extended = self.deep_extend(restDescribe, super(binanceus, self).describe())
17
+ parentWsDescribe = super(binanceus, self).describe_data()
18
+ extended = self.deep_extend(restDescribe, parentWsDescribe)
18
19
  return self.deep_extend(extended, {
19
20
  'id': 'binanceus',
20
21
  'name': 'Binance US',
ccxt/pro/htx.py CHANGED
@@ -143,6 +143,8 @@ class htx(ccxt.async_support.htx):
143
143
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
144
144
  """
145
145
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
146
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec53561-7773-11ed-9966-0242ac110003
147
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c33ab2-77ae-11ed-9966-0242ac110003
146
148
  :param str symbol: unified symbol of the market to fetch the ticker for
147
149
  :param dict [params]: extra parameters specific to the exchange API endpoint
148
150
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -208,6 +210,9 @@ class htx(ccxt.async_support.htx):
208
210
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
209
211
  """
210
212
  get the list of most recent trades for a particular symbol
213
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec53b69-7773-11ed-9966-0242ac110003
214
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c33c21-77ae-11ed-9966-0242ac110003
215
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c33cfe-77ae-11ed-9966-0242ac110003
211
216
  :param str symbol: unified symbol of the market to fetch trades for
212
217
  :param int [since]: timestamp in ms of the earliest trade to fetch
213
218
  :param int [limit]: the maximum amount of trades to fetch
@@ -266,6 +271,9 @@ class htx(ccxt.async_support.htx):
266
271
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
267
272
  """
268
273
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
274
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec53241-7773-11ed-9966-0242ac110003
275
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c3346a-77ae-11ed-9966-0242ac110003
276
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c33563-77ae-11ed-9966-0242ac110003
269
277
  :param str symbol: unified symbol of the market to fetch OHLCV data for
270
278
  :param str timeframe: the length of time each candle represents
271
279
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -642,6 +650,7 @@ class htx(ccxt.async_support.htx):
642
650
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
643
651
  """
644
652
  watches information on multiple trades made by the user
653
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec53dd5-7773-11ed-9966-0242ac110003
645
654
  :param str symbol: unified market symbol of the market trades were made in
646
655
  :param int [since]: the earliest time in ms to fetch trades for
647
656
  :param int [limit]: the maximum number of trade structures to retrieve
@@ -728,6 +737,7 @@ class htx(ccxt.async_support.htx):
728
737
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
729
738
  """
730
739
  watches information on multiple orders made by the user
740
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec53c8f-7773-11ed-9966-0242ac110003
731
741
  :param str symbol: unified market symbol of the market orders were made in
732
742
  :param int [since]: the earliest time in ms to fetch orders for
733
743
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1269,6 +1279,10 @@ class htx(ccxt.async_support.htx):
1269
1279
  async def watch_balance(self, params={}) -> Balances:
1270
1280
  """
1271
1281
  watch balance and get the amount of funds available for trading or funds locked in orders
1282
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=7ec52e28-7773-11ed-9966-0242ac110003
1283
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=10000084-77b7-11ed-9966-0242ac110003
1284
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=8cb7dcca-77b5-11ed-9966-0242ac110003
1285
+ :see: https://www.htx.com/en-us/opend/newApiPages/?id=28c34995-77ae-11ed-9966-0242ac110003
1272
1286
  :param dict [params]: extra parameters specific to the exchange API endpoint
1273
1287
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1274
1288
  """
ccxt/pro/hyperliquid.py CHANGED
@@ -26,7 +26,7 @@ class hyperliquid(ccxt.async_support.hyperliquid):
26
26
  'watchOHLCV': True,
27
27
  'watchOrderBook': True,
28
28
  'watchOrders': True,
29
- 'watchTicker': False,
29
+ 'watchTicker': True,
30
30
  'watchTickers': True,
31
31
  'watchTrades': True,
32
32
  'watchTradesForSymbols': False,
@@ -233,6 +233,19 @@ class hyperliquid(ccxt.async_support.hyperliquid):
233
233
  messageHash = 'orderbook:' + symbol
234
234
  client.resolve(orderbook, messageHash)
235
235
 
236
+ async def watch_ticker(self, symbol: str, params={}) -> Ticker:
237
+ """
238
+ :see: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions
239
+ watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
240
+ :param str symbol: unified symbol of the market to fetch the ticker for
241
+ :param dict [params]: extra parameters specific to the exchange API endpoint
242
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
243
+ """
244
+ market = self.market(symbol)
245
+ symbol = market['symbol']
246
+ tickers = await self.watch_tickers([symbol], params)
247
+ return tickers[symbol]
248
+
236
249
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
237
250
  """
238
251
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
ccxt/pro/kraken.py CHANGED
@@ -38,6 +38,7 @@ class kraken(ccxt.async_support.kraken):
38
38
  'watchOrders': True,
39
39
  'watchTicker': True,
40
40
  'watchTickers': True,
41
+ 'watchBidsAsks': True,
41
42
  'watchTrades': True,
42
43
  'watchTradesForSymbols': True,
43
44
  'createOrderWs': True,
@@ -492,6 +493,61 @@ class kraken(ccxt.async_support.kraken):
492
493
  return result
493
494
  return self.filter_by_array(self.tickers, 'symbol', symbols)
494
495
 
496
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
497
+ """
498
+ :see: https://docs.kraken.com/api/docs/websocket-v1/spread
499
+ watches best bid & ask for symbols
500
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
501
+ :param dict [params]: extra parameters specific to the exchange API endpoint
502
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
503
+ """
504
+ await self.load_markets()
505
+ symbols = self.market_symbols(symbols, None, False)
506
+ ticker = await self.watch_multi_helper('bidask', 'spread', symbols, None, params)
507
+ if self.newUpdates:
508
+ result: dict = {}
509
+ result[ticker['symbol']] = ticker
510
+ return result
511
+ return self.filter_by_array(self.bidsasks, 'symbol', symbols)
512
+
513
+ def handle_bid_ask(self, client: Client, message, subscription):
514
+ #
515
+ # [
516
+ # 7208974, # channelID
517
+ # [
518
+ # "63758.60000", # bid
519
+ # "63759.10000", # ask
520
+ # "1726814731.089778", # timestamp
521
+ # "0.00057917", # bid_volume
522
+ # "0.15681688" # ask_volume
523
+ # ],
524
+ # "spread",
525
+ # "XBT/USDT"
526
+ # ]
527
+ #
528
+ parsedTicker = self.parse_ws_bid_ask(message)
529
+ symbol = parsedTicker['symbol']
530
+ self.bidsasks[symbol] = parsedTicker
531
+ messageHash = self.get_message_hash('bidask', None, symbol)
532
+ client.resolve(parsedTicker, messageHash)
533
+
534
+ def parse_ws_bid_ask(self, ticker, market=None):
535
+ data = self.safe_list(ticker, 1, [])
536
+ marketId = self.safe_string(ticker, 3)
537
+ market = self.safe_value(self.options['marketsByWsName'], marketId)
538
+ symbol = self.safe_string(market, 'symbol')
539
+ timestamp = self.parse_to_int(self.safe_integer(data, 2)) * 1000
540
+ return self.safe_ticker({
541
+ 'symbol': symbol,
542
+ 'timestamp': timestamp,
543
+ 'datetime': self.iso8601(timestamp),
544
+ 'ask': self.safe_string(data, 1),
545
+ 'askVolume': self.safe_string(data, 4),
546
+ 'bid': self.safe_string(data, 0),
547
+ 'bidVolume': self.safe_string(data, 3),
548
+ 'info': ticker,
549
+ }, market)
550
+
495
551
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
496
552
  """
497
553
  get the list of most recent trades for a particular symbol
@@ -1400,6 +1456,7 @@ class kraken(ccxt.async_support.kraken):
1400
1456
  'book': self.handle_order_book,
1401
1457
  'ohlc': self.handle_ohlcv,
1402
1458
  'ticker': self.handle_ticker,
1459
+ 'spread': self.handle_bid_ask,
1403
1460
  'trade': self.handle_trades,
1404
1461
  # private
1405
1462
  'openOrders': self.handle_orders,
ccxt/pro/paradex.py CHANGED
@@ -211,6 +211,7 @@ class paradex(ccxt.async_support.paradex):
211
211
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
212
212
  """
213
213
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
214
+ :see: https://docs.api.testnet.paradex.trade/#sub-markets_summary-operation
214
215
  :param str[] symbols: unified symbol of the market to fetch the ticker for
215
216
  :param dict [params]: extra parameters specific to the exchange API endpoint
216
217
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.4
3
+ Version: 4.4.6
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
@@ -272,13 +272,13 @@ console.log(version, Object.keys(exchanges));
272
272
 
273
273
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
274
274
 
275
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.4/dist/ccxt.browser.min.js
276
- * unpkg: https://unpkg.com/ccxt@4.4.4/dist/ccxt.browser.min.js
275
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.6/dist/ccxt.browser.min.js
276
+ * unpkg: https://unpkg.com/ccxt@4.4.6/dist/ccxt.browser.min.js
277
277
 
278
278
  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.
279
279
 
280
280
  ```HTML
281
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.4/dist/ccxt.browser.min.js"></script>
281
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.6/dist/ccxt.browser.min.js"></script>
282
282
  ```
283
283
 
284
284
  Creates a global `ccxt` object: