ccxt 3.1.33__py2.py3-none-any.whl → 3.1.35__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/binance.py +2 -0
- ccxt/abstract/binancecoinm.py +2 -0
- ccxt/abstract/binanceus.py +2 -0
- ccxt/abstract/binanceusdm.py +2 -0
- ccxt/abstract/bitbank.py +6 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +23 -27
- ccxt/async_support/bitbank.py +6 -0
- ccxt/async_support/gate.py +103 -16
- ccxt/async_support/mexc.py +4 -1
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +23 -27
- ccxt/bitbank.py +6 -0
- ccxt/gate.py +103 -16
- ccxt/mexc.py +4 -1
- ccxt/pro/__init__.py +1 -1
- {ccxt-3.1.33.dist-info → ccxt-3.1.35.dist-info}/METADATA +4 -4
- {ccxt-3.1.33.dist-info → ccxt-3.1.35.dist-info}/RECORD +22 -22
- {ccxt-3.1.33.dist-info → ccxt-3.1.35.dist-info}/WHEEL +0 -0
- {ccxt-3.1.33.dist-info → ccxt-3.1.35.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/binance.py
CHANGED
@@ -264,6 +264,8 @@ class ImplicitAPI:
|
|
264
264
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
265
265
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
266
266
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
267
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 0.6667})
|
268
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 0.6667})
|
267
269
|
sapi_put_userdatastream = sapiPutUserDataStream = Entry('userDataStream', 'sapi', 'PUT', {'cost': 0.1})
|
268
270
|
sapi_put_userdatastream_isolated = sapiPutUserDataStreamIsolated = Entry('userDataStream/isolated', 'sapi', 'PUT', {'cost': 0.1})
|
269
271
|
sapi_delete_margin_openorders = sapiDeleteMarginOpenOrders = Entry('margin/openOrders', 'sapi', 'DELETE', {'cost': 0.1})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -264,6 +264,8 @@ class ImplicitAPI:
|
|
264
264
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
265
265
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
266
266
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
267
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 0.6667})
|
268
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 0.6667})
|
267
269
|
sapi_put_userdatastream = sapiPutUserDataStream = Entry('userDataStream', 'sapi', 'PUT', {'cost': 0.1})
|
268
270
|
sapi_put_userdatastream_isolated = sapiPutUserDataStreamIsolated = Entry('userDataStream/isolated', 'sapi', 'PUT', {'cost': 0.1})
|
269
271
|
sapi_delete_margin_openorders = sapiDeleteMarginOpenOrders = Entry('margin/openOrders', 'sapi', 'DELETE', {'cost': 0.1})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -264,6 +264,8 @@ class ImplicitAPI:
|
|
264
264
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
265
265
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
266
266
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
267
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 0.6667})
|
268
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 0.6667})
|
267
269
|
sapi_put_userdatastream = sapiPutUserDataStream = Entry('userDataStream', 'sapi', 'PUT', {'cost': 0.1})
|
268
270
|
sapi_put_userdatastream_isolated = sapiPutUserDataStreamIsolated = Entry('userDataStream/isolated', 'sapi', 'PUT', {'cost': 0.1})
|
269
271
|
sapi_delete_margin_openorders = sapiDeleteMarginOpenOrders = Entry('margin/openOrders', 'sapi', 'DELETE', {'cost': 0.1})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -264,6 +264,8 @@ class ImplicitAPI:
|
|
264
264
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
265
265
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
266
266
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
267
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 0.6667})
|
268
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 0.6667})
|
267
269
|
sapi_put_userdatastream = sapiPutUserDataStream = Entry('userDataStream', 'sapi', 'PUT', {'cost': 0.1})
|
268
270
|
sapi_put_userdatastream_isolated = sapiPutUserDataStreamIsolated = Entry('userDataStream/isolated', 'sapi', 'PUT', {'cost': 0.1})
|
269
271
|
sapi_delete_margin_openorders = sapiDeleteMarginOpenOrders = Entry('margin/openOrders', 'sapi', 'DELETE', {'cost': 0.1})
|
ccxt/abstract/bitbank.py
CHANGED
@@ -3,6 +3,8 @@ from ccxt.base.types import Entry
|
|
3
3
|
|
4
4
|
class ImplicitAPI:
|
5
5
|
public_get_pair_ticker = publicGetPairTicker = Entry('{pair}/ticker', 'public', 'GET', {})
|
6
|
+
public_get_tickers = publicGetTickers = Entry('tickers', 'public', 'GET', {})
|
7
|
+
public_get_tickers_jpy = publicGetTickersJpy = Entry('tickers_jpy', 'public', 'GET', {})
|
6
8
|
public_get_pair_depth = publicGetPairDepth = Entry('{pair}/depth', 'public', 'GET', {})
|
7
9
|
public_get_pair_transactions = publicGetPairTransactions = Entry('{pair}/transactions', 'public', 'GET', {})
|
8
10
|
public_get_pair_transactions_yyyymmdd = publicGetPairTransactionsYyyymmdd = Entry('{pair}/transactions/{yyyymmdd}', 'public', 'GET', {})
|
@@ -11,7 +13,11 @@ class ImplicitAPI:
|
|
11
13
|
private_get_user_spot_order = privateGetUserSpotOrder = Entry('user/spot/order', 'private', 'GET', {})
|
12
14
|
private_get_user_spot_active_orders = privateGetUserSpotActiveOrders = Entry('user/spot/active_orders', 'private', 'GET', {})
|
13
15
|
private_get_user_spot_trade_history = privateGetUserSpotTradeHistory = Entry('user/spot/trade_history', 'private', 'GET', {})
|
16
|
+
private_get_user_deposit_history = privateGetUserDepositHistory = Entry('user/deposit_history', 'private', 'GET', {})
|
14
17
|
private_get_user_withdrawal_account = privateGetUserWithdrawalAccount = Entry('user/withdrawal_account', 'private', 'GET', {})
|
18
|
+
private_get_user_withdrawal_history = privateGetUserWithdrawalHistory = Entry('user/withdrawal_history', 'private', 'GET', {})
|
19
|
+
private_get_spot_status = privateGetSpotStatus = Entry('spot/status', 'private', 'GET', {})
|
20
|
+
private_get_spot_pairs = privateGetSpotPairs = Entry('spot/pairs', 'private', 'GET', {})
|
15
21
|
private_post_user_spot_order = privatePostUserSpotOrder = Entry('user/spot/order', 'private', 'POST', {})
|
16
22
|
private_post_user_spot_cancel_order = privatePostUserSpotCancelOrder = Entry('user/spot/cancel_order', 'private', 'POST', {})
|
17
23
|
private_post_user_spot_cancel_orders = privatePostUserSpotCancelOrders = Entry('user/spot/cancel_orders', 'private', 'POST', {})
|
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -506,6 +506,8 @@ class binance(Exchange, ImplicitAPI):
|
|
506
506
|
'loan/vip/repay': 40, # Weight(UID): 6000 => cost = 0.006667 * 6000 = 40
|
507
507
|
'convert/getQuote': 20.001,
|
508
508
|
'convert/acceptQuote': 3.3335,
|
509
|
+
'portfolio/auto-collection': 0.6667, # Weight(UID): 100 => cost = 0.006667 * 100 = 0.6667
|
510
|
+
'portfolio/bnb-transfer': 0.6667, # Weight(UID): 100 => cost = 0.006667 * 100 = 0.6667
|
509
511
|
},
|
510
512
|
'put': {
|
511
513
|
'userDataStream': 0.1,
|
@@ -2930,10 +2932,14 @@ class binance(Exchange, ImplicitAPI):
|
|
2930
2932
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
2931
2933
|
"""
|
2932
2934
|
await self.load_markets()
|
2935
|
+
symbols = self.market_symbols(symbols)
|
2933
2936
|
market = self.get_market_from_symbols(symbols)
|
2934
|
-
|
2937
|
+
type = None
|
2938
|
+
subType = None
|
2939
|
+
subType, params = self.handle_sub_type_and_params('fetchLastPrices', market, params)
|
2940
|
+
type, params = self.handle_market_type_and_params('fetchLastPrices', market, params)
|
2935
2941
|
method = None
|
2936
|
-
if
|
2942
|
+
if self.is_linear(type, subType):
|
2937
2943
|
method = 'fapiPublicGetTickerPrice'
|
2938
2944
|
#
|
2939
2945
|
# [
|
@@ -2945,7 +2951,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2945
2951
|
# ...
|
2946
2952
|
# ]
|
2947
2953
|
#
|
2948
|
-
elif
|
2954
|
+
elif self.is_inverse(type, subType):
|
2949
2955
|
method = 'dapiPublicGetTickerPrice'
|
2950
2956
|
#
|
2951
2957
|
# [
|
@@ -2957,7 +2963,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2957
2963
|
# }
|
2958
2964
|
# ]
|
2959
2965
|
#
|
2960
|
-
elif
|
2966
|
+
elif type == 'spot':
|
2961
2967
|
method = 'publicGetTickerPrice'
|
2962
2968
|
#
|
2963
2969
|
# [
|
@@ -2969,8 +2975,8 @@ class binance(Exchange, ImplicitAPI):
|
|
2969
2975
|
# ]
|
2970
2976
|
#
|
2971
2977
|
else:
|
2972
|
-
raise NotSupported(self.id + ' fetchLastPrices() does not support ' +
|
2973
|
-
response = await getattr(self, method)(
|
2978
|
+
raise NotSupported(self.id + ' fetchLastPrices() does not support ' + type + ' markets yet')
|
2979
|
+
response = await getattr(self, method)(params)
|
2974
2980
|
return self.parse_last_prices(response, symbols)
|
2975
2981
|
|
2976
2982
|
def parse_last_price(self, info, market=None):
|
@@ -3000,10 +3006,10 @@ class binance(Exchange, ImplicitAPI):
|
|
3000
3006
|
# "time": 1591257246176
|
3001
3007
|
# }
|
3002
3008
|
#
|
3003
|
-
marketId = self.safe_string(info, 'symbol')
|
3004
|
-
defaultType = self.safe_string(self.options, 'defaultType', 'spot')
|
3005
|
-
market = self.safe_market(marketId, market, None, defaultType)
|
3006
3009
|
timestamp = self.safe_integer(info, 'time')
|
3010
|
+
type = 'spot' if (timestamp is None) else 'swap'
|
3011
|
+
marketId = self.safe_string(info, 'symbol')
|
3012
|
+
market = self.safe_market(marketId, market, None, type)
|
3007
3013
|
price = self.safe_number(info, 'price')
|
3008
3014
|
return {
|
3009
3015
|
'symbol': market['symbol'],
|
@@ -3011,8 +3017,6 @@ class binance(Exchange, ImplicitAPI):
|
|
3011
3017
|
'datetime': self.iso8601(timestamp),
|
3012
3018
|
'price': price,
|
3013
3019
|
'side': None,
|
3014
|
-
'baseVolume': None,
|
3015
|
-
'quoteVolume': None,
|
3016
3020
|
'info': info,
|
3017
3021
|
}
|
3018
3022
|
|
@@ -3947,25 +3951,16 @@ class binance(Exchange, ImplicitAPI):
|
|
3947
3951
|
marketType = 'contract' if ('closePosition' in order) else 'spot'
|
3948
3952
|
symbol = self.safe_symbol(marketId, market, None, marketType)
|
3949
3953
|
filled = self.safe_string(order, 'executedQty', '0')
|
3950
|
-
timestamp =
|
3954
|
+
timestamp = self.safe_integer_n(order, ['time', 'createTime', 'workingTime', 'transactTime', 'updateTime']) # order of the keys matters here
|
3951
3955
|
lastTradeTimestamp = None
|
3952
|
-
if '
|
3953
|
-
|
3954
|
-
elif 'workingTime' in order:
|
3955
|
-
lastTradeTimestamp = self.safe_integer(order, 'transactTime')
|
3956
|
-
timestamp = self.safe_integer(order, 'workingTime')
|
3957
|
-
elif 'transactTime' in order:
|
3958
|
-
lastTradeTimestamp = self.safe_integer(order, 'transactTime')
|
3959
|
-
timestamp = self.safe_integer(order, 'transactTime')
|
3960
|
-
elif 'createTime' in order:
|
3961
|
-
lastTradeTimestamp = self.safe_integer(order, 'updateTime')
|
3962
|
-
timestamp = self.safe_integer(order, 'createTime')
|
3963
|
-
elif 'updateTime' in order:
|
3956
|
+
if ('transactTime' in order) or ('updateTime' in order):
|
3957
|
+
timestampValue = self.safe_integer_2(order, 'updateTime', 'transactTime')
|
3964
3958
|
if status == 'open':
|
3965
3959
|
if Precise.string_gt(filled, '0'):
|
3966
|
-
lastTradeTimestamp =
|
3967
|
-
|
3968
|
-
|
3960
|
+
lastTradeTimestamp = timestampValue
|
3961
|
+
elif status == 'closed':
|
3962
|
+
lastTradeTimestamp = timestampValue
|
3963
|
+
lastUpdateTimestamp = self.safe_integer_2(order, 'transactTime', 'updateTime')
|
3969
3964
|
average = self.safe_string(order, 'avgPrice')
|
3970
3965
|
price = self.safe_string(order, 'price')
|
3971
3966
|
amount = self.safe_string_2(order, 'origQty', 'quantity')
|
@@ -3995,6 +3990,7 @@ class binance(Exchange, ImplicitAPI):
|
|
3995
3990
|
'timestamp': timestamp,
|
3996
3991
|
'datetime': self.iso8601(timestamp),
|
3997
3992
|
'lastTradeTimestamp': lastTradeTimestamp,
|
3993
|
+
'lastUpdateTimestamp': lastUpdateTimestamp,
|
3998
3994
|
'symbol': symbol,
|
3999
3995
|
'type': type,
|
4000
3996
|
'timeInForce': timeInForce,
|
ccxt/async_support/bitbank.py
CHANGED
@@ -106,6 +106,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
106
106
|
'public': {
|
107
107
|
'get': [
|
108
108
|
'{pair}/ticker',
|
109
|
+
'tickers',
|
110
|
+
'tickers_jpy',
|
109
111
|
'{pair}/depth',
|
110
112
|
'{pair}/transactions',
|
111
113
|
'{pair}/transactions/{yyyymmdd}',
|
@@ -118,7 +120,11 @@ class bitbank(Exchange, ImplicitAPI):
|
|
118
120
|
'user/spot/order',
|
119
121
|
'user/spot/active_orders',
|
120
122
|
'user/spot/trade_history',
|
123
|
+
'user/deposit_history',
|
121
124
|
'user/withdrawal_account',
|
125
|
+
'user/withdrawal_history',
|
126
|
+
'spot/status',
|
127
|
+
'spot/pairs',
|
122
128
|
],
|
123
129
|
'post': [
|
124
130
|
'user/spot/order',
|
ccxt/async_support/gate.py
CHANGED
@@ -93,7 +93,7 @@ class gate(Exchange, ImplicitAPI):
|
|
93
93
|
'margin': True,
|
94
94
|
'swap': True,
|
95
95
|
'future': True,
|
96
|
-
'option':
|
96
|
+
'option': True,
|
97
97
|
'addMargin': True,
|
98
98
|
'borrowMargin': True,
|
99
99
|
'cancelAllOrders': True,
|
@@ -502,9 +502,44 @@ class gate(Exchange, ImplicitAPI):
|
|
502
502
|
'expiration': 86400, # for conditional orders
|
503
503
|
},
|
504
504
|
'networks': {
|
505
|
-
'
|
506
|
-
'
|
505
|
+
'ALGORAND': 'ALGO',
|
506
|
+
'ARBITRUM_NOVA': 'ARBNOVA',
|
507
|
+
'ARBITRUM_ONE': 'ARBEVM',
|
508
|
+
'AVALANCHE_C': 'AVAX_C',
|
507
509
|
'BEP20': 'BSC',
|
510
|
+
'CHILIZ': 'CHZ',
|
511
|
+
'EOS': 'EOS',
|
512
|
+
'ERC20': 'ETH',
|
513
|
+
'GATECHAIN': 'GTEVM',
|
514
|
+
'HRC20': 'HT',
|
515
|
+
'KUSAMA': 'KSMSM',
|
516
|
+
'NEAR': 'NEAR',
|
517
|
+
'OKC': 'OKT',
|
518
|
+
'OPTIMISM': 'OPETH',
|
519
|
+
'POLKADOT': 'DOTSM',
|
520
|
+
'POLYGON': 'MATIC',
|
521
|
+
'SOLANA': 'SOL',
|
522
|
+
'TRC20': 'TRX',
|
523
|
+
},
|
524
|
+
'networksById': {
|
525
|
+
'ALGO': 'ALGORAND',
|
526
|
+
'ARBEVM': 'ARBITRUM_ONE',
|
527
|
+
'ARBNOVA': 'ARBITRUM_NOVA',
|
528
|
+
'AVAX_C': 'AVALANCHE_C',
|
529
|
+
'BSC': 'BEP20',
|
530
|
+
'CHZ': 'CHILIZ',
|
531
|
+
'DOTSM': 'POLKADOT',
|
532
|
+
'EOS': 'EOS',
|
533
|
+
'ETH': 'ERC20',
|
534
|
+
'GTEVM': 'GATECHAIN',
|
535
|
+
'HT': 'HRC20',
|
536
|
+
'KSMSM': 'KUSAMA',
|
537
|
+
'MATIC': 'POLYGON',
|
538
|
+
'NEAR': 'NEAR',
|
539
|
+
'OKT': 'OKC',
|
540
|
+
'OPETH': 'OPTIMISM',
|
541
|
+
'SOL': 'SOLANA',
|
542
|
+
'TRX': 'TRC20',
|
508
543
|
},
|
509
544
|
'timeInForce': {
|
510
545
|
'GTC': 'gtc',
|
@@ -1321,12 +1356,26 @@ class gate(Exchange, ImplicitAPI):
|
|
1321
1356
|
# "trade_disabled": False
|
1322
1357
|
# }
|
1323
1358
|
#
|
1359
|
+
# {
|
1360
|
+
# "currency":"USDT_ETH",
|
1361
|
+
# "delisted":false,
|
1362
|
+
# "withdraw_disabled":false,
|
1363
|
+
# "withdraw_delayed":false,
|
1364
|
+
# "deposit_disabled":false,
|
1365
|
+
# "trade_disabled":false,
|
1366
|
+
# "chain":"ETH"
|
1367
|
+
# }
|
1368
|
+
#
|
1324
1369
|
result = {}
|
1325
1370
|
for i in range(0, len(response)):
|
1326
1371
|
entry = response[i]
|
1327
1372
|
currencyId = self.safe_string(entry, 'currency')
|
1328
1373
|
currencyIdLower = self.safe_string_lower(entry, 'currency')
|
1329
|
-
|
1374
|
+
parts = currencyId.split('_')
|
1375
|
+
currency = parts[0]
|
1376
|
+
code = self.safe_currency_code(currency)
|
1377
|
+
networkId = self.safe_string(entry, 'chain')
|
1378
|
+
networkCode = self.network_id_to_code(networkId, code)
|
1330
1379
|
delisted = self.safe_value(entry, 'delisted')
|
1331
1380
|
withdrawDisabled = self.safe_value(entry, 'withdraw_disabled', False)
|
1332
1381
|
depositDisabled = self.safe_value(entry, 'deposit_disabled', False)
|
@@ -1336,21 +1385,59 @@ class gate(Exchange, ImplicitAPI):
|
|
1336
1385
|
tradeEnabled = not tradeDisabled
|
1337
1386
|
listed = not delisted
|
1338
1387
|
active = listed and tradeEnabled and withdrawEnabled and depositEnabled
|
1339
|
-
result
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1388
|
+
if self.safe_value(result, code) is None:
|
1389
|
+
result[code] = {
|
1390
|
+
'id': code.lower(),
|
1391
|
+
'code': code,
|
1392
|
+
'info': None,
|
1393
|
+
'name': None,
|
1394
|
+
'active': active,
|
1395
|
+
'deposit': depositEnabled,
|
1396
|
+
'withdraw': withdrawEnabled,
|
1397
|
+
'fee': None,
|
1398
|
+
'fees': [],
|
1399
|
+
'precision': self.parse_number('1e-4'),
|
1400
|
+
'limits': self.limits,
|
1401
|
+
'networks': {},
|
1402
|
+
}
|
1403
|
+
depositAvailable = self.safe_value(result[code], 'deposit')
|
1404
|
+
depositAvailable = depositEnabled if (depositEnabled) else depositAvailable
|
1405
|
+
withdrawAvailable = self.safe_value(result[code], 'withdraw')
|
1406
|
+
withdrawAvailable = withdrawEnabled if (withdrawEnabled) else withdrawAvailable
|
1407
|
+
networks = self.safe_value(result[code], 'networks', {})
|
1408
|
+
networks[networkCode] = {
|
1345
1409
|
'info': entry,
|
1346
|
-
'
|
1410
|
+
'id': networkId,
|
1411
|
+
'network': networkCode,
|
1412
|
+
'currencyId': currencyId,
|
1413
|
+
'lowerCaseCurrencyId': currencyIdLower,
|
1347
1414
|
'deposit': depositEnabled,
|
1348
1415
|
'withdraw': withdrawEnabled,
|
1416
|
+
'active': active,
|
1349
1417
|
'fee': None,
|
1350
|
-
'
|
1351
|
-
'limits':
|
1352
|
-
|
1418
|
+
'precision': self.parse_number('1e-4'),
|
1419
|
+
'limits': {
|
1420
|
+
'amount': {
|
1421
|
+
'min': None,
|
1422
|
+
'max': None,
|
1423
|
+
},
|
1424
|
+
'withdraw': {
|
1425
|
+
'min': None,
|
1426
|
+
'max': None,
|
1427
|
+
},
|
1428
|
+
'deposit': {
|
1429
|
+
'min': None,
|
1430
|
+
'max': None,
|
1431
|
+
},
|
1432
|
+
},
|
1353
1433
|
}
|
1434
|
+
result[code]['networks'] = networks
|
1435
|
+
info = self.safe_value(result[code], 'info', [])
|
1436
|
+
info.append(entry)
|
1437
|
+
result[code]['info'] = info
|
1438
|
+
result[code]['active'] = depositAvailable and withdrawAvailable
|
1439
|
+
result[code]['deposit'] = depositAvailable
|
1440
|
+
result[code]['withdraw'] = withdrawAvailable
|
1354
1441
|
return result
|
1355
1442
|
|
1356
1443
|
async def fetch_funding_rate(self, symbol: str, params={}):
|
@@ -5148,8 +5235,8 @@ class gate(Exchange, ImplicitAPI):
|
|
5148
5235
|
"""
|
5149
5236
|
await self.load_markets()
|
5150
5237
|
market = self.market(symbol)
|
5151
|
-
if not market['
|
5152
|
-
raise BadRequest(self.id + ' fetchOpenInterest() supports
|
5238
|
+
if not market['future']:
|
5239
|
+
raise BadRequest(self.id + ' fetchOpenInterest() supports future markets only')
|
5153
5240
|
request = {
|
5154
5241
|
'contract': market['id'],
|
5155
5242
|
'settle': market['settleId'],
|
ccxt/async_support/mexc.py
CHANGED
@@ -4684,7 +4684,10 @@ class mexc(Exchange, ImplicitAPI):
|
|
4684
4684
|
path, params = self.resolve_path(path, params)
|
4685
4685
|
url = None
|
4686
4686
|
if section == 'spot' or section == 'broker':
|
4687
|
-
|
4687
|
+
if section == 'broker':
|
4688
|
+
url = self.urls['api'][section][access] + '/' + path
|
4689
|
+
else:
|
4690
|
+
url = self.urls['api'][section][access] + '/api/' + self.version + '/' + path
|
4688
4691
|
paramsEncoded = ''
|
4689
4692
|
if access == 'private':
|
4690
4693
|
params['timestamp'] = self.milliseconds()
|
ccxt/base/exchange.py
CHANGED
ccxt/binance.py
CHANGED
@@ -505,6 +505,8 @@ class binance(Exchange, ImplicitAPI):
|
|
505
505
|
'loan/vip/repay': 40, # Weight(UID): 6000 => cost = 0.006667 * 6000 = 40
|
506
506
|
'convert/getQuote': 20.001,
|
507
507
|
'convert/acceptQuote': 3.3335,
|
508
|
+
'portfolio/auto-collection': 0.6667, # Weight(UID): 100 => cost = 0.006667 * 100 = 0.6667
|
509
|
+
'portfolio/bnb-transfer': 0.6667, # Weight(UID): 100 => cost = 0.006667 * 100 = 0.6667
|
508
510
|
},
|
509
511
|
'put': {
|
510
512
|
'userDataStream': 0.1,
|
@@ -2929,10 +2931,14 @@ class binance(Exchange, ImplicitAPI):
|
|
2929
2931
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
2930
2932
|
"""
|
2931
2933
|
self.load_markets()
|
2934
|
+
symbols = self.market_symbols(symbols)
|
2932
2935
|
market = self.get_market_from_symbols(symbols)
|
2933
|
-
|
2936
|
+
type = None
|
2937
|
+
subType = None
|
2938
|
+
subType, params = self.handle_sub_type_and_params('fetchLastPrices', market, params)
|
2939
|
+
type, params = self.handle_market_type_and_params('fetchLastPrices', market, params)
|
2934
2940
|
method = None
|
2935
|
-
if
|
2941
|
+
if self.is_linear(type, subType):
|
2936
2942
|
method = 'fapiPublicGetTickerPrice'
|
2937
2943
|
#
|
2938
2944
|
# [
|
@@ -2944,7 +2950,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2944
2950
|
# ...
|
2945
2951
|
# ]
|
2946
2952
|
#
|
2947
|
-
elif
|
2953
|
+
elif self.is_inverse(type, subType):
|
2948
2954
|
method = 'dapiPublicGetTickerPrice'
|
2949
2955
|
#
|
2950
2956
|
# [
|
@@ -2956,7 +2962,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2956
2962
|
# }
|
2957
2963
|
# ]
|
2958
2964
|
#
|
2959
|
-
elif
|
2965
|
+
elif type == 'spot':
|
2960
2966
|
method = 'publicGetTickerPrice'
|
2961
2967
|
#
|
2962
2968
|
# [
|
@@ -2968,8 +2974,8 @@ class binance(Exchange, ImplicitAPI):
|
|
2968
2974
|
# ]
|
2969
2975
|
#
|
2970
2976
|
else:
|
2971
|
-
raise NotSupported(self.id + ' fetchLastPrices() does not support ' +
|
2972
|
-
response = getattr(self, method)(
|
2977
|
+
raise NotSupported(self.id + ' fetchLastPrices() does not support ' + type + ' markets yet')
|
2978
|
+
response = getattr(self, method)(params)
|
2973
2979
|
return self.parse_last_prices(response, symbols)
|
2974
2980
|
|
2975
2981
|
def parse_last_price(self, info, market=None):
|
@@ -2999,10 +3005,10 @@ class binance(Exchange, ImplicitAPI):
|
|
2999
3005
|
# "time": 1591257246176
|
3000
3006
|
# }
|
3001
3007
|
#
|
3002
|
-
marketId = self.safe_string(info, 'symbol')
|
3003
|
-
defaultType = self.safe_string(self.options, 'defaultType', 'spot')
|
3004
|
-
market = self.safe_market(marketId, market, None, defaultType)
|
3005
3008
|
timestamp = self.safe_integer(info, 'time')
|
3009
|
+
type = 'spot' if (timestamp is None) else 'swap'
|
3010
|
+
marketId = self.safe_string(info, 'symbol')
|
3011
|
+
market = self.safe_market(marketId, market, None, type)
|
3006
3012
|
price = self.safe_number(info, 'price')
|
3007
3013
|
return {
|
3008
3014
|
'symbol': market['symbol'],
|
@@ -3010,8 +3016,6 @@ class binance(Exchange, ImplicitAPI):
|
|
3010
3016
|
'datetime': self.iso8601(timestamp),
|
3011
3017
|
'price': price,
|
3012
3018
|
'side': None,
|
3013
|
-
'baseVolume': None,
|
3014
|
-
'quoteVolume': None,
|
3015
3019
|
'info': info,
|
3016
3020
|
}
|
3017
3021
|
|
@@ -3946,25 +3950,16 @@ class binance(Exchange, ImplicitAPI):
|
|
3946
3950
|
marketType = 'contract' if ('closePosition' in order) else 'spot'
|
3947
3951
|
symbol = self.safe_symbol(marketId, market, None, marketType)
|
3948
3952
|
filled = self.safe_string(order, 'executedQty', '0')
|
3949
|
-
timestamp =
|
3953
|
+
timestamp = self.safe_integer_n(order, ['time', 'createTime', 'workingTime', 'transactTime', 'updateTime']) # order of the keys matters here
|
3950
3954
|
lastTradeTimestamp = None
|
3951
|
-
if '
|
3952
|
-
|
3953
|
-
elif 'workingTime' in order:
|
3954
|
-
lastTradeTimestamp = self.safe_integer(order, 'transactTime')
|
3955
|
-
timestamp = self.safe_integer(order, 'workingTime')
|
3956
|
-
elif 'transactTime' in order:
|
3957
|
-
lastTradeTimestamp = self.safe_integer(order, 'transactTime')
|
3958
|
-
timestamp = self.safe_integer(order, 'transactTime')
|
3959
|
-
elif 'createTime' in order:
|
3960
|
-
lastTradeTimestamp = self.safe_integer(order, 'updateTime')
|
3961
|
-
timestamp = self.safe_integer(order, 'createTime')
|
3962
|
-
elif 'updateTime' in order:
|
3955
|
+
if ('transactTime' in order) or ('updateTime' in order):
|
3956
|
+
timestampValue = self.safe_integer_2(order, 'updateTime', 'transactTime')
|
3963
3957
|
if status == 'open':
|
3964
3958
|
if Precise.string_gt(filled, '0'):
|
3965
|
-
lastTradeTimestamp =
|
3966
|
-
|
3967
|
-
|
3959
|
+
lastTradeTimestamp = timestampValue
|
3960
|
+
elif status == 'closed':
|
3961
|
+
lastTradeTimestamp = timestampValue
|
3962
|
+
lastUpdateTimestamp = self.safe_integer_2(order, 'transactTime', 'updateTime')
|
3968
3963
|
average = self.safe_string(order, 'avgPrice')
|
3969
3964
|
price = self.safe_string(order, 'price')
|
3970
3965
|
amount = self.safe_string_2(order, 'origQty', 'quantity')
|
@@ -3994,6 +3989,7 @@ class binance(Exchange, ImplicitAPI):
|
|
3994
3989
|
'timestamp': timestamp,
|
3995
3990
|
'datetime': self.iso8601(timestamp),
|
3996
3991
|
'lastTradeTimestamp': lastTradeTimestamp,
|
3992
|
+
'lastUpdateTimestamp': lastUpdateTimestamp,
|
3997
3993
|
'symbol': symbol,
|
3998
3994
|
'type': type,
|
3999
3995
|
'timeInForce': timeInForce,
|
ccxt/bitbank.py
CHANGED
@@ -106,6 +106,8 @@ class bitbank(Exchange, ImplicitAPI):
|
|
106
106
|
'public': {
|
107
107
|
'get': [
|
108
108
|
'{pair}/ticker',
|
109
|
+
'tickers',
|
110
|
+
'tickers_jpy',
|
109
111
|
'{pair}/depth',
|
110
112
|
'{pair}/transactions',
|
111
113
|
'{pair}/transactions/{yyyymmdd}',
|
@@ -118,7 +120,11 @@ class bitbank(Exchange, ImplicitAPI):
|
|
118
120
|
'user/spot/order',
|
119
121
|
'user/spot/active_orders',
|
120
122
|
'user/spot/trade_history',
|
123
|
+
'user/deposit_history',
|
121
124
|
'user/withdrawal_account',
|
125
|
+
'user/withdrawal_history',
|
126
|
+
'spot/status',
|
127
|
+
'spot/pairs',
|
122
128
|
],
|
123
129
|
'post': [
|
124
130
|
'user/spot/order',
|
ccxt/gate.py
CHANGED
@@ -92,7 +92,7 @@ class gate(Exchange, ImplicitAPI):
|
|
92
92
|
'margin': True,
|
93
93
|
'swap': True,
|
94
94
|
'future': True,
|
95
|
-
'option':
|
95
|
+
'option': True,
|
96
96
|
'addMargin': True,
|
97
97
|
'borrowMargin': True,
|
98
98
|
'cancelAllOrders': True,
|
@@ -501,9 +501,44 @@ class gate(Exchange, ImplicitAPI):
|
|
501
501
|
'expiration': 86400, # for conditional orders
|
502
502
|
},
|
503
503
|
'networks': {
|
504
|
-
'
|
505
|
-
'
|
504
|
+
'ALGORAND': 'ALGO',
|
505
|
+
'ARBITRUM_NOVA': 'ARBNOVA',
|
506
|
+
'ARBITRUM_ONE': 'ARBEVM',
|
507
|
+
'AVALANCHE_C': 'AVAX_C',
|
506
508
|
'BEP20': 'BSC',
|
509
|
+
'CHILIZ': 'CHZ',
|
510
|
+
'EOS': 'EOS',
|
511
|
+
'ERC20': 'ETH',
|
512
|
+
'GATECHAIN': 'GTEVM',
|
513
|
+
'HRC20': 'HT',
|
514
|
+
'KUSAMA': 'KSMSM',
|
515
|
+
'NEAR': 'NEAR',
|
516
|
+
'OKC': 'OKT',
|
517
|
+
'OPTIMISM': 'OPETH',
|
518
|
+
'POLKADOT': 'DOTSM',
|
519
|
+
'POLYGON': 'MATIC',
|
520
|
+
'SOLANA': 'SOL',
|
521
|
+
'TRC20': 'TRX',
|
522
|
+
},
|
523
|
+
'networksById': {
|
524
|
+
'ALGO': 'ALGORAND',
|
525
|
+
'ARBEVM': 'ARBITRUM_ONE',
|
526
|
+
'ARBNOVA': 'ARBITRUM_NOVA',
|
527
|
+
'AVAX_C': 'AVALANCHE_C',
|
528
|
+
'BSC': 'BEP20',
|
529
|
+
'CHZ': 'CHILIZ',
|
530
|
+
'DOTSM': 'POLKADOT',
|
531
|
+
'EOS': 'EOS',
|
532
|
+
'ETH': 'ERC20',
|
533
|
+
'GTEVM': 'GATECHAIN',
|
534
|
+
'HT': 'HRC20',
|
535
|
+
'KSMSM': 'KUSAMA',
|
536
|
+
'MATIC': 'POLYGON',
|
537
|
+
'NEAR': 'NEAR',
|
538
|
+
'OKT': 'OKC',
|
539
|
+
'OPETH': 'OPTIMISM',
|
540
|
+
'SOL': 'SOLANA',
|
541
|
+
'TRX': 'TRC20',
|
507
542
|
},
|
508
543
|
'timeInForce': {
|
509
544
|
'GTC': 'gtc',
|
@@ -1320,12 +1355,26 @@ class gate(Exchange, ImplicitAPI):
|
|
1320
1355
|
# "trade_disabled": False
|
1321
1356
|
# }
|
1322
1357
|
#
|
1358
|
+
# {
|
1359
|
+
# "currency":"USDT_ETH",
|
1360
|
+
# "delisted":false,
|
1361
|
+
# "withdraw_disabled":false,
|
1362
|
+
# "withdraw_delayed":false,
|
1363
|
+
# "deposit_disabled":false,
|
1364
|
+
# "trade_disabled":false,
|
1365
|
+
# "chain":"ETH"
|
1366
|
+
# }
|
1367
|
+
#
|
1323
1368
|
result = {}
|
1324
1369
|
for i in range(0, len(response)):
|
1325
1370
|
entry = response[i]
|
1326
1371
|
currencyId = self.safe_string(entry, 'currency')
|
1327
1372
|
currencyIdLower = self.safe_string_lower(entry, 'currency')
|
1328
|
-
|
1373
|
+
parts = currencyId.split('_')
|
1374
|
+
currency = parts[0]
|
1375
|
+
code = self.safe_currency_code(currency)
|
1376
|
+
networkId = self.safe_string(entry, 'chain')
|
1377
|
+
networkCode = self.network_id_to_code(networkId, code)
|
1329
1378
|
delisted = self.safe_value(entry, 'delisted')
|
1330
1379
|
withdrawDisabled = self.safe_value(entry, 'withdraw_disabled', False)
|
1331
1380
|
depositDisabled = self.safe_value(entry, 'deposit_disabled', False)
|
@@ -1335,21 +1384,59 @@ class gate(Exchange, ImplicitAPI):
|
|
1335
1384
|
tradeEnabled = not tradeDisabled
|
1336
1385
|
listed = not delisted
|
1337
1386
|
active = listed and tradeEnabled and withdrawEnabled and depositEnabled
|
1338
|
-
result
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1387
|
+
if self.safe_value(result, code) is None:
|
1388
|
+
result[code] = {
|
1389
|
+
'id': code.lower(),
|
1390
|
+
'code': code,
|
1391
|
+
'info': None,
|
1392
|
+
'name': None,
|
1393
|
+
'active': active,
|
1394
|
+
'deposit': depositEnabled,
|
1395
|
+
'withdraw': withdrawEnabled,
|
1396
|
+
'fee': None,
|
1397
|
+
'fees': [],
|
1398
|
+
'precision': self.parse_number('1e-4'),
|
1399
|
+
'limits': self.limits,
|
1400
|
+
'networks': {},
|
1401
|
+
}
|
1402
|
+
depositAvailable = self.safe_value(result[code], 'deposit')
|
1403
|
+
depositAvailable = depositEnabled if (depositEnabled) else depositAvailable
|
1404
|
+
withdrawAvailable = self.safe_value(result[code], 'withdraw')
|
1405
|
+
withdrawAvailable = withdrawEnabled if (withdrawEnabled) else withdrawAvailable
|
1406
|
+
networks = self.safe_value(result[code], 'networks', {})
|
1407
|
+
networks[networkCode] = {
|
1344
1408
|
'info': entry,
|
1345
|
-
'
|
1409
|
+
'id': networkId,
|
1410
|
+
'network': networkCode,
|
1411
|
+
'currencyId': currencyId,
|
1412
|
+
'lowerCaseCurrencyId': currencyIdLower,
|
1346
1413
|
'deposit': depositEnabled,
|
1347
1414
|
'withdraw': withdrawEnabled,
|
1415
|
+
'active': active,
|
1348
1416
|
'fee': None,
|
1349
|
-
'
|
1350
|
-
'limits':
|
1351
|
-
|
1417
|
+
'precision': self.parse_number('1e-4'),
|
1418
|
+
'limits': {
|
1419
|
+
'amount': {
|
1420
|
+
'min': None,
|
1421
|
+
'max': None,
|
1422
|
+
},
|
1423
|
+
'withdraw': {
|
1424
|
+
'min': None,
|
1425
|
+
'max': None,
|
1426
|
+
},
|
1427
|
+
'deposit': {
|
1428
|
+
'min': None,
|
1429
|
+
'max': None,
|
1430
|
+
},
|
1431
|
+
},
|
1352
1432
|
}
|
1433
|
+
result[code]['networks'] = networks
|
1434
|
+
info = self.safe_value(result[code], 'info', [])
|
1435
|
+
info.append(entry)
|
1436
|
+
result[code]['info'] = info
|
1437
|
+
result[code]['active'] = depositAvailable and withdrawAvailable
|
1438
|
+
result[code]['deposit'] = depositAvailable
|
1439
|
+
result[code]['withdraw'] = withdrawAvailable
|
1353
1440
|
return result
|
1354
1441
|
|
1355
1442
|
def fetch_funding_rate(self, symbol: str, params={}):
|
@@ -5147,8 +5234,8 @@ class gate(Exchange, ImplicitAPI):
|
|
5147
5234
|
"""
|
5148
5235
|
self.load_markets()
|
5149
5236
|
market = self.market(symbol)
|
5150
|
-
if not market['
|
5151
|
-
raise BadRequest(self.id + ' fetchOpenInterest() supports
|
5237
|
+
if not market['future']:
|
5238
|
+
raise BadRequest(self.id + ' fetchOpenInterest() supports future markets only')
|
5152
5239
|
request = {
|
5153
5240
|
'contract': market['id'],
|
5154
5241
|
'settle': market['settleId'],
|
ccxt/mexc.py
CHANGED
@@ -4684,7 +4684,10 @@ class mexc(Exchange, ImplicitAPI):
|
|
4684
4684
|
path, params = self.resolve_path(path, params)
|
4685
4685
|
url = None
|
4686
4686
|
if section == 'spot' or section == 'broker':
|
4687
|
-
|
4687
|
+
if section == 'broker':
|
4688
|
+
url = self.urls['api'][section][access] + '/' + path
|
4689
|
+
else:
|
4690
|
+
url = self.urls['api'][section][access] + '/api/' + self.version + '/' + path
|
4688
4691
|
paramsEncoded = ''
|
4689
4692
|
if access == 'private':
|
4690
4693
|
params['timestamp'] = self.milliseconds()
|
ccxt/pro/__init__.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 3.1.
|
3
|
+
Version: 3.1.35
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -264,13 +264,13 @@ console.log(version, Object.keys(exchanges));
|
|
264
264
|
|
265
265
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
266
266
|
|
267
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.
|
268
|
-
* unpkg: https://unpkg.com/ccxt@3.1.
|
267
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.35/dist/ccxt.browser.js
|
268
|
+
* unpkg: https://unpkg.com/ccxt@3.1.35/dist/ccxt.browser.js
|
269
269
|
|
270
270
|
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.
|
271
271
|
|
272
272
|
```HTML
|
273
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.
|
273
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.35/dist/ccxt.browser.js"></script>
|
274
274
|
```
|
275
275
|
|
276
276
|
Creates a global `ccxt` object:
|
@@ -1,15 +1,15 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=QT8Oj9QbF1GT9MMT5qIONcWV5RmcpnYSzuJj7iFSAFg,15531
|
2
2
|
ccxt/ace.py,sha256=X4xNSn-7c-K-KFZBUZXwdijv2gsSo1AjiuDV2Ay_qI8,41378
|
3
3
|
ccxt/alpaca.py,sha256=67-UgBXEXmAGMIYlxsufpFOLDSQi-V6-ZOefTAzSNJs,33210
|
4
4
|
ccxt/ascendex.py,sha256=Tfu6IHoc1hZGAwvEV8U5dhjTUyGOPXyp3hf-Ry6LFuU,129319
|
5
5
|
ccxt/bequant.py,sha256=1wDyg1jmS1H9WkODiqztoLVhQog7R6n7MUZsOhIRwRU,1136
|
6
6
|
ccxt/bigone.py,sha256=aTBf53_VVwUlqX3GreIwA3r37fdnrZyP9NbGFiCI7DU,62389
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=7v7qGg4MU1KOstKS75VUzqLL36EZgWMZ2IwODN9-Ats,385958
|
8
8
|
ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
|
9
9
|
ccxt/binanceus.py,sha256=RoC8nReBHXUJzRNyqMe4vhta6gLGuh1fyFkI8FOMKBE,2151
|
10
10
|
ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
|
11
11
|
ccxt/bit2c.py,sha256=2YVCDonSKrWPVM8jZteZ7EcFE7BmYy8cQ50Eo6OY37s,35531
|
12
|
-
ccxt/bitbank.py,sha256=
|
12
|
+
ccxt/bitbank.py,sha256=fniFSvUOyZCW25hIq5f55utcI4Ua0yU_2MEkrJFuBhg,39307
|
13
13
|
ccxt/bitbay.py,sha256=B1-8OOhH0k-_mQ7YM7CNuSzP0-PyrtWF-Bc00iEU-CY,448
|
14
14
|
ccxt/bitbns.py,sha256=NZiy0baRUIFs87YWblH9e_O2vcxqLXDBDa2D__Y0jkA,46022
|
15
15
|
ccxt/bitcoincom.py,sha256=YFjeHBlk3W6Gu_yzGwg8smSUkyG6E4l4sSAMvSQMrcY,467
|
@@ -59,7 +59,7 @@ ccxt/digifinex.py,sha256=t7dlZCskT-RsTmervWN2Vi8SkS8S2g81Jil4FY26IQY,152209
|
|
59
59
|
ccxt/exmo.py,sha256=2jrEtqqmZJ9xQI01VLS2BjX_hobr1ORSVqxHNEwOlDc,88773
|
60
60
|
ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
|
61
61
|
ccxt/fmfwio.py,sha256=ww13viYsuW8IzHhr3HST8uuroYsCZ2aynyG4i_SE0LU,1238
|
62
|
-
ccxt/gate.py,sha256=
|
62
|
+
ccxt/gate.py,sha256=2Wn58aKK54okXXtfkpDUTriXlzvL0bNhr0jYvtSk3C4,249592
|
63
63
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
64
64
|
ccxt/gemini.py,sha256=RExqJvYnC5NVQ2_RzjFaMwZ7DvJG1kUIkm2OG9JckOQ,69050
|
65
65
|
ccxt/hitbtc.py,sha256=5-1BPVH6sc-uUHcZUs8GeKdQeXApozswlNxTIZ45Ifs,62288
|
@@ -83,7 +83,7 @@ ccxt/lbank2.py,sha256=1XNWg6dnEcWh_zMKdaLsWnaKuNl5EBx9mJr2f3PCBAA,97906
|
|
83
83
|
ccxt/luno.py,sha256=_K-5XcIMfUm9d4XalPFBzIsLdgpY3FwZNHshjQIW9iE,40522
|
84
84
|
ccxt/lykke.py,sha256=Gwo9H4XvuMj_8XyaAAQokPDUFCbGbxqvF-hqm2osSqA,48510
|
85
85
|
ccxt/mercado.py,sha256=ConAckh2qGUdnkE60YU9l-yDZH5gfP7eJOKJI3_vY6Y,34688
|
86
|
-
ccxt/mexc.py,sha256=
|
86
|
+
ccxt/mexc.py,sha256=81LnYG05F43-NA_B_jT1fsV5qEF8ZwZ1Od3TFg-tKrw,211223
|
87
87
|
ccxt/mexc3.py,sha256=sEif-cT2AIBMl0C3T6dgfRh8HHWarzXfEEGPZOahrGs,441
|
88
88
|
ccxt/ndax.py,sha256=A59x_g1iNnS7dmZ6855k2jeI9lm-7DPxBkcCCBfYJCI,106160
|
89
89
|
ccxt/novadax.py,sha256=obdBe87cHBgDT7aHUECliJ93Gg9wqsdDiIlNuKyz60o,61687
|
@@ -118,12 +118,12 @@ ccxt/abstract/alpaca.py,sha256=GKGGXKJ9WzW9V3SmOX_Jjaea_QTa04Eg5nYhQgFErGI,1861
|
|
118
118
|
ccxt/abstract/ascendex.py,sha256=b85f3K0maWubEmAQIm6T5ierLHZG6c0f-uuvJ-JgLxM,11071
|
119
119
|
ccxt/abstract/bequant.py,sha256=0T5QJsSdYh5qcydcL76kC78pip1XrMDvaKkpxkcBsfc,8376
|
120
120
|
ccxt/abstract/bigone.py,sha256=wrsNs-x0Tv-8e3HcjMpGxQVdciL0cmHDWIJzNGVsd04,2347
|
121
|
-
ccxt/abstract/binance.py,sha256=
|
122
|
-
ccxt/abstract/binancecoinm.py,sha256=
|
123
|
-
ccxt/abstract/binanceus.py,sha256=
|
124
|
-
ccxt/abstract/binanceusdm.py,sha256=
|
121
|
+
ccxt/abstract/binance.py,sha256=4qcSltNhECBZ5o4qhmKLa_QO5hiu-yvm53kMES_Kor8,69569
|
122
|
+
ccxt/abstract/binancecoinm.py,sha256=4qcSltNhECBZ5o4qhmKLa_QO5hiu-yvm53kMES_Kor8,69569
|
123
|
+
ccxt/abstract/binanceus.py,sha256=4qcSltNhECBZ5o4qhmKLa_QO5hiu-yvm53kMES_Kor8,69569
|
124
|
+
ccxt/abstract/binanceusdm.py,sha256=4qcSltNhECBZ5o4qhmKLa_QO5hiu-yvm53kMES_Kor8,69569
|
125
125
|
ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
|
126
|
-
ccxt/abstract/bitbank.py,sha256=
|
126
|
+
ccxt/abstract/bitbank.py,sha256=k5D8PoPW2N79K_24NL9yY0qkwaCgzi_VoYUlqnj2bs8,2606
|
127
127
|
ccxt/abstract/bitbay.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
|
128
128
|
ccxt/abstract/bitbns.py,sha256=3T3cHS7SgzGipd6F8vzPnmM0x3XNfQXEPjoInD-C1Sw,4082
|
129
129
|
ccxt/abstract/bitcoincom.py,sha256=0T5QJsSdYh5qcydcL76kC78pip1XrMDvaKkpxkcBsfc,8376
|
@@ -220,18 +220,18 @@ ccxt/abstract/xt.py,sha256=xHHv2viFGK0_iPZ4gu6Wb0aOrpcKhr9zoY-BIPWh5bs,27028
|
|
220
220
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
221
221
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
222
222
|
ccxt/abstract/zonda.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
|
223
|
-
ccxt/async_support/__init__.py,sha256=
|
223
|
+
ccxt/async_support/__init__.py,sha256=xh6V2gftF0E81vWaY9hy3CMQoh-jQQjZERCyCSX7oYY,15324
|
224
224
|
ccxt/async_support/ace.py,sha256=cpzMJrG4paMTXdrfdHuJtSXND1NKhfKLNxaYeicMalc,41602
|
225
225
|
ccxt/async_support/alpaca.py,sha256=0Q7bp7mUhU6lKkCNWdjgt1NR3Rz1QpfC9rAVzTutSwk,33356
|
226
226
|
ccxt/async_support/ascendex.py,sha256=V0G5f9Gg79EjJIVpsuNuQGomoZmx9_WAKGsUjqSJs8k,129933
|
227
227
|
ccxt/async_support/bequant.py,sha256=BbfFIcAuK3qC0huDHr44hskFTHt1SG1Pp5XSgYnaiuA,1150
|
228
228
|
ccxt/async_support/bigone.py,sha256=-MaIFu3QdKcyNwb8sZxIbikt6M7JE_Phgxquz7ihLg4,62775
|
229
|
-
ccxt/async_support/binance.py,sha256=
|
229
|
+
ccxt/async_support/binance.py,sha256=CeviOzKq3WwCvHGTszf9G69PuxRaVgGeUagz8yqi8gw,387204
|
230
230
|
ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
|
231
231
|
ccxt/async_support/binanceus.py,sha256=Jtyl0jtSOpdjAAAYcSUzH6YRVxe88RJ6f4_IUge5gWg,2165
|
232
232
|
ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
|
233
233
|
ccxt/async_support/bit2c.py,sha256=VNeZ9rjXtIsJYYhhJ4L7HWbxaMOBahr89yFqMfunJ8c,35737
|
234
|
-
ccxt/async_support/bitbank.py,sha256=
|
234
|
+
ccxt/async_support/bitbank.py,sha256=Osp5v6Y6-CMJoIfXi4QZdWHg0HaOgMwb6U_FPU4uLTo,39567
|
235
235
|
ccxt/async_support/bitbay.py,sha256=ZwGnGl9LHEsxYU1iOyJB6eT9JfYID_yNxGsB3G4gKeQ,462
|
236
236
|
ccxt/async_support/bitbns.py,sha256=5dJJdbSnLYOPqK-NHHWAWjLoQ8ddLY6k8xEKTzpP6hc,46276
|
237
237
|
ccxt/async_support/bitcoincom.py,sha256=-9ESIcLCRhZxfOLkNXB8mIsb7NYTnNPmF5aYkkKIy5Q,481
|
@@ -281,7 +281,7 @@ ccxt/async_support/digifinex.py,sha256=4kugpdKgwxtIjbDg9_O7q2Jb1ZGm0aXva_cNTGxQx
|
|
281
281
|
ccxt/async_support/exmo.py,sha256=Pe0LS0FfLt2zPY1aCqpzQcxHrT9uCiD_pJ4-9G9CrbM,89315
|
282
282
|
ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
|
283
283
|
ccxt/async_support/fmfwio.py,sha256=h4X-aN7XOxJ0ODBurN0KlnmvZFS06wrRnAbDAifxugk,1252
|
284
|
-
ccxt/async_support/gate.py,sha256=
|
284
|
+
ccxt/async_support/gate.py,sha256=0Kx8RR2aWUWTrABJXnwIu-gQF00m1A2pJl4KDudYasY,250508
|
285
285
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
286
286
|
ccxt/async_support/gemini.py,sha256=EJHv5v3LW8oYCaH9dS4wIUAVYotpC4hop1jVNPSmJa0,69498
|
287
287
|
ccxt/async_support/hitbtc.py,sha256=_9xYS-E5rq8SIQDMxzobipxb8lJQvpvOki3FD63ad9M,62722
|
@@ -305,7 +305,7 @@ ccxt/async_support/lbank2.py,sha256=Q-TfVuYoJVln1ccb_1QZb-jat1fwOUXtE7NHmGyPHiI,
|
|
305
305
|
ccxt/async_support/luno.py,sha256=Dmko5UVg78rqrMUhjMqjZHp8MlVZibpJ-Gq6dmIaW_E,40830
|
306
306
|
ccxt/async_support/lykke.py,sha256=glK3oebZRnmYAXm8yM0ns2bcPHJqgh65Y28ugtAEVv4,48812
|
307
307
|
ccxt/async_support/mercado.py,sha256=knmxmmGRJyRNysyju9jJuRneQbkTU0e2NE2o-s1XG6I,34930
|
308
|
-
ccxt/async_support/mexc.py,sha256=
|
308
|
+
ccxt/async_support/mexc.py,sha256=uCiALpd-KRw3rOEXkei7whhk-P7wPy1fVNm7DSUZyBQ,212269
|
309
309
|
ccxt/async_support/mexc3.py,sha256=JW4rH1kXNWvtiW49W0WyKK6hmKunwboy0IJvsVruSmo,455
|
310
310
|
ccxt/async_support/ndax.py,sha256=6Fi9NLCqb-QK_rLL5JiUd4kuHdq7AC1i1eaFjtvlXlI,106684
|
311
311
|
ccxt/async_support/novadax.py,sha256=Pokq1N7M2dXzOcuTc2yeNsYeaLXOsDFjLL6rNOPzXwo,62055
|
@@ -335,7 +335,7 @@ ccxt/async_support/zaif.py,sha256=eCR5rPQU9BpP2b-X0hPtOtN2FXiKZ4URHyyZ53Di6T4,29
|
|
335
335
|
ccxt/async_support/zb.py,sha256=W8HHyssjCLTugSRs80TnAwGJl85vp7nyNPOn9RLpXFk,184533
|
336
336
|
ccxt/async_support/zonda.py,sha256=8fLlL4exIr24N0vaf07psLeqNEqhLS2cZj-_VVXsnyM,74375
|
337
337
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
338
|
-
ccxt/async_support/base/exchange.py,sha256=
|
338
|
+
ccxt/async_support/base/exchange.py,sha256=3VsIzG5vcl2ddTTNxwwkFgMkIYQhL1VtFFaV8aVwD28,131065
|
339
339
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
340
340
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
341
341
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=xmlZV30Vb9Kq7JCm3D5FuEmuj1zp5H4F4hrz8-Y-Ir4,4999
|
@@ -349,10 +349,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GH-475Ni0mLOx7mUDnz4jjzaGkh
|
|
349
349
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
350
350
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
351
351
|
ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
|
352
|
-
ccxt/base/exchange.py,sha256=
|
352
|
+
ccxt/base/exchange.py,sha256=sffNGME5Y5ofh207YU3Z2D9qRVczsjizA4aLJjyU7cE,170567
|
353
353
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
354
354
|
ccxt/base/types.py,sha256=8FseQkf_LL-nXdb5LyT6RpDaU8pr3HAI9Jb9Wj_oDN0,1366
|
355
|
-
ccxt/pro/__init__.py,sha256=
|
355
|
+
ccxt/pro/__init__.py,sha256=WQxUEZ07iK1n3R6-Iaq4vfgRX-EvbB3YfYj_dcMcmqo,6463
|
356
356
|
ccxt/pro/alpaca.py,sha256=CmaU0MJq0HiNaYvBHeDJfTa-letDiEQonRON7Q_3W_k,26686
|
357
357
|
ccxt/pro/ascendex.py,sha256=k6rpuiPhj3ipeWRG5vwR22SS4iAzQPe1q1WxJaaucLk,34565
|
358
358
|
ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
|
@@ -462,7 +462,7 @@ ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98
|
|
462
462
|
ccxt/test/base/test_trade.py,sha256=bL9o3S_TGW8Nnlxu-BYkRG8NyRzKAWrU66uO5jJCM3A,2259
|
463
463
|
ccxt/test/base/test_trading_fee.py,sha256=yRCpLHLg_ca9JQXdZB3_pIMHgHLGEfeQF95E6d1e2Bc,1125
|
464
464
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
465
|
-
ccxt-3.1.
|
466
|
-
ccxt-3.1.
|
467
|
-
ccxt-3.1.
|
468
|
-
ccxt-3.1.
|
465
|
+
ccxt-3.1.35.dist-info/METADATA,sha256=k4EuGn83BjgX03mFhTl0x7WHZyzbw0NmGh49LsWr4DU,110521
|
466
|
+
ccxt-3.1.35.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
|
467
|
+
ccxt-3.1.35.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
468
|
+
ccxt-3.1.35.dist-info/RECORD,,
|
File without changes
|
File without changes
|