ccxt 4.3.90__py2.py3-none-any.whl → 4.3.92__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/hyperliquid.py +2 -1
- ccxt/async_support/kucoin.py +63 -28
- 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/hyperliquid.py +2 -1
- ccxt/kucoin.py +63 -28
- 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.92.dist-info}/METADATA +4 -4
- {ccxt-4.3.90.dist-info → ccxt-4.3.92.dist-info}/RECORD +28 -28
- {ccxt-4.3.90.dist-info → ccxt-4.3.92.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.90.dist-info → ccxt-4.3.92.dist-info}/WHEEL +0 -0
- {ccxt-4.3.90.dist-info → ccxt-4.3.92.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
@@ -1694,9 +1694,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1694
1694
|
userAddress, params = self.handle_public_address('fetchOrder', params)
|
1695
1695
|
await self.load_markets()
|
1696
1696
|
market = self.safe_market(symbol)
|
1697
|
+
isClientOrderId = len(id) >= 34
|
1697
1698
|
request: dict = {
|
1698
1699
|
'type': 'orderStatus',
|
1699
|
-
'oid': self.parse_to_numeric(id),
|
1700
|
+
'oid': id if isClientOrderId else self.parse_to_numeric(id),
|
1700
1701
|
'user': userAddress,
|
1701
1702
|
}
|
1702
1703
|
response = await self.publicPostInfo(self.extend(request, params))
|
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 (self.options['hfMigrated'] is None) 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
|
@@ -1733,7 +1755,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1733
1755
|
# }
|
1734
1756
|
# }
|
1735
1757
|
#
|
1736
|
-
|
1758
|
+
data = self.safe_dict(response, 'data', {})
|
1759
|
+
return self.parse_ticker(data, market)
|
1737
1760
|
|
1738
1761
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
1739
1762
|
#
|
@@ -2042,7 +2065,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2042
2065
|
market = self.market(symbol)
|
2043
2066
|
testOrder = self.safe_bool(params, 'test', False)
|
2044
2067
|
params = self.omit(params, 'test')
|
2045
|
-
|
2068
|
+
hf = None
|
2069
|
+
hf, params = await self.handle_hf_and_params(params)
|
2046
2070
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2047
2071
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2048
2072
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2055,14 +2079,16 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2055
2079
|
if testOrder:
|
2056
2080
|
if isMarginOrder:
|
2057
2081
|
response = await self.privatePostMarginOrderTest(orderRequest)
|
2082
|
+
elif hf:
|
2083
|
+
response = await self.privatePostHfOrdersTest(orderRequest)
|
2058
2084
|
else:
|
2059
2085
|
response = await self.privatePostOrdersTest(orderRequest)
|
2060
|
-
elif isHf:
|
2061
|
-
response = await self.privatePostHfOrders(orderRequest)
|
2062
2086
|
elif isTriggerOrder:
|
2063
2087
|
response = await self.privatePostStopOrder(orderRequest)
|
2064
2088
|
elif isMarginOrder:
|
2065
2089
|
response = await self.privatePostMarginOrder(orderRequest)
|
2090
|
+
elif hf:
|
2091
|
+
response = await self.privatePostHfOrders(orderRequest)
|
2066
2092
|
else:
|
2067
2093
|
response = await self.privatePostOrders(orderRequest)
|
2068
2094
|
#
|
@@ -2149,8 +2175,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2149
2175
|
'symbol': market['id'],
|
2150
2176
|
'orderList': ordersRequests,
|
2151
2177
|
}
|
2152
|
-
hf =
|
2153
|
-
params = self.
|
2178
|
+
hf = None
|
2179
|
+
hf, params = await self.handle_hf_and_params(params)
|
2154
2180
|
response = None
|
2155
2181
|
if hf:
|
2156
2182
|
response = await self.privatePostHfOrdersMulti(self.extend(request, params))
|
@@ -2314,14 +2340,15 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2314
2340
|
request: dict = {}
|
2315
2341
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2316
2342
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2317
|
-
hf =
|
2343
|
+
hf = None
|
2344
|
+
hf, params = await self.handle_hf_and_params(params)
|
2318
2345
|
if hf:
|
2319
2346
|
if symbol is None:
|
2320
2347
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2321
2348
|
market = self.market(symbol)
|
2322
2349
|
request['symbol'] = market['id']
|
2323
2350
|
response = None
|
2324
|
-
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', '
|
2351
|
+
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', 'trigger'])
|
2325
2352
|
if clientOrderId is not None:
|
2326
2353
|
request['clientOid'] = clientOrderId
|
2327
2354
|
if stop:
|
@@ -2415,8 +2442,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2415
2442
|
await self.load_markets()
|
2416
2443
|
request: dict = {}
|
2417
2444
|
stop = self.safe_bool(params, 'stop', False)
|
2418
|
-
hf =
|
2419
|
-
params = self.
|
2445
|
+
hf = None
|
2446
|
+
hf, params = await self.handle_hf_and_params(params)
|
2447
|
+
params = self.omit(params, 'stop')
|
2420
2448
|
marginMode, query = self.handle_margin_mode_and_params('cancelAllOrders', params)
|
2421
2449
|
if symbol is not None:
|
2422
2450
|
request['symbol'] = self.market_id(symbol)
|
@@ -2463,8 +2491,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2463
2491
|
lowercaseStatus = status.lower()
|
2464
2492
|
until = self.safe_integer(params, 'until')
|
2465
2493
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2466
|
-
hf =
|
2467
|
-
params = self.
|
2494
|
+
hf = None
|
2495
|
+
hf, params = await self.handle_hf_and_params(params)
|
2496
|
+
if hf and (symbol is None):
|
2497
|
+
raise ArgumentsRequired(self.id + ' fetchOrdersByStatus() requires a symbol parameter for hf orders')
|
2498
|
+
params = self.omit(params, ['stop', 'trigger', 'till', 'until'])
|
2468
2499
|
marginMode, query = self.handle_margin_mode_and_params('fetchOrdersByStatus', params)
|
2469
2500
|
if lowercaseStatus == 'open':
|
2470
2501
|
lowercaseStatus = 'active'
|
@@ -2622,7 +2653,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2622
2653
|
request: dict = {}
|
2623
2654
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2624
2655
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2625
|
-
hf =
|
2656
|
+
hf = None
|
2657
|
+
hf, params = await self.handle_hf_and_params(params)
|
2626
2658
|
market = None
|
2627
2659
|
if symbol is not None:
|
2628
2660
|
market = self.market(symbol)
|
@@ -2630,7 +2662,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2630
2662
|
if symbol is None:
|
2631
2663
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol parameter for hf orders')
|
2632
2664
|
request['symbol'] = market['id']
|
2633
|
-
params = self.omit(params, ['stop', '
|
2665
|
+
params = self.omit(params, ['stop', 'clientOid', 'clientOrderId', 'trigger'])
|
2634
2666
|
response = None
|
2635
2667
|
if clientOrderId is not None:
|
2636
2668
|
request['clientOid'] = clientOrderId
|
@@ -2872,7 +2904,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2872
2904
|
if paginate:
|
2873
2905
|
return await self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params)
|
2874
2906
|
request: dict = {}
|
2875
|
-
hf =
|
2907
|
+
hf = None
|
2908
|
+
hf, params = await self.handle_hf_and_params(params)
|
2876
2909
|
if hf and symbol is None:
|
2877
2910
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol parameter for hf orders')
|
2878
2911
|
market = None
|
@@ -3432,8 +3465,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3432
3465
|
# }
|
3433
3466
|
# }
|
3434
3467
|
#
|
3435
|
-
|
3436
|
-
|
3468
|
+
data = self.safe_dict(response, 'data', {})
|
3469
|
+
items = self.safe_list(data, 'items', [])
|
3470
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'deposit'})
|
3437
3471
|
|
3438
3472
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
3439
3473
|
"""
|
@@ -3509,8 +3543,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3509
3543
|
# }
|
3510
3544
|
# }
|
3511
3545
|
#
|
3512
|
-
|
3513
|
-
|
3546
|
+
data = self.safe_dict(response, 'data', {})
|
3547
|
+
items = self.safe_list(data, 'items', [])
|
3548
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'withdrawal'})
|
3514
3549
|
|
3515
3550
|
def parse_balance_helper(self, entry):
|
3516
3551
|
account = self.account()
|
@@ -3544,10 +3579,10 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3544
3579
|
accountsByType = self.safe_dict(self.options, 'accountsByType')
|
3545
3580
|
type = self.safe_string(accountsByType, requestedType, requestedType)
|
3546
3581
|
params = self.omit(params, 'type')
|
3547
|
-
|
3548
|
-
|
3582
|
+
hf = None
|
3583
|
+
hf, params = await self.handle_hf_and_params(params)
|
3584
|
+
if hf:
|
3549
3585
|
type = 'trade_hf'
|
3550
|
-
params = self.omit(params, 'hf')
|
3551
3586
|
marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
|
3552
3587
|
response = None
|
3553
3588
|
request: dict = {}
|
@@ -3973,8 +4008,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3973
4008
|
await self.load_accounts()
|
3974
4009
|
paginate = False
|
3975
4010
|
paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
|
3976
|
-
|
3977
|
-
params = self.
|
4011
|
+
hf = None
|
4012
|
+
hf, params = await self.handle_hf_and_params(params)
|
3978
4013
|
if paginate:
|
3979
4014
|
return await self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
|
3980
4015
|
request: dict = {
|
@@ -3995,7 +4030,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3995
4030
|
marginMode = None
|
3996
4031
|
marginMode, params = self.handle_margin_mode_and_params('fetchLedger', params)
|
3997
4032
|
response = None
|
3998
|
-
if
|
4033
|
+
if hf:
|
3999
4034
|
if marginMode is not None:
|
4000
4035
|
response = await self.privateGetHfMarginAccountLedgers(self.extend(request, params))
|
4001
4036
|
else:
|
@@ -4314,7 +4349,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4314
4349
|
# }
|
4315
4350
|
#
|
4316
4351
|
data = self.safe_dict(response, 'data')
|
4317
|
-
rows = self.safe_list(data, 'items')
|
4352
|
+
rows = self.safe_list(data, 'items', [])
|
4318
4353
|
return self.parse_borrow_rate_histories(rows, codes, since, limit)
|
4319
4354
|
|
4320
4355
|
async def fetch_borrow_rate_history(self, code: str, since: Int = None, limit: Int = None, params={}):
|
@@ -4365,7 +4400,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4365
4400
|
# }
|
4366
4401
|
#
|
4367
4402
|
data = self.safe_dict(response, 'data')
|
4368
|
-
rows = self.safe_list(data, 'items')
|
4403
|
+
rows = self.safe_list(data, 'items', [])
|
4369
4404
|
return self.parse_borrow_rate_history(rows, code, since, limit)
|
4370
4405
|
|
4371
4406
|
def parse_borrow_rate_histories(self, response, codes, since, limit):
|
@@ -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/hyperliquid.py
CHANGED
@@ -1693,9 +1693,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1693
1693
|
userAddress, params = self.handle_public_address('fetchOrder', params)
|
1694
1694
|
self.load_markets()
|
1695
1695
|
market = self.safe_market(symbol)
|
1696
|
+
isClientOrderId = len(id) >= 34
|
1696
1697
|
request: dict = {
|
1697
1698
|
'type': 'orderStatus',
|
1698
|
-
'oid': self.parse_to_numeric(id),
|
1699
|
+
'oid': id if isClientOrderId else self.parse_to_numeric(id),
|
1699
1700
|
'user': userAddress,
|
1700
1701
|
}
|
1701
1702
|
response = self.publicPostInfo(self.extend(request, params))
|
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 (self.options['hfMigrated'] is None) 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
|
@@ -1732,7 +1754,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1732
1754
|
# }
|
1733
1755
|
# }
|
1734
1756
|
#
|
1735
|
-
|
1757
|
+
data = self.safe_dict(response, 'data', {})
|
1758
|
+
return self.parse_ticker(data, market)
|
1736
1759
|
|
1737
1760
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
1738
1761
|
#
|
@@ -2041,7 +2064,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2041
2064
|
market = self.market(symbol)
|
2042
2065
|
testOrder = self.safe_bool(params, 'test', False)
|
2043
2066
|
params = self.omit(params, 'test')
|
2044
|
-
|
2067
|
+
hf = None
|
2068
|
+
hf, params = self.handle_hf_and_params(params)
|
2045
2069
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2046
2070
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2047
2071
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2054,14 +2078,16 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2054
2078
|
if testOrder:
|
2055
2079
|
if isMarginOrder:
|
2056
2080
|
response = self.privatePostMarginOrderTest(orderRequest)
|
2081
|
+
elif hf:
|
2082
|
+
response = self.privatePostHfOrdersTest(orderRequest)
|
2057
2083
|
else:
|
2058
2084
|
response = self.privatePostOrdersTest(orderRequest)
|
2059
|
-
elif isHf:
|
2060
|
-
response = self.privatePostHfOrders(orderRequest)
|
2061
2085
|
elif isTriggerOrder:
|
2062
2086
|
response = self.privatePostStopOrder(orderRequest)
|
2063
2087
|
elif isMarginOrder:
|
2064
2088
|
response = self.privatePostMarginOrder(orderRequest)
|
2089
|
+
elif hf:
|
2090
|
+
response = self.privatePostHfOrders(orderRequest)
|
2065
2091
|
else:
|
2066
2092
|
response = self.privatePostOrders(orderRequest)
|
2067
2093
|
#
|
@@ -2148,8 +2174,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2148
2174
|
'symbol': market['id'],
|
2149
2175
|
'orderList': ordersRequests,
|
2150
2176
|
}
|
2151
|
-
hf =
|
2152
|
-
params = self.
|
2177
|
+
hf = None
|
2178
|
+
hf, params = self.handle_hf_and_params(params)
|
2153
2179
|
response = None
|
2154
2180
|
if hf:
|
2155
2181
|
response = self.privatePostHfOrdersMulti(self.extend(request, params))
|
@@ -2313,14 +2339,15 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2313
2339
|
request: dict = {}
|
2314
2340
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2315
2341
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2316
|
-
hf =
|
2342
|
+
hf = None
|
2343
|
+
hf, params = self.handle_hf_and_params(params)
|
2317
2344
|
if hf:
|
2318
2345
|
if symbol is None:
|
2319
2346
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2320
2347
|
market = self.market(symbol)
|
2321
2348
|
request['symbol'] = market['id']
|
2322
2349
|
response = None
|
2323
|
-
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', '
|
2350
|
+
params = self.omit(params, ['clientOid', 'clientOrderId', 'stop', 'trigger'])
|
2324
2351
|
if clientOrderId is not None:
|
2325
2352
|
request['clientOid'] = clientOrderId
|
2326
2353
|
if stop:
|
@@ -2414,8 +2441,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2414
2441
|
self.load_markets()
|
2415
2442
|
request: dict = {}
|
2416
2443
|
stop = self.safe_bool(params, 'stop', False)
|
2417
|
-
hf =
|
2418
|
-
params = self.
|
2444
|
+
hf = None
|
2445
|
+
hf, params = self.handle_hf_and_params(params)
|
2446
|
+
params = self.omit(params, 'stop')
|
2419
2447
|
marginMode, query = self.handle_margin_mode_and_params('cancelAllOrders', params)
|
2420
2448
|
if symbol is not None:
|
2421
2449
|
request['symbol'] = self.market_id(symbol)
|
@@ -2462,8 +2490,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2462
2490
|
lowercaseStatus = status.lower()
|
2463
2491
|
until = self.safe_integer(params, 'until')
|
2464
2492
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2465
|
-
hf =
|
2466
|
-
params = self.
|
2493
|
+
hf = None
|
2494
|
+
hf, params = 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'])
|
2467
2498
|
marginMode, query = self.handle_margin_mode_and_params('fetchOrdersByStatus', params)
|
2468
2499
|
if lowercaseStatus == 'open':
|
2469
2500
|
lowercaseStatus = 'active'
|
@@ -2621,7 +2652,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2621
2652
|
request: dict = {}
|
2622
2653
|
clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
|
2623
2654
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2624
|
-
hf =
|
2655
|
+
hf = None
|
2656
|
+
hf, params = self.handle_hf_and_params(params)
|
2625
2657
|
market = None
|
2626
2658
|
if symbol is not None:
|
2627
2659
|
market = self.market(symbol)
|
@@ -2629,7 +2661,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2629
2661
|
if symbol is None:
|
2630
2662
|
raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol parameter for hf orders')
|
2631
2663
|
request['symbol'] = market['id']
|
2632
|
-
params = self.omit(params, ['stop', '
|
2664
|
+
params = self.omit(params, ['stop', 'clientOid', 'clientOrderId', 'trigger'])
|
2633
2665
|
response = None
|
2634
2666
|
if clientOrderId is not None:
|
2635
2667
|
request['clientOid'] = clientOrderId
|
@@ -2871,7 +2903,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2871
2903
|
if paginate:
|
2872
2904
|
return self.fetch_paginated_call_dynamic('fetchMyTrades', symbol, since, limit, params)
|
2873
2905
|
request: dict = {}
|
2874
|
-
hf =
|
2906
|
+
hf = None
|
2907
|
+
hf, params = self.handle_hf_and_params(params)
|
2875
2908
|
if hf and symbol is None:
|
2876
2909
|
raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol parameter for hf orders')
|
2877
2910
|
market = None
|
@@ -3431,8 +3464,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3431
3464
|
# }
|
3432
3465
|
# }
|
3433
3466
|
#
|
3434
|
-
|
3435
|
-
|
3467
|
+
data = self.safe_dict(response, 'data', {})
|
3468
|
+
items = self.safe_list(data, 'items', [])
|
3469
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'deposit'})
|
3436
3470
|
|
3437
3471
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
3438
3472
|
"""
|
@@ -3508,8 +3542,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3508
3542
|
# }
|
3509
3543
|
# }
|
3510
3544
|
#
|
3511
|
-
|
3512
|
-
|
3545
|
+
data = self.safe_dict(response, 'data', {})
|
3546
|
+
items = self.safe_list(data, 'items', [])
|
3547
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'withdrawal'})
|
3513
3548
|
|
3514
3549
|
def parse_balance_helper(self, entry):
|
3515
3550
|
account = self.account()
|
@@ -3543,10 +3578,10 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3543
3578
|
accountsByType = self.safe_dict(self.options, 'accountsByType')
|
3544
3579
|
type = self.safe_string(accountsByType, requestedType, requestedType)
|
3545
3580
|
params = self.omit(params, 'type')
|
3546
|
-
|
3547
|
-
|
3581
|
+
hf = None
|
3582
|
+
hf, params = self.handle_hf_and_params(params)
|
3583
|
+
if hf:
|
3548
3584
|
type = 'trade_hf'
|
3549
|
-
params = self.omit(params, 'hf')
|
3550
3585
|
marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
|
3551
3586
|
response = None
|
3552
3587
|
request: dict = {}
|
@@ -3972,8 +4007,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3972
4007
|
self.load_accounts()
|
3973
4008
|
paginate = False
|
3974
4009
|
paginate, params = self.handle_option_and_params(params, 'fetchLedger', 'paginate')
|
3975
|
-
|
3976
|
-
params = self.
|
4010
|
+
hf = None
|
4011
|
+
hf, params = self.handle_hf_and_params(params)
|
3977
4012
|
if paginate:
|
3978
4013
|
return self.fetch_paginated_call_dynamic('fetchLedger', code, since, limit, params)
|
3979
4014
|
request: dict = {
|
@@ -3994,7 +4029,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3994
4029
|
marginMode = None
|
3995
4030
|
marginMode, params = self.handle_margin_mode_and_params('fetchLedger', params)
|
3996
4031
|
response = None
|
3997
|
-
if
|
4032
|
+
if hf:
|
3998
4033
|
if marginMode is not None:
|
3999
4034
|
response = self.privateGetHfMarginAccountLedgers(self.extend(request, params))
|
4000
4035
|
else:
|
@@ -4313,7 +4348,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4313
4348
|
# }
|
4314
4349
|
#
|
4315
4350
|
data = self.safe_dict(response, 'data')
|
4316
|
-
rows = self.safe_list(data, 'items')
|
4351
|
+
rows = self.safe_list(data, 'items', [])
|
4317
4352
|
return self.parse_borrow_rate_histories(rows, codes, since, limit)
|
4318
4353
|
|
4319
4354
|
def fetch_borrow_rate_history(self, code: str, since: Int = None, limit: Int = None, params={}):
|
@@ -4364,7 +4399,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4364
4399
|
# }
|
4365
4400
|
#
|
4366
4401
|
data = self.safe_dict(response, 'data')
|
4367
|
-
rows = self.safe_list(data, 'items')
|
4402
|
+
rows = self.safe_list(data, 'items', [])
|
4368
4403
|
return self.parse_borrow_rate_history(rows, code, since, limit)
|
4369
4404
|
|
4370
4405
|
def parse_borrow_rate_histories(self, response, codes, since, limit):
|
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.92
|
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.92/dist/ccxt.browser.min.js
|
276
|
+
* unpkg: https://unpkg.com/ccxt@4.3.92/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.92/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=P2-4GLGy5XA0txx_PStOjbp-TczfhXKBn4idfeDr_Ew,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,20 +60,20 @@ 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
|
67
67
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
68
68
|
ccxt/huobijp.py,sha256=m9rYCCApGDtpbiqCK6Gw4GDd5EskEmho4xSemGbY1kY,89852
|
69
|
-
ccxt/hyperliquid.py,sha256=
|
69
|
+
ccxt/hyperliquid.py,sha256=nhbDQvrqQqusDw7lmdSVc3Emf96CB0tT-QSw3_aldYM,110769
|
70
70
|
ccxt/idex.py,sha256=P2jNsxiwIlMgrfPKbtmjLJQrzFcWp_TjgJaLq793oco,73255
|
71
71
|
ccxt/independentreserve.py,sha256=ChkSnahGsn0aN_cfaAonSk-V2Aa1UB-0cPTa1d3AdI4,37713
|
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=93zdALN3NE1xQ-QV9bcLqMXYprBnsphwNI-qhOjBjp4,228129
|
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=MIa83arWgbNAeH2GvibM05_KtoiUKArfy-pgnNxcTkA,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,20 +282,20 @@ 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
|
289
289
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
290
290
|
ccxt/async_support/huobijp.py,sha256=OeEHn0GXQ56YGeUM21zwRqsEm8d2LD_SDspBsQMlds4,90352
|
291
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
291
|
+
ccxt/async_support/hyperliquid.py,sha256=UFj6FUYKTlYRW1ThSzLp02HXhX1Mod1Y_XQXOo9y-Mg,111325
|
292
292
|
ccxt/async_support/idex.py,sha256=UcAvdMc2CP_6E8lET4rmQiIP-RaUfZHSo6pQeA17v-g,73731
|
293
293
|
ccxt/async_support/independentreserve.py,sha256=fCTAQ1U74KOZHIoYbDxzEly1xSgykcYcdpeiJiCEXkU,37991
|
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=vpygCpD5m5-mRuGEwE2mBWuBDCraeBHUHVTo64g1XE4,229314
|
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=QipUhG1vzEbRFubZfis7eliKO7iQAA_El-5H2xE6FCw,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=PmJEfEYTehAeq0e4mSXL4vazSbGMSuT0JqVAMoELmGs,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=OZXP810CknOtgr5sTmdNQd3Row6hy5p9ArgEb5UibkE,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.92.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
656
|
+
ccxt-4.3.92.dist-info/METADATA,sha256=5gK1R-EPm2VXF8T_phjBH8gJlUAOZbb9KW_o-iHBzZA,118342
|
657
|
+
ccxt-4.3.92.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
658
|
+
ccxt-4.3.92.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
659
|
+
ccxt-4.3.92.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|