ccxt 4.3.90__py2.py3-none-any.whl → 4.3.91__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 +1 -1
- ccxt/abstract/binancecoinm.py +1 -1
- ccxt/abstract/binanceus.py +1 -1
- ccxt/abstract/binanceusdm.py +1 -1
- ccxt/abstract/kucoin.py +1 -0
- ccxt/abstract/kucoinfutures.py +1 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +1 -1
- ccxt/async_support/hitbtc.py +1 -0
- ccxt/async_support/kucoin.py +53 -21
- ccxt/async_support/kucoinfutures.py +22 -2
- ccxt/async_support/woo.py +1 -1
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +1 -1
- ccxt/hitbtc.py +1 -0
- ccxt/kucoin.py +53 -21
- ccxt/kucoinfutures.py +22 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/woo.py +1 -1
- {ccxt-4.3.90.dist-info → ccxt-4.3.91.dist-info}/METADATA +4 -4
- {ccxt-4.3.90.dist-info → ccxt-4.3.91.dist-info}/RECORD +26 -26
- {ccxt-4.3.90.dist-info → ccxt-4.3.91.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.90.dist-info → ccxt-4.3.91.dist-info}/WHEEL +0 -0
- {ccxt-4.3.90.dist-info → ccxt-4.3.91.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/binance.py
CHANGED
@@ -89,7 +89,7 @@ class ImplicitAPI:
|
|
89
89
|
sapi_get_capital_deposit_hisrec = sapiGetCapitalDepositHisrec = Entry('capital/deposit/hisrec', 'sapi', 'GET', {'cost': 0.1})
|
90
90
|
sapi_get_capital_deposit_subaddress = sapiGetCapitalDepositSubAddress = Entry('capital/deposit/subAddress', 'sapi', 'GET', {'cost': 0.1})
|
91
91
|
sapi_get_capital_deposit_subhisrec = sapiGetCapitalDepositSubHisrec = Entry('capital/deposit/subHisrec', 'sapi', 'GET', {'cost': 0.1})
|
92
|
-
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost':
|
92
|
+
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost': 2})
|
93
93
|
sapi_get_capital_withdraw_address_list = sapiGetCapitalWithdrawAddressList = Entry('capital/withdraw/address/list', 'sapi', 'GET', {'cost': 10})
|
94
94
|
sapi_get_capital_contract_convertible_coins = sapiGetCapitalContractConvertibleCoins = Entry('capital/contract/convertible-coins', 'sapi', 'GET', {'cost': 4.0002})
|
95
95
|
sapi_get_convert_tradeflow = sapiGetConvertTradeFlow = Entry('convert/tradeFlow', 'sapi', 'GET', {'cost': 20.001})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -89,7 +89,7 @@ class ImplicitAPI:
|
|
89
89
|
sapi_get_capital_deposit_hisrec = sapiGetCapitalDepositHisrec = Entry('capital/deposit/hisrec', 'sapi', 'GET', {'cost': 0.1})
|
90
90
|
sapi_get_capital_deposit_subaddress = sapiGetCapitalDepositSubAddress = Entry('capital/deposit/subAddress', 'sapi', 'GET', {'cost': 0.1})
|
91
91
|
sapi_get_capital_deposit_subhisrec = sapiGetCapitalDepositSubHisrec = Entry('capital/deposit/subHisrec', 'sapi', 'GET', {'cost': 0.1})
|
92
|
-
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost':
|
92
|
+
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost': 2})
|
93
93
|
sapi_get_capital_withdraw_address_list = sapiGetCapitalWithdrawAddressList = Entry('capital/withdraw/address/list', 'sapi', 'GET', {'cost': 10})
|
94
94
|
sapi_get_capital_contract_convertible_coins = sapiGetCapitalContractConvertibleCoins = Entry('capital/contract/convertible-coins', 'sapi', 'GET', {'cost': 4.0002})
|
95
95
|
sapi_get_convert_tradeflow = sapiGetConvertTradeFlow = Entry('convert/tradeFlow', 'sapi', 'GET', {'cost': 20.001})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -89,7 +89,7 @@ class ImplicitAPI:
|
|
89
89
|
sapi_get_capital_deposit_hisrec = sapiGetCapitalDepositHisrec = Entry('capital/deposit/hisrec', 'sapi', 'GET', {'cost': 0.1})
|
90
90
|
sapi_get_capital_deposit_subaddress = sapiGetCapitalDepositSubAddress = Entry('capital/deposit/subAddress', 'sapi', 'GET', {'cost': 0.1})
|
91
91
|
sapi_get_capital_deposit_subhisrec = sapiGetCapitalDepositSubHisrec = Entry('capital/deposit/subHisrec', 'sapi', 'GET', {'cost': 0.1})
|
92
|
-
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost':
|
92
|
+
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost': 2})
|
93
93
|
sapi_get_capital_withdraw_address_list = sapiGetCapitalWithdrawAddressList = Entry('capital/withdraw/address/list', 'sapi', 'GET', {'cost': 10})
|
94
94
|
sapi_get_capital_contract_convertible_coins = sapiGetCapitalContractConvertibleCoins = Entry('capital/contract/convertible-coins', 'sapi', 'GET', {'cost': 4.0002})
|
95
95
|
sapi_get_convert_tradeflow = sapiGetConvertTradeFlow = Entry('convert/tradeFlow', 'sapi', 'GET', {'cost': 20.001})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -89,7 +89,7 @@ class ImplicitAPI:
|
|
89
89
|
sapi_get_capital_deposit_hisrec = sapiGetCapitalDepositHisrec = Entry('capital/deposit/hisrec', 'sapi', 'GET', {'cost': 0.1})
|
90
90
|
sapi_get_capital_deposit_subaddress = sapiGetCapitalDepositSubAddress = Entry('capital/deposit/subAddress', 'sapi', 'GET', {'cost': 0.1})
|
91
91
|
sapi_get_capital_deposit_subhisrec = sapiGetCapitalDepositSubHisrec = Entry('capital/deposit/subHisrec', 'sapi', 'GET', {'cost': 0.1})
|
92
|
-
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost':
|
92
|
+
sapi_get_capital_withdraw_history = sapiGetCapitalWithdrawHistory = Entry('capital/withdraw/history', 'sapi', 'GET', {'cost': 2})
|
93
93
|
sapi_get_capital_withdraw_address_list = sapiGetCapitalWithdrawAddressList = Entry('capital/withdraw/address/list', 'sapi', 'GET', {'cost': 10})
|
94
94
|
sapi_get_capital_contract_convertible_coins = sapiGetCapitalContractConvertibleCoins = Entry('capital/contract/convertible-coins', 'sapi', 'GET', {'cost': 4.0002})
|
95
95
|
sapi_get_convert_tradeflow = sapiGetConvertTradeFlow = Entry('convert/tradeFlow', 'sapi', 'GET', {'cost': 20.001})
|
ccxt/abstract/kucoin.py
CHANGED
@@ -88,6 +88,7 @@ class ImplicitAPI:
|
|
88
88
|
private_get_redeem_orders = privateGetRedeemOrders = Entry('redeem/orders', 'private', 'GET', {'cost': 10})
|
89
89
|
private_get_purchase_orders = privateGetPurchaseOrders = Entry('purchase/orders', 'private', 'GET', {'cost': 10})
|
90
90
|
private_get_broker_api_rebase_download = privateGetBrokerApiRebaseDownload = Entry('broker/api/rebase/download', 'private', 'GET', {'cost': 3})
|
91
|
+
private_get_migrate_user_account_status = privateGetMigrateUserAccountStatus = Entry('migrate/user/account/status', 'private', 'GET', {'cost': 3})
|
91
92
|
private_get_affiliate_inviter_statistics = privateGetAffiliateInviterStatistics = Entry('affiliate/inviter/statistics', 'private', 'GET', {'cost': 30})
|
92
93
|
private_post_sub_user_created = privatePostSubUserCreated = Entry('sub/user/created', 'private', 'POST', {'cost': 22.5})
|
93
94
|
private_post_sub_api_key = privatePostSubApiKey = Entry('sub/api-key', 'private', 'POST', {'cost': 30})
|
ccxt/abstract/kucoinfutures.py
CHANGED
@@ -88,6 +88,7 @@ class ImplicitAPI:
|
|
88
88
|
private_get_redeem_orders = privateGetRedeemOrders = Entry('redeem/orders', 'private', 'GET', {'cost': 10})
|
89
89
|
private_get_purchase_orders = privateGetPurchaseOrders = Entry('purchase/orders', 'private', 'GET', {'cost': 10})
|
90
90
|
private_get_broker_api_rebase_download = privateGetBrokerApiRebaseDownload = Entry('broker/api/rebase/download', 'private', 'GET', {'cost': 3})
|
91
|
+
private_get_migrate_user_account_status = privateGetMigrateUserAccountStatus = Entry('migrate/user/account/status', 'private', 'GET', {'cost': 3})
|
91
92
|
private_get_affiliate_inviter_statistics = privateGetAffiliateInviterStatistics = Entry('affiliate/inviter/statistics', 'private', 'GET', {'cost': 30})
|
92
93
|
private_post_sub_user_created = privatePostSubUserCreated = Entry('sub/user/created', 'private', 'POST', {'cost': 22.5})
|
93
94
|
private_post_sub_api_key = privatePostSubApiKey = Entry('sub/api-key', 'private', 'POST', {'cost': 30})
|
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -354,7 +354,7 @@ class binance(Exchange, ImplicitAPI):
|
|
354
354
|
'capital/deposit/hisrec': 0.1,
|
355
355
|
'capital/deposit/subAddress': 0.1,
|
356
356
|
'capital/deposit/subHisrec': 0.1,
|
357
|
-
'capital/withdraw/history':
|
357
|
+
'capital/withdraw/history': 2, # Weight(UID): 18000 + (Additional: 10 requests per second => cost = ( 1000 / rateLimit ) / 10 = 2
|
358
358
|
'capital/withdraw/address/list': 10,
|
359
359
|
'capital/contract/convertible-coins': 4.0002, # Weight(UID): 600 => cost = 0.006667 * 600 = 4.0002
|
360
360
|
'convert/tradeFlow': 20.001, # Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
|
ccxt/async_support/hitbtc.py
CHANGED
ccxt/async_support/kucoin.py
CHANGED
@@ -9,7 +9,7 @@ import asyncio
|
|
9
9
|
import hashlib
|
10
10
|
import math
|
11
11
|
import json
|
12
|
-
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
12
|
+
from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
13
13
|
from typing import List
|
14
14
|
from ccxt.base.errors import ExchangeError
|
15
15
|
from ccxt.base.errors import AuthenticationError
|
@@ -261,6 +261,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
261
261
|
'purchase/orders': 10, # 10SW
|
262
262
|
# broker
|
263
263
|
'broker/api/rebase/download': 3,
|
264
|
+
'migrate/user/account/status': 3,
|
264
265
|
# affiliate
|
265
266
|
'affiliate/inviter/statistics': 30,
|
266
267
|
},
|
@@ -705,6 +706,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
705
706
|
'project/marketInterestRate': 'v3',
|
706
707
|
'redeem/orders': 'v3',
|
707
708
|
'purchase/orders': 'v3',
|
709
|
+
'migrate/user/account/status': 'v3',
|
708
710
|
'margin/symbols': 'v3',
|
709
711
|
'affiliate/inviter/statistics': 'v2',
|
710
712
|
'asset/ndbroker/deposit/list': 'v1',
|
@@ -1219,6 +1221,26 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1219
1221
|
})
|
1220
1222
|
return result
|
1221
1223
|
|
1224
|
+
async def load_migration_status(self, force: bool = False):
|
1225
|
+
if not ('hfMigrated' in self.options) or force:
|
1226
|
+
result: dict = await self.privateGetMigrateUserAccountStatus()
|
1227
|
+
data: dict = self.safe_dict(result, 'data', {})
|
1228
|
+
status: Int = self.safe_integer(data, 'status')
|
1229
|
+
self.options['hfMigrated'] = (status == 2)
|
1230
|
+
|
1231
|
+
async def handle_hf_and_params(self, params={}):
|
1232
|
+
await self.load_migration_status()
|
1233
|
+
migrated: Bool = self.safe_bool(self.options, 'hfMigrated')
|
1234
|
+
loadedHf: Bool = None
|
1235
|
+
if migrated is not None:
|
1236
|
+
if migrated:
|
1237
|
+
loadedHf = True
|
1238
|
+
else:
|
1239
|
+
loadedHf = False
|
1240
|
+
hf: Bool = self.safe_bool(params, 'hf', loadedHf)
|
1241
|
+
params = self.omit(params, 'hf')
|
1242
|
+
return [hf, params]
|
1243
|
+
|
1222
1244
|
async def fetch_currencies(self, params={}) -> Currencies:
|
1223
1245
|
"""
|
1224
1246
|
fetches all available currencies on an exchange
|
@@ -2042,7 +2064,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2042
2064
|
market = self.market(symbol)
|
2043
2065
|
testOrder = self.safe_bool(params, 'test', False)
|
2044
2066
|
params = self.omit(params, 'test')
|
2045
|
-
|
2067
|
+
hf = None
|
2068
|
+
hf, params = await self.handle_hf_and_params(params)
|
2046
2069
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2047
2070
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2048
2071
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2055,14 +2078,16 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2055
2078
|
if testOrder:
|
2056
2079
|
if isMarginOrder:
|
2057
2080
|
response = await self.privatePostMarginOrderTest(orderRequest)
|
2081
|
+
elif hf:
|
2082
|
+
response = await self.privatePostHfOrdersTest(orderRequest)
|
2058
2083
|
else:
|
2059
2084
|
response = await self.privatePostOrdersTest(orderRequest)
|
2060
|
-
elif isHf:
|
2061
|
-
response = await self.privatePostHfOrders(orderRequest)
|
2062
2085
|
elif isTriggerOrder:
|
2063
2086
|
response = await self.privatePostStopOrder(orderRequest)
|
2064
2087
|
elif isMarginOrder:
|
2065
2088
|
response = await self.privatePostMarginOrder(orderRequest)
|
2089
|
+
elif hf:
|
2090
|
+
response = await self.privatePostHfOrders(orderRequest)
|
2066
2091
|
else:
|
2067
2092
|
response = await self.privatePostOrders(orderRequest)
|
2068
2093
|
#
|
@@ -2149,8 +2174,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2149
2174
|
'symbol': market['id'],
|
2150
2175
|
'orderList': ordersRequests,
|
2151
2176
|
}
|
2152
|
-
hf =
|
2153
|
-
params = self.
|
2177
|
+
hf = None
|
2178
|
+
hf, params = await self.handle_hf_and_params(params)
|
2154
2179
|
response = None
|
2155
2180
|
if hf:
|
2156
2181
|
response = await self.privatePostHfOrdersMulti(self.extend(request, params))
|
@@ -2314,14 +2339,15 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2314
2339
|
request: dict = {}
|
2315
2340
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2316
2341
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2317
|
-
hf =
|
2342
|
+
hf = None
|
2343
|
+
hf, params = await self.handle_hf_and_params(params)
|
2318
2344
|
if hf:
|
2319
2345
|
if symbol is None:
|
2320
2346
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2321
2347
|
market = self.market(symbol)
|
2322
2348
|
request['symbol'] = market['id']
|
2323
2349
|
response = None
|
2324
|
-
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', '
|
2350
|
+
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', 'trigger'])
|
2325
2351
|
if clientOrderId is not None:
|
2326
2352
|
request['clientOid'] = clientOrderId
|
2327
2353
|
if stop:
|
@@ -2415,8 +2441,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2415
2441
|
await self.load_markets()
|
2416
2442
|
request: dict = {}
|
2417
2443
|
stop = self.safe_bool(params, 'stop', False)
|
2418
|
-
hf =
|
2419
|
-
params = self.
|
2444
|
+
hf = None
|
2445
|
+
hf, params = await self.handle_hf_and_params(params)
|
2446
|
+
params = self.omit(params, 'stop')
|
2420
2447
|
marginMode, query = self.handle_margin_mode_and_params('cancelAllOrders', params)
|
2421
2448
|
if symbol is not None:
|
2422
2449
|
request['symbol'] = self.market_id(symbol)
|
@@ -2463,8 +2490,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2463
2490
|
lowercaseStatus = status.lower()
|
2464
2491
|
until = self.safe_integer(params, 'until')
|
2465
2492
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2466
|
-
hf =
|
2467
|
-
params = self.
|
2493
|
+
hf = None
|
2494
|
+
hf, params = await self.handle_hf_and_params(params)
|
2495
|
+
if hf and (symbol is None):
|
2496
|
+
raise ArgumentsRequired(self.id + ' fetchOrdersByStatus() requires a symbol parameter for hf orders')
|
2497
|
+
params = self.omit(params, ['stop', 'trigger', 'till', 'until'])
|
2468
2498
|
marginMode, query = self.handle_margin_mode_and_params('fetchOrdersByStatus', params)
|
2469
2499
|
if lowercaseStatus == 'open':
|
2470
2500
|
lowercaseStatus = 'active'
|
@@ -2622,7 +2652,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2622
2652
|
request: dict = {}
|
2623
2653
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2624
2654
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2625
|
-
hf =
|
2655
|
+
hf = None
|
2656
|
+
hf, params = await self.handle_hf_and_params(params)
|
2626
2657
|
market = None
|
2627
2658
|
if symbol is not None:
|
2628
2659
|
market = self.market(symbol)
|
@@ -2630,7 +2661,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2630
2661
|
if symbol is None:
|
2631
2662
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol parameter for hf orders')
|
2632
2663
|
request['symbol'] = market['id']
|
2633
|
-
params = self.omit(params, ['stop', '
|
2664
|
+
params = self.omit(params, ['stop', 'clientOid', 'clientOrderId', 'trigger'])
|
2634
2665
|
response = None
|
2635
2666
|
if clientOrderId is not None:
|
2636
2667
|
request['clientOid'] = clientOrderId
|
@@ -2872,7 +2903,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2872
2903
|
if paginate:
|
2873
2904
|
return await self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params)
|
2874
2905
|
request: dict = {}
|
2875
|
-
hf =
|
2906
|
+
hf = None
|
2907
|
+
hf, params = await self.handle_hf_and_params(params)
|
2876
2908
|
if hf and symbol is None:
|
2877
2909
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol parameter for hf orders')
|
2878
2910
|
market = None
|
@@ -3544,10 +3576,10 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3544
3576
|
accountsByType = self.safe_dict(self.options, 'accountsByType')
|
3545
3577
|
type = self.safe_string(accountsByType, requestedType, requestedType)
|
3546
3578
|
params = self.omit(params, 'type')
|
3547
|
-
|
3548
|
-
|
3579
|
+
hf = None
|
3580
|
+
hf, params = await self.handle_hf_and_params(params)
|
3581
|
+
if hf:
|
3549
3582
|
type = 'trade_hf'
|
3550
|
-
params = self.omit(params, 'hf')
|
3551
3583
|
marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
|
3552
3584
|
response = None
|
3553
3585
|
request: dict = {}
|
@@ -3973,8 +4005,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3973
4005
|
await self.load_accounts()
|
3974
4006
|
paginate = False
|
3975
4007
|
paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
|
3976
|
-
|
3977
|
-
params = self.
|
4008
|
+
hf = None
|
4009
|
+
hf, params = await self.handle_hf_and_params(params)
|
3978
4010
|
if paginate:
|
3979
4011
|
return await self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
|
3980
4012
|
request: dict = {
|
@@ -3995,7 +4027,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3995
4027
|
marginMode = None
|
3996
4028
|
marginMode, params = self.handle_margin_mode_and_params('fetchLedger', params)
|
3997
4029
|
response = None
|
3998
|
-
if
|
4030
|
+
if hf:
|
3999
4031
|
if marginMode is not None:
|
4000
4032
|
response = await self.privateGetHfMarginAccountLedgers(self.extend(request, params))
|
4001
4033
|
else:
|
@@ -61,6 +61,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
61
61
|
'createTriggerOrder': True,
|
62
62
|
'fetchAccounts': True,
|
63
63
|
'fetchBalance': True,
|
64
|
+
'fetchBidsAsks': True,
|
64
65
|
'fetchBorrowRateHistories': False,
|
65
66
|
'fetchBorrowRateHistory': False,
|
66
67
|
'fetchClosedOrders': True,
|
@@ -752,11 +753,18 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
752
753
|
:see: https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
|
753
754
|
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
754
755
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
756
|
+
:param str [params.method]: the method to use, futuresPublicGetAllTickers or futuresPublicGetContractsActive
|
755
757
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
756
758
|
"""
|
757
759
|
await self.load_markets()
|
758
760
|
symbols = self.market_symbols(symbols)
|
759
|
-
|
761
|
+
method = None
|
762
|
+
method, params = self.handle_option_and_params(params, 'fetchTickers', 'method', 'futuresPublicGetContractsActive')
|
763
|
+
response: dict = None
|
764
|
+
if method == 'futuresPublicGetAllTickers':
|
765
|
+
response = await self.futuresPublicGetAllTickers(params)
|
766
|
+
else:
|
767
|
+
response = await self.futuresPublicGetContractsActive(params)
|
760
768
|
#
|
761
769
|
# {
|
762
770
|
# "code": "200000",
|
@@ -819,7 +827,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
819
827
|
# }
|
820
828
|
# }
|
821
829
|
#
|
822
|
-
data = self.safe_list(response, 'data'
|
830
|
+
data = self.safe_list(response, 'data')
|
823
831
|
tickers = self.parse_tickers(data, symbols)
|
824
832
|
return self.filter_by_array_tickers(tickers, 'symbol', symbols)
|
825
833
|
|
@@ -929,6 +937,18 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
929
937
|
'info': ticker,
|
930
938
|
}, market)
|
931
939
|
|
940
|
+
async def fetch_bids_asks(self, symbols: Strings = None, params={}):
|
941
|
+
"""
|
942
|
+
fetches the bid and ask price and volume for multiple markets
|
943
|
+
:param str[] [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
|
944
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
945
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
946
|
+
"""
|
947
|
+
request = {
|
948
|
+
'method': 'futuresPublicGetAllTickers',
|
949
|
+
}
|
950
|
+
return await self.fetch_tickers(symbols, self.extend(request, params))
|
951
|
+
|
932
952
|
async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
933
953
|
"""
|
934
954
|
fetch the history of funding payments paid and received on self account
|
ccxt/async_support/woo.py
CHANGED
ccxt/base/exchange.py
CHANGED
ccxt/binance.py
CHANGED
@@ -353,7 +353,7 @@ class binance(Exchange, ImplicitAPI):
|
|
353
353
|
'capital/deposit/hisrec': 0.1,
|
354
354
|
'capital/deposit/subAddress': 0.1,
|
355
355
|
'capital/deposit/subHisrec': 0.1,
|
356
|
-
'capital/withdraw/history':
|
356
|
+
'capital/withdraw/history': 2, # Weight(UID): 18000 + (Additional: 10 requests per second => cost = ( 1000 / rateLimit ) / 10 = 2
|
357
357
|
'capital/withdraw/address/list': 10,
|
358
358
|
'capital/contract/convertible-coins': 4.0002, # Weight(UID): 600 => cost = 0.006667 * 600 = 4.0002
|
359
359
|
'convert/tradeFlow': 20.001, # Weight(UID): 3000 => cost = 0.006667 * 3000 = 20.001
|
ccxt/hitbtc.py
CHANGED
ccxt/kucoin.py
CHANGED
@@ -8,7 +8,7 @@ from ccxt.abstract.kucoin import ImplicitAPI
|
|
8
8
|
import hashlib
|
9
9
|
import math
|
10
10
|
import json
|
11
|
-
from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
11
|
+
from ccxt.base.types import Account, Balances, Bool, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
|
12
12
|
from typing import List
|
13
13
|
from ccxt.base.errors import ExchangeError
|
14
14
|
from ccxt.base.errors import AuthenticationError
|
@@ -260,6 +260,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
260
260
|
'purchase/orders': 10, # 10SW
|
261
261
|
# broker
|
262
262
|
'broker/api/rebase/download': 3,
|
263
|
+
'migrate/user/account/status': 3,
|
263
264
|
# affiliate
|
264
265
|
'affiliate/inviter/statistics': 30,
|
265
266
|
},
|
@@ -704,6 +705,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
704
705
|
'project/marketInterestRate': 'v3',
|
705
706
|
'redeem/orders': 'v3',
|
706
707
|
'purchase/orders': 'v3',
|
708
|
+
'migrate/user/account/status': 'v3',
|
707
709
|
'margin/symbols': 'v3',
|
708
710
|
'affiliate/inviter/statistics': 'v2',
|
709
711
|
'asset/ndbroker/deposit/list': 'v1',
|
@@ -1218,6 +1220,26 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1218
1220
|
})
|
1219
1221
|
return result
|
1220
1222
|
|
1223
|
+
def load_migration_status(self, force: bool = False):
|
1224
|
+
if not ('hfMigrated' in self.options) or force:
|
1225
|
+
result: dict = self.privateGetMigrateUserAccountStatus()
|
1226
|
+
data: dict = self.safe_dict(result, 'data', {})
|
1227
|
+
status: Int = self.safe_integer(data, 'status')
|
1228
|
+
self.options['hfMigrated'] = (status == 2)
|
1229
|
+
|
1230
|
+
def handle_hf_and_params(self, params={}):
|
1231
|
+
self.load_migration_status()
|
1232
|
+
migrated: Bool = self.safe_bool(self.options, 'hfMigrated')
|
1233
|
+
loadedHf: Bool = None
|
1234
|
+
if migrated is not None:
|
1235
|
+
if migrated:
|
1236
|
+
loadedHf = True
|
1237
|
+
else:
|
1238
|
+
loadedHf = False
|
1239
|
+
hf: Bool = self.safe_bool(params, 'hf', loadedHf)
|
1240
|
+
params = self.omit(params, 'hf')
|
1241
|
+
return [hf, params]
|
1242
|
+
|
1221
1243
|
def fetch_currencies(self, params={}) -> Currencies:
|
1222
1244
|
"""
|
1223
1245
|
fetches all available currencies on an exchange
|
@@ -2041,7 +2063,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2041
2063
|
market = self.market(symbol)
|
2042
2064
|
testOrder = self.safe_bool(params, 'test', False)
|
2043
2065
|
params = self.omit(params, 'test')
|
2044
|
-
|
2066
|
+
hf = None
|
2067
|
+
hf, params = self.handle_hf_and_params(params)
|
2045
2068
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2046
2069
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2047
2070
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2054,14 +2077,16 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2054
2077
|
if testOrder:
|
2055
2078
|
if isMarginOrder:
|
2056
2079
|
response = self.privatePostMarginOrderTest(orderRequest)
|
2080
|
+
elif hf:
|
2081
|
+
response = self.privatePostHfOrdersTest(orderRequest)
|
2057
2082
|
else:
|
2058
2083
|
response = self.privatePostOrdersTest(orderRequest)
|
2059
|
-
elif isHf:
|
2060
|
-
response = self.privatePostHfOrders(orderRequest)
|
2061
2084
|
elif isTriggerOrder:
|
2062
2085
|
response = self.privatePostStopOrder(orderRequest)
|
2063
2086
|
elif isMarginOrder:
|
2064
2087
|
response = self.privatePostMarginOrder(orderRequest)
|
2088
|
+
elif hf:
|
2089
|
+
response = self.privatePostHfOrders(orderRequest)
|
2065
2090
|
else:
|
2066
2091
|
response = self.privatePostOrders(orderRequest)
|
2067
2092
|
#
|
@@ -2148,8 +2173,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2148
2173
|
'symbol': market['id'],
|
2149
2174
|
'orderList': ordersRequests,
|
2150
2175
|
}
|
2151
|
-
hf =
|
2152
|
-
params = self.
|
2176
|
+
hf = None
|
2177
|
+
hf, params = self.handle_hf_and_params(params)
|
2153
2178
|
response = None
|
2154
2179
|
if hf:
|
2155
2180
|
response = self.privatePostHfOrdersMulti(self.extend(request, params))
|
@@ -2313,14 +2338,15 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2313
2338
|
request: dict = {}
|
2314
2339
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2315
2340
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2316
|
-
hf =
|
2341
|
+
hf = None
|
2342
|
+
hf, params = self.handle_hf_and_params(params)
|
2317
2343
|
if hf:
|
2318
2344
|
if symbol is None:
|
2319
2345
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2320
2346
|
market = self.market(symbol)
|
2321
2347
|
request['symbol'] = market['id']
|
2322
2348
|
response = None
|
2323
|
-
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', '
|
2349
|
+
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', 'trigger'])
|
2324
2350
|
if clientOrderId is not None:
|
2325
2351
|
request['clientOid'] = clientOrderId
|
2326
2352
|
if stop:
|
@@ -2414,8 +2440,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2414
2440
|
self.load_markets()
|
2415
2441
|
request: dict = {}
|
2416
2442
|
stop = self.safe_bool(params, 'stop', False)
|
2417
|
-
hf =
|
2418
|
-
params = self.
|
2443
|
+
hf = None
|
2444
|
+
hf, params = self.handle_hf_and_params(params)
|
2445
|
+
params = self.omit(params, 'stop')
|
2419
2446
|
marginMode, query = self.handle_margin_mode_and_params('cancelAllOrders', params)
|
2420
2447
|
if symbol is not None:
|
2421
2448
|
request['symbol'] = self.market_id(symbol)
|
@@ -2462,8 +2489,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2462
2489
|
lowercaseStatus = status.lower()
|
2463
2490
|
until = self.safe_integer(params, 'until')
|
2464
2491
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2465
|
-
hf =
|
2466
|
-
params = self.
|
2492
|
+
hf = None
|
2493
|
+
hf, params = self.handle_hf_and_params(params)
|
2494
|
+
if hf and (symbol is None):
|
2495
|
+
raise ArgumentsRequired(self.id + ' fetchOrdersByStatus() requires a symbol parameter for hf orders')
|
2496
|
+
params = self.omit(params, ['stop', 'trigger', 'till', 'until'])
|
2467
2497
|
marginMode, query = self.handle_margin_mode_and_params('fetchOrdersByStatus', params)
|
2468
2498
|
if lowercaseStatus == 'open':
|
2469
2499
|
lowercaseStatus = 'active'
|
@@ -2621,7 +2651,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2621
2651
|
request: dict = {}
|
2622
2652
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2623
2653
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2624
|
-
hf =
|
2654
|
+
hf = None
|
2655
|
+
hf, params = self.handle_hf_and_params(params)
|
2625
2656
|
market = None
|
2626
2657
|
if symbol is not None:
|
2627
2658
|
market = self.market(symbol)
|
@@ -2629,7 +2660,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2629
2660
|
if symbol is None:
|
2630
2661
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol parameter for hf orders')
|
2631
2662
|
request['symbol'] = market['id']
|
2632
|
-
params = self.omit(params, ['stop', '
|
2663
|
+
params = self.omit(params, ['stop', 'clientOid', 'clientOrderId', 'trigger'])
|
2633
2664
|
response = None
|
2634
2665
|
if clientOrderId is not None:
|
2635
2666
|
request['clientOid'] = clientOrderId
|
@@ -2871,7 +2902,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2871
2902
|
if paginate:
|
2872
2903
|
return self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params)
|
2873
2904
|
request: dict = {}
|
2874
|
-
hf =
|
2905
|
+
hf = None
|
2906
|
+
hf, params = self.handle_hf_and_params(params)
|
2875
2907
|
if hf and symbol is None:
|
2876
2908
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol parameter for hf orders')
|
2877
2909
|
market = None
|
@@ -3543,10 +3575,10 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3543
3575
|
accountsByType = self.safe_dict(self.options, 'accountsByType')
|
3544
3576
|
type = self.safe_string(accountsByType, requestedType, requestedType)
|
3545
3577
|
params = self.omit(params, 'type')
|
3546
|
-
|
3547
|
-
|
3578
|
+
hf = None
|
3579
|
+
hf, params = self.handle_hf_and_params(params)
|
3580
|
+
if hf:
|
3548
3581
|
type = 'trade_hf'
|
3549
|
-
params = self.omit(params, 'hf')
|
3550
3582
|
marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
|
3551
3583
|
response = None
|
3552
3584
|
request: dict = {}
|
@@ -3972,8 +4004,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3972
4004
|
self.load_accounts()
|
3973
4005
|
paginate = False
|
3974
4006
|
paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
|
3975
|
-
|
3976
|
-
params = self.
|
4007
|
+
hf = None
|
4008
|
+
hf, params = self.handle_hf_and_params(params)
|
3977
4009
|
if paginate:
|
3978
4010
|
return self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
|
3979
4011
|
request: dict = {
|
@@ -3994,7 +4026,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3994
4026
|
marginMode = None
|
3995
4027
|
marginMode, params = self.handle_margin_mode_and_params('fetchLedger', params)
|
3996
4028
|
response = None
|
3997
|
-
if
|
4029
|
+
if hf:
|
3998
4030
|
if marginMode is not None:
|
3999
4031
|
response = self.privateGetHfMarginAccountLedgers(self.extend(request, params))
|
4000
4032
|
else:
|
ccxt/kucoinfutures.py
CHANGED
@@ -61,6 +61,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
61
61
|
'createTriggerOrder': True,
|
62
62
|
'fetchAccounts': True,
|
63
63
|
'fetchBalance': True,
|
64
|
+
'fetchBidsAsks': True,
|
64
65
|
'fetchBorrowRateHistories': False,
|
65
66
|
'fetchBorrowRateHistory': False,
|
66
67
|
'fetchClosedOrders': True,
|
@@ -752,11 +753,18 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
752
753
|
:see: https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
|
753
754
|
:param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
|
754
755
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
756
|
+
:param str [params.method]: the method to use, futuresPublicGetAllTickers or futuresPublicGetContractsActive
|
755
757
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
756
758
|
"""
|
757
759
|
self.load_markets()
|
758
760
|
symbols = self.market_symbols(symbols)
|
759
|
-
|
761
|
+
method = None
|
762
|
+
method, params = self.handle_option_and_params(params, 'fetchTickers', 'method', 'futuresPublicGetContractsActive')
|
763
|
+
response: dict = None
|
764
|
+
if method == 'futuresPublicGetAllTickers':
|
765
|
+
response = self.futuresPublicGetAllTickers(params)
|
766
|
+
else:
|
767
|
+
response = self.futuresPublicGetContractsActive(params)
|
760
768
|
#
|
761
769
|
# {
|
762
770
|
# "code": "200000",
|
@@ -819,7 +827,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
819
827
|
# }
|
820
828
|
# }
|
821
829
|
#
|
822
|
-
data = self.safe_list(response, 'data'
|
830
|
+
data = self.safe_list(response, 'data')
|
823
831
|
tickers = self.parse_tickers(data, symbols)
|
824
832
|
return self.filter_by_array_tickers(tickers, 'symbol', symbols)
|
825
833
|
|
@@ -929,6 +937,18 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
929
937
|
'info': ticker,
|
930
938
|
}, market)
|
931
939
|
|
940
|
+
def fetch_bids_asks(self, symbols: Strings = None, params={}):
|
941
|
+
"""
|
942
|
+
fetches the bid and ask price and volume for multiple markets
|
943
|
+
:param str[] [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
|
944
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
945
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
946
|
+
"""
|
947
|
+
request = {
|
948
|
+
'method': 'futuresPublicGetAllTickers',
|
949
|
+
}
|
950
|
+
return self.fetch_tickers(symbols, self.extend(request, params))
|
951
|
+
|
932
952
|
def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
933
953
|
"""
|
934
954
|
fetch the history of funding payments paid and received on self account
|
ccxt/pro/__init__.py
CHANGED
ccxt/woo.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.91
|
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.3.
|
276
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
275
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.91/dist/ccxt.browser.min.js
|
276
|
+
* unpkg: https://unpkg.com/ccxt@4.3.91/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.3.
|
281
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.91/dist/ccxt.browser.min.js"></script>
|
282
282
|
```
|
283
283
|
|
284
284
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=Y5FEK0UzSYC0XHLqsNWPF_KuT3E116wGrdbhK1LR2EQ,16681
|
2
2
|
ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
|
3
3
|
ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
|
4
4
|
ccxt/ascendex.py,sha256=RCJrO6WUMycfZZsiok9DG3KWpHOeImbZcFNI-AX98k4,151336
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=RiEDQutD2BtvKfwVvAo2T9_DPqr0oa6ZJFDXph_g1UI,93122
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=T42ws9X4TMWJ5b5B51OkUuisRz1-5GKDmNaEa10YShE,641455
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
@@ -60,7 +60,7 @@ ccxt/gate.py,sha256=dlKwcUQOvriaUmopMaF4BiziBTFdIoaEgt3-LKS8lk8,327645
|
|
60
60
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
61
61
|
ccxt/gemini.py,sha256=ddoOnPZzu-l899JGVw4b9wwT9HI20mVqLz7iihhZxng,80876
|
62
62
|
ccxt/hashkey.py,sha256=AfbhV_QCW31jzy8BFPnmGdhWfXz4WILIl-qh3jB4ZMc,191738
|
63
|
-
ccxt/hitbtc.py,sha256=
|
63
|
+
ccxt/hitbtc.py,sha256=5peKNygeAdvaH4GZ7mQebFQKcjN2N7S9GL7HhMLYd5g,153469
|
64
64
|
ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
|
65
65
|
ccxt/hollaex.py,sha256=2KIbenZ3vcBDN_rs2CxG5_foKLaYxJd73vVV7M8n_8E,76140
|
66
66
|
ccxt/htx.py,sha256=X4A5SVzO1wPzbxK5OHG_u67ewOqj-xtb5YIkl1tSG_c,427883
|
@@ -72,8 +72,8 @@ ccxt/independentreserve.py,sha256=ChkSnahGsn0aN_cfaAonSk-V2Aa1UB-0cPTa1d3AdI4,37
|
|
72
72
|
ccxt/indodax.py,sha256=VdTGxm49I6s-DhT0H1NLFVJ1XYaDWpq51jP2tyK68Ks,54580
|
73
73
|
ccxt/kraken.py,sha256=DMy-Lncp9zYsid59O7cn3OLlCIT4Nf1BQa_kqM5dSJM,133417
|
74
74
|
ccxt/krakenfutures.py,sha256=_-bbgzshifKnbyOB1pSs_bRfRepkRAdiDlsLDRiAw9w,119597
|
75
|
-
ccxt/kucoin.py,sha256=
|
76
|
-
ccxt/kucoinfutures.py,sha256=
|
75
|
+
ccxt/kucoin.py,sha256=bT9G77OoeU7FNIkgZurlEkN0QZv7Ao1l_rykblEOiGk,227949
|
76
|
+
ccxt/kucoinfutures.py,sha256=KNh4biqkvaVzgQ2DGUTnNf5853iwF628jKWk3rdOcB4,125860
|
77
77
|
ccxt/kuna.py,sha256=GnIMk8R_IL84FTUHDNP6jHxd2FKNX9YwfoCXoYG83uA,96157
|
78
78
|
ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
|
79
79
|
ccxt/lbank.py,sha256=Glx9CN_jdQMiUngJLYioxzwDfgFTdusdOfK53_Bg6A8,116045
|
@@ -103,7 +103,7 @@ ccxt/vertex.py,sha256=r-ucPKA3DKb4Ke7u-OJxAXkHIS_ysF357R5-9dcYFHI,121797
|
|
103
103
|
ccxt/wavesexchange.py,sha256=vmzv9h1QjthvpKUGajQn_tdCJ5tWmzEA6r7ow_y6ASY,114980
|
104
104
|
ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
|
105
105
|
ccxt/whitebit.py,sha256=nm-FIOgvB35irrJ078mtvLki-cZ_V4aRT0B8z2rjMbU,119428
|
106
|
-
ccxt/woo.py,sha256=
|
106
|
+
ccxt/woo.py,sha256=u7tYOD7NQVkeP0ypXiE5YeAZpI-RtELHL_fdkkD6qEU,153219
|
107
107
|
ccxt/woofipro.py,sha256=bOytP6GTDdJ7JDEdGYOx3RFQhx_zySNNHexf_0MyUcc,115500
|
108
108
|
ccxt/xt.py,sha256=a9f_Oq5KyDdytyCqW15jjXXdHGumbZwCqutt8cbfsPo,202616
|
109
109
|
ccxt/yobit.py,sha256=NeQpnOTzkjRKj5gVfI-riru5cNltagRH-DSfEEfByLw,54584
|
@@ -115,10 +115,10 @@ ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
|
|
115
115
|
ccxt/abstract/ascendex.py,sha256=5A8Zgq77jsdHlEzlTW_2nDybUUVfNVVOu6BgY3TWqRM,11394
|
116
116
|
ccxt/abstract/bequant.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,15601
|
117
117
|
ccxt/abstract/bigone.py,sha256=bQdIXCVkKgnZ7ZjpQ1widGDlXNe0PtP_12EQKoEN9z0,4895
|
118
|
-
ccxt/abstract/binance.py,sha256=
|
119
|
-
ccxt/abstract/binancecoinm.py,sha256=
|
120
|
-
ccxt/abstract/binanceus.py,sha256=
|
121
|
-
ccxt/abstract/binanceusdm.py,sha256=
|
118
|
+
ccxt/abstract/binance.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
|
119
|
+
ccxt/abstract/binancecoinm.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
|
120
|
+
ccxt/abstract/binanceus.py,sha256=n-8Ibbj-b4ZYZIgN0ieqyDnOOf9CAAOlT9_kE4r10u4,100457
|
121
|
+
ccxt/abstract/binanceusdm.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
|
122
122
|
ccxt/abstract/bingx.py,sha256=Rb93j2sCYAi0egAE4TAAOG7XuC5XdHQaGQZC9V-meqQ,20662
|
123
123
|
ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
|
124
124
|
ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
|
@@ -183,8 +183,8 @@ ccxt/abstract/independentreserve.py,sha256=Cue0hud5acRs2Q6oSvQ7Rx-YWS_fuACs6uV3a
|
|
183
183
|
ccxt/abstract/indodax.py,sha256=E16v8W6Ac9kmV9hFEqf_kwV6VQmK74lc1LEUEkuDpYg,2488
|
184
184
|
ccxt/abstract/kraken.py,sha256=AUpdQHWHZFXseHNx1-cuLqRutYwYEUVqQ7mjc0TQR_s,5883
|
185
185
|
ccxt/abstract/krakenfutures.py,sha256=pu81cKhQgBkQd8F9-Ly3b7xQD-qQ8WLi8EUMfmAUJcM,4080
|
186
|
-
ccxt/abstract/kucoin.py,sha256=
|
187
|
-
ccxt/abstract/kucoinfutures.py,sha256=
|
186
|
+
ccxt/abstract/kucoin.py,sha256=4LLJ8vPaUZ18ZxlriZvI_t42r22TWy3EEG8BLUQUsWo,28250
|
187
|
+
ccxt/abstract/kucoinfutures.py,sha256=GA8Y3be8bZUdOqh23r-m0YGBZ-4OKHY6y1D2LVCLKeQ,31220
|
188
188
|
ccxt/abstract/kuna.py,sha256=IsaLq8A4DUOlQ8Esyk0WqBU6hHm5Q4sIqhgnMIvDGX0,24579
|
189
189
|
ccxt/abstract/latoken.py,sha256=1GqE9WxrubgZILnYvg7W_dGyui-FKeIv0bU4z1dQj1k,7168
|
190
190
|
ccxt/abstract/lbank.py,sha256=pdut_cIcwcUhN_ZCyWJxixBc4dgeQqvENYqFCrUYrvA,8675
|
@@ -220,13 +220,13 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
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=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
223
|
-
ccxt/async_support/__init__.py,sha256=
|
223
|
+
ccxt/async_support/__init__.py,sha256=ukkbbxXBUosrmS1wcyfqpD7YdYh0ZEhatZBe13J3III,16504
|
224
224
|
ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
|
225
225
|
ccxt/async_support/alpaca.py,sha256=HxonsP_MzbE7Z9r6hZ1rgmf_jPcP4H7H3z1YQgCv4qc,47716
|
226
226
|
ccxt/async_support/ascendex.py,sha256=PIgHokT4gFPEUaoi_ze2T0qgu6vEs8SytRG9ocM3r7M,152124
|
227
227
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
228
228
|
ccxt/async_support/bigone.py,sha256=A7AjX0iWl2twYRwOc-2tKUbnI4KNmO2QVetMaAJujpg,93576
|
229
|
-
ccxt/async_support/binance.py,sha256=
|
229
|
+
ccxt/async_support/binance.py,sha256=mdKkkKttukXBVIi6XMdT1naJqRss9UJrUB_j8hZvD44,644189
|
230
230
|
ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
|
231
231
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
232
232
|
ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
|
@@ -282,7 +282,7 @@ ccxt/async_support/gate.py,sha256=Y4dVM0if4e3a3uG_Wgj10t4oWRBHdjt-0Sp0v3yIWNg,32
|
|
282
282
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
283
283
|
ccxt/async_support/gemini.py,sha256=7X5-PE3rPrPycUVXu3FtAcDFjNR3QUwYd6lPRQYQeEw,81389
|
284
284
|
ccxt/async_support/hashkey.py,sha256=bwQsEvhGU60iy_vlAbLvtx1blhDxS4L3cqoTpk6JNQ8,192580
|
285
|
-
ccxt/async_support/hitbtc.py,sha256=
|
285
|
+
ccxt/async_support/hitbtc.py,sha256=h3HTN7Z5glikA3YRunBQun0Tp1QVqiBQz4WWzZKRLdk,154515
|
286
286
|
ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
|
287
287
|
ccxt/async_support/hollaex.py,sha256=msUnnbWLNeCxFW77BnfLoFWBdvQIDwV7Rtbi9TA4TYY,76574
|
288
288
|
ccxt/async_support/htx.py,sha256=pPdetpi1Y2bHxNIXrFO9VDgMOra0v8Y2hggVbe2Qzdk,430275
|
@@ -294,8 +294,8 @@ ccxt/async_support/independentreserve.py,sha256=fCTAQ1U74KOZHIoYbDxzEly1xSgykcYc
|
|
294
294
|
ccxt/async_support/indodax.py,sha256=S4qV7w3gMTRLnzahoCKR70oeRlpxOV3mXDdJw8XpIo8,54888
|
295
295
|
ccxt/async_support/kraken.py,sha256=aDndekk6rCIyASRAjJNg1oNzxcProwA1ezZ7ftKLOY8,134067
|
296
296
|
ccxt/async_support/krakenfutures.py,sha256=stPhBne9pFVlgFkw4mwqtaaI6NTZCAcmOIFVlQSbl8I,120085
|
297
|
-
ccxt/async_support/kucoin.py,sha256=
|
298
|
-
ccxt/async_support/kucoinfutures.py,sha256=
|
297
|
+
ccxt/async_support/kucoin.py,sha256=t_3MPNvPTSZ34MTBoG6i9lrOd7-Dc8uDxZcss-EXLJg,229134
|
298
|
+
ccxt/async_support/kucoinfutures.py,sha256=a2oRhfH61LsSnhSlhwSJM7yRUUsegkmQenOa_nPwHuA,126516
|
299
299
|
ccxt/async_support/kuna.py,sha256=QtzLgqgv8mLXECN2drWNVtdvm_vy-bawdxKvozDzbVE,96573
|
300
300
|
ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
|
301
301
|
ccxt/async_support/lbank.py,sha256=MeqPjECSmsplCtatu7Ns6sHRwzAGP_6S5MwB2BomnXk,116757
|
@@ -325,14 +325,14 @@ ccxt/async_support/vertex.py,sha256=TSw1dmCXj2kIDV7uvj-kd3wPurRu90fg9mHWHoHjF_o,
|
|
325
325
|
ccxt/async_support/wavesexchange.py,sha256=wHxvsBQydDEYRgeAZKI9WO4TLBKmmSPTLm0eT0pKB5g,115530
|
326
326
|
ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
|
327
327
|
ccxt/async_support/whitebit.py,sha256=MMKYPLjbCyW9yd2saPifUJIFwddN9z4DG3agTaAMKOc,120078
|
328
|
-
ccxt/async_support/woo.py,sha256=
|
328
|
+
ccxt/async_support/woo.py,sha256=dvKBt8HDmQk1i5u2f3UUWmR9Pw1NALgyAj2wq3uWIds,154187
|
329
329
|
ccxt/async_support/woofipro.py,sha256=B-BTPNdv3fL6wz3cHcMG2G8IU0MtvfzAiPP0OVT-xsI,116180
|
330
330
|
ccxt/async_support/xt.py,sha256=_U-r4Gp0oBCOE6Ngo98Sn_Q6tr_81CUDDSliF0FMezE,203770
|
331
331
|
ccxt/async_support/yobit.py,sha256=GQhvYrsGHQrVdTrNHQxx9isEGqUABexlllzao9HL3f8,54912
|
332
332
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
333
333
|
ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
|
334
334
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
335
|
-
ccxt/async_support/base/exchange.py,sha256=
|
335
|
+
ccxt/async_support/base/exchange.py,sha256=GcGmGz-XOqjfOxcVncOoxyFz4mYkclkKuKDESUKOGwA,110810
|
336
336
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
337
337
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
338
338
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -346,10 +346,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
346
346
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
347
347
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
348
348
|
ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
|
349
|
-
ccxt/base/exchange.py,sha256=
|
349
|
+
ccxt/base/exchange.py,sha256=amJqGcAhXBWigMKiDpaXKEE4TVXvKPimNY3JUL3U3A4,296075
|
350
350
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
351
351
|
ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
|
352
|
-
ccxt/pro/__init__.py,sha256=
|
352
|
+
ccxt/pro/__init__.py,sha256=cQUo8DMgbht0nKylvNNyIKuCMpv_u00xsHshBcUXwrg,7710
|
353
353
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
354
354
|
ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
|
355
355
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -652,8 +652,8 @@ ccxt/test/tests_async.py,sha256=yVoLZLPkB-_ay0ab_oCyYOSwkLQkLXkPFj5jHTE3esw,8442
|
|
652
652
|
ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
|
653
653
|
ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
|
654
654
|
ccxt/test/tests_sync.py,sha256=uu0QsWOuEpkmtV12nIffsiZZFUpM-f1k6W9nlgCDqXs,83485
|
655
|
-
ccxt-4.3.
|
656
|
-
ccxt-4.3.
|
657
|
-
ccxt-4.3.
|
658
|
-
ccxt-4.3.
|
659
|
-
ccxt-4.3.
|
655
|
+
ccxt-4.3.91.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
656
|
+
ccxt-4.3.91.dist-info/METADATA,sha256=3tDtRkhtE9kpeECLZbU5TVDH_jixBM7mluaTVo3tnDI,118342
|
657
|
+
ccxt-4.3.91.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
658
|
+
ccxt-4.3.91.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
659
|
+
ccxt-4.3.91.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|