ccxt 4.4.68__py2.py3-none-any.whl → 4.4.70__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/bybit.py +4 -0
- ccxt/abstract/myokx.py +3 -0
- ccxt/abstract/okx.py +3 -0
- ccxt/abstract/paradex.py +23 -0
- ccxt/abstract/tradeogre.py +2 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +5 -1
- ccxt/async_support/binance.py +17 -3
- ccxt/async_support/bitget.py +47 -262
- ccxt/async_support/bitstamp.py +2 -3
- ccxt/async_support/bybit.py +7 -0
- ccxt/async_support/coinbase.py +24 -9
- ccxt/async_support/cryptomus.py +122 -6
- ccxt/async_support/hyperliquid.py +17 -8
- ccxt/async_support/okx.py +4 -0
- ccxt/async_support/paradex.py +173 -5
- ccxt/async_support/phemex.py +2 -2
- ccxt/async_support/tradeogre.py +31 -11
- ccxt/async_support/whitebit.py +210 -2
- ccxt/base/exchange.py +1 -2
- ccxt/binance.py +17 -3
- ccxt/bitget.py +47 -262
- ccxt/bitstamp.py +2 -3
- ccxt/bybit.py +7 -0
- ccxt/coinbase.py +24 -9
- ccxt/cryptomus.py +122 -6
- ccxt/hyperliquid.py +17 -8
- ccxt/okx.py +4 -0
- ccxt/paradex.py +173 -5
- ccxt/phemex.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +28 -3
- ccxt/pro/bybit.py +81 -37
- ccxt/test/tests_async.py +25 -3
- ccxt/test/tests_sync.py +25 -3
- ccxt/tradeogre.py +31 -11
- ccxt/whitebit.py +210 -2
- {ccxt-4.4.68.dist-info → ccxt-4.4.70.dist-info}/METADATA +4 -4
- {ccxt-4.4.68.dist-info → ccxt-4.4.70.dist-info}/RECORD +43 -43
- {ccxt-4.4.68.dist-info → ccxt-4.4.70.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.68.dist-info → ccxt-4.4.70.dist-info}/WHEEL +0 -0
- {ccxt-4.4.68.dist-info → ccxt-4.4.70.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/bybit.py
CHANGED
@@ -56,6 +56,7 @@ class ImplicitAPI:
|
|
56
56
|
public_get_v5_crypto_loan_loanable_data = publicGetV5CryptoLoanLoanableData = Entry('v5/crypto-loan/loanable-data', 'public', 'GET', {'cost': 5})
|
57
57
|
public_get_v5_ins_loan_product_infos = publicGetV5InsLoanProductInfos = Entry('v5/ins-loan/product-infos', 'public', 'GET', {'cost': 5})
|
58
58
|
public_get_v5_ins_loan_ensure_tokens_convert = publicGetV5InsLoanEnsureTokensConvert = Entry('v5/ins-loan/ensure-tokens-convert', 'public', 'GET', {'cost': 5})
|
59
|
+
public_get_v5_earn_product = publicGetV5EarnProduct = Entry('v5/earn/product', 'public', 'GET', {'cost': 5})
|
59
60
|
private_get_v5_market_instruments_info = privateGetV5MarketInstrumentsInfo = Entry('v5/market/instruments-info', 'private', 'GET', {'cost': 5})
|
60
61
|
private_get_v2_private_wallet_fund_records = privateGetV2PrivateWalletFundRecords = Entry('v2/private/wallet/fund/records', 'private', 'GET', {'cost': 25})
|
61
62
|
private_get_spot_v3_private_order = privateGetSpotV3PrivateOrder = Entry('spot/v3/private/order', 'private', 'GET', {'cost': 2.5})
|
@@ -192,6 +193,8 @@ class ImplicitAPI:
|
|
192
193
|
private_get_v5_broker_earnings_info = privateGetV5BrokerEarningsInfo = Entry('v5/broker/earnings-info', 'private', 'GET', {'cost': 5})
|
193
194
|
private_get_v5_broker_account_info = privateGetV5BrokerAccountInfo = Entry('v5/broker/account-info', 'private', 'GET', {'cost': 5})
|
194
195
|
private_get_v5_broker_asset_query_sub_member_deposit_record = privateGetV5BrokerAssetQuerySubMemberDepositRecord = Entry('v5/broker/asset/query-sub-member-deposit-record', 'private', 'GET', {'cost': 10})
|
196
|
+
private_get_v5_earn_order = privateGetV5EarnOrder = Entry('v5/earn/order', 'private', 'GET', {'cost': 5})
|
197
|
+
private_get_v5_earn_position = privateGetV5EarnPosition = Entry('v5/earn/position', 'private', 'GET', {'cost': 5})
|
195
198
|
private_post_spot_v3_private_order = privatePostSpotV3PrivateOrder = Entry('spot/v3/private/order', 'private', 'POST', {'cost': 2.5})
|
196
199
|
private_post_spot_v3_private_cancel_order = privatePostSpotV3PrivateCancelOrder = Entry('spot/v3/private/cancel-order', 'private', 'POST', {'cost': 2.5})
|
197
200
|
private_post_spot_v3_private_cancel_orders = privatePostSpotV3PrivateCancelOrders = Entry('spot/v3/private/cancel-orders', 'private', 'POST', {'cost': 2.5})
|
@@ -307,3 +310,4 @@ class ImplicitAPI:
|
|
307
310
|
private_post_v5_broker_award_info = privatePostV5BrokerAwardInfo = Entry('v5/broker/award/info', 'private', 'POST', {'cost': 5})
|
308
311
|
private_post_v5_broker_award_distribute_award = privatePostV5BrokerAwardDistributeAward = Entry('v5/broker/award/distribute-award', 'private', 'POST', {'cost': 5})
|
309
312
|
private_post_v5_broker_award_distribution_record = privatePostV5BrokerAwardDistributionRecord = Entry('v5/broker/award/distribution-record', 'private', 'POST', {'cost': 5})
|
313
|
+
private_post_v5_earn_place_order = privatePostV5EarnPlaceOrder = Entry('v5/earn/place-order', 'private', 'POST', {'cost': 5})
|
ccxt/abstract/myokx.py
CHANGED
@@ -107,7 +107,9 @@ class ImplicitAPI:
|
|
107
107
|
private_get_trade_easy_convert_currency_list = privateGetTradeEasyConvertCurrencyList = Entry('trade/easy-convert-currency-list', 'private', 'GET', {'cost': 20})
|
108
108
|
private_get_trade_easy_convert_history = privateGetTradeEasyConvertHistory = Entry('trade/easy-convert-history', 'private', 'GET', {'cost': 20})
|
109
109
|
private_get_trade_one_click_repay_currency_list = privateGetTradeOneClickRepayCurrencyList = Entry('trade/one-click-repay-currency-list', 'private', 'GET', {'cost': 20})
|
110
|
+
private_get_trade_one_click_repay_currency_list_v2 = privateGetTradeOneClickRepayCurrencyListV2 = Entry('trade/one-click-repay-currency-list-v2', 'private', 'GET', {'cost': 20})
|
110
111
|
private_get_trade_one_click_repay_history = privateGetTradeOneClickRepayHistory = Entry('trade/one-click-repay-history', 'private', 'GET', {'cost': 20})
|
112
|
+
private_get_trade_one_click_repay_history_v2 = privateGetTradeOneClickRepayHistoryV2 = Entry('trade/one-click-repay-history-v2', 'private', 'GET', {'cost': 20})
|
111
113
|
private_get_trade_account_rate_limit = privateGetTradeAccountRateLimit = Entry('trade/account-rate-limit', 'private', 'GET', {'cost': 1})
|
112
114
|
private_get_asset_currencies = privateGetAssetCurrencies = Entry('asset/currencies', 'private', 'GET', {'cost': 1.6666666666666667})
|
113
115
|
private_get_asset_balances = privateGetAssetBalances = Entry('asset/balances', 'private', 'GET', {'cost': 1.6666666666666667})
|
@@ -250,6 +252,7 @@ class ImplicitAPI:
|
|
250
252
|
private_post_trade_cancel_advance_algos = privatePostTradeCancelAdvanceAlgos = Entry('trade/cancel-advance-algos', 'private', 'POST', {'cost': 1})
|
251
253
|
private_post_trade_easy_convert = privatePostTradeEasyConvert = Entry('trade/easy-convert', 'private', 'POST', {'cost': 20})
|
252
254
|
private_post_trade_one_click_repay = privatePostTradeOneClickRepay = Entry('trade/one-click-repay', 'private', 'POST', {'cost': 20})
|
255
|
+
private_post_trade_one_click_repay_v2 = privatePostTradeOneClickRepayV2 = Entry('trade/one-click-repay-v2', 'private', 'POST', {'cost': 20})
|
253
256
|
private_post_trade_mass_cancel = privatePostTradeMassCancel = Entry('trade/mass-cancel', 'private', 'POST', {'cost': 4})
|
254
257
|
private_post_trade_cancel_all_after = privatePostTradeCancelAllAfter = Entry('trade/cancel-all-after', 'private', 'POST', {'cost': 10})
|
255
258
|
private_post_asset_transfer = privatePostAssetTransfer = Entry('asset/transfer', 'private', 'POST', {'cost': 10})
|
ccxt/abstract/okx.py
CHANGED
@@ -107,7 +107,9 @@ class ImplicitAPI:
|
|
107
107
|
private_get_trade_easy_convert_currency_list = privateGetTradeEasyConvertCurrencyList = Entry('trade/easy-convert-currency-list', 'private', 'GET', {'cost': 20})
|
108
108
|
private_get_trade_easy_convert_history = privateGetTradeEasyConvertHistory = Entry('trade/easy-convert-history', 'private', 'GET', {'cost': 20})
|
109
109
|
private_get_trade_one_click_repay_currency_list = privateGetTradeOneClickRepayCurrencyList = Entry('trade/one-click-repay-currency-list', 'private', 'GET', {'cost': 20})
|
110
|
+
private_get_trade_one_click_repay_currency_list_v2 = privateGetTradeOneClickRepayCurrencyListV2 = Entry('trade/one-click-repay-currency-list-v2', 'private', 'GET', {'cost': 20})
|
110
111
|
private_get_trade_one_click_repay_history = privateGetTradeOneClickRepayHistory = Entry('trade/one-click-repay-history', 'private', 'GET', {'cost': 20})
|
112
|
+
private_get_trade_one_click_repay_history_v2 = privateGetTradeOneClickRepayHistoryV2 = Entry('trade/one-click-repay-history-v2', 'private', 'GET', {'cost': 20})
|
111
113
|
private_get_trade_account_rate_limit = privateGetTradeAccountRateLimit = Entry('trade/account-rate-limit', 'private', 'GET', {'cost': 1})
|
112
114
|
private_get_asset_currencies = privateGetAssetCurrencies = Entry('asset/currencies', 'private', 'GET', {'cost': 1.6666666666666667})
|
113
115
|
private_get_asset_balances = privateGetAssetBalances = Entry('asset/balances', 'private', 'GET', {'cost': 1.6666666666666667})
|
@@ -250,6 +252,7 @@ class ImplicitAPI:
|
|
250
252
|
private_post_trade_cancel_advance_algos = privatePostTradeCancelAdvanceAlgos = Entry('trade/cancel-advance-algos', 'private', 'POST', {'cost': 1})
|
251
253
|
private_post_trade_easy_convert = privatePostTradeEasyConvert = Entry('trade/easy-convert', 'private', 'POST', {'cost': 20})
|
252
254
|
private_post_trade_one_click_repay = privatePostTradeOneClickRepay = Entry('trade/one-click-repay', 'private', 'POST', {'cost': 20})
|
255
|
+
private_post_trade_one_click_repay_v2 = privatePostTradeOneClickRepayV2 = Entry('trade/one-click-repay-v2', 'private', 'POST', {'cost': 20})
|
253
256
|
private_post_trade_mass_cancel = privatePostTradeMassCancel = Entry('trade/mass-cancel', 'private', 'POST', {'cost': 4})
|
254
257
|
private_post_trade_cancel_all_after = privatePostTradeCancelAllAfter = Entry('trade/cancel-all-after', 'private', 'POST', {'cost': 10})
|
255
258
|
private_post_asset_transfer = privatePostAssetTransfer = Entry('asset/transfer', 'private', 'POST', {'cost': 10})
|
ccxt/abstract/paradex.py
CHANGED
@@ -14,8 +14,19 @@ class ImplicitAPI:
|
|
14
14
|
public_get_system_state = publicGetSystemState = Entry('system/state', 'public', 'GET', {'cost': 1})
|
15
15
|
public_get_system_time = publicGetSystemTime = Entry('system/time', 'public', 'GET', {'cost': 1})
|
16
16
|
public_get_trades = publicGetTrades = Entry('trades', 'public', 'GET', {'cost': 1})
|
17
|
+
public_get_vaults = publicGetVaults = Entry('vaults', 'public', 'GET', {'cost': 1})
|
18
|
+
public_get_vaults_balance = publicGetVaultsBalance = Entry('vaults/balance', 'public', 'GET', {'cost': 1})
|
19
|
+
public_get_vaults_config = publicGetVaultsConfig = Entry('vaults/config', 'public', 'GET', {'cost': 1})
|
20
|
+
public_get_vaults_history = publicGetVaultsHistory = Entry('vaults/history', 'public', 'GET', {'cost': 1})
|
21
|
+
public_get_vaults_positions = publicGetVaultsPositions = Entry('vaults/positions', 'public', 'GET', {'cost': 1})
|
22
|
+
public_get_vaults_summary = publicGetVaultsSummary = Entry('vaults/summary', 'public', 'GET', {'cost': 1})
|
23
|
+
public_get_vaults_transfers = publicGetVaultsTransfers = Entry('vaults/transfers', 'public', 'GET', {'cost': 1})
|
17
24
|
private_get_account = privateGetAccount = Entry('account', 'private', 'GET', {'cost': 1})
|
25
|
+
private_get_account_info = privateGetAccountInfo = Entry('account/info', 'private', 'GET', {'cost': 1})
|
26
|
+
private_get_account_history = privateGetAccountHistory = Entry('account/history', 'private', 'GET', {'cost': 1})
|
27
|
+
private_get_account_margin = privateGetAccountMargin = Entry('account/margin', 'private', 'GET', {'cost': 1})
|
18
28
|
private_get_account_profile = privateGetAccountProfile = Entry('account/profile', 'private', 'GET', {'cost': 1})
|
29
|
+
private_get_account_subaccounts = privateGetAccountSubaccounts = Entry('account/subaccounts', 'private', 'GET', {'cost': 1})
|
19
30
|
private_get_balance = privateGetBalance = Entry('balance', 'private', 'GET', {'cost': 1})
|
20
31
|
private_get_fills = privateGetFills = Entry('fills', 'private', 'GET', {'cost': 1})
|
21
32
|
private_get_funding_payments = privateGetFundingPayments = Entry('funding/payments', 'private', 'GET', {'cost': 1})
|
@@ -28,13 +39,25 @@ class ImplicitAPI:
|
|
28
39
|
private_get_orders_by_client_id_client_id = privateGetOrdersByClientIdClientId = Entry('orders/by_client_id/{client_id}', 'private', 'GET', {'cost': 1})
|
29
40
|
private_get_orders_order_id = privateGetOrdersOrderId = Entry('orders/{order_id}', 'private', 'GET', {'cost': 1})
|
30
41
|
private_get_points_data_market_program = privateGetPointsDataMarketProgram = Entry('points_data/{market}/{program}', 'private', 'GET', {'cost': 1})
|
42
|
+
private_get_referrals_qr_code = privateGetReferralsQrCode = Entry('referrals/qr-code', 'private', 'GET', {'cost': 1})
|
31
43
|
private_get_referrals_summary = privateGetReferralsSummary = Entry('referrals/summary', 'private', 'GET', {'cost': 1})
|
32
44
|
private_get_transfers = privateGetTransfers = Entry('transfers', 'private', 'GET', {'cost': 1})
|
45
|
+
private_get_algo_orders = privateGetAlgoOrders = Entry('algo/orders', 'private', 'GET', {'cost': 1})
|
46
|
+
private_get_algo_orders_history = privateGetAlgoOrdersHistory = Entry('algo/orders-history', 'private', 'GET', {'cost': 1})
|
47
|
+
private_get_algo_orders_algo_id = privateGetAlgoOrdersAlgoId = Entry('algo/orders/{algo_id}', 'private', 'GET', {'cost': 1})
|
48
|
+
private_get_vaults_account_summary = privateGetVaultsAccountSummary = Entry('vaults/account-summary', 'private', 'GET', {'cost': 1})
|
49
|
+
private_post_account_margin_market = privatePostAccountMarginMarket = Entry('account/margin/{market}', 'private', 'POST', {'cost': 1})
|
50
|
+
private_post_account_profile_max_slippage = privatePostAccountProfileMaxSlippage = Entry('account/profile/max_slippage', 'private', 'POST', {'cost': 1})
|
33
51
|
private_post_account_profile_referral_code = privatePostAccountProfileReferralCode = Entry('account/profile/referral_code', 'private', 'POST', {'cost': 1})
|
34
52
|
private_post_account_profile_username = privatePostAccountProfileUsername = Entry('account/profile/username', 'private', 'POST', {'cost': 1})
|
35
53
|
private_post_auth = privatePostAuth = Entry('auth', 'private', 'POST', {'cost': 1})
|
36
54
|
private_post_onboarding = privatePostOnboarding = Entry('onboarding', 'private', 'POST', {'cost': 1})
|
37
55
|
private_post_orders = privatePostOrders = Entry('orders', 'private', 'POST', {'cost': 1})
|
56
|
+
private_post_orders_batch = privatePostOrdersBatch = Entry('orders/batch', 'private', 'POST', {'cost': 1})
|
57
|
+
private_post_algo_orders = privatePostAlgoOrders = Entry('algo/orders', 'private', 'POST', {'cost': 1})
|
58
|
+
private_post_vaults = privatePostVaults = Entry('vaults', 'private', 'POST', {'cost': 1})
|
59
|
+
private_put_orders_order_id = privatePutOrdersOrderId = Entry('orders/{order_id}', 'private', 'PUT', {'cost': 1})
|
38
60
|
private_delete_orders = privateDeleteOrders = Entry('orders', 'private', 'DELETE', {'cost': 1})
|
39
61
|
private_delete_orders_by_client_id_client_id = privateDeleteOrdersByClientIdClientId = Entry('orders/by_client_id/{client_id}', 'private', 'DELETE', {'cost': 1})
|
40
62
|
private_delete_orders_order_id = privateDeleteOrdersOrderId = Entry('orders/{order_id}', 'private', 'DELETE', {'cost': 1})
|
63
|
+
private_delete_algo_orders_algo_id = privateDeleteAlgoOrdersAlgoId = Entry('algo/orders/{algo_id}', 'private', 'DELETE', {'cost': 1})
|
ccxt/abstract/tradeogre.py
CHANGED
@@ -6,8 +6,8 @@ class ImplicitAPI:
|
|
6
6
|
public_get_orders_market = publicGetOrdersMarket = Entry('orders/{market}', 'public', 'GET', {'cost': 1})
|
7
7
|
public_get_ticker_market = publicGetTickerMarket = Entry('ticker/{market}', 'public', 'GET', {'cost': 1})
|
8
8
|
public_get_history_market = publicGetHistoryMarket = Entry('history/{market}', 'public', 'GET', {'cost': 1})
|
9
|
+
public_get_chart_interval_market_timestamp = publicGetChartIntervalMarketTimestamp = Entry('chart/{interval}/{market}/{timestamp}', 'public', 'GET', {'cost': 1})
|
9
10
|
public_get_chart_interval_market = publicGetChartIntervalMarket = Entry('chart/{interval}/{market}', 'public', 'GET', {'cost': 1})
|
10
|
-
private_get_account_balance = privateGetAccountBalance = Entry('account/balance', 'private', 'GET', {'cost': 1})
|
11
11
|
private_get_account_balances = privateGetAccountBalances = Entry('account/balances', 'private', 'GET', {'cost': 1})
|
12
12
|
private_get_account_order_uuid = privateGetAccountOrderUuid = Entry('account/order/{uuid}', 'private', 'GET', {'cost': 1})
|
13
13
|
private_post_order_buy = privatePostOrderBuy = Entry('order/buy', 'private', 'POST', {'cost': 1})
|
@@ -15,3 +15,4 @@ class ImplicitAPI:
|
|
15
15
|
private_post_order_cancel = privatePostOrderCancel = Entry('order/cancel', 'private', 'POST', {'cost': 1})
|
16
16
|
private_post_orders = privatePostOrders = Entry('orders', 'private', 'POST', {'cost': 1})
|
17
17
|
private_post_account_orders = privatePostAccountOrders = Entry('account/orders', 'private', 'POST', {'cost': 1})
|
18
|
+
private_post_account_balance = privatePostAccountBalance = Entry('account/balance', 'private', 'POST', {'cost': 1})
|
ccxt/async_support/__init__.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.4.
|
5
|
+
__version__ = '4.4.70'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -283,6 +283,10 @@ class Exchange(BaseExchange):
|
|
283
283
|
self.markets_loading = asyncio.ensure_future(coroutine)
|
284
284
|
try:
|
285
285
|
result = await self.markets_loading
|
286
|
+
except asyncio.CancelledError as e: # CancelledError is a base exception so we need to catch it explicitly
|
287
|
+
self.reloading_markets = False
|
288
|
+
self.markets_loading = None
|
289
|
+
raise e
|
286
290
|
except Exception as e:
|
287
291
|
self.reloading_markets = False
|
288
292
|
self.markets_loading = None
|
ccxt/async_support/binance.py
CHANGED
@@ -8276,7 +8276,7 @@ class binance(Exchange, ImplicitAPI):
|
|
8276
8276
|
internalInteger = self.safe_integer(transaction, 'transferType')
|
8277
8277
|
internal = None
|
8278
8278
|
if internalInteger is not None:
|
8279
|
-
internal = True if internalInteger else False
|
8279
|
+
internal = True if (internalInteger != 0) else False
|
8280
8280
|
network = self.safe_string(transaction, 'network')
|
8281
8281
|
return {
|
8282
8282
|
'info': transaction,
|
@@ -11326,8 +11326,22 @@ class binance(Exchange, ImplicitAPI):
|
|
11326
11326
|
query = None
|
11327
11327
|
# handle batchOrders
|
11328
11328
|
if (path == 'batchOrders') and ((method == 'POST') or (method == 'PUT')):
|
11329
|
-
batchOrders = self.
|
11330
|
-
|
11329
|
+
batchOrders = self.safe_list(params, 'batchOrders')
|
11330
|
+
checkedBatchOrders = batchOrders
|
11331
|
+
if method == 'POST' and api == 'fapiPrivate':
|
11332
|
+
# check broker id if batchOrders are called with fapiPrivatePostBatchOrders
|
11333
|
+
checkedBatchOrders = []
|
11334
|
+
for i in range(0, len(batchOrders)):
|
11335
|
+
batchOrder = batchOrders[i]
|
11336
|
+
newClientOrderId = self.safe_string(batchOrder, 'newClientOrderId')
|
11337
|
+
if newClientOrderId is None:
|
11338
|
+
defaultId = 'x-xcKtGhcu' # batchOrders can not be spot or margin
|
11339
|
+
broker = self.safe_dict(self.options, 'broker', {})
|
11340
|
+
brokerId = self.safe_string(broker, 'future', defaultId)
|
11341
|
+
newClientOrderId = brokerId + self.uuid22()
|
11342
|
+
batchOrder['newClientOrderId'] = newClientOrderId
|
11343
|
+
checkedBatchOrders.append(batchOrder)
|
11344
|
+
queryBatch = (self.json(checkedBatchOrders))
|
11331
11345
|
params['batchOrders'] = queryBatch
|
11332
11346
|
defaultRecvWindow = self.safe_integer(self.options, 'recvWindow')
|
11333
11347
|
extendedParams = self.extend({
|