ccxt 4.4.80__py2.py3-none-any.whl → 4.4.85__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/__init__.py +1 -5
- ccxt/abstract/blofin.py +8 -0
- ccxt/abstract/btcbox.py +1 -0
- ccxt/apex.py +21 -30
- ccxt/ascendex.py +1 -1
- ccxt/async_support/__init__.py +1 -5
- ccxt/async_support/apex.py +21 -30
- ccxt/async_support/ascendex.py +1 -1
- ccxt/async_support/base/exchange.py +26 -3
- ccxt/async_support/base/ws/cache.py +6 -1
- ccxt/async_support/bigone.py +17 -14
- ccxt/async_support/bingx.py +13 -32
- ccxt/async_support/bitfinex.py +61 -48
- ccxt/async_support/bitget.py +7 -4
- ccxt/async_support/bitrue.py +14 -32
- ccxt/async_support/bitso.py +33 -0
- ccxt/async_support/bitstamp.py +33 -0
- ccxt/async_support/blofin.py +145 -14
- ccxt/async_support/btcbox.py +25 -5
- ccxt/async_support/bybit.py +20 -39
- ccxt/async_support/cex.py +2 -4
- ccxt/async_support/coinbase.py +56 -42
- ccxt/async_support/coinbaseexchange.py +141 -32
- ccxt/async_support/coincatch.py +14 -67
- ccxt/async_support/coinex.py +28 -29
- ccxt/async_support/coinlist.py +17 -16
- ccxt/async_support/coinmetro.py +20 -11
- ccxt/async_support/coinone.py +8 -10
- ccxt/async_support/coinsph.py +124 -2
- ccxt/async_support/cryptocom.py +109 -2
- ccxt/async_support/cryptomus.py +42 -80
- ccxt/async_support/delta.py +75 -36
- ccxt/async_support/derive.py +46 -10
- ccxt/async_support/ellipx.py +175 -77
- ccxt/async_support/gate.py +1 -1
- ccxt/async_support/gemini.py +3 -4
- ccxt/async_support/hitbtc.py +56 -65
- ccxt/async_support/htx.py +2 -2
- ccxt/async_support/hyperliquid.py +15 -2
- ccxt/async_support/kraken.py +27 -23
- ccxt/async_support/kucoinfutures.py +5 -0
- ccxt/async_support/lbank.py +1 -1
- ccxt/async_support/okx.py +1 -2
- ccxt/async_support/oxfun.py +21 -1
- ccxt/async_support/paradex.py +120 -4
- ccxt/base/errors.py +6 -0
- ccxt/base/exchange.py +40 -3
- ccxt/base/types.py +3 -0
- ccxt/bigone.py +17 -14
- ccxt/bingx.py +13 -32
- ccxt/bitfinex.py +61 -48
- ccxt/bitget.py +7 -4
- ccxt/bitrue.py +14 -32
- ccxt/bitso.py +33 -0
- ccxt/bitstamp.py +33 -0
- ccxt/blofin.py +145 -14
- ccxt/btcbox.py +24 -5
- ccxt/bybit.py +20 -39
- ccxt/cex.py +2 -4
- ccxt/coinbase.py +56 -42
- ccxt/coinbaseexchange.py +141 -32
- ccxt/coincatch.py +14 -67
- ccxt/coinex.py +28 -29
- ccxt/coinlist.py +17 -16
- ccxt/coinmetro.py +20 -11
- ccxt/coinone.py +8 -10
- ccxt/coinsph.py +124 -2
- ccxt/cryptocom.py +109 -2
- ccxt/cryptomus.py +42 -80
- ccxt/delta.py +75 -36
- ccxt/derive.py +46 -10
- ccxt/ellipx.py +175 -77
- ccxt/gate.py +1 -1
- ccxt/gemini.py +3 -4
- ccxt/hitbtc.py +56 -65
- ccxt/htx.py +2 -2
- ccxt/hyperliquid.py +15 -2
- ccxt/kraken.py +27 -23
- ccxt/kucoinfutures.py +5 -0
- ccxt/lbank.py +1 -1
- ccxt/okx.py +1 -2
- ccxt/oxfun.py +21 -1
- ccxt/paradex.py +120 -4
- ccxt/pro/__init__.py +69 -3
- ccxt/pro/binance.py +31 -33
- ccxt/pro/bithumb.py +5 -3
- ccxt/pro/coinbase.py +1 -1
- ccxt/pro/hyperliquid.py +10 -2
- ccxt/pro/kraken.py +249 -79
- ccxt/pro/mexc.py +252 -7
- ccxt/pro/poloniex.py +6 -2
- {ccxt-4.4.80.dist-info → ccxt-4.4.85.dist-info}/METADATA +7 -11
- {ccxt-4.4.80.dist-info → ccxt-4.4.85.dist-info}/RECORD +96 -104
- ccxt/abstract/bl3p.py +0 -19
- ccxt/abstract/idex.py +0 -26
- ccxt/async_support/base/ws/fast_client.py +0 -97
- ccxt/async_support/bl3p.py +0 -543
- ccxt/async_support/idex.py +0 -1889
- ccxt/bl3p.py +0 -543
- ccxt/idex.py +0 -1889
- ccxt/pro/idex.py +0 -687
- {ccxt-4.4.80.dist-info → ccxt-4.4.85.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.80.dist-info → ccxt-4.4.85.dist-info}/WHEEL +0 -0
- {ccxt-4.4.80.dist-info → ccxt-4.4.85.dist-info}/top_level.txt +0 -0
ccxt/pro/mexc.py
CHANGED
@@ -39,6 +39,12 @@ class mexc(ccxt.async_support.mexc):
|
|
39
39
|
'watchBidsAsks': True,
|
40
40
|
'watchTrades': True,
|
41
41
|
'watchTradesForSymbols': False,
|
42
|
+
'unWatchTicker': True,
|
43
|
+
'unWatchTickers': True,
|
44
|
+
'unWatchBidsAsks': True,
|
45
|
+
'unWatchOHLCV': True,
|
46
|
+
'unWatchOrderBook': True,
|
47
|
+
'unWatchTrades': True,
|
42
48
|
},
|
43
49
|
'urls': {
|
44
50
|
'api': {
|
@@ -471,12 +477,15 @@ class mexc(ccxt.async_support.mexc):
|
|
471
477
|
}, market)
|
472
478
|
|
473
479
|
async def watch_spot_public(self, channel, messageHash, params={}):
|
480
|
+
unsubscribed = self.safe_bool(params, 'unsubscribed', False)
|
481
|
+
params = self.omit(params, ['unsubscribed'])
|
474
482
|
url = self.urls['api']['ws']['spot']
|
483
|
+
method = 'UNSUBSCRIPTION' if (unsubscribed) else 'SUBSCRIPTION'
|
475
484
|
request: dict = {
|
476
|
-
'method':
|
485
|
+
'method': method,
|
477
486
|
'params': [channel],
|
478
487
|
}
|
479
|
-
return await self.watch(url, messageHash, self.extend(request, params),
|
488
|
+
return await self.watch(url, messageHash, self.extend(request, params), messageHash)
|
480
489
|
|
481
490
|
async def watch_spot_private(self, channel, messageHash, params={}):
|
482
491
|
self.check_required_credentials()
|
@@ -759,11 +768,6 @@ class mexc(ccxt.async_support.mexc):
|
|
759
768
|
messageHash = 'orderbook:' + symbol
|
760
769
|
subscription = self.safe_value(client.subscriptions, messageHash)
|
761
770
|
limit = self.safe_integer(subscription, 'limit')
|
762
|
-
if subscription is True:
|
763
|
-
# we set client.subscriptions[messageHash] to 1
|
764
|
-
# once we have received the first delta and initialized the orderbook
|
765
|
-
client.subscriptions[messageHash] = 1
|
766
|
-
self.orderbooks[symbol] = self.counted_order_book({})
|
767
771
|
storedOrderBook = self.orderbooks[symbol]
|
768
772
|
nonce = self.safe_integer(storedOrderBook, 'nonce')
|
769
773
|
if nonce is None:
|
@@ -1351,6 +1355,247 @@ class mexc(ccxt.async_support.mexc):
|
|
1351
1355
|
self.balance[type] = self.safe_balance(self.balance[type])
|
1352
1356
|
client.resolve(self.balance[type], messageHash)
|
1353
1357
|
|
1358
|
+
async def un_watch_ticker(self, symbol: str, params={}) -> Any:
|
1359
|
+
"""
|
1360
|
+
unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
1361
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
1362
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1363
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1364
|
+
"""
|
1365
|
+
await self.load_markets()
|
1366
|
+
market = self.market(symbol)
|
1367
|
+
messageHash = 'unsubscribe:ticker:' + market['symbol']
|
1368
|
+
url = None
|
1369
|
+
channel = None
|
1370
|
+
if market['spot']:
|
1371
|
+
miniTicker = False
|
1372
|
+
miniTicker, params = self.handle_option_and_params(params, 'watchTicker', 'miniTicker')
|
1373
|
+
if miniTicker:
|
1374
|
+
channel = 'spot@public.miniTicker.v3.api@' + market['id'] + '@UTC+8'
|
1375
|
+
else:
|
1376
|
+
channel = 'spot@public.bookTicker.v3.api@' + market['id']
|
1377
|
+
url = self.urls['api']['ws']['spot']
|
1378
|
+
params['unsubscribed'] = True
|
1379
|
+
self.watch_spot_public(channel, messageHash, params)
|
1380
|
+
else:
|
1381
|
+
channel = 'unsub.ticker'
|
1382
|
+
requestParams: dict = {
|
1383
|
+
'symbol': market['id'],
|
1384
|
+
}
|
1385
|
+
url = self.urls['api']['ws']['swap']
|
1386
|
+
self.watch_swap_public(channel, messageHash, requestParams, params)
|
1387
|
+
client = self.client(url)
|
1388
|
+
self.handle_unsubscriptions(client, [messageHash])
|
1389
|
+
return None
|
1390
|
+
|
1391
|
+
async def un_watch_tickers(self, symbols: Strings = None, params={}) -> Any:
|
1392
|
+
"""
|
1393
|
+
unWatches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
|
1394
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
1395
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1396
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1397
|
+
"""
|
1398
|
+
await self.load_markets()
|
1399
|
+
symbols = self.market_symbols(symbols, None)
|
1400
|
+
messageHashes = []
|
1401
|
+
firstSymbol = self.safe_string(symbols, 0)
|
1402
|
+
market = None
|
1403
|
+
if firstSymbol is not None:
|
1404
|
+
market = self.market(firstSymbol)
|
1405
|
+
type = None
|
1406
|
+
type, params = self.handle_market_type_and_params('watchTickers', market, params)
|
1407
|
+
isSpot = (type == 'spot')
|
1408
|
+
url = self.urls['api']['ws']['spot'] if (isSpot) else self.urls['api']['ws']['swap']
|
1409
|
+
request: dict = {}
|
1410
|
+
if isSpot:
|
1411
|
+
miniTicker = False
|
1412
|
+
miniTicker, params = self.handle_option_and_params(params, 'watchTickers', 'miniTicker')
|
1413
|
+
topics = []
|
1414
|
+
if not miniTicker:
|
1415
|
+
if symbols is None:
|
1416
|
+
raise ArgumentsRequired(self.id + ' watchTickers required symbols argument for the bookTicker channel')
|
1417
|
+
marketIds = self.market_ids(symbols)
|
1418
|
+
for i in range(0, len(marketIds)):
|
1419
|
+
marketId = marketIds[i]
|
1420
|
+
messageHashes.append('unsubscribe:ticker:' + symbols[i])
|
1421
|
+
channel = 'spot@public.bookTicker.v3.api@' + marketId
|
1422
|
+
topics.append(channel)
|
1423
|
+
else:
|
1424
|
+
topics.append('spot@public.miniTickers.v3.api@UTC+8')
|
1425
|
+
if symbols is None:
|
1426
|
+
messageHashes.append('unsubscribe:spot:ticker')
|
1427
|
+
else:
|
1428
|
+
for i in range(0, len(symbols)):
|
1429
|
+
messageHashes.append('unsubscribe:ticker:' + symbols[i])
|
1430
|
+
request['method'] = 'UNSUBSCRIPTION'
|
1431
|
+
request['params'] = topics
|
1432
|
+
else:
|
1433
|
+
request['method'] = 'unsub.tickers'
|
1434
|
+
request['params'] = {}
|
1435
|
+
messageHashes.append('unsubscribe:ticker')
|
1436
|
+
client = self.client(url)
|
1437
|
+
self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes)
|
1438
|
+
self.handle_unsubscriptions(client, messageHashes)
|
1439
|
+
return None
|
1440
|
+
|
1441
|
+
async def un_watch_bids_asks(self, symbols: Strings = None, params={}) -> Any:
|
1442
|
+
"""
|
1443
|
+
unWatches best bid & ask for symbols
|
1444
|
+
:param str[] symbols: unified symbol of the market to fetch the ticker for
|
1445
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1446
|
+
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1447
|
+
"""
|
1448
|
+
await self.load_markets()
|
1449
|
+
symbols = self.market_symbols(symbols, None, True, False, True)
|
1450
|
+
marketType = None
|
1451
|
+
if symbols is None:
|
1452
|
+
raise ArgumentsRequired(self.id + ' watchBidsAsks required symbols argument')
|
1453
|
+
markets = self.markets_for_symbols(symbols)
|
1454
|
+
marketType, params = self.handle_market_type_and_params('watchBidsAsks', markets[0], params)
|
1455
|
+
isSpot = marketType == 'spot'
|
1456
|
+
if not isSpot:
|
1457
|
+
raise NotSupported(self.id + ' watchBidsAsks only support spot market')
|
1458
|
+
messageHashes = []
|
1459
|
+
topics = []
|
1460
|
+
for i in range(0, len(symbols)):
|
1461
|
+
if isSpot:
|
1462
|
+
market = self.market(symbols[i])
|
1463
|
+
topics.append('spot@public.bookTicker.v3.api@' + market['id'])
|
1464
|
+
messageHashes.append('unsubscribe:bidask:' + symbols[i])
|
1465
|
+
url = self.urls['api']['ws']['spot']
|
1466
|
+
request: dict = {
|
1467
|
+
'method': 'UNSUBSCRIPTION',
|
1468
|
+
'params': topics,
|
1469
|
+
}
|
1470
|
+
client = self.client(url)
|
1471
|
+
self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes)
|
1472
|
+
self.handle_unsubscriptions(client, messageHashes)
|
1473
|
+
return None
|
1474
|
+
|
1475
|
+
async def un_watch_ohlcv(self, symbol: str, timeframe='1m', params={}) -> Any:
|
1476
|
+
"""
|
1477
|
+
unWatches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1478
|
+
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1479
|
+
:param str timeframe: the length of time each candle represents
|
1480
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1481
|
+
:param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
|
1482
|
+
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1483
|
+
"""
|
1484
|
+
await self.load_markets()
|
1485
|
+
market = self.market(symbol)
|
1486
|
+
symbol = market['symbol']
|
1487
|
+
timeframes = self.safe_value(self.options, 'timeframes', {})
|
1488
|
+
timeframeId = self.safe_string(timeframes, timeframe)
|
1489
|
+
messageHash = 'unsubscribe:candles:' + symbol + ':' + timeframe
|
1490
|
+
url = None
|
1491
|
+
if market['spot']:
|
1492
|
+
url = self.urls['api']['ws']['spot']
|
1493
|
+
channel = 'spot@public.kline.v3.api@' + market['id'] + '@' + timeframeId
|
1494
|
+
params['unsubscribed'] = True
|
1495
|
+
self.watch_spot_public(channel, messageHash, params)
|
1496
|
+
else:
|
1497
|
+
url = self.urls['api']['ws']['swap']
|
1498
|
+
channel = 'unsub.kline'
|
1499
|
+
requestParams: dict = {
|
1500
|
+
'symbol': market['id'],
|
1501
|
+
'interval': timeframeId,
|
1502
|
+
}
|
1503
|
+
self.watch_swap_public(channel, messageHash, requestParams, params)
|
1504
|
+
client = self.client(url)
|
1505
|
+
self.handle_unsubscriptions(client, [messageHash])
|
1506
|
+
return None
|
1507
|
+
|
1508
|
+
async def un_watch_order_book(self, symbol: str, params={}) -> Any:
|
1509
|
+
"""
|
1510
|
+
unWatches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1511
|
+
:param str symbol: unified array of symbols
|
1512
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1513
|
+
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
|
1514
|
+
"""
|
1515
|
+
await self.load_markets()
|
1516
|
+
market = self.market(symbol)
|
1517
|
+
symbol = market['symbol']
|
1518
|
+
messageHash = 'unsubscribe:orderbook:' + symbol
|
1519
|
+
url = None
|
1520
|
+
if market['spot']:
|
1521
|
+
url = self.urls['api']['ws']['spot']
|
1522
|
+
channel = 'spot@public.increase.depth.v3.api@' + market['id']
|
1523
|
+
params['unsubscribed'] = True
|
1524
|
+
self.watch_spot_public(channel, messageHash, params)
|
1525
|
+
else:
|
1526
|
+
url = self.urls['api']['ws']['swap']
|
1527
|
+
channel = 'unsub.depth'
|
1528
|
+
requestParams: dict = {
|
1529
|
+
'symbol': market['id'],
|
1530
|
+
}
|
1531
|
+
self.watch_swap_public(channel, messageHash, requestParams, params)
|
1532
|
+
client = self.client(url)
|
1533
|
+
self.handle_unsubscriptions(client, [messageHash])
|
1534
|
+
return None
|
1535
|
+
|
1536
|
+
async def un_watch_trades(self, symbol: str, params={}) -> Any:
|
1537
|
+
"""
|
1538
|
+
unsubscribes from the trades channel
|
1539
|
+
:param str symbol: unified symbol of the market to fetch trades for
|
1540
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1541
|
+
:param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
|
1542
|
+
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
|
1543
|
+
"""
|
1544
|
+
await self.load_markets()
|
1545
|
+
market = self.market(symbol)
|
1546
|
+
symbol = market['symbol']
|
1547
|
+
messageHash = 'unsubscribe:trades:' + symbol
|
1548
|
+
url = None
|
1549
|
+
if market['spot']:
|
1550
|
+
url = self.urls['api']['ws']['spot']
|
1551
|
+
channel = 'spot@public.deals.v3.api@' + market['id']
|
1552
|
+
params['unsubscribed'] = True
|
1553
|
+
self.watch_spot_public(channel, messageHash, params)
|
1554
|
+
else:
|
1555
|
+
url = self.urls['api']['ws']['swap']
|
1556
|
+
channel = 'unsub.deal'
|
1557
|
+
requestParams: dict = {
|
1558
|
+
'symbol': market['id'],
|
1559
|
+
}
|
1560
|
+
self.watch_swap_public(channel, messageHash, requestParams, params)
|
1561
|
+
client = self.client(url)
|
1562
|
+
self.handle_unsubscriptions(client, [messageHash])
|
1563
|
+
return None
|
1564
|
+
|
1565
|
+
def handle_unsubscriptions(self, client: Client, messageHashes: List[str]):
|
1566
|
+
for i in range(0, len(messageHashes)):
|
1567
|
+
messageHash = messageHashes[i]
|
1568
|
+
subMessageHash = messageHash.replace('unsubscribe:', '')
|
1569
|
+
self.clean_unsubscription(client, subMessageHash, messageHash)
|
1570
|
+
if messageHash.find('ticker') >= 0:
|
1571
|
+
symbol = messageHash.replace('unsubscribe:ticker:', '')
|
1572
|
+
if symbol.find('unsubscribe') >= 0:
|
1573
|
+
# unWatchTickers
|
1574
|
+
symbols = list(self.tickers.keys())
|
1575
|
+
for j in range(0, len(symbols)):
|
1576
|
+
del self.tickers[symbols[j]]
|
1577
|
+
elif symbol in self.tickers:
|
1578
|
+
del self.tickers[symbol]
|
1579
|
+
elif messageHash.find('bidask') >= 0:
|
1580
|
+
symbol = messageHash.replace('unsubscribe:bidask:', '')
|
1581
|
+
if symbol in self.bidsasks:
|
1582
|
+
del self.bidsasks[symbol]
|
1583
|
+
elif messageHash.find('candles') >= 0:
|
1584
|
+
splitHashes = messageHash.split(':')
|
1585
|
+
symbol = self.safe_string(splitHashes, 2)
|
1586
|
+
if len(splitHashes) > 4:
|
1587
|
+
symbol += ':' + self.safe_string(splitHashes, 3)
|
1588
|
+
if symbol in self.ohlcvs:
|
1589
|
+
del self.ohlcvs[symbol]
|
1590
|
+
elif messageHash.find('orderbook') >= 0:
|
1591
|
+
symbol = messageHash.replace('unsubscribe:orderbook:', '')
|
1592
|
+
if symbol in self.orderbooks:
|
1593
|
+
del self.orderbooks[symbol]
|
1594
|
+
elif messageHash.find('trades') >= 0:
|
1595
|
+
symbol = messageHash.replace('unsubscribe:trades:', '')
|
1596
|
+
if symbol in self.trades:
|
1597
|
+
del self.trades[symbol]
|
1598
|
+
|
1354
1599
|
async def authenticate(self, subscriptionHash, params={}):
|
1355
1600
|
# we only need one listenKey since ccxt shares connections
|
1356
1601
|
listenKey = self.safe_string(self.options, 'listenKey')
|
ccxt/pro/poloniex.py
CHANGED
@@ -244,7 +244,9 @@ class poloniex(ccxt.async_support.poloniex):
|
|
244
244
|
request['quantity'] = self.amount_to_precision(market['symbol'], amount)
|
245
245
|
if price is not None:
|
246
246
|
request['price'] = self.price_to_precision(symbol, price)
|
247
|
-
|
247
|
+
orders = await self.trade_request('createOrder', self.extend(request, params))
|
248
|
+
order = self.safe_dict(orders, 0)
|
249
|
+
return order
|
248
250
|
|
249
251
|
async def cancel_order_ws(self, id: str, symbol: Str = None, params={}):
|
250
252
|
"""
|
@@ -262,7 +264,9 @@ class poloniex(ccxt.async_support.poloniex):
|
|
262
264
|
if clientOrderId is not None:
|
263
265
|
clientOrderIds = self.safe_value(params, 'clientOrderId', [])
|
264
266
|
params['clientOrderIds'] = self.array_concat(clientOrderIds, [clientOrderId])
|
265
|
-
|
267
|
+
orders = await self.cancel_orders_ws([id], symbol, params)
|
268
|
+
order = self.safe_dict(orders, 0)
|
269
|
+
return order
|
266
270
|
|
267
271
|
async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
|
268
272
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.85
|
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
|
@@ -38,7 +38,7 @@ Requires-Dist: certifi>=2018.1.18
|
|
38
38
|
Requires-Dist: requests>=2.18.4
|
39
39
|
Requires-Dist: cryptography>=2.6.1
|
40
40
|
Requires-Dist: typing-extensions>=4.4.0
|
41
|
-
Requires-Dist: aiohttp
|
41
|
+
Requires-Dist: aiohttp>=3.10.11; python_version >= "3.5.2"
|
42
42
|
Requires-Dist: aiodns>=1.1.1; python_version >= "3.5.2"
|
43
43
|
Requires-Dist: yarl>=1.7.2; python_version >= "3.5.2"
|
44
44
|
Provides-Extra: qa
|
@@ -49,7 +49,7 @@ Requires-Dist: mypy==1.6.1; extra == "type"
|
|
49
49
|
|
50
50
|
# CCXT – CryptoCurrency eXchange Trading Library
|
51
51
|
|
52
|
-
[](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://www.npmjs.com/package/ccxt) [](https://npmjs.com/package/ccxt) [](https://pypi.python.org/pypi/ccxt) [](https://www.nuget.org/packages/ccxt) [](https://godoc.org/github.com/ccxt/ccxt/go/v4) [](https://discord.gg/ccxt) [](https://github.com/ccxt/ccxt/wiki/Exchange-Markets) [](https://x.com/ccxt_official)
|
53
53
|
|
54
54
|
A `JavaScript` / `Python` / `PHP` / `C#` / `Go` library for cryptocurrency trading and e-commerce with support for many bitcoin/ether/altcoin exchange markets and merchant APIs.
|
55
55
|
|
@@ -68,8 +68,6 @@ Current feature list:
|
|
68
68
|
- works in Node 10.4+, Python 3, PHP 8.1+, netstandard2.0/2.1, Go 1.20+ and web browsers
|
69
69
|
|
70
70
|
|
71
|
-
## Sponsored Promotion
|
72
|
-
|
73
71
|
## See Also
|
74
72
|
|
75
73
|
- <sub>[](https://tab-trader.com/?utm_source=ccxt)</sub> **[TabTrader](https://tab-trader.com/?utm_source=ccxt)** – trading on all exchanges in one app. Available on **[Android](https://play.google.com/store/apps/details?id=com.tabtrader.android&referrer=utm_source%3Dccxt)** and **[iOS](https://itunes.apple.com/app/apple-store/id1095716562?mt=8)**!
|
@@ -104,7 +102,7 @@ Current feature list:
|
|
104
102
|
| [](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [](https://orderly.network/docs/build-on-evm/building-on-evm) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://dex.woo.org/en/trade?ref=CCXT) |
|
105
103
|
|
106
104
|
## Supported Cryptocurrency Exchanges
|
107
|
-
<!--- init list -->The CCXT library currently supports the following
|
105
|
+
<!--- init list -->The CCXT library currently supports the following 102 cryptocurrency exchange markets and trading APIs:
|
108
106
|
|
109
107
|
|logo |id |name |ver |type |certified |pro |
|
110
108
|
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|----------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------:|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
|
@@ -133,7 +131,6 @@ Current feature list:
|
|
133
131
|
| [](https://www.bitstamp.net) | bitstamp | [Bitstamp](https://www.bitstamp.net) | [](https://www.bitstamp.net/api) |  | | [](https://ccxt.pro) |
|
134
132
|
| [](https://bit.team/auth/sign-up?ref=bitboy2023) | bitteam | [BIT.TEAM](https://bit.team/auth/sign-up?ref=bitboy2023) | [](https://bit.team/trade/api/documentation) |  | | |
|
135
133
|
| [](https://bitvavo.com/?a=24F34952F7) | bitvavo | [Bitvavo](https://bitvavo.com/?a=24F34952F7) | [](https://docs.bitvavo.com/) |  | | [](https://ccxt.pro) |
|
136
|
-
| [](https://bl3p.eu) | bl3p | [BL3P](https://bl3p.eu) | [](https://github.com/BitonicNL/bl3p-api/tree/master/docs) |  | | |
|
137
134
|
| [](https://blockchain.com) | blockchaincom | [Blockchain.com](https://blockchain.com) | [](https://api.blockchain.com/v3) |  | | [](https://ccxt.pro) |
|
138
135
|
| [](https://blofin.com/register?referral_code=f79EsS) | blofin | [BloFin](https://blofin.com/register?referral_code=f79EsS) | [](https://blofin.com/docs) |  | | [](https://ccxt.pro) |
|
139
136
|
| [](https://btc-alpha.com/?r=123788) | btcalpha | [BTC-Alpha](https://btc-alpha.com/?r=123788) | [](https://btc-alpha.github.io/api-docs) |  | | |
|
@@ -172,7 +169,6 @@ Current feature list:
|
|
172
169
|
| [](https://www.htx.com.vc/invite/en-us/1h?invite_code=6rmm2223) | htx | [HTX](https://www.htx.com.vc/invite/en-us/1h?invite_code=6rmm2223) | [](https://huobiapi.github.io/docs/spot/v1/en/) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
173
170
|
| [](https://www.huobi.co.jp/register/?invite_code=znnq3) | huobijp | [Huobi Japan](https://www.huobi.co.jp/register/?invite_code=znnq3) | [](https://api-doc.huobi.co.jp) |  | | [](https://ccxt.pro) |
|
174
171
|
| [](https://app.hyperliquid.xyz/) | hyperliquid | [Hyperliquid](https://app.hyperliquid.xyz/) | [](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api) |  | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
175
|
-
| [](https://idex.io) | idex | [IDEX](https://idex.io) | [](https://api-docs-v3.idex.io/) |  | | [](https://ccxt.pro) |
|
176
172
|
| [](https://www.independentreserve.com) | independentreserve | [Independent Reserve](https://www.independentreserve.com) | [](https://www.independentreserve.com/API) |  | | [](https://ccxt.pro) |
|
177
173
|
| [](https://indodax.com/ref/testbitcoincoid/1) | indodax | [INDODAX](https://indodax.com/ref/testbitcoincoid/1) | [](https://github.com/btcid/indodax-official-api-docs) |  | | |
|
178
174
|
| [](https://www.kraken.com) | kraken | [Kraken](https://www.kraken.com) | [](https://docs.kraken.com/rest/) |  | | [](https://ccxt.pro) |
|
@@ -273,13 +269,13 @@ console.log(version, Object.keys(exchanges));
|
|
273
269
|
|
274
270
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
275
271
|
|
276
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
277
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
272
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.85/dist/ccxt.browser.min.js
|
273
|
+
* unpkg: https://unpkg.com/ccxt@4.4.85/dist/ccxt.browser.min.js
|
278
274
|
|
279
275
|
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.
|
280
276
|
|
281
277
|
```HTML
|
282
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
278
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.85/dist/ccxt.browser.min.js"></script>
|
283
279
|
```
|
284
280
|
|
285
281
|
Creates a global `ccxt` object:
|