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/__init__.py +1 -1
- ccxt/abstract/binanceus.py +36 -36
- ccxt/abstract/bitmart.py +4 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +3 -3
- ccxt/async_support/binanceus.py +1 -0
- ccxt/async_support/bitflyer.py +2 -2
- ccxt/async_support/bitget.py +50 -91
- ccxt/async_support/bitmart.py +179 -127
- ccxt/async_support/bybit.py +88 -7
- ccxt/async_support/coinbase.py +6 -8
- ccxt/async_support/kraken.py +5 -1
- ccxt/async_support/lykke.py +2 -2
- ccxt/async_support/mexc.py +36 -7
- ccxt/async_support/paradex.py +1 -1
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +3 -3
- ccxt/binanceus.py +1 -0
- ccxt/bitflyer.py +2 -2
- ccxt/bitget.py +50 -91
- ccxt/bitmart.py +179 -127
- ccxt/bybit.py +88 -7
- ccxt/coinbase.py +6 -8
- ccxt/kraken.py +5 -1
- ccxt/lykke.py +2 -2
- ccxt/mexc.py +36 -7
- ccxt/paradex.py +1 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +6 -2
- ccxt/pro/binanceus.py +2 -1
- ccxt/pro/htx.py +14 -0
- ccxt/pro/hyperliquid.py +14 -1
- ccxt/pro/kraken.py +57 -0
- ccxt/pro/paradex.py +1 -0
- {ccxt-4.4.4.dist-info → ccxt-4.4.6.dist-info}/METADATA +4 -4
- {ccxt-4.4.4.dist-info → ccxt-4.4.6.dist-info}/RECORD +40 -40
- {ccxt-4.4.4.dist-info → ccxt-4.4.6.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.4.dist-info → ccxt-4.4.6.dist-info}/WHEEL +0 -0
- {ccxt-4.4.4.dist-info → ccxt-4.4.6.dist-info}/top_level.txt +0 -0
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
|
-
'
|
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':
|
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':
|
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.
|
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.
|
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.
|
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.
|
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, '
|
643
|
+
'ask': self.safe_string(ticker, 'ask'),
|
644
644
|
'askVolume': None,
|
645
645
|
'vwap': None,
|
646
646
|
'open': None,
|
ccxt/pro/__init__.py
CHANGED
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
|
-
|
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
|
-
|
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':
|
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.
|
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.
|
276
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
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.
|
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:
|