ccxt 4.0.35__py2.py3-none-any.whl → 4.0.38__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 +5 -2
- ccxt/abstract/binancecoinm.py +5 -2
- ccxt/abstract/binanceus.py +5 -2
- ccxt/abstract/binanceusdm.py +5 -2
- ccxt/abstract/gate.py +2 -0
- ccxt/abstract/gateio.py +2 -0
- ccxt/abstract/okex.py +1 -0
- ccxt/abstract/okex5.py +1 -0
- ccxt/abstract/okx.py +1 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +6 -3
- ccxt/async_support/binance.py +6 -3
- ccxt/async_support/coinex.py +15 -15
- ccxt/async_support/gate.py +3 -0
- ccxt/async_support/okx.py +1 -0
- ccxt/base/exchange.py +6 -3
- ccxt/binance.py +6 -3
- ccxt/coinex.py +15 -15
- ccxt/gate.py +3 -0
- ccxt/okx.py +1 -0
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/coinex.py +79 -7
- {ccxt-4.0.35.dist-info → ccxt-4.0.38.dist-info}/METADATA +4 -4
- {ccxt-4.0.35.dist-info → ccxt-4.0.38.dist-info}/RECORD +27 -27
- {ccxt-4.0.35.dist-info → ccxt-4.0.38.dist-info}/WHEEL +0 -0
- {ccxt-4.0.35.dist-info → ccxt-4.0.38.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/binance.py
CHANGED
@@ -298,8 +298,9 @@ class ImplicitAPI:
|
|
298
298
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
299
299
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
300
300
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
301
|
-
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost':
|
302
|
-
|
301
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
|
302
|
+
sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
|
303
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
303
304
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
304
305
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
305
306
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
@@ -492,6 +493,8 @@ class ImplicitAPI:
|
|
492
493
|
eapiprivate_get_usertrades = eapiPrivateGetUserTrades = Entry('userTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
493
494
|
eapiprivate_get_exerciserecord = eapiPrivateGetExerciseRecord = Entry('exerciseRecord', 'eapiPrivate', 'GET', {'cost': 5})
|
494
495
|
eapiprivate_get_bill = eapiPrivateGetBill = Entry('bill', 'eapiPrivate', 'GET', {'cost': 1})
|
496
|
+
eapiprivate_get_income_asyn = eapiPrivateGetIncomeAsyn = Entry('income/asyn', 'eapiPrivate', 'GET', {'cost': 5})
|
497
|
+
eapiprivate_get_income_asyn_id = eapiPrivateGetIncomeAsynId = Entry('income/asyn/id', 'eapiPrivate', 'GET', {'cost': 5})
|
495
498
|
eapiprivate_get_marginaccount = eapiPrivateGetMarginAccount = Entry('marginAccount', 'eapiPrivate', 'GET', {'cost': 3})
|
496
499
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
497
500
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -298,8 +298,9 @@ class ImplicitAPI:
|
|
298
298
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
299
299
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
300
300
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
301
|
-
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost':
|
302
|
-
|
301
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
|
302
|
+
sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
|
303
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
303
304
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
304
305
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
305
306
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
@@ -492,6 +493,8 @@ class ImplicitAPI:
|
|
492
493
|
eapiprivate_get_usertrades = eapiPrivateGetUserTrades = Entry('userTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
493
494
|
eapiprivate_get_exerciserecord = eapiPrivateGetExerciseRecord = Entry('exerciseRecord', 'eapiPrivate', 'GET', {'cost': 5})
|
494
495
|
eapiprivate_get_bill = eapiPrivateGetBill = Entry('bill', 'eapiPrivate', 'GET', {'cost': 1})
|
496
|
+
eapiprivate_get_income_asyn = eapiPrivateGetIncomeAsyn = Entry('income/asyn', 'eapiPrivate', 'GET', {'cost': 5})
|
497
|
+
eapiprivate_get_income_asyn_id = eapiPrivateGetIncomeAsynId = Entry('income/asyn/id', 'eapiPrivate', 'GET', {'cost': 5})
|
495
498
|
eapiprivate_get_marginaccount = eapiPrivateGetMarginAccount = Entry('marginAccount', 'eapiPrivate', 'GET', {'cost': 3})
|
496
499
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
497
500
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -298,8 +298,9 @@ class ImplicitAPI:
|
|
298
298
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
299
299
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
300
300
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
301
|
-
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost':
|
302
|
-
|
301
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
|
302
|
+
sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
|
303
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
303
304
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
304
305
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
305
306
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
@@ -492,6 +493,8 @@ class ImplicitAPI:
|
|
492
493
|
eapiprivate_get_usertrades = eapiPrivateGetUserTrades = Entry('userTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
493
494
|
eapiprivate_get_exerciserecord = eapiPrivateGetExerciseRecord = Entry('exerciseRecord', 'eapiPrivate', 'GET', {'cost': 5})
|
494
495
|
eapiprivate_get_bill = eapiPrivateGetBill = Entry('bill', 'eapiPrivate', 'GET', {'cost': 1})
|
496
|
+
eapiprivate_get_income_asyn = eapiPrivateGetIncomeAsyn = Entry('income/asyn', 'eapiPrivate', 'GET', {'cost': 5})
|
497
|
+
eapiprivate_get_income_asyn_id = eapiPrivateGetIncomeAsynId = Entry('income/asyn/id', 'eapiPrivate', 'GET', {'cost': 5})
|
495
498
|
eapiprivate_get_marginaccount = eapiPrivateGetMarginAccount = Entry('marginAccount', 'eapiPrivate', 'GET', {'cost': 3})
|
496
499
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
497
500
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -298,8 +298,9 @@ class ImplicitAPI:
|
|
298
298
|
sapi_post_loan_vip_repay = sapiPostLoanVipRepay = Entry('loan/vip/repay', 'sapi', 'POST', {'cost': 40})
|
299
299
|
sapi_post_convert_getquote = sapiPostConvertGetQuote = Entry('convert/getQuote', 'sapi', 'POST', {'cost': 20.001})
|
300
300
|
sapi_post_convert_acceptquote = sapiPostConvertAcceptQuote = Entry('convert/acceptQuote', 'sapi', 'POST', {'cost': 3.3335})
|
301
|
-
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost':
|
302
|
-
|
301
|
+
sapi_post_portfolio_auto_collection = sapiPostPortfolioAutoCollection = Entry('portfolio/auto-collection', 'sapi', 'POST', {'cost': 150})
|
302
|
+
sapi_post_portfolio_asset_collection = sapiPostPortfolioAssetCollection = Entry('portfolio/asset-collection', 'sapi', 'POST', {'cost': 6})
|
303
|
+
sapi_post_portfolio_bnb_transfer = sapiPostPortfolioBnbTransfer = Entry('portfolio/bnb-transfer', 'sapi', 'POST', {'cost': 150})
|
303
304
|
sapi_post_portfolio_repay_futures_switch = sapiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'sapi', 'POST', {'cost': 150})
|
304
305
|
sapi_post_portfolio_repay_futures_negative_balance = sapiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'sapi', 'POST', {'cost': 150})
|
305
306
|
sapi_post_lending_auto_invest_plan_add = sapiPostLendingAutoInvestPlanAdd = Entry('lending/auto-invest/plan/add', 'sapi', 'POST', {'cost': 0.1})
|
@@ -492,6 +493,8 @@ class ImplicitAPI:
|
|
492
493
|
eapiprivate_get_usertrades = eapiPrivateGetUserTrades = Entry('userTrades', 'eapiPrivate', 'GET', {'cost': 5})
|
493
494
|
eapiprivate_get_exerciserecord = eapiPrivateGetExerciseRecord = Entry('exerciseRecord', 'eapiPrivate', 'GET', {'cost': 5})
|
494
495
|
eapiprivate_get_bill = eapiPrivateGetBill = Entry('bill', 'eapiPrivate', 'GET', {'cost': 1})
|
496
|
+
eapiprivate_get_income_asyn = eapiPrivateGetIncomeAsyn = Entry('income/asyn', 'eapiPrivate', 'GET', {'cost': 5})
|
497
|
+
eapiprivate_get_income_asyn_id = eapiPrivateGetIncomeAsynId = Entry('income/asyn/id', 'eapiPrivate', 'GET', {'cost': 5})
|
495
498
|
eapiprivate_get_marginaccount = eapiPrivateGetMarginAccount = Entry('marginAccount', 'eapiPrivate', 'GET', {'cost': 3})
|
496
499
|
eapiprivate_get_mmp = eapiPrivateGetMmp = Entry('mmp', 'eapiPrivate', 'GET', {'cost': 1})
|
497
500
|
eapiprivate_get_countdowncancelall = eapiPrivateGetCountdownCancelAll = Entry('countdownCancelAll', 'eapiPrivate', 'GET', {'cost': 1})
|
ccxt/abstract/gate.py
CHANGED
@@ -136,6 +136,8 @@ class ImplicitAPI:
|
|
136
136
|
private_margin_patch_loans_loan_id = privateMarginPatchLoansLoanId = Entry('loans/{loan_id}', ['private', 'margin'], 'PATCH', {'cost': 1.5})
|
137
137
|
private_margin_patch_loan_records_loan_record_id = privateMarginPatchLoanRecordsLoanRecordId = Entry('loan_records/{loan_record_id}', ['private', 'margin'], 'PATCH', {'cost': 1.5})
|
138
138
|
private_margin_delete_loans_loan_id = privateMarginDeleteLoansLoanId = Entry('loans/{loan_id}', ['private', 'margin'], 'DELETE', {'cost': 1.5})
|
139
|
+
private_flash_swap_get_currencies = privateFlash_swapGetCurrencies = Entry('currencies', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
140
|
+
private_flash_swap_get_currency_pairs = privateFlash_swapGetCurrencyPairs = Entry('currency_pairs', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
139
141
|
private_flash_swap_get_orders = privateFlash_swapGetOrders = Entry('orders', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
140
142
|
private_flash_swap_get_orders_order_id = privateFlash_swapGetOrdersOrderId = Entry('orders/{order_id}', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
141
143
|
private_flash_swap_post_orders = privateFlash_swapPostOrders = Entry('orders', ['private', 'flash_swap'], 'POST', {'cost': 1.5})
|
ccxt/abstract/gateio.py
CHANGED
@@ -136,6 +136,8 @@ class ImplicitAPI:
|
|
136
136
|
private_margin_patch_loans_loan_id = privateMarginPatchLoansLoanId = Entry('loans/{loan_id}', ['private', 'margin'], 'PATCH', {'cost': 1.5})
|
137
137
|
private_margin_patch_loan_records_loan_record_id = privateMarginPatchLoanRecordsLoanRecordId = Entry('loan_records/{loan_record_id}', ['private', 'margin'], 'PATCH', {'cost': 1.5})
|
138
138
|
private_margin_delete_loans_loan_id = privateMarginDeleteLoansLoanId = Entry('loans/{loan_id}', ['private', 'margin'], 'DELETE', {'cost': 1.5})
|
139
|
+
private_flash_swap_get_currencies = privateFlash_swapGetCurrencies = Entry('currencies', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
140
|
+
private_flash_swap_get_currency_pairs = privateFlash_swapGetCurrencyPairs = Entry('currency_pairs', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
139
141
|
private_flash_swap_get_orders = privateFlash_swapGetOrders = Entry('orders', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
140
142
|
private_flash_swap_get_orders_order_id = privateFlash_swapGetOrdersOrderId = Entry('orders/{order_id}', ['private', 'flash_swap'], 'GET', {'cost': 1.5})
|
141
143
|
private_flash_swap_post_orders = privateFlash_swapPostOrders = Entry('orders', ['private', 'flash_swap'], 'POST', {'cost': 1.5})
|
ccxt/abstract/okex.py
CHANGED
@@ -215,6 +215,7 @@ class ImplicitAPI:
|
|
215
215
|
private_post_account_set_riskoffset_type = privatePostAccountSetRiskOffsetType = Entry('account/set-riskOffset-type', 'private', 'POST', {'cost': 2})
|
216
216
|
private_post_account_activate_option = privatePostAccountActivateOption = Entry('account/activate-option', 'private', 'POST', {'cost': 4})
|
217
217
|
private_post_account_set_auto_loan = privatePostAccountSetAutoLoan = Entry('account/set-auto-loan', 'private', 'POST', {'cost': 4})
|
218
|
+
private_post_account_set_account_level = privatePostAccountSetAccountLevel = Entry('account/set-account-level', 'private', 'POST', {'cost': 4})
|
218
219
|
private_post_account_mmp_reset = privatePostAccountMmpReset = Entry('account/mmp-reset', 'private', 'POST', {'cost': 4})
|
219
220
|
private_post_account_mmp_config = privatePostAccountMmpConfig = Entry('account/mmp-config', 'private', 'POST', {'cost': 100})
|
220
221
|
private_post_users_subaccount_modify_apikey = privatePostUsersSubaccountModifyApikey = Entry('users/subaccount/modify-apikey', 'private', 'POST', {'cost': 10})
|
ccxt/abstract/okex5.py
CHANGED
@@ -215,6 +215,7 @@ class ImplicitAPI:
|
|
215
215
|
private_post_account_set_riskoffset_type = privatePostAccountSetRiskOffsetType = Entry('account/set-riskOffset-type', 'private', 'POST', {'cost': 2})
|
216
216
|
private_post_account_activate_option = privatePostAccountActivateOption = Entry('account/activate-option', 'private', 'POST', {'cost': 4})
|
217
217
|
private_post_account_set_auto_loan = privatePostAccountSetAutoLoan = Entry('account/set-auto-loan', 'private', 'POST', {'cost': 4})
|
218
|
+
private_post_account_set_account_level = privatePostAccountSetAccountLevel = Entry('account/set-account-level', 'private', 'POST', {'cost': 4})
|
218
219
|
private_post_account_mmp_reset = privatePostAccountMmpReset = Entry('account/mmp-reset', 'private', 'POST', {'cost': 4})
|
219
220
|
private_post_account_mmp_config = privatePostAccountMmpConfig = Entry('account/mmp-config', 'private', 'POST', {'cost': 100})
|
220
221
|
private_post_users_subaccount_modify_apikey = privatePostUsersSubaccountModifyApikey = Entry('users/subaccount/modify-apikey', 'private', 'POST', {'cost': 10})
|
ccxt/abstract/okx.py
CHANGED
@@ -215,6 +215,7 @@ class ImplicitAPI:
|
|
215
215
|
private_post_account_set_riskoffset_type = privatePostAccountSetRiskOffsetType = Entry('account/set-riskOffset-type', 'private', 'POST', {'cost': 2})
|
216
216
|
private_post_account_activate_option = privatePostAccountActivateOption = Entry('account/activate-option', 'private', 'POST', {'cost': 4})
|
217
217
|
private_post_account_set_auto_loan = privatePostAccountSetAutoLoan = Entry('account/set-auto-loan', 'private', 'POST', {'cost': 4})
|
218
|
+
private_post_account_set_account_level = privatePostAccountSetAccountLevel = Entry('account/set-account-level', 'private', 'POST', {'cost': 4})
|
218
219
|
private_post_account_mmp_reset = privatePostAccountMmpReset = Entry('account/mmp-reset', 'private', 'POST', {'cost': 4})
|
219
220
|
private_post_account_mmp_config = privatePostAccountMmpConfig = Entry('account/mmp-config', 'private', 'POST', {'cost': 100})
|
220
221
|
private_post_users_subaccount_modify_apikey = privatePostUsersSubaccountModifyApikey = Entry('users/subaccount/modify-apikey', 'private', 'POST', {'cost': 10})
|
ccxt/async_support/__init__.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.0.
|
5
|
+
__version__ = '4.0.38'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -599,7 +599,7 @@ class Exchange(BaseExchange):
|
|
599
599
|
value = self.safe_value(entry, key)
|
600
600
|
if value and (value >= since):
|
601
601
|
result.append(entry)
|
602
|
-
if tail:
|
602
|
+
if tail and limit is not None:
|
603
603
|
return self.arraySlice(result, -limit)
|
604
604
|
return self.filter_by_limit(result, limit, key)
|
605
605
|
|
@@ -620,7 +620,7 @@ class Exchange(BaseExchange):
|
|
620
620
|
secondCondition = entryKeyGESince if sinceIsDefined else True
|
621
621
|
if firstCondition and secondCondition:
|
622
622
|
result.append(entry)
|
623
|
-
if tail:
|
623
|
+
if tail and limit is not None:
|
624
624
|
return self.arraySlice(result, -limit)
|
625
625
|
return self.filter_by_limit(result, limit, key)
|
626
626
|
|
@@ -2281,6 +2281,9 @@ class Exchange(BaseExchange):
|
|
2281
2281
|
async def watch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2282
2282
|
raise NotSupported(self.id + ' watchMyTrades() is not supported yet')
|
2283
2283
|
|
2284
|
+
async def fetch_ohlcv_ws(self, symbol: str, timeframe: str = '1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2285
|
+
raise NotSupported(self.id + ' fetchOHLCVWs() is not supported yet')
|
2286
|
+
|
2284
2287
|
async def fetch_deposits_withdrawals(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2285
2288
|
"""
|
2286
2289
|
fetch history of deposits and withdrawals
|
ccxt/async_support/binance.py
CHANGED
@@ -542,8 +542,9 @@ class binance(Exchange, ImplicitAPI):
|
|
542
542
|
'loan/vip/repay': 40, # Weight(UID): 6000 => cost = 0.006667 * 6000 = 40
|
543
543
|
'convert/getQuote': 20.001,
|
544
544
|
'convert/acceptQuote': 3.3335,
|
545
|
-
'portfolio/auto-collection':
|
546
|
-
'portfolio/
|
545
|
+
'portfolio/auto-collection': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
546
|
+
'portfolio/asset-collection': 6, # Weight(IP): 60 => cost = 0.1 * 60 = 6
|
547
|
+
'portfolio/bnb-transfer': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
547
548
|
'portfolio/repay-futures-switch': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
548
549
|
'portfolio/repay-futures-negative-balance': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
549
550
|
'lending/auto-invest/plan/add': 0.1, # Weight(IP): 1 => cost = 0.1 * 1 = 0.1
|
@@ -818,6 +819,8 @@ class binance(Exchange, ImplicitAPI):
|
|
818
819
|
'userTrades': 5,
|
819
820
|
'exerciseRecord': 5,
|
820
821
|
'bill': 1,
|
822
|
+
'income/asyn': 5,
|
823
|
+
'income/asyn/id': 5,
|
821
824
|
'marginAccount': 3,
|
822
825
|
'mmp': 1,
|
823
826
|
'countdownCancelAll': 1,
|
@@ -3640,7 +3643,7 @@ class binance(Exchange, ImplicitAPI):
|
|
3640
3643
|
if postOnly:
|
3641
3644
|
uppercaseType = 'LIMIT_MAKER'
|
3642
3645
|
request['type'] = uppercaseType
|
3643
|
-
stopPrice = self.
|
3646
|
+
stopPrice = self.safe_number_2(params, 'stopPrice', 'triggerPrice')
|
3644
3647
|
if stopPrice is not None:
|
3645
3648
|
if uppercaseType == 'MARKET':
|
3646
3649
|
uppercaseType = 'STOP_LOSS'
|
ccxt/async_support/coinex.py
CHANGED
@@ -3070,30 +3070,30 @@ class coinex(Exchange, ImplicitAPI):
|
|
3070
3070
|
|
3071
3071
|
async def set_leverage(self, leverage, symbol: Optional[str] = None, params={}):
|
3072
3072
|
"""
|
3073
|
+
see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http014_adjust_leverage
|
3073
3074
|
set the level of leverage for a market
|
3074
3075
|
:param float leverage: the rate of leverage
|
3075
3076
|
:param str symbol: unified market symbol
|
3076
3077
|
:param dict [params]: extra parameters specific to the coinex api endpoint
|
3078
|
+
:param str [params.marginMode]: 'cross' or 'isolated'(default is 'cross')
|
3077
3079
|
:returns dict: response from the exchange
|
3078
3080
|
"""
|
3079
|
-
|
3080
|
-
raise ArgumentsRequired(self.id + ' setLeverage() requires a symbol argument')
|
3081
|
+
self.check_required_symbol('setLeverage', symbol)
|
3081
3082
|
await self.load_markets()
|
3082
|
-
defaultMarginMode = self.safe_string_2(self.options, 'defaultMarginMode', 'marginMode')
|
3083
|
-
defaultPositionType = None
|
3084
|
-
if defaultMarginMode == 'isolated':
|
3085
|
-
defaultPositionType = 1
|
3086
|
-
elif defaultMarginMode == 'cross':
|
3087
|
-
defaultPositionType = 2
|
3088
|
-
positionType = self.safe_integer(params, 'position_type', defaultPositionType)
|
3089
|
-
if positionType is None:
|
3090
|
-
raise ArgumentsRequired(self.id + ' setLeverage() requires a position_type parameter that will transfer margin to the specified trading pair')
|
3091
3083
|
market = self.market(symbol)
|
3092
|
-
|
3093
|
-
if market['type'] != 'swap':
|
3084
|
+
if not market['swap']:
|
3094
3085
|
raise BadSymbol(self.id + ' setLeverage() supports swap contracts only')
|
3095
|
-
|
3096
|
-
|
3086
|
+
marginMode = None
|
3087
|
+
marginMode, params = self.handle_margin_mode_and_params('setLeverage', params, 'cross')
|
3088
|
+
positionType = None
|
3089
|
+
if marginMode == 'isolated':
|
3090
|
+
positionType = 1
|
3091
|
+
elif marginMode == 'cross':
|
3092
|
+
positionType = 2
|
3093
|
+
minLeverage = self.safe_integer(market['limits']['leverage'], 'min', 1)
|
3094
|
+
maxLeverage = self.safe_integer(market['limits']['leverage'], 'max', 100)
|
3095
|
+
if (leverage < minLeverage) or (leverage > maxLeverage):
|
3096
|
+
raise BadRequest(self.id + ' setLeverage() leverage should be between ' + str(minLeverage) + ' and ' + str(maxLeverage) + ' for ' + symbol)
|
3097
3097
|
request = {
|
3098
3098
|
'market': market['id'],
|
3099
3099
|
'leverage': str(leverage),
|
ccxt/async_support/gate.py
CHANGED
@@ -373,6 +373,8 @@ class gate(Exchange, ImplicitAPI):
|
|
373
373
|
},
|
374
374
|
'flash_swap': {
|
375
375
|
'get': {
|
376
|
+
'currencies': 1.5,
|
377
|
+
'currency_pairs': 1.5,
|
376
378
|
'orders': 1.5,
|
377
379
|
'orders/{order_id}': 1.5,
|
378
380
|
},
|
@@ -783,6 +785,7 @@ class gate(Exchange, ImplicitAPI):
|
|
783
785
|
'REPAY_TOO_MUCH': ExchangeError,
|
784
786
|
'TOO_MANY_CURRENCY_PAIRS': InvalidOrder,
|
785
787
|
'TOO_MANY_ORDERS': InvalidOrder,
|
788
|
+
'TOO_MANY_REQUESTS': RateLimitExceeded,
|
786
789
|
'MIXED_ACCOUNT_TYPE': InvalidOrder,
|
787
790
|
'AUTO_BORROW_TOO_MUCH': ExchangeError,
|
788
791
|
'TRADE_RESTRICTED': InsufficientFunds,
|
ccxt/async_support/okx.py
CHANGED
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.0.
|
7
|
+
__version__ = '4.0.38'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -1772,7 +1772,7 @@ class Exchange(object):
|
|
1772
1772
|
value = self.safe_value(entry, key)
|
1773
1773
|
if value and (value >= since):
|
1774
1774
|
result.append(entry)
|
1775
|
-
if tail:
|
1775
|
+
if tail and limit is not None:
|
1776
1776
|
return self.arraySlice(result, -limit)
|
1777
1777
|
return self.filter_by_limit(result, limit, key)
|
1778
1778
|
|
@@ -1793,7 +1793,7 @@ class Exchange(object):
|
|
1793
1793
|
secondCondition = entryKeyGESince if sinceIsDefined else True
|
1794
1794
|
if firstCondition and secondCondition:
|
1795
1795
|
result.append(entry)
|
1796
|
-
if tail:
|
1796
|
+
if tail and limit is not None:
|
1797
1797
|
return self.arraySlice(result, -limit)
|
1798
1798
|
return self.filter_by_limit(result, limit, key)
|
1799
1799
|
|
@@ -3454,6 +3454,9 @@ class Exchange(object):
|
|
3454
3454
|
def watch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
3455
3455
|
raise NotSupported(self.id + ' watchMyTrades() is not supported yet')
|
3456
3456
|
|
3457
|
+
def fetch_ohlcv_ws(self, symbol: str, timeframe: str = '1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
3458
|
+
raise NotSupported(self.id + ' fetchOHLCVWs() is not supported yet')
|
3459
|
+
|
3457
3460
|
def fetch_deposits_withdrawals(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
3458
3461
|
"""
|
3459
3462
|
fetch history of deposits and withdrawals
|
ccxt/binance.py
CHANGED
@@ -541,8 +541,9 @@ class binance(Exchange, ImplicitAPI):
|
|
541
541
|
'loan/vip/repay': 40, # Weight(UID): 6000 => cost = 0.006667 * 6000 = 40
|
542
542
|
'convert/getQuote': 20.001,
|
543
543
|
'convert/acceptQuote': 3.3335,
|
544
|
-
'portfolio/auto-collection':
|
545
|
-
'portfolio/
|
544
|
+
'portfolio/auto-collection': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
545
|
+
'portfolio/asset-collection': 6, # Weight(IP): 60 => cost = 0.1 * 60 = 6
|
546
|
+
'portfolio/bnb-transfer': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
546
547
|
'portfolio/repay-futures-switch': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
547
548
|
'portfolio/repay-futures-negative-balance': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
|
548
549
|
'lending/auto-invest/plan/add': 0.1, # Weight(IP): 1 => cost = 0.1 * 1 = 0.1
|
@@ -817,6 +818,8 @@ class binance(Exchange, ImplicitAPI):
|
|
817
818
|
'userTrades': 5,
|
818
819
|
'exerciseRecord': 5,
|
819
820
|
'bill': 1,
|
821
|
+
'income/asyn': 5,
|
822
|
+
'income/asyn/id': 5,
|
820
823
|
'marginAccount': 3,
|
821
824
|
'mmp': 1,
|
822
825
|
'countdownCancelAll': 1,
|
@@ -3639,7 +3642,7 @@ class binance(Exchange, ImplicitAPI):
|
|
3639
3642
|
if postOnly:
|
3640
3643
|
uppercaseType = 'LIMIT_MAKER'
|
3641
3644
|
request['type'] = uppercaseType
|
3642
|
-
stopPrice = self.
|
3645
|
+
stopPrice = self.safe_number_2(params, 'stopPrice', 'triggerPrice')
|
3643
3646
|
if stopPrice is not None:
|
3644
3647
|
if uppercaseType == 'MARKET':
|
3645
3648
|
uppercaseType = 'STOP_LOSS'
|
ccxt/coinex.py
CHANGED
@@ -3069,30 +3069,30 @@ class coinex(Exchange, ImplicitAPI):
|
|
3069
3069
|
|
3070
3070
|
def set_leverage(self, leverage, symbol: Optional[str] = None, params={}):
|
3071
3071
|
"""
|
3072
|
+
see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http014_adjust_leverage
|
3072
3073
|
set the level of leverage for a market
|
3073
3074
|
:param float leverage: the rate of leverage
|
3074
3075
|
:param str symbol: unified market symbol
|
3075
3076
|
:param dict [params]: extra parameters specific to the coinex api endpoint
|
3077
|
+
:param str [params.marginMode]: 'cross' or 'isolated'(default is 'cross')
|
3076
3078
|
:returns dict: response from the exchange
|
3077
3079
|
"""
|
3078
|
-
|
3079
|
-
raise ArgumentsRequired(self.id + ' setLeverage() requires a symbol argument')
|
3080
|
+
self.check_required_symbol('setLeverage', symbol)
|
3080
3081
|
self.load_markets()
|
3081
|
-
defaultMarginMode = self.safe_string_2(self.options, 'defaultMarginMode', 'marginMode')
|
3082
|
-
defaultPositionType = None
|
3083
|
-
if defaultMarginMode == 'isolated':
|
3084
|
-
defaultPositionType = 1
|
3085
|
-
elif defaultMarginMode == 'cross':
|
3086
|
-
defaultPositionType = 2
|
3087
|
-
positionType = self.safe_integer(params, 'position_type', defaultPositionType)
|
3088
|
-
if positionType is None:
|
3089
|
-
raise ArgumentsRequired(self.id + ' setLeverage() requires a position_type parameter that will transfer margin to the specified trading pair')
|
3090
3082
|
market = self.market(symbol)
|
3091
|
-
|
3092
|
-
if market['type'] != 'swap':
|
3083
|
+
if not market['swap']:
|
3093
3084
|
raise BadSymbol(self.id + ' setLeverage() supports swap contracts only')
|
3094
|
-
|
3095
|
-
|
3085
|
+
marginMode = None
|
3086
|
+
marginMode, params = self.handle_margin_mode_and_params('setLeverage', params, 'cross')
|
3087
|
+
positionType = None
|
3088
|
+
if marginMode == 'isolated':
|
3089
|
+
positionType = 1
|
3090
|
+
elif marginMode == 'cross':
|
3091
|
+
positionType = 2
|
3092
|
+
minLeverage = self.safe_integer(market['limits']['leverage'], 'min', 1)
|
3093
|
+
maxLeverage = self.safe_integer(market['limits']['leverage'], 'max', 100)
|
3094
|
+
if (leverage < minLeverage) or (leverage > maxLeverage):
|
3095
|
+
raise BadRequest(self.id + ' setLeverage() leverage should be between ' + str(minLeverage) + ' and ' + str(maxLeverage) + ' for ' + symbol)
|
3096
3096
|
request = {
|
3097
3097
|
'market': market['id'],
|
3098
3098
|
'leverage': str(leverage),
|
ccxt/gate.py
CHANGED
@@ -372,6 +372,8 @@ class gate(Exchange, ImplicitAPI):
|
|
372
372
|
},
|
373
373
|
'flash_swap': {
|
374
374
|
'get': {
|
375
|
+
'currencies': 1.5,
|
376
|
+
'currency_pairs': 1.5,
|
375
377
|
'orders': 1.5,
|
376
378
|
'orders/{order_id}': 1.5,
|
377
379
|
},
|
@@ -782,6 +784,7 @@ class gate(Exchange, ImplicitAPI):
|
|
782
784
|
'REPAY_TOO_MUCH': ExchangeError,
|
783
785
|
'TOO_MANY_CURRENCY_PAIRS': InvalidOrder,
|
784
786
|
'TOO_MANY_ORDERS': InvalidOrder,
|
787
|
+
'TOO_MANY_REQUESTS': RateLimitExceeded,
|
785
788
|
'MIXED_ACCOUNT_TYPE': InvalidOrder,
|
786
789
|
'AUTO_BORROW_TOO_MUCH': ExchangeError,
|
787
790
|
'TRADE_RESTRICTED': InsufficientFunds,
|
ccxt/okx.py
CHANGED
ccxt/pro/__init__.py
CHANGED
ccxt/pro/coinex.py
CHANGED
@@ -30,7 +30,8 @@ class coinex(ccxt.async_support.coinex):
|
|
30
30
|
'watchMyTrades': False, # can query but can't subscribe
|
31
31
|
'watchOrders': True,
|
32
32
|
'watchOrderBook': True,
|
33
|
-
'watchOHLCV':
|
33
|
+
'watchOHLCV': True, # only for swap markets
|
34
|
+
'fetchOHLCVWs': True,
|
34
35
|
},
|
35
36
|
'urls': {
|
36
37
|
'api': {
|
@@ -345,6 +346,23 @@ class coinex(ccxt.async_support.coinex):
|
|
345
346
|
|
346
347
|
def handle_ohlcv(self, client: Client, message):
|
347
348
|
#
|
349
|
+
# spot
|
350
|
+
# {
|
351
|
+
# error: null,
|
352
|
+
# result: [
|
353
|
+
# [
|
354
|
+
# 1673846940,
|
355
|
+
# '21148.74',
|
356
|
+
# '21148.38',
|
357
|
+
# '21148.75',
|
358
|
+
# '21138.66',
|
359
|
+
# '1.57060173',
|
360
|
+
# '33214.9138778914'
|
361
|
+
# ],
|
362
|
+
# ]
|
363
|
+
# id: 1,
|
364
|
+
# }
|
365
|
+
# swap
|
348
366
|
# {
|
349
367
|
# method: 'kline.update',
|
350
368
|
# params: [
|
@@ -361,10 +379,16 @@ class coinex(ccxt.async_support.coinex):
|
|
361
379
|
# id: null
|
362
380
|
# }
|
363
381
|
#
|
364
|
-
candles = self.
|
382
|
+
candles = self.safe_value_2(message, 'params', 'result', [])
|
365
383
|
messageHash = 'ohlcv'
|
384
|
+
id = self.safe_string(message, 'id')
|
366
385
|
ohlcvs = self.parse_ohlcvs(candles)
|
367
|
-
|
386
|
+
if id is not None:
|
387
|
+
# spot subscription response
|
388
|
+
client.resolve(ohlcvs, messageHash)
|
389
|
+
return
|
390
|
+
keys = list(self.ohlcvs.keys())
|
391
|
+
keysLength = len(keys)
|
368
392
|
if keysLength == 0:
|
369
393
|
limit = self.safe_integer(self.options, 'OHLCVLimit', 1000)
|
370
394
|
self.ohlcvs = ArrayCacheByTimestamp(limit)
|
@@ -485,6 +509,7 @@ class coinex(ccxt.async_support.coinex):
|
|
485
509
|
|
486
510
|
async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
487
511
|
"""
|
512
|
+
see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures002_websocket023_kline_subscribe
|
488
513
|
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
489
514
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
490
515
|
:param str timeframe: the length of time each candle represents
|
@@ -499,14 +524,17 @@ class coinex(ccxt.async_support.coinex):
|
|
499
524
|
type = None
|
500
525
|
type, params = self.handle_market_type_and_params('watchOHLCV', market, params)
|
501
526
|
if type != 'swap':
|
502
|
-
raise NotSupported(self.id + ' watchOHLCV() is only supported for swap markets')
|
527
|
+
raise NotSupported(self.id + ' watchOHLCV() is only supported for swap markets. Try using fetchOHLCV() instead')
|
503
528
|
url = self.urls['api']['ws'][type]
|
504
529
|
messageHash = 'ohlcv'
|
505
530
|
watchOHLCVWarning = self.safe_value(self.options, 'watchOHLCVWarning', True)
|
506
531
|
client = self.safe_value(self.clients, url, {})
|
507
|
-
|
532
|
+
clientSub = self.safe_value(client, 'subscriptions', {})
|
533
|
+
existingSubscription = self.safe_value(clientSub, messageHash)
|
534
|
+
subSymbol = self.safe_string(existingSubscription, 'symbol')
|
535
|
+
subTimeframe = self.safe_string(existingSubscription, 'timeframe')
|
508
536
|
# due to nature of coinex response can only watch one symbol at a time
|
509
|
-
if watchOHLCVWarning and existingSubscription is not None and (
|
537
|
+
if watchOHLCVWarning and existingSubscription is not None and (subSymbol != symbol or subTimeframe != timeframe):
|
510
538
|
raise ExchangeError(self.id + ' watchOHLCV() can only watch one symbol and timeframe at a time. To supress self warning set watchOHLCVWarning to False in options')
|
511
539
|
timeframes = self.safe_value(self.options, 'timeframes', {})
|
512
540
|
subscribe = {
|
@@ -514,7 +542,7 @@ class coinex(ccxt.async_support.coinex):
|
|
514
542
|
'id': self.request_id(),
|
515
543
|
'params': [
|
516
544
|
market['id'],
|
517
|
-
self.
|
545
|
+
self.safe_integer(timeframes, timeframe),
|
518
546
|
],
|
519
547
|
}
|
520
548
|
subscription = {
|
@@ -527,6 +555,48 @@ class coinex(ccxt.async_support.coinex):
|
|
527
555
|
limit = ohlcvs.getLimit(symbol, limit)
|
528
556
|
return self.filter_by_since_limit(ohlcvs, since, limit, 0)
|
529
557
|
|
558
|
+
async def fetch_ohlcv_ws(self, symbol, timeframe='1m', since=None, limit=None, params={}):
|
559
|
+
"""
|
560
|
+
see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot004_websocket005_kline_query
|
561
|
+
query historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
562
|
+
:param str symbol: unified symbol of the market to query OHLCV data for
|
563
|
+
:param str timeframe: the length of time each candle represents
|
564
|
+
:param int|None since: timestamp in ms of the earliest candle to fetch
|
565
|
+
:param int|None limit: the maximum amount of candles to fetch
|
566
|
+
:param dict params: extra parameters specific to the coinex api endpoint
|
567
|
+
:param int|None params['end']: the end time for spot markets, self.seconds() is set
|
568
|
+
:returns [[int]]: A list of candles ordered, open, high, low, close, volume
|
569
|
+
"""
|
570
|
+
await self.load_markets()
|
571
|
+
market = self.market(symbol)
|
572
|
+
type, query = self.handle_market_type_and_params('fetchOHLCV', market, params)
|
573
|
+
url = self.urls['api']['ws'][type]
|
574
|
+
symbol = market['symbol']
|
575
|
+
messageHash = 'ohlcv'
|
576
|
+
timeframes = self.safe_value(self.options, 'timeframes', {})
|
577
|
+
timeframe = self.safe_string(timeframes, timeframe, timeframe)
|
578
|
+
if since is None:
|
579
|
+
since = 1640995200 # January 1, 2022
|
580
|
+
id = self.request_id()
|
581
|
+
subscribe = {
|
582
|
+
'method': 'kline.query',
|
583
|
+
'params': [
|
584
|
+
market['id'],
|
585
|
+
self.parse_to_int(since / 1000),
|
586
|
+
self.safe_integer(params, 'end', self.seconds()),
|
587
|
+
self.parse_to_int(timeframe),
|
588
|
+
],
|
589
|
+
'id': id,
|
590
|
+
}
|
591
|
+
subscription = {
|
592
|
+
'id': id,
|
593
|
+
'future': messageHash,
|
594
|
+
}
|
595
|
+
subscriptionHash = id
|
596
|
+
request = self.deep_extend(subscribe, query)
|
597
|
+
ohlcvs = await self.watch(url, messageHash, request, subscriptionHash, subscription)
|
598
|
+
return self.filter_by_since_limit(ohlcvs, since, limit, 0)
|
599
|
+
|
530
600
|
def handle_delta(self, bookside, delta):
|
531
601
|
bidAsk = self.parse_bid_ask(delta, 0, 1)
|
532
602
|
bookside.storeArray(bidAsk)
|
@@ -917,6 +987,8 @@ class coinex(ccxt.async_support.coinex):
|
|
917
987
|
subscription = self.safe_value(client.subscriptions, id)
|
918
988
|
if subscription is not None:
|
919
989
|
futureIndex = self.safe_string(subscription, 'future')
|
990
|
+
if futureIndex == 'ohlcv':
|
991
|
+
return self.handle_ohlcv(client, message)
|
920
992
|
future = self.safe_value(client.futures, futureIndex)
|
921
993
|
if future is not None:
|
922
994
|
future.resolve(True)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.38
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -260,13 +260,13 @@ console.log(version, Object.keys(exchanges));
|
|
260
260
|
|
261
261
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
262
262
|
|
263
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
264
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
263
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.38/dist/ccxt.browser.js
|
264
|
+
* unpkg: https://unpkg.com/ccxt@4.0.38/dist/ccxt.browser.js
|
265
265
|
|
266
266
|
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.
|
267
267
|
|
268
268
|
```HTML
|
269
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
269
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.38/dist/ccxt.browser.js"></script>
|
270
270
|
```
|
271
271
|
|
272
272
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=OEXnJg5MHbafgj_KsEpQkrUM7Sorn14UhDeWQ4uaaXc,15438
|
2
2
|
ccxt/ace.py,sha256=8uTO7fzyxHnEhE3Y8VDP2EcWxh9gjs9xPMbuXjkUA7A,41372
|
3
3
|
ccxt/alpaca.py,sha256=_cPmZ0obENxKSzsqLu0t1Ae-rUwN8z1DUB3Af8Kh4sA,33434
|
4
4
|
ccxt/ascendex.py,sha256=rGD9sFxbRf_lEZavZpa6UEBIeX1tMydeFZzDOaQ3s8o,132537
|
5
5
|
ccxt/bequant.py,sha256=1wDyg1jmS1H9WkODiqztoLVhQog7R6n7MUZsOhIRwRU,1136
|
6
6
|
ccxt/bigone.py,sha256=3hAbaUMHIttNIte0xVSLUfiV914Fj6JsuyseQ4AIVk8,75446
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=MAjK1-hpLKspvE_oAlYoFwLjQX9HAg3PhMMt1us78BY,392689
|
8
8
|
ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
|
9
9
|
ccxt/binanceus.py,sha256=RoC8nReBHXUJzRNyqMe4vhta6gLGuh1fyFkI8FOMKBE,2151
|
10
10
|
ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
|
@@ -44,7 +44,7 @@ ccxt/coinbase.py,sha256=aswSRpuvEpWPGy5EdeYbz6bTFRZw5-yboIJbBPa7n7U,129413
|
|
44
44
|
ccxt/coinbaseprime.py,sha256=Ygvljulxb2uKdei5yimCj1LMjLlUJNvP-G7ns1HpUFk,1219
|
45
45
|
ccxt/coinbasepro.py,sha256=_U1ZVWUGvUdqiwn9O2ijxIh0o9pdi1qXHLq7zg7CI5Q,73870
|
46
46
|
ccxt/coincheck.py,sha256=0Y7Z49gpWfMuFcuJXAnCHAMjh1QUpgcaR95lPTD0h9o,34219
|
47
|
-
ccxt/coinex.py,sha256=
|
47
|
+
ccxt/coinex.py,sha256=gWnkRw3kQEJfE0s8FZniYDONzoNrekbiZ9CEmyTEjkc,194426
|
48
48
|
ccxt/coinfalcon.py,sha256=0NCXdTVU5qAEROVf0GRidmONJpV1zsOr2p_PW7yK-vE,38972
|
49
49
|
ccxt/coinmate.py,sha256=CoK00164_37RGO2hKHVPAOMZx578ADZ4eTNWZbqVhTI,39561
|
50
50
|
ccxt/coinone.py,sha256=8wX92TU-3QPbCzgYZrEMrnFyBZyca6lbLV3GttWfxfc,35261
|
@@ -58,7 +58,7 @@ ccxt/digifinex.py,sha256=jbP6esId7yqvSkbzsyg66EOd8Et3UKUT4q3omKjXYDQ,150987
|
|
58
58
|
ccxt/exmo.py,sha256=bZQg1t8yrKscH3FWDKd5DmGsjR9d5-vJnOIoGG1swfk,88943
|
59
59
|
ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
|
60
60
|
ccxt/fmfwio.py,sha256=ww13viYsuW8IzHhr3HST8uuroYsCZ2aynyG4i_SE0LU,1238
|
61
|
-
ccxt/gate.py,sha256=
|
61
|
+
ccxt/gate.py,sha256=GkqMvu9sQMIfe9TRC0d-uu0O-jDKG4JYKUFaFMwnBDs,252098
|
62
62
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
63
63
|
ccxt/gemini.py,sha256=1VOPAe_VzFnMWuCXiVgP8Ra7wl7Osp3G_dvrGX6mHec,73902
|
64
64
|
ccxt/hitbtc.py,sha256=Xj9-g6b8vzpCm6g-FrIjFGUa2CgroKc2bLyrSP22Uj0,62285
|
@@ -89,7 +89,7 @@ ccxt/oceanex.py,sha256=H7iiIWo9WInk_wwxScMZBGxs2EH7kNpEui9IsLKYVAY,38242
|
|
89
89
|
ccxt/okcoin.py,sha256=B5otctOYDvWkhckFWW7tfhUQsQaSbPiZh0X0eqR1K_w,177829
|
90
90
|
ccxt/okex.py,sha256=nVDSzVztmboH593DVByjzFoOpFTzumcQFH_T9kdVKlE,434
|
91
91
|
ccxt/okex5.py,sha256=LKTogVF1svNkqW_-Cx0AuAopu6esgFf7ucbv7CaodUg,441
|
92
|
-
ccxt/okx.py,sha256=
|
92
|
+
ccxt/okx.py,sha256=nRZ3f4unYDhq1erSGqmxuwm7grSRVSLBVJ9zyIjeMEw,297879
|
93
93
|
ccxt/paymium.py,sha256=DIlRvOVsYZaPGDUSBZH3-DUIXf7QfHEOFyhephw48HE,23938
|
94
94
|
ccxt/phemex.py,sha256=taCpvz-oLSrgM6OqkMXxpVw6s2THKaTWOJ06VG0BXpY,198063
|
95
95
|
ccxt/poloniex.py,sha256=x9lkjYRnGOKkZaAJwqdtz0EUATuknHgeTkXYXSN0ez4,93495
|
@@ -112,10 +112,10 @@ ccxt/abstract/alpaca.py,sha256=GKGGXKJ9WzW9V3SmOX_Jjaea_QTa04Eg5nYhQgFErGI,1861
|
|
112
112
|
ccxt/abstract/ascendex.py,sha256=lMrOIR7VWJXoNaA8rjCNI8p-WTYsVlpC_D4jpDg5k_8,11197
|
113
113
|
ccxt/abstract/bequant.py,sha256=0T5QJsSdYh5qcydcL76kC78pip1XrMDvaKkpxkcBsfc,8376
|
114
114
|
ccxt/abstract/bigone.py,sha256=kuQi7l8C_zqTHdfXiBOfDR7424mzST2OjtN9wMStkWc,2457
|
115
|
-
ccxt/abstract/binance.py,sha256=
|
116
|
-
ccxt/abstract/binancecoinm.py,sha256=
|
117
|
-
ccxt/abstract/binanceus.py,sha256=
|
118
|
-
ccxt/abstract/binanceusdm.py,sha256=
|
115
|
+
ccxt/abstract/binance.py,sha256=2aF9mTT65cyPjioK2siADelfAKui-5PiiTz2xGn1wTc,78170
|
116
|
+
ccxt/abstract/binancecoinm.py,sha256=2aF9mTT65cyPjioK2siADelfAKui-5PiiTz2xGn1wTc,78170
|
117
|
+
ccxt/abstract/binanceus.py,sha256=2aF9mTT65cyPjioK2siADelfAKui-5PiiTz2xGn1wTc,78170
|
118
|
+
ccxt/abstract/binanceusdm.py,sha256=2aF9mTT65cyPjioK2siADelfAKui-5PiiTz2xGn1wTc,78170
|
119
119
|
ccxt/abstract/bingx.py,sha256=PJzOcIO960mxEAPy8bFEZ3vJHrqUM3hkCc-6QERkkwU,7635
|
120
120
|
ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
|
121
121
|
ccxt/abstract/bitbank.py,sha256=k5D8PoPW2N79K_24NL9yY0qkwaCgzi_VoYUlqnj2bs8,2606
|
@@ -165,8 +165,8 @@ ccxt/abstract/deribit.py,sha256=rS_982u8dOVsh2vGSB5TO7K8Tye0Alq-Rg9fYZwz8hg,1549
|
|
165
165
|
ccxt/abstract/digifinex.py,sha256=2tlP2G6Niu6TSbNUcgxvXdHfln6VhAZliXV7upFwpas,9386
|
166
166
|
ccxt/abstract/exmo.py,sha256=yq9zis5G9Qjsecs-YSHAghDjad6y52jFteWSBJZFg8o,6177
|
167
167
|
ccxt/abstract/fmfwio.py,sha256=0T5QJsSdYh5qcydcL76kC78pip1XrMDvaKkpxkcBsfc,8376
|
168
|
-
ccxt/abstract/gate.py,sha256=
|
169
|
-
ccxt/abstract/gateio.py,sha256=
|
168
|
+
ccxt/abstract/gate.py,sha256=c6k6EJqNLp9CkqWq9KYjCNJUkWHr0a51S6tQ38Jwm-o,33517
|
169
|
+
ccxt/abstract/gateio.py,sha256=c6k6EJqNLp9CkqWq9KYjCNJUkWHr0a51S6tQ38Jwm-o,33517
|
170
170
|
ccxt/abstract/gemini.py,sha256=6TyBUDw-e4b02J5ToCX0eaXQfF0Knvkf7ToLcseqcIY,6915
|
171
171
|
ccxt/abstract/hitbtc.py,sha256=0T5QJsSdYh5qcydcL76kC78pip1XrMDvaKkpxkcBsfc,8376
|
172
172
|
ccxt/abstract/hitbtc3.py,sha256=-bjb83y_4FGdHtHMo-naHYoI5JyltlF2M-TzjAZJ3Hg,10949
|
@@ -194,9 +194,9 @@ ccxt/abstract/ndax.py,sha256=M98Ys406KT6T19Y98dXriD6YjzfglHHbnfQw-PDYWtM,11878
|
|
194
194
|
ccxt/abstract/novadax.py,sha256=Yy-lYKteQyZTaajK5oQTTikd5sU33cct4ZdtNxo2j30,2565
|
195
195
|
ccxt/abstract/oceanex.py,sha256=a0xAelMYDY_J3QwwLyIX2tGQcv4z2gmX_yJyC6FqoFg,1721
|
196
196
|
ccxt/abstract/okcoin.py,sha256=aaKdO53NvRjbEFTh8NL1YsHyaTyfApO4xkh0NQZdQWA,25825
|
197
|
-
ccxt/abstract/okex.py,sha256=
|
198
|
-
ccxt/abstract/okex5.py,sha256=
|
199
|
-
ccxt/abstract/okx.py,sha256=
|
197
|
+
ccxt/abstract/okex.py,sha256=GnlhzXwvC_WXrcCt0RzbkOxLH0FS84poBijzJNJlG1U,37662
|
198
|
+
ccxt/abstract/okex5.py,sha256=GnlhzXwvC_WXrcCt0RzbkOxLH0FS84poBijzJNJlG1U,37662
|
199
|
+
ccxt/abstract/okx.py,sha256=GnlhzXwvC_WXrcCt0RzbkOxLH0FS84poBijzJNJlG1U,37662
|
200
200
|
ccxt/abstract/paymium.py,sha256=PvsQHHBYBGyWP4eDX_4Ezqq88FPqdSyhkdy5BPJG9s4,2752
|
201
201
|
ccxt/abstract/phemex.py,sha256=lAk6NPuqxxPHAWTjxGDz_W3x9U88v8tjJU4uCIXykQk,12172
|
202
202
|
ccxt/abstract/poloniex.py,sha256=zPyRTMRU_z8wnXdwFVU2a6qgrBHxveUH-lDIySfRRuk,6301
|
@@ -213,13 +213,13 @@ ccxt/abstract/woo.py,sha256=ah_izsOyPt18l_rl1nzgbtwpRTeAo1_MJE8_qMvdCCg,7747
|
|
213
213
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
214
214
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
215
215
|
ccxt/abstract/zonda.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
|
216
|
-
ccxt/async_support/__init__.py,sha256=
|
216
|
+
ccxt/async_support/__init__.py,sha256=Uz78x7djWK85nem2ikky8IIuyE4I6OEc5SNpGf9TR_E,15221
|
217
217
|
ccxt/async_support/ace.py,sha256=xTtzqhVgpoDI4YgR9rRTRHTV2UsQmNYNfbuJc6aBKxA,41596
|
218
218
|
ccxt/async_support/alpaca.py,sha256=hWimV0LrPixw15-FH7lMFB6s6EMEOjDlZOhWjznzu3g,33580
|
219
219
|
ccxt/async_support/ascendex.py,sha256=tHwC-p_ilrM8r6k7w4Q59v8-PLOGlbsUCLHeKLLwbns,133169
|
220
220
|
ccxt/async_support/bequant.py,sha256=BbfFIcAuK3qC0huDHr44hskFTHt1SG1Pp5XSgYnaiuA,1150
|
221
221
|
ccxt/async_support/bigone.py,sha256=rNfleAZHUqHUx20fXBH8_-rn4wpwjVDZkxERElUERcU,75844
|
222
|
-
ccxt/async_support/binance.py,sha256=
|
222
|
+
ccxt/async_support/binance.py,sha256=HzdTWhXLsmT3TieP31HiTVKKKePQf6_v7Mb_nLJhE0w,393935
|
223
223
|
ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
|
224
224
|
ccxt/async_support/binanceus.py,sha256=Jtyl0jtSOpdjAAAYcSUzH6YRVxe88RJ6f4_IUge5gWg,2165
|
225
225
|
ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
|
@@ -259,7 +259,7 @@ ccxt/async_support/coinbase.py,sha256=ylb26vPGyVuePoSUvEhKLlbdX5CYCw3HMCgBLcuG9X
|
|
259
259
|
ccxt/async_support/coinbaseprime.py,sha256=M5Ez1DsFcW3-vJ-4QoZzwYBAKjAAtJnJpkfnV4sWAIc,1233
|
260
260
|
ccxt/async_support/coinbasepro.py,sha256=Gdq6-Dn3TmzqkybYNm5C3WHou5BkRA8A2MK8JAiIHSI,74376
|
261
261
|
ccxt/async_support/coincheck.py,sha256=scNw54Oj_iGHDPLiFjNEMGMU3ti_wKn5ltM-AD85LB8,34425
|
262
|
-
ccxt/async_support/coinex.py,sha256=
|
262
|
+
ccxt/async_support/coinex.py,sha256=61DlAIQECxabpsGOwSXCNziM-uNikzTf9ohn7GBoAiY,195324
|
263
263
|
ccxt/async_support/coinfalcon.py,sha256=_X3-uP5cFEkZ20pt6WgkSJIlUFcqJYdkzJJdz5tgvU0,39268
|
264
264
|
ccxt/async_support/coinmate.py,sha256=SoCqsz6uVWFCvijivKqRDE02y7z3RXsyzC3IkXWlUAE,39809
|
265
265
|
ccxt/async_support/coinone.py,sha256=vhygwEqCs5C-kSpTt3cwP-eLVsNMsO29ep437lipzAI,35485
|
@@ -273,7 +273,7 @@ ccxt/async_support/digifinex.py,sha256=vCpv_8FoZNs21uX0plWZioxdZDnTU9QQ2LngoMt84
|
|
273
273
|
ccxt/async_support/exmo.py,sha256=ocg9JUh_6p3OFA_DJdhP5tVkTuYnFfgIeMqMNzvg9XY,89485
|
274
274
|
ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
|
275
275
|
ccxt/async_support/fmfwio.py,sha256=h4X-aN7XOxJ0ODBurN0KlnmvZFS06wrRnAbDAifxugk,1252
|
276
|
-
ccxt/async_support/gate.py,sha256=
|
276
|
+
ccxt/async_support/gate.py,sha256=Kl5NsEHL5N3t2970U9ygu7w3jeg1LHZn76QlCgt9ivM,253026
|
277
277
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
278
278
|
ccxt/async_support/gemini.py,sha256=dfyJ83asotNsCBLZAMVDn8kuQ1WliXM3hk4LVrPsU7k,74392
|
279
279
|
ccxt/async_support/hitbtc.py,sha256=m1bOvV7lBMQWzvenbJ0uwa4Ab_tbIcqUBdq7M7L9Q_Q,62719
|
@@ -304,7 +304,7 @@ ccxt/async_support/oceanex.py,sha256=uZcG5DwNv6hehxF8wMuHjBIW5sxkJ0_WOgeOPBhy9Go
|
|
304
304
|
ccxt/async_support/okcoin.py,sha256=WvLWTmoUs8ARk7GTglgk4BwMtTj_kWUW6nRuuHVdNVk,178293
|
305
305
|
ccxt/async_support/okex.py,sha256=6dbtH4bC1C2x4cQUK6W62y7PuDgO3YazuFa7DYhM4Jw,448
|
306
306
|
ccxt/async_support/okex5.py,sha256=tq41tKx06j3DDO9pu9iKInpjayVprbobVNTK8qb7hoM,455
|
307
|
-
ccxt/async_support/okx.py,sha256=
|
307
|
+
ccxt/async_support/okx.py,sha256=FRQ6gQtVP2JsD-qJ50cBEvXC9ilyoNYqWF5sDc7lxh0,298974
|
308
308
|
ccxt/async_support/paymium.py,sha256=6GM4efJ7rngx7LQt0rFb3TbZUKzGwBi11VMA7rQD-kY,24126
|
309
309
|
ccxt/async_support/phemex.py,sha256=yvD-lvMeTW-bi-qE4-Qk-HzDzEV39VdLb5Mqn9V8fQw,198659
|
310
310
|
ccxt/async_support/poloniex.py,sha256=t-_OcziYnb9dH9QCgRO9_MGcyJ17fEcqKCdU3ilhkgU,93995
|
@@ -322,7 +322,7 @@ ccxt/async_support/yobit.py,sha256=cRJgQNE-EfjXAligG8-iKxYA-yt9tKGilGnXg1PDrbg,5
|
|
322
322
|
ccxt/async_support/zaif.py,sha256=Bg4Bfk63mluMSp1_8VE4_JPZEXSb940MocZGFisG9IA,28985
|
323
323
|
ccxt/async_support/zonda.py,sha256=9je6awNUpQAHqF8uKfqIqjXyG8CQOPmzU1xDdxzpNDo,79823
|
324
324
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
325
|
-
ccxt/async_support/base/exchange.py,sha256=
|
325
|
+
ccxt/async_support/base/exchange.py,sha256=Ewqz_elUvxNXvef1dfpb7GufNa5n0Gey2O6nyLPdhbM,143042
|
326
326
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
327
327
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
328
328
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=xmlZV30Vb9Kq7JCm3D5FuEmuj1zp5H4F4hrz8-Y-Ir4,4999
|
@@ -336,10 +336,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GH-475Ni0mLOx7mUDnz4jjzaGkh
|
|
336
336
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
337
337
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
338
338
|
ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
|
339
|
-
ccxt/base/exchange.py,sha256=
|
339
|
+
ccxt/base/exchange.py,sha256=vKpzU5okif_dKfMxNg-dhGJoLnBwgss8N_fmPKQj87k,182660
|
340
340
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
341
341
|
ccxt/base/types.py,sha256=be7MU-iLHhynL-GmIzPxb0SD6GIps-w3PmPN05irsAA,1406
|
342
|
-
ccxt/pro/__init__.py,sha256=
|
342
|
+
ccxt/pro/__init__.py,sha256=y31FULiheoDIGYi8RV64NF59wBm1rbmpQF4IoGLFGto,6480
|
343
343
|
ccxt/pro/alpaca.py,sha256=dHcK0EFjEkzs_nZn2DGpwMauOkw2XPKaqYezx4dcDis,26671
|
344
344
|
ccxt/pro/ascendex.py,sha256=QVvtQlv_AZaQTaZcczXocmrf9gL1zFpsLRVcNF21qCI,34555
|
345
345
|
ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
|
@@ -366,7 +366,7 @@ ccxt/pro/cex.py,sha256=SDum2QUzd8NiQW2vzK_x-xNhE2dZbDUyCtbJ5JlKr1E,44893
|
|
366
366
|
ccxt/pro/coinbase.py,sha256=hsbKjjAHSxzGVwYkG-PTB8dIzveh7FVzqI-MENejvag,22041
|
367
367
|
ccxt/pro/coinbaseprime.py,sha256=d5lgKZ8TKAOnYCGAD9e7AYjGQhtkWoNX7Q3eUGx0zEw,1121
|
368
368
|
ccxt/pro/coinbasepro.py,sha256=sAKw5oI0HbBVDCSEii902kSscjBGV-STPAEZjWRjYF8,30100
|
369
|
-
ccxt/pro/coinex.py,sha256=
|
369
|
+
ccxt/pro/coinex.py,sha256=ZKesOxILr6al7vzU5jCsefXg17M8Txh4Mr85NaO-QaY,44159
|
370
370
|
ccxt/pro/cryptocom.py,sha256=U_A8PwstEObMJAJs155OA3jPKwu0mSUvV0qQuIehFWQ,29912
|
371
371
|
ccxt/pro/currencycom.py,sha256=ytWrVfIyWSTyS1G5v6kVd1GpYrGdJg7Cw86iFFjGcdg,22094
|
372
372
|
ccxt/pro/deribit.py,sha256=X580doobEX8u7e-GsaJOKnoqI-wS9th0W93JoukyzgY,34033
|
@@ -450,7 +450,7 @@ ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98
|
|
450
450
|
ccxt/test/base/test_trade.py,sha256=bL9o3S_TGW8Nnlxu-BYkRG8NyRzKAWrU66uO5jJCM3A,2259
|
451
451
|
ccxt/test/base/test_trading_fee.py,sha256=yRCpLHLg_ca9JQXdZB3_pIMHgHLGEfeQF95E6d1e2Bc,1125
|
452
452
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
453
|
-
ccxt-4.0.
|
454
|
-
ccxt-4.0.
|
455
|
-
ccxt-4.0.
|
456
|
-
ccxt-4.0.
|
453
|
+
ccxt-4.0.38.dist-info/METADATA,sha256=xVb_Z3LpojDbov0o7lo7gr7mSZYGuIgq1ZeBF_kAKfM,111485
|
454
|
+
ccxt-4.0.38.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
|
455
|
+
ccxt-4.0.38.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
456
|
+
ccxt-4.0.38.dist-info/RECORD,,
|
File without changes
|
File without changes
|