ccxt 4.4.18__py2.py3-none-any.whl → 4.4.19__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 +4 -0
- ccxt/abstract/binancecoinm.py +4 -0
- ccxt/abstract/binanceus.py +4 -0
- ccxt/abstract/binanceusdm.py +4 -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 +18 -3
- ccxt/async_support/bingx.py +2 -1
- ccxt/async_support/bitget.py +1 -1
- ccxt/async_support/htx.py +20 -0
- ccxt/async_support/hyperliquid.py +4 -0
- ccxt/async_support/kucoin.py +1 -1
- ccxt/async_support/kucoinfutures.py +57 -0
- ccxt/base/exchange.py +1 -1
- ccxt/base/types.py +12 -1
- ccxt/binance.py +18 -3
- ccxt/bingx.py +2 -1
- ccxt/bitget.py +1 -1
- ccxt/htx.py +20 -0
- ccxt/hyperliquid.py +4 -0
- ccxt/kucoin.py +1 -1
- ccxt/kucoinfutures.py +57 -0
- ccxt/pro/__init__.py +1 -1
- {ccxt-4.4.18.dist-info → ccxt-4.4.19.dist-info}/METADATA +4 -4
- {ccxt-4.4.18.dist-info → ccxt-4.4.19.dist-info}/RECORD +30 -30
- {ccxt-4.4.18.dist-info → ccxt-4.4.19.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.18.dist-info → ccxt-4.4.19.dist-info}/WHEEL +0 -0
- {ccxt-4.4.18.dist-info → ccxt-4.4.19.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/binance.py
CHANGED
@@ -482,6 +482,7 @@ class ImplicitAPI:
|
|
482
482
|
fapipublic_get_constituents = fapiPublicGetConstituents = Entry('constituents', 'fapiPublic', 'GET', {'cost': 2})
|
483
483
|
fapipublic_get_apitradingstatus = fapiPublicGetApiTradingStatus = Entry('apiTradingStatus', 'fapiPublic', 'GET', {'cost': 1, 'noSymbol': 10})
|
484
484
|
fapipublic_get_lvtklines = fapiPublicGetLvtKlines = Entry('lvtKlines', 'fapiPublic', 'GET', {'cost': 1})
|
485
|
+
fapipublic_get_convert_exchangeinfo = fapiPublicGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'fapiPublic', 'GET', {'cost': 4})
|
485
486
|
fapidata_get_delivery_price = fapiDataGetDeliveryPrice = Entry('delivery-price', 'fapiData', 'GET', {'cost': 1})
|
486
487
|
fapidata_get_openinteresthist = fapiDataGetOpenInterestHist = Entry('openInterestHist', 'fapiData', 'GET', {'cost': 1})
|
487
488
|
fapidata_get_toplongshortaccountratio = fapiDataGetTopLongShortAccountRatio = Entry('topLongShortAccountRatio', 'fapiData', 'GET', {'cost': 1})
|
@@ -526,6 +527,7 @@ class ImplicitAPI:
|
|
526
527
|
fapiprivate_get_feeburn = fapiPrivateGetFeeBurn = Entry('feeBurn', 'fapiPrivate', 'GET', {'cost': 1})
|
527
528
|
fapiprivate_get_symbolconfig = fapiPrivateGetSymbolConfig = Entry('symbolConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
528
529
|
fapiprivate_get_accountconfig = fapiPrivateGetAccountConfig = Entry('accountConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
530
|
+
fapiprivate_get_convert_orderstatus = fapiPrivateGetConvertOrderStatus = Entry('convert/orderStatus', 'fapiPrivate', 'GET', {'cost': 5})
|
529
531
|
fapiprivate_post_batchorders = fapiPrivatePostBatchOrders = Entry('batchOrders', 'fapiPrivate', 'POST', {'cost': 5})
|
530
532
|
fapiprivate_post_positionside_dual = fapiPrivatePostPositionSideDual = Entry('positionSide/dual', 'fapiPrivate', 'POST', {'cost': 1})
|
531
533
|
fapiprivate_post_positionmargin = fapiPrivatePostPositionMargin = Entry('positionMargin', 'fapiPrivate', 'POST', {'cost': 1})
|
@@ -538,6 +540,8 @@ class ImplicitAPI:
|
|
538
540
|
fapiprivate_post_apireferral_customization = fapiPrivatePostApiReferralCustomization = Entry('apiReferral/customization', 'fapiPrivate', 'POST', {'cost': 1})
|
539
541
|
fapiprivate_post_apireferral_usercustomization = fapiPrivatePostApiReferralUserCustomization = Entry('apiReferral/userCustomization', 'fapiPrivate', 'POST', {'cost': 1})
|
540
542
|
fapiprivate_post_feeburn = fapiPrivatePostFeeBurn = Entry('feeBurn', 'fapiPrivate', 'POST', {'cost': 1})
|
543
|
+
fapiprivate_post_convert_getquote = fapiPrivatePostConvertGetQuote = Entry('convert/getQuote', 'fapiPrivate', 'POST', {'cost': 200})
|
544
|
+
fapiprivate_post_convert_acceptquote = fapiPrivatePostConvertAcceptQuote = Entry('convert/acceptQuote', 'fapiPrivate', 'POST', {'cost': 20})
|
541
545
|
fapiprivate_put_listenkey = fapiPrivatePutListenKey = Entry('listenKey', 'fapiPrivate', 'PUT', {'cost': 1})
|
542
546
|
fapiprivate_put_order = fapiPrivatePutOrder = Entry('order', 'fapiPrivate', 'PUT', {'cost': 1})
|
543
547
|
fapiprivate_put_batchorders = fapiPrivatePutBatchOrders = Entry('batchOrders', 'fapiPrivate', 'PUT', {'cost': 5})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -482,6 +482,7 @@ class ImplicitAPI:
|
|
482
482
|
fapipublic_get_constituents = fapiPublicGetConstituents = Entry('constituents', 'fapiPublic', 'GET', {'cost': 2})
|
483
483
|
fapipublic_get_apitradingstatus = fapiPublicGetApiTradingStatus = Entry('apiTradingStatus', 'fapiPublic', 'GET', {'cost': 1, 'noSymbol': 10})
|
484
484
|
fapipublic_get_lvtklines = fapiPublicGetLvtKlines = Entry('lvtKlines', 'fapiPublic', 'GET', {'cost': 1})
|
485
|
+
fapipublic_get_convert_exchangeinfo = fapiPublicGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'fapiPublic', 'GET', {'cost': 4})
|
485
486
|
fapidata_get_delivery_price = fapiDataGetDeliveryPrice = Entry('delivery-price', 'fapiData', 'GET', {'cost': 1})
|
486
487
|
fapidata_get_openinteresthist = fapiDataGetOpenInterestHist = Entry('openInterestHist', 'fapiData', 'GET', {'cost': 1})
|
487
488
|
fapidata_get_toplongshortaccountratio = fapiDataGetTopLongShortAccountRatio = Entry('topLongShortAccountRatio', 'fapiData', 'GET', {'cost': 1})
|
@@ -526,6 +527,7 @@ class ImplicitAPI:
|
|
526
527
|
fapiprivate_get_feeburn = fapiPrivateGetFeeBurn = Entry('feeBurn', 'fapiPrivate', 'GET', {'cost': 1})
|
527
528
|
fapiprivate_get_symbolconfig = fapiPrivateGetSymbolConfig = Entry('symbolConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
528
529
|
fapiprivate_get_accountconfig = fapiPrivateGetAccountConfig = Entry('accountConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
530
|
+
fapiprivate_get_convert_orderstatus = fapiPrivateGetConvertOrderStatus = Entry('convert/orderStatus', 'fapiPrivate', 'GET', {'cost': 5})
|
529
531
|
fapiprivate_post_batchorders = fapiPrivatePostBatchOrders = Entry('batchOrders', 'fapiPrivate', 'POST', {'cost': 5})
|
530
532
|
fapiprivate_post_positionside_dual = fapiPrivatePostPositionSideDual = Entry('positionSide/dual', 'fapiPrivate', 'POST', {'cost': 1})
|
531
533
|
fapiprivate_post_positionmargin = fapiPrivatePostPositionMargin = Entry('positionMargin', 'fapiPrivate', 'POST', {'cost': 1})
|
@@ -538,6 +540,8 @@ class ImplicitAPI:
|
|
538
540
|
fapiprivate_post_apireferral_customization = fapiPrivatePostApiReferralCustomization = Entry('apiReferral/customization', 'fapiPrivate', 'POST', {'cost': 1})
|
539
541
|
fapiprivate_post_apireferral_usercustomization = fapiPrivatePostApiReferralUserCustomization = Entry('apiReferral/userCustomization', 'fapiPrivate', 'POST', {'cost': 1})
|
540
542
|
fapiprivate_post_feeburn = fapiPrivatePostFeeBurn = Entry('feeBurn', 'fapiPrivate', 'POST', {'cost': 1})
|
543
|
+
fapiprivate_post_convert_getquote = fapiPrivatePostConvertGetQuote = Entry('convert/getQuote', 'fapiPrivate', 'POST', {'cost': 200})
|
544
|
+
fapiprivate_post_convert_acceptquote = fapiPrivatePostConvertAcceptQuote = Entry('convert/acceptQuote', 'fapiPrivate', 'POST', {'cost': 20})
|
541
545
|
fapiprivate_put_listenkey = fapiPrivatePutListenKey = Entry('listenKey', 'fapiPrivate', 'PUT', {'cost': 1})
|
542
546
|
fapiprivate_put_order = fapiPrivatePutOrder = Entry('order', 'fapiPrivate', 'PUT', {'cost': 1})
|
543
547
|
fapiprivate_put_batchorders = fapiPrivatePutBatchOrders = Entry('batchOrders', 'fapiPrivate', 'PUT', {'cost': 5})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -534,6 +534,7 @@ class ImplicitAPI:
|
|
534
534
|
fapipublic_get_constituents = fapiPublicGetConstituents = Entry('constituents', 'fapiPublic', 'GET', {'cost': 2})
|
535
535
|
fapipublic_get_apitradingstatus = fapiPublicGetApiTradingStatus = Entry('apiTradingStatus', 'fapiPublic', 'GET', {'cost': 1, 'noSymbol': 10})
|
536
536
|
fapipublic_get_lvtklines = fapiPublicGetLvtKlines = Entry('lvtKlines', 'fapiPublic', 'GET', {'cost': 1})
|
537
|
+
fapipublic_get_convert_exchangeinfo = fapiPublicGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'fapiPublic', 'GET', {'cost': 4})
|
537
538
|
fapidata_get_delivery_price = fapiDataGetDeliveryPrice = Entry('delivery-price', 'fapiData', 'GET', {'cost': 1})
|
538
539
|
fapidata_get_openinteresthist = fapiDataGetOpenInterestHist = Entry('openInterestHist', 'fapiData', 'GET', {'cost': 1})
|
539
540
|
fapidata_get_toplongshortaccountratio = fapiDataGetTopLongShortAccountRatio = Entry('topLongShortAccountRatio', 'fapiData', 'GET', {'cost': 1})
|
@@ -578,6 +579,7 @@ class ImplicitAPI:
|
|
578
579
|
fapiprivate_get_feeburn = fapiPrivateGetFeeBurn = Entry('feeBurn', 'fapiPrivate', 'GET', {'cost': 1})
|
579
580
|
fapiprivate_get_symbolconfig = fapiPrivateGetSymbolConfig = Entry('symbolConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
580
581
|
fapiprivate_get_accountconfig = fapiPrivateGetAccountConfig = Entry('accountConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
582
|
+
fapiprivate_get_convert_orderstatus = fapiPrivateGetConvertOrderStatus = Entry('convert/orderStatus', 'fapiPrivate', 'GET', {'cost': 5})
|
581
583
|
fapiprivate_post_batchorders = fapiPrivatePostBatchOrders = Entry('batchOrders', 'fapiPrivate', 'POST', {'cost': 5})
|
582
584
|
fapiprivate_post_positionside_dual = fapiPrivatePostPositionSideDual = Entry('positionSide/dual', 'fapiPrivate', 'POST', {'cost': 1})
|
583
585
|
fapiprivate_post_positionmargin = fapiPrivatePostPositionMargin = Entry('positionMargin', 'fapiPrivate', 'POST', {'cost': 1})
|
@@ -590,6 +592,8 @@ class ImplicitAPI:
|
|
590
592
|
fapiprivate_post_apireferral_customization = fapiPrivatePostApiReferralCustomization = Entry('apiReferral/customization', 'fapiPrivate', 'POST', {'cost': 1})
|
591
593
|
fapiprivate_post_apireferral_usercustomization = fapiPrivatePostApiReferralUserCustomization = Entry('apiReferral/userCustomization', 'fapiPrivate', 'POST', {'cost': 1})
|
592
594
|
fapiprivate_post_feeburn = fapiPrivatePostFeeBurn = Entry('feeBurn', 'fapiPrivate', 'POST', {'cost': 1})
|
595
|
+
fapiprivate_post_convert_getquote = fapiPrivatePostConvertGetQuote = Entry('convert/getQuote', 'fapiPrivate', 'POST', {'cost': 200})
|
596
|
+
fapiprivate_post_convert_acceptquote = fapiPrivatePostConvertAcceptQuote = Entry('convert/acceptQuote', 'fapiPrivate', 'POST', {'cost': 20})
|
593
597
|
fapiprivate_put_listenkey = fapiPrivatePutListenKey = Entry('listenKey', 'fapiPrivate', 'PUT', {'cost': 1})
|
594
598
|
fapiprivate_put_order = fapiPrivatePutOrder = Entry('order', 'fapiPrivate', 'PUT', {'cost': 1})
|
595
599
|
fapiprivate_put_batchorders = fapiPrivatePutBatchOrders = Entry('batchOrders', 'fapiPrivate', 'PUT', {'cost': 5})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -482,6 +482,7 @@ class ImplicitAPI:
|
|
482
482
|
fapipublic_get_constituents = fapiPublicGetConstituents = Entry('constituents', 'fapiPublic', 'GET', {'cost': 2})
|
483
483
|
fapipublic_get_apitradingstatus = fapiPublicGetApiTradingStatus = Entry('apiTradingStatus', 'fapiPublic', 'GET', {'cost': 1, 'noSymbol': 10})
|
484
484
|
fapipublic_get_lvtklines = fapiPublicGetLvtKlines = Entry('lvtKlines', 'fapiPublic', 'GET', {'cost': 1})
|
485
|
+
fapipublic_get_convert_exchangeinfo = fapiPublicGetConvertExchangeInfo = Entry('convert/exchangeInfo', 'fapiPublic', 'GET', {'cost': 4})
|
485
486
|
fapidata_get_delivery_price = fapiDataGetDeliveryPrice = Entry('delivery-price', 'fapiData', 'GET', {'cost': 1})
|
486
487
|
fapidata_get_openinteresthist = fapiDataGetOpenInterestHist = Entry('openInterestHist', 'fapiData', 'GET', {'cost': 1})
|
487
488
|
fapidata_get_toplongshortaccountratio = fapiDataGetTopLongShortAccountRatio = Entry('topLongShortAccountRatio', 'fapiData', 'GET', {'cost': 1})
|
@@ -526,6 +527,7 @@ class ImplicitAPI:
|
|
526
527
|
fapiprivate_get_feeburn = fapiPrivateGetFeeBurn = Entry('feeBurn', 'fapiPrivate', 'GET', {'cost': 1})
|
527
528
|
fapiprivate_get_symbolconfig = fapiPrivateGetSymbolConfig = Entry('symbolConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
528
529
|
fapiprivate_get_accountconfig = fapiPrivateGetAccountConfig = Entry('accountConfig', 'fapiPrivate', 'GET', {'cost': 5})
|
530
|
+
fapiprivate_get_convert_orderstatus = fapiPrivateGetConvertOrderStatus = Entry('convert/orderStatus', 'fapiPrivate', 'GET', {'cost': 5})
|
529
531
|
fapiprivate_post_batchorders = fapiPrivatePostBatchOrders = Entry('batchOrders', 'fapiPrivate', 'POST', {'cost': 5})
|
530
532
|
fapiprivate_post_positionside_dual = fapiPrivatePostPositionSideDual = Entry('positionSide/dual', 'fapiPrivate', 'POST', {'cost': 1})
|
531
533
|
fapiprivate_post_positionmargin = fapiPrivatePostPositionMargin = Entry('positionMargin', 'fapiPrivate', 'POST', {'cost': 1})
|
@@ -538,6 +540,8 @@ class ImplicitAPI:
|
|
538
540
|
fapiprivate_post_apireferral_customization = fapiPrivatePostApiReferralCustomization = Entry('apiReferral/customization', 'fapiPrivate', 'POST', {'cost': 1})
|
539
541
|
fapiprivate_post_apireferral_usercustomization = fapiPrivatePostApiReferralUserCustomization = Entry('apiReferral/userCustomization', 'fapiPrivate', 'POST', {'cost': 1})
|
540
542
|
fapiprivate_post_feeburn = fapiPrivatePostFeeBurn = Entry('feeBurn', 'fapiPrivate', 'POST', {'cost': 1})
|
543
|
+
fapiprivate_post_convert_getquote = fapiPrivatePostConvertGetQuote = Entry('convert/getQuote', 'fapiPrivate', 'POST', {'cost': 200})
|
544
|
+
fapiprivate_post_convert_acceptquote = fapiPrivatePostConvertAcceptQuote = Entry('convert/acceptQuote', 'fapiPrivate', 'POST', {'cost': 20})
|
541
545
|
fapiprivate_put_listenkey = fapiPrivatePutListenKey = Entry('listenKey', 'fapiPrivate', 'PUT', {'cost': 1})
|
542
546
|
fapiprivate_put_order = fapiPrivatePutOrder = Entry('order', 'fapiPrivate', 'PUT', {'cost': 1})
|
543
547
|
fapiprivate_put_batchorders = fapiPrivatePutBatchOrders = Entry('batchOrders', 'fapiPrivate', 'PUT', {'cost': 5})
|
ccxt/abstract/kucoinfutures.py
CHANGED
@@ -219,6 +219,7 @@ class ImplicitAPI:
|
|
219
219
|
futuresprivate_delete_withdrawals_withdrawalid = futuresPrivateDeleteWithdrawalsWithdrawalId = Entry('withdrawals/{withdrawalId}', 'futuresPrivate', 'DELETE', {'cost': 1})
|
220
220
|
futuresprivate_delete_cancel_transfer_out = futuresPrivateDeleteCancelTransferOut = Entry('cancel/transfer-out', 'futuresPrivate', 'DELETE', {'cost': 1})
|
221
221
|
futuresprivate_delete_sub_api_key = futuresPrivateDeleteSubApiKey = Entry('sub/api-key', 'futuresPrivate', 'DELETE', {'cost': 1})
|
222
|
+
futuresprivate_delete_orders_multi_cancel = futuresPrivateDeleteOrdersMultiCancel = Entry('orders/multi-cancel', 'futuresPrivate', 'DELETE', {'cost': 20})
|
222
223
|
webexchange_get_currency_currency_chain_info = webExchangeGetCurrencyCurrencyChainInfo = Entry('currency/currency/chain-info', 'webExchange', 'GET', {'cost': 1})
|
223
224
|
webexchange_get_contract_symbol_funding_rates = webExchangeGetContractSymbolFundingRates = Entry('contract/{symbol}/funding-rates', 'webExchange', 'GET', {'cost': 1})
|
224
225
|
broker_get_broker_nd_info = brokerGetBrokerNdInfo = Entry('broker/nd/info', 'broker', 'GET', {'cost': 2})
|
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -828,6 +828,7 @@ class binance(Exchange, ImplicitAPI):
|
|
828
828
|
'constituents': 2,
|
829
829
|
'apiTradingStatus': {'cost': 1, 'noSymbol': 10},
|
830
830
|
'lvtKlines': 1,
|
831
|
+
'convert/exchangeInfo': 4,
|
831
832
|
},
|
832
833
|
},
|
833
834
|
'fapiData': {
|
@@ -881,6 +882,7 @@ class binance(Exchange, ImplicitAPI):
|
|
881
882
|
'feeBurn': 1,
|
882
883
|
'symbolConfig': 5,
|
883
884
|
'accountConfig': 5,
|
885
|
+
'convert/orderStatus': 5,
|
884
886
|
},
|
885
887
|
'post': {
|
886
888
|
'batchOrders': 5,
|
@@ -896,6 +898,8 @@ class binance(Exchange, ImplicitAPI):
|
|
896
898
|
'apiReferral/customization': 1,
|
897
899
|
'apiReferral/userCustomization': 1,
|
898
900
|
'feeBurn': 1,
|
901
|
+
'convert/getQuote': 200, # 360 requests per hour
|
902
|
+
'convert/acceptQuote': 20,
|
899
903
|
},
|
900
904
|
'put': {
|
901
905
|
'listenKey': 1,
|
@@ -3162,14 +3166,15 @@ class binance(Exchange, ImplicitAPI):
|
|
3162
3166
|
fees = self.fees
|
3163
3167
|
linear = None
|
3164
3168
|
inverse = None
|
3165
|
-
strike = self.safe_string(market, 'strikePrice')
|
3166
3169
|
symbol = base + '/' + quote
|
3170
|
+
strike = None
|
3167
3171
|
if contract:
|
3168
3172
|
if swap:
|
3169
3173
|
symbol = symbol + ':' + settle
|
3170
3174
|
elif future:
|
3171
3175
|
symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry)
|
3172
3176
|
elif option:
|
3177
|
+
strike = self.number_to_string(self.parse_to_numeric(self.safe_string(market, 'strikePrice')))
|
3173
3178
|
symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry) + '-' + strike + '-' + self.safe_string(optionParts, 3)
|
3174
3179
|
contractSize = self.safe_number_2(market, 'contractSize', 'unit', self.parse_number('1'))
|
3175
3180
|
linear = settle == quote
|
@@ -5947,11 +5952,21 @@ class binance(Exchange, ImplicitAPI):
|
|
5947
5952
|
if isPortfolioMargin:
|
5948
5953
|
request['quantity'] = self.parse_to_numeric(amount)
|
5949
5954
|
else:
|
5950
|
-
|
5955
|
+
marketAmountPrecision = self.safe_string(market['precision'], 'amount')
|
5956
|
+
isPrecisionAvailable = (marketAmountPrecision is not None)
|
5957
|
+
if isPrecisionAvailable:
|
5958
|
+
request['quantity'] = self.amount_to_precision(symbol, amount)
|
5959
|
+
else:
|
5960
|
+
request['quantity'] = self.parse_to_numeric(amount) # some options don't have the precision available
|
5951
5961
|
if priceIsRequired and not isPriceMatch:
|
5952
5962
|
if price is None:
|
5953
5963
|
raise InvalidOrder(self.id + ' createOrder() requires a price argument for a ' + type + ' order')
|
5954
|
-
|
5964
|
+
pricePrecision = self.safe_string(market['precision'], 'price')
|
5965
|
+
isPricePrecisionAvailable = (pricePrecision is not None)
|
5966
|
+
if isPricePrecisionAvailable:
|
5967
|
+
request['price'] = self.price_to_precision(symbol, price)
|
5968
|
+
else:
|
5969
|
+
request['price'] = self.parse_to_numeric(price) # some options don't have the precision available
|
5955
5970
|
if stopPriceIsRequired:
|
5956
5971
|
if market['contract']:
|
5957
5972
|
if stopPrice is None:
|
ccxt/async_support/bingx.py
CHANGED
@@ -509,6 +509,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
509
509
|
},
|
510
510
|
'networks': {
|
511
511
|
'ARB': 'ARBITRUM',
|
512
|
+
'MATIC': 'POLYGON',
|
512
513
|
},
|
513
514
|
},
|
514
515
|
})
|
@@ -772,7 +773,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
772
773
|
isActive = False
|
773
774
|
if (self.safe_string(market, 'apiStateOpen') == 'true') and (self.safe_string(market, 'apiStateClose') == 'true'):
|
774
775
|
isActive = True # swap active
|
775
|
-
elif self.safe_bool(market, 'apiStateSell') and self.safe_bool(market, 'apiStateBuy') and (self.
|
776
|
+
elif self.safe_bool(market, 'apiStateSell') and self.safe_bool(market, 'apiStateBuy') and (self.safe_string(market, 'status') == '1'):
|
776
777
|
isActive = True # spot active
|
777
778
|
isInverse = None if (spot) else checkIsInverse
|
778
779
|
isLinear = None if (spot) else checkIsLinear
|
ccxt/async_support/bitget.py
CHANGED
ccxt/async_support/htx.py
CHANGED
@@ -1254,6 +1254,16 @@ class htx(Exchange, ImplicitAPI):
|
|
1254
1254
|
})
|
1255
1255
|
|
1256
1256
|
async def fetch_status(self, params={}):
|
1257
|
+
"""
|
1258
|
+
the latest known information on the availability of the exchange API
|
1259
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-system-status
|
1260
|
+
:see: https://huobiapi.github.io/docs/dm/v1/en/#get-system-status
|
1261
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-system-status
|
1262
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#get-system-status
|
1263
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#query-whether-the-system-is-available # contractPublicGetHeartbeat
|
1264
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1265
|
+
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
|
1266
|
+
"""
|
1257
1267
|
await self.load_markets()
|
1258
1268
|
marketType = None
|
1259
1269
|
marketType, params = self.handle_market_type_and_params('fetchStatus', None, params)
|
@@ -1465,6 +1475,8 @@ class htx(Exchange, ImplicitAPI):
|
|
1465
1475
|
async def fetch_time(self, params={}):
|
1466
1476
|
"""
|
1467
1477
|
fetches the current integer timestamp in milliseconds from the exchange server
|
1478
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-timestamp
|
1479
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-current-system-timestamp
|
1468
1480
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1469
1481
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
1470
1482
|
"""
|
@@ -1511,6 +1523,7 @@ class htx(Exchange, ImplicitAPI):
|
|
1511
1523
|
async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1512
1524
|
"""
|
1513
1525
|
fetch the trading fees for a market
|
1526
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-fee-rate-applied-to-the-user
|
1514
1527
|
:param str symbol: unified market symbol
|
1515
1528
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1516
1529
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -1554,6 +1567,13 @@ class htx(Exchange, ImplicitAPI):
|
|
1554
1567
|
return result
|
1555
1568
|
|
1556
1569
|
async def fetch_trading_limits_by_id(self, id: str, params={}):
|
1570
|
+
"""
|
1571
|
+
* @ignore
|
1572
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-fee-rate-applied-to-the-user
|
1573
|
+
:param str id: market id
|
1574
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1575
|
+
:returns dict: the limits object of a market structure
|
1576
|
+
"""
|
1557
1577
|
request: dict = {
|
1558
1578
|
'symbol': id,
|
1559
1579
|
}
|
@@ -1880,6 +1880,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1880
1880
|
statuses: dict = {
|
1881
1881
|
'triggered': 'open',
|
1882
1882
|
'filled': 'closed',
|
1883
|
+
'open': 'open',
|
1884
|
+
'canceled': 'canceled',
|
1885
|
+
'rejected': 'rejected',
|
1886
|
+
'marginCanceled': 'canceled',
|
1883
1887
|
}
|
1884
1888
|
return self.safe_string(statuses, status, status)
|
1885
1889
|
|
ccxt/async_support/kucoin.py
CHANGED
@@ -4725,7 +4725,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4725
4725
|
headers = headers if (headers is not None) else {}
|
4726
4726
|
url = self.urls['api'][api]
|
4727
4727
|
if not self.is_empty(query):
|
4728
|
-
if (method == 'GET') or (method == 'DELETE'):
|
4728
|
+
if ((method == 'GET') or (method == 'DELETE')) and (path != 'orders/multi-cancel'):
|
4729
4729
|
endpoint += '?' + self.rawencode(query)
|
4730
4730
|
else:
|
4731
4731
|
body = self.json(query)
|
@@ -46,6 +46,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
46
46
|
'addMargin': True,
|
47
47
|
'cancelAllOrders': True,
|
48
48
|
'cancelOrder': True,
|
49
|
+
'cancelOrders': True,
|
49
50
|
'closeAllPositions': False,
|
50
51
|
'closePosition': True,
|
51
52
|
'closePositions': False,
|
@@ -217,6 +218,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
217
218
|
'stopOrders': 1,
|
218
219
|
'sub/api-key': 1,
|
219
220
|
'orders/client-order/{clientOid}': 1,
|
221
|
+
'orders/multi-cancel': 20,
|
220
222
|
},
|
221
223
|
},
|
222
224
|
'webExchange': {
|
@@ -1584,6 +1586,61 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1584
1586
|
#
|
1585
1587
|
return self.safe_value(response, 'data')
|
1586
1588
|
|
1589
|
+
async def cancel_orders(self, ids, symbol: Str = None, params={}):
|
1590
|
+
"""
|
1591
|
+
cancel multiple orders
|
1592
|
+
:see: https://www.kucoin.com/docs/rest/futures-trading/orders/batch-cancel-orders
|
1593
|
+
:param str[] ids: order ids
|
1594
|
+
:param str symbol: unified symbol of the market the order was made in
|
1595
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1596
|
+
:param str[] [params.clientOrderIds]: client order ids
|
1597
|
+
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1598
|
+
"""
|
1599
|
+
await self.load_markets()
|
1600
|
+
market = None
|
1601
|
+
if symbol is not None:
|
1602
|
+
market = self.market(symbol)
|
1603
|
+
ordersRequests = []
|
1604
|
+
clientOrderIds = self.safe_list_2(params, 'clientOrderIds', 'clientOids', [])
|
1605
|
+
params = self.omit(params, ['clientOrderIds', 'clientOids'])
|
1606
|
+
useClientorderId = False
|
1607
|
+
for i in range(0, len(clientOrderIds)):
|
1608
|
+
useClientorderId = True
|
1609
|
+
if symbol is None:
|
1610
|
+
raise ArgumentsRequired(self.id + ' cancelOrders() requires a symbol argument when cancelling by clientOrderIds')
|
1611
|
+
ordersRequests.append({
|
1612
|
+
'symbol': market['id'],
|
1613
|
+
'clientOid': self.safe_string(clientOrderIds, i),
|
1614
|
+
})
|
1615
|
+
for i in range(0, len(ids)):
|
1616
|
+
ordersRequests.append(ids[i])
|
1617
|
+
requestKey = 'clientOidsList' if useClientorderId else 'orderIdsList'
|
1618
|
+
request: dict = {}
|
1619
|
+
request[requestKey] = ordersRequests
|
1620
|
+
response = await self.futuresPrivateDeleteOrdersMultiCancel(self.extend(request, params))
|
1621
|
+
#
|
1622
|
+
# {
|
1623
|
+
# "code": "200000",
|
1624
|
+
# "data":
|
1625
|
+
# [
|
1626
|
+
# {
|
1627
|
+
# "orderId": "80465574458560512",
|
1628
|
+
# "clientOid": null,
|
1629
|
+
# "code": "200",
|
1630
|
+
# "msg": "success"
|
1631
|
+
# },
|
1632
|
+
# {
|
1633
|
+
# "orderId": "80465575289094144",
|
1634
|
+
# "clientOid": null,
|
1635
|
+
# "code": "200",
|
1636
|
+
# "msg": "success"
|
1637
|
+
# }
|
1638
|
+
# ]
|
1639
|
+
# }
|
1640
|
+
#
|
1641
|
+
orders = self.safe_list(response, 'data', [])
|
1642
|
+
return self.parse_orders(orders, market)
|
1643
|
+
|
1587
1644
|
async def cancel_all_orders(self, symbol: Str = None, params={}):
|
1588
1645
|
"""
|
1589
1646
|
cancel all open orders
|
ccxt/base/exchange.py
CHANGED
ccxt/base/types.py
CHANGED
@@ -360,6 +360,17 @@ class MarketMarginModes(TypedDict):
|
|
360
360
|
cross: bool
|
361
361
|
isolated: bool
|
362
362
|
|
363
|
+
class MinMax(TypedDict):
|
364
|
+
min: Num
|
365
|
+
max: Num
|
366
|
+
|
367
|
+
class MarketLimits(TypedDict):
|
368
|
+
amount: Optional[MinMax]
|
369
|
+
cost: Optional[MinMax]
|
370
|
+
leverage: Optional[MinMax]
|
371
|
+
price: Optional[MinMax]
|
372
|
+
market: Optional[MinMax]
|
373
|
+
|
363
374
|
class MarketInterface(TypedDict):
|
364
375
|
info: Dict[str, Any]
|
365
376
|
id: Str
|
@@ -393,7 +404,7 @@ class MarketInterface(TypedDict):
|
|
393
404
|
tierBased: bool
|
394
405
|
feeSide: Str
|
395
406
|
precision: Any
|
396
|
-
limits:
|
407
|
+
limits: MarketLimits
|
397
408
|
created: Int
|
398
409
|
|
399
410
|
class Limit(TypedDict):
|
ccxt/binance.py
CHANGED
@@ -827,6 +827,7 @@ class binance(Exchange, ImplicitAPI):
|
|
827
827
|
'constituents': 2,
|
828
828
|
'apiTradingStatus': {'cost': 1, 'noSymbol': 10},
|
829
829
|
'lvtKlines': 1,
|
830
|
+
'convert/exchangeInfo': 4,
|
830
831
|
},
|
831
832
|
},
|
832
833
|
'fapiData': {
|
@@ -880,6 +881,7 @@ class binance(Exchange, ImplicitAPI):
|
|
880
881
|
'feeBurn': 1,
|
881
882
|
'symbolConfig': 5,
|
882
883
|
'accountConfig': 5,
|
884
|
+
'convert/orderStatus': 5,
|
883
885
|
},
|
884
886
|
'post': {
|
885
887
|
'batchOrders': 5,
|
@@ -895,6 +897,8 @@ class binance(Exchange, ImplicitAPI):
|
|
895
897
|
'apiReferral/customization': 1,
|
896
898
|
'apiReferral/userCustomization': 1,
|
897
899
|
'feeBurn': 1,
|
900
|
+
'convert/getQuote': 200, # 360 requests per hour
|
901
|
+
'convert/acceptQuote': 20,
|
898
902
|
},
|
899
903
|
'put': {
|
900
904
|
'listenKey': 1,
|
@@ -3161,14 +3165,15 @@ class binance(Exchange, ImplicitAPI):
|
|
3161
3165
|
fees = self.fees
|
3162
3166
|
linear = None
|
3163
3167
|
inverse = None
|
3164
|
-
strike = self.safe_string(market, 'strikePrice')
|
3165
3168
|
symbol = base + '/' + quote
|
3169
|
+
strike = None
|
3166
3170
|
if contract:
|
3167
3171
|
if swap:
|
3168
3172
|
symbol = symbol + ':' + settle
|
3169
3173
|
elif future:
|
3170
3174
|
symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry)
|
3171
3175
|
elif option:
|
3176
|
+
strike = self.number_to_string(self.parse_to_numeric(self.safe_string(market, 'strikePrice')))
|
3172
3177
|
symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry) + '-' + strike + '-' + self.safe_string(optionParts, 3)
|
3173
3178
|
contractSize = self.safe_number_2(market, 'contractSize', 'unit', self.parse_number('1'))
|
3174
3179
|
linear = settle == quote
|
@@ -5946,11 +5951,21 @@ class binance(Exchange, ImplicitAPI):
|
|
5946
5951
|
if isPortfolioMargin:
|
5947
5952
|
request['quantity'] = self.parse_to_numeric(amount)
|
5948
5953
|
else:
|
5949
|
-
|
5954
|
+
marketAmountPrecision = self.safe_string(market['precision'], 'amount')
|
5955
|
+
isPrecisionAvailable = (marketAmountPrecision is not None)
|
5956
|
+
if isPrecisionAvailable:
|
5957
|
+
request['quantity'] = self.amount_to_precision(symbol, amount)
|
5958
|
+
else:
|
5959
|
+
request['quantity'] = self.parse_to_numeric(amount) # some options don't have the precision available
|
5950
5960
|
if priceIsRequired and not isPriceMatch:
|
5951
5961
|
if price is None:
|
5952
5962
|
raise InvalidOrder(self.id + ' createOrder() requires a price argument for a ' + type + ' order')
|
5953
|
-
|
5963
|
+
pricePrecision = self.safe_string(market['precision'], 'price')
|
5964
|
+
isPricePrecisionAvailable = (pricePrecision is not None)
|
5965
|
+
if isPricePrecisionAvailable:
|
5966
|
+
request['price'] = self.price_to_precision(symbol, price)
|
5967
|
+
else:
|
5968
|
+
request['price'] = self.parse_to_numeric(price) # some options don't have the precision available
|
5954
5969
|
if stopPriceIsRequired:
|
5955
5970
|
if market['contract']:
|
5956
5971
|
if stopPrice is None:
|
ccxt/bingx.py
CHANGED
@@ -508,6 +508,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
508
508
|
},
|
509
509
|
'networks': {
|
510
510
|
'ARB': 'ARBITRUM',
|
511
|
+
'MATIC': 'POLYGON',
|
511
512
|
},
|
512
513
|
},
|
513
514
|
})
|
@@ -771,7 +772,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
771
772
|
isActive = False
|
772
773
|
if (self.safe_string(market, 'apiStateOpen') == 'true') and (self.safe_string(market, 'apiStateClose') == 'true'):
|
773
774
|
isActive = True # swap active
|
774
|
-
elif self.safe_bool(market, 'apiStateSell') and self.safe_bool(market, 'apiStateBuy') and (self.
|
775
|
+
elif self.safe_bool(market, 'apiStateSell') and self.safe_bool(market, 'apiStateBuy') and (self.safe_string(market, 'status') == '1'):
|
775
776
|
isActive = True # spot active
|
776
777
|
isInverse = None if (spot) else checkIsInverse
|
777
778
|
isLinear = None if (spot) else checkIsLinear
|
ccxt/bitget.py
CHANGED
ccxt/htx.py
CHANGED
@@ -1253,6 +1253,16 @@ class htx(Exchange, ImplicitAPI):
|
|
1253
1253
|
})
|
1254
1254
|
|
1255
1255
|
def fetch_status(self, params={}):
|
1256
|
+
"""
|
1257
|
+
the latest known information on the availability of the exchange API
|
1258
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-system-status
|
1259
|
+
:see: https://huobiapi.github.io/docs/dm/v1/en/#get-system-status
|
1260
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-system-status
|
1261
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#get-system-status
|
1262
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#query-whether-the-system-is-available # contractPublicGetHeartbeat
|
1263
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1264
|
+
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
|
1265
|
+
"""
|
1256
1266
|
self.load_markets()
|
1257
1267
|
marketType = None
|
1258
1268
|
marketType, params = self.handle_market_type_and_params('fetchStatus', None, params)
|
@@ -1464,6 +1474,8 @@ class htx(Exchange, ImplicitAPI):
|
|
1464
1474
|
def fetch_time(self, params={}):
|
1465
1475
|
"""
|
1466
1476
|
fetches the current integer timestamp in milliseconds from the exchange server
|
1477
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-timestamp
|
1478
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#get-current-system-timestamp
|
1467
1479
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1468
1480
|
:returns int: the current integer timestamp in milliseconds from the exchange server
|
1469
1481
|
"""
|
@@ -1510,6 +1522,7 @@ class htx(Exchange, ImplicitAPI):
|
|
1510
1522
|
def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
|
1511
1523
|
"""
|
1512
1524
|
fetch the trading fees for a market
|
1525
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-fee-rate-applied-to-the-user
|
1513
1526
|
:param str symbol: unified market symbol
|
1514
1527
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1515
1528
|
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
|
@@ -1553,6 +1566,13 @@ class htx(Exchange, ImplicitAPI):
|
|
1553
1566
|
return result
|
1554
1567
|
|
1555
1568
|
def fetch_trading_limits_by_id(self, id: str, params={}):
|
1569
|
+
"""
|
1570
|
+
* @ignore
|
1571
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-current-fee-rate-applied-to-the-user
|
1572
|
+
:param str id: market id
|
1573
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1574
|
+
:returns dict: the limits object of a market structure
|
1575
|
+
"""
|
1556
1576
|
request: dict = {
|
1557
1577
|
'symbol': id,
|
1558
1578
|
}
|
ccxt/hyperliquid.py
CHANGED
@@ -1879,6 +1879,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1879
1879
|
statuses: dict = {
|
1880
1880
|
'triggered': 'open',
|
1881
1881
|
'filled': 'closed',
|
1882
|
+
'open': 'open',
|
1883
|
+
'canceled': 'canceled',
|
1884
|
+
'rejected': 'rejected',
|
1885
|
+
'marginCanceled': 'canceled',
|
1882
1886
|
}
|
1883
1887
|
return self.safe_string(statuses, status, status)
|
1884
1888
|
|
ccxt/kucoin.py
CHANGED
@@ -4724,7 +4724,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4724
4724
|
headers = headers if (headers is not None) else {}
|
4725
4725
|
url = self.urls['api'][api]
|
4726
4726
|
if not self.is_empty(query):
|
4727
|
-
if (method == 'GET') or (method == 'DELETE'):
|
4727
|
+
if ((method == 'GET') or (method == 'DELETE')) and (path != 'orders/multi-cancel'):
|
4728
4728
|
endpoint += '?' + self.rawencode(query)
|
4729
4729
|
else:
|
4730
4730
|
body = self.json(query)
|
ccxt/kucoinfutures.py
CHANGED
@@ -46,6 +46,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
46
46
|
'addMargin': True,
|
47
47
|
'cancelAllOrders': True,
|
48
48
|
'cancelOrder': True,
|
49
|
+
'cancelOrders': True,
|
49
50
|
'closeAllPositions': False,
|
50
51
|
'closePosition': True,
|
51
52
|
'closePositions': False,
|
@@ -217,6 +218,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
217
218
|
'stopOrders': 1,
|
218
219
|
'sub/api-key': 1,
|
219
220
|
'orders/client-order/{clientOid}': 1,
|
221
|
+
'orders/multi-cancel': 20,
|
220
222
|
},
|
221
223
|
},
|
222
224
|
'webExchange': {
|
@@ -1584,6 +1586,61 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1584
1586
|
#
|
1585
1587
|
return self.safe_value(response, 'data')
|
1586
1588
|
|
1589
|
+
def cancel_orders(self, ids, symbol: Str = None, params={}):
|
1590
|
+
"""
|
1591
|
+
cancel multiple orders
|
1592
|
+
:see: https://www.kucoin.com/docs/rest/futures-trading/orders/batch-cancel-orders
|
1593
|
+
:param str[] ids: order ids
|
1594
|
+
:param str symbol: unified symbol of the market the order was made in
|
1595
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1596
|
+
:param str[] [params.clientOrderIds]: client order ids
|
1597
|
+
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1598
|
+
"""
|
1599
|
+
self.load_markets()
|
1600
|
+
market = None
|
1601
|
+
if symbol is not None:
|
1602
|
+
market = self.market(symbol)
|
1603
|
+
ordersRequests = []
|
1604
|
+
clientOrderIds = self.safe_list_2(params, 'clientOrderIds', 'clientOids', [])
|
1605
|
+
params = self.omit(params, ['clientOrderIds', 'clientOids'])
|
1606
|
+
useClientorderId = False
|
1607
|
+
for i in range(0, len(clientOrderIds)):
|
1608
|
+
useClientorderId = True
|
1609
|
+
if symbol is None:
|
1610
|
+
raise ArgumentsRequired(self.id + ' cancelOrders() requires a symbol argument when cancelling by clientOrderIds')
|
1611
|
+
ordersRequests.append({
|
1612
|
+
'symbol': market['id'],
|
1613
|
+
'clientOid': self.safe_string(clientOrderIds, i),
|
1614
|
+
})
|
1615
|
+
for i in range(0, len(ids)):
|
1616
|
+
ordersRequests.append(ids[i])
|
1617
|
+
requestKey = 'clientOidsList' if useClientorderId else 'orderIdsList'
|
1618
|
+
request: dict = {}
|
1619
|
+
request[requestKey] = ordersRequests
|
1620
|
+
response = self.futuresPrivateDeleteOrdersMultiCancel(self.extend(request, params))
|
1621
|
+
#
|
1622
|
+
# {
|
1623
|
+
# "code": "200000",
|
1624
|
+
# "data":
|
1625
|
+
# [
|
1626
|
+
# {
|
1627
|
+
# "orderId": "80465574458560512",
|
1628
|
+
# "clientOid": null,
|
1629
|
+
# "code": "200",
|
1630
|
+
# "msg": "success"
|
1631
|
+
# },
|
1632
|
+
# {
|
1633
|
+
# "orderId": "80465575289094144",
|
1634
|
+
# "clientOid": null,
|
1635
|
+
# "code": "200",
|
1636
|
+
# "msg": "success"
|
1637
|
+
# }
|
1638
|
+
# ]
|
1639
|
+
# }
|
1640
|
+
#
|
1641
|
+
orders = self.safe_list(response, 'data', [])
|
1642
|
+
return self.parse_orders(orders, market)
|
1643
|
+
|
1587
1644
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
1588
1645
|
"""
|
1589
1646
|
cancel all open orders
|
ccxt/pro/__init__.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.19
|
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
|
@@ -271,13 +271,13 @@ console.log(version, Object.keys(exchanges));
|
|
271
271
|
|
272
272
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
273
273
|
|
274
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
275
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
274
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.19/dist/ccxt.browser.min.js
|
275
|
+
* unpkg: https://unpkg.com/ccxt@4.4.19/dist/ccxt.browser.min.js
|
276
276
|
|
277
277
|
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.
|
278
278
|
|
279
279
|
```HTML
|
280
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
280
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.19/dist/ccxt.browser.min.js"></script>
|
281
281
|
```
|
282
282
|
|
283
283
|
Creates a global `ccxt` object:
|
@@ -1,14 +1,14 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=nIc9lUBZ_0lF8VidDP8krXR31Gk45Y2HfLFe1sdodfk,16486
|
2
2
|
ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
|
3
3
|
ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
|
4
4
|
ccxt/ascendex.py,sha256=aJ5_UysmRijYUvjenq5EDLldl2JUO6lXGofJ_NqPvJU,151676
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=mPYt5d9L4nCRnxwhVpwoBcpLLkt5E0ptOVzkveR_F28,91249
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=LOW0PigowIqFQAD0tou4RQYjEYRFdp5xZH77AjWr26E,657204
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=HRsk0fIoi8AAFdzRCUMkkXUGLqBrf0guUOfUxupHFeY,9202
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
11
|
-
ccxt/bingx.py,sha256=
|
11
|
+
ccxt/bingx.py,sha256=qmG7fgs6ZmcsPSPjHrMcb5HLvONn1d6Z7DSJn9Q83Dg,252069
|
12
12
|
ccxt/bit2c.py,sha256=Y_YHvg90Sq3CayQ2lr1_wLYwz4wGR7G3NJARiv_jX8M,37254
|
13
13
|
ccxt/bitbank.py,sha256=npoyV3c8uJ36nKofSzpMri590Yj_DIH0FAZg8o2EW6Y,43709
|
14
14
|
ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
|
@@ -17,7 +17,7 @@ ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
|
|
17
17
|
ccxt/bitfinex.py,sha256=iJYewoNbVSB1UCfrTqzXBECMBhOc5IMECI3Ssuo3dN0,73666
|
18
18
|
ccxt/bitfinex2.py,sha256=9ad6ebvgThHIBhFmfp0MZIhyYkGBoIrudoLyyiz8cQ4,160817
|
19
19
|
ccxt/bitflyer.py,sha256=nh1EDzO66S-Ps9xBy-U4CErt6Q06E77wbWF_aTRw6RI,41663
|
20
|
-
ccxt/bitget.py,sha256=
|
20
|
+
ccxt/bitget.py,sha256=pV31_03aZZhbyul8LOdOaCR00eC5bFRgBXUBta_SrPs,428677
|
21
21
|
ccxt/bithumb.py,sha256=8oTnFWi8Ai9fnm5FPXvNmaUAVJEOqYi-18VC23cWmXY,47935
|
22
22
|
ccxt/bitmart.py,sha256=8D8pFVsaEMJZ5PQuheTigQ_-BEfHyvieIxwlM9o1-Yw,222097
|
23
23
|
ccxt/bitmex.py,sha256=w87ovaOQNJxtycsW4N7dpDzyh5AAPo5qnNS3TyBjppk,127407
|
@@ -63,17 +63,17 @@ ccxt/hashkey.py,sha256=LMV9wPTn2_qT2om74OdF-IfHreaySxNHOilsNDrgB7Q,192148
|
|
63
63
|
ccxt/hitbtc.py,sha256=K9K0bcRffitBmnRgKKwRR09WCFE6Yj58FbwrJW6LlKU,153613
|
64
64
|
ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
|
65
65
|
ccxt/hollaex.py,sha256=bGaqSEwR42i1etwXgSYbluStoyKcIbuj4Qx-YQkVUhM,76255
|
66
|
-
ccxt/htx.py,sha256=
|
66
|
+
ccxt/htx.py,sha256=AtHi2kswFSP9NBSWSjIqQeDoBPDeyTsQPElnaGkTcaM,434498
|
67
67
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
68
68
|
ccxt/huobijp.py,sha256=Kw1HQhoox1qp-bEiGpCcJSg1UAhPVLRRi-BRbQLMljI,89741
|
69
|
-
ccxt/hyperliquid.py,sha256=
|
69
|
+
ccxt/hyperliquid.py,sha256=SIdQrgUPv3FTAKCFADgys-_x7uS8AO9kWqHMtEILaPw,123150
|
70
70
|
ccxt/idex.py,sha256=2yiYt-w39o3gQs3-byp83GQYSD4DSlZTN1Ixieettt0,73307
|
71
71
|
ccxt/independentreserve.py,sha256=q8wUCbDnhxc_JiOTS7xcGsLp_EdmZTMe3QvLVB6oB-0,37899
|
72
72
|
ccxt/indodax.py,sha256=QPH7sQzhqOFwq6g_xCAMcgnrpVVRl49zf_uolywxuX8,54798
|
73
73
|
ccxt/kraken.py,sha256=qOJz1jNl7wKqvonYdPCqWIbj7uKfsPY1qSVXllc5w6Y,135904
|
74
74
|
ccxt/krakenfutures.py,sha256=dbreVGrjMD7AY6xai0eazuvnUpTXTD7wLDVT9VDD5Qk,119839
|
75
|
-
ccxt/kucoin.py,sha256=
|
76
|
-
ccxt/kucoinfutures.py,sha256=
|
75
|
+
ccxt/kucoin.py,sha256=Bfhrue_5ZiJNzetgqOJvsiOxDZwN4qAyXewZEepqtLE,231819
|
76
|
+
ccxt/kucoinfutures.py,sha256=fgSjDKPyDixiQnmCpjTnBazjqWVg15ziKgBAp2Xq9kM,139376
|
77
77
|
ccxt/kuna.py,sha256=wL4QciCkKXgOSnmMP2mkSq9HlL7Gsz-c2s75rH5YZkA,96074
|
78
78
|
ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
|
79
79
|
ccxt/lbank.py,sha256=bBnT07L-6RHbmWwvyxZvbAfwP7lRKe6TSrDveyLZabA,116250
|
@@ -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=ChHXrnz1zHqLHJn162SxjfgbO8ocQppy7lXWGsHEtcI,4887
|
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=roudAE36VwI0dmXtJj0G7m1cZ1HVSaUuFrPbYMyDBXY,94630
|
119
|
+
ccxt/abstract/binancecoinm.py,sha256=roudAE36VwI0dmXtJj0G7m1cZ1HVSaUuFrPbYMyDBXY,94630
|
120
|
+
ccxt/abstract/binanceus.py,sha256=edaoGBgNO7InUxyqrCyuEZ05wO0sLe8SaFBLTfvBQl8,101292
|
121
|
+
ccxt/abstract/binanceusdm.py,sha256=roudAE36VwI0dmXtJj0G7m1cZ1HVSaUuFrPbYMyDBXY,94630
|
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
|
@@ -182,7 +182,7 @@ ccxt/abstract/indodax.py,sha256=E16v8W6Ac9kmV9hFEqf_kwV6VQmK74lc1LEUEkuDpYg,2488
|
|
182
182
|
ccxt/abstract/kraken.py,sha256=AUpdQHWHZFXseHNx1-cuLqRutYwYEUVqQ7mjc0TQR_s,5883
|
183
183
|
ccxt/abstract/krakenfutures.py,sha256=pu81cKhQgBkQd8F9-Ly3b7xQD-qQ8WLi8EUMfmAUJcM,4080
|
184
184
|
ccxt/abstract/kucoin.py,sha256=4LLJ8vPaUZ18ZxlriZvI_t42r22TWy3EEG8BLUQUsWo,28250
|
185
|
-
ccxt/abstract/kucoinfutures.py,sha256=
|
185
|
+
ccxt/abstract/kucoinfutures.py,sha256=y5NeiAz8NwovciY7PHBR0stCMGT1Ljbmd5GOxdDQdU4,32155
|
186
186
|
ccxt/abstract/kuna.py,sha256=IsaLq8A4DUOlQ8Esyk0WqBU6hHm5Q4sIqhgnMIvDGX0,24579
|
187
187
|
ccxt/abstract/latoken.py,sha256=1GqE9WxrubgZILnYvg7W_dGyui-FKeIv0bU4z1dQj1k,7168
|
188
188
|
ccxt/abstract/lbank.py,sha256=pdut_cIcwcUhN_ZCyWJxixBc4dgeQqvENYqFCrUYrvA,8675
|
@@ -218,17 +218,17 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
218
218
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
219
219
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
220
220
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
221
|
-
ccxt/async_support/__init__.py,sha256=
|
221
|
+
ccxt/async_support/__init__.py,sha256=28QGoPlZxApWrWvW6sXAEThQV1woSfOHU8ENju_4k4k,16289
|
222
222
|
ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
|
223
223
|
ccxt/async_support/alpaca.py,sha256=HxonsP_MzbE7Z9r6hZ1rgmf_jPcP4H7H3z1YQgCv4qc,47716
|
224
224
|
ccxt/async_support/ascendex.py,sha256=YcGVveIDir8A1rDak-DdS_qVO1yPwAUX9sRDwCVNX80,152489
|
225
225
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
226
226
|
ccxt/async_support/bigone.py,sha256=EQohpAnGnA1z4K6-6An--5WxdW6raQPrZCH2s_-WGmg,91703
|
227
|
-
ccxt/async_support/binance.py,sha256=
|
227
|
+
ccxt/async_support/binance.py,sha256=54WbvvuCTSe4LhE1ZKseMOGZ7S_QYwZV_MEOddrMh4I,660033
|
228
228
|
ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
|
229
229
|
ccxt/async_support/binanceus.py,sha256=ZkGgQGB0bWYZTz7PqBCgw22yyOZbvd7GuJAJzzgDTCA,9216
|
230
230
|
ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
|
231
|
-
ccxt/async_support/bingx.py,sha256=
|
231
|
+
ccxt/async_support/bingx.py,sha256=jfe9Yh7hOFF2an2yBwaePOq0i0T9biVS-Et9YgmPnbM,253387
|
232
232
|
ccxt/async_support/bit2c.py,sha256=8gA0VW3_617LwqCNliJnhjpjtwXAGxv7FsEn9805XOc,37466
|
233
233
|
ccxt/async_support/bitbank.py,sha256=DOBazUZetD7gxURy42C3m-T-YK-zvYIkcUjHqJggkGU,43969
|
234
234
|
ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
|
@@ -237,7 +237,7 @@ ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85
|
|
237
237
|
ccxt/async_support/bitfinex.py,sha256=IsbRwQHzzlxspIixKuGtXvY-kwjymp626UBix_0zG04,74132
|
238
238
|
ccxt/async_support/bitfinex2.py,sha256=QSp4PkXhNkTMHEILoQH8UipJ4EgPzNSHiDfI9y5QH7w,161559
|
239
239
|
ccxt/async_support/bitflyer.py,sha256=DTyHe4QBOED0xUEYoDfpGFL0sULp_3CxTXCWfDPbGbE,41971
|
240
|
-
ccxt/async_support/bitget.py,sha256=
|
240
|
+
ccxt/async_support/bitget.py,sha256=wxZz3PHbHo3hbLvnUHKBXZV365D9vUR3puoWcFtPWds,430325
|
241
241
|
ccxt/async_support/bithumb.py,sha256=Q0Cx_cRKZRfdpBAhQyINm63Qw3M6BRYQRiF0UqYzfis,48214
|
242
242
|
ccxt/async_support/bitmart.py,sha256=WNfWDZvw8lgzC8WGvuR67-07uqtt_woyfVPeua3IhXQ,223089
|
243
243
|
ccxt/async_support/bitmex.py,sha256=j9ohrBbNDcfR67QnPuuqrqz3pxEHpVtb0WhRKPPCYQ8,127985
|
@@ -283,17 +283,17 @@ ccxt/async_support/hashkey.py,sha256=XaSBqm0eh3R_2HCbOCZWaLuqJwVg5DJbttvfFYJpNZA
|
|
283
283
|
ccxt/async_support/hitbtc.py,sha256=wWHmgPCEBLf0nj-unVu1LtkRPgZvjil22I4S79a-VA8,154659
|
284
284
|
ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
|
285
285
|
ccxt/async_support/hollaex.py,sha256=k_KeUA5jEiyA7ypOAZsYL4RBonNG6dYxb50mpvWw_qQ,76689
|
286
|
-
ccxt/async_support/htx.py,sha256=
|
286
|
+
ccxt/async_support/htx.py,sha256=Lr7HFO46N4e0PqogaMDsVLfe8D8QhJDZBoQY0BbHR9I,436890
|
287
287
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
288
288
|
ccxt/async_support/huobijp.py,sha256=4Pj8qPn2xzzyvdsy08gnbiF-eSKXQNT0p6VIOVkpisM,90241
|
289
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
289
|
+
ccxt/async_support/hyperliquid.py,sha256=9mXeS9Wc-lusHecsG1h9S9tp8RsUyMVkJQ07DoeCYjM,123814
|
290
290
|
ccxt/async_support/idex.py,sha256=kZiSqurgNeXRJC5CQmc_wyIMXn-6c1oL4lJL1PW1l8U,73783
|
291
291
|
ccxt/async_support/independentreserve.py,sha256=3gzNdxXGdCm5JqGjE1vG6kTSsW2PWvCPE2xBgvqPW6s,38197
|
292
292
|
ccxt/async_support/indodax.py,sha256=_7AbcJJmBSPMQ1E-mqOoQJXTjIXldItRMDFCdwhvFuA,55106
|
293
293
|
ccxt/async_support/kraken.py,sha256=F1NRf8PFqrzM-XQzf81sjpAER8mz1aYIgP4M5kO_DfQ,136560
|
294
294
|
ccxt/async_support/krakenfutures.py,sha256=Wcry7ar4Esbi_3Urp8LcnzPMsThN6KcdU6QN5YMxDCk,120327
|
295
|
-
ccxt/async_support/kucoin.py,sha256=
|
296
|
-
ccxt/async_support/kucoinfutures.py,sha256=
|
295
|
+
ccxt/async_support/kucoin.py,sha256=DSsWZ2nxE64-gX5E-0dZLWEvxSdJb-MBL9_GMaJnKvY,232998
|
296
|
+
ccxt/async_support/kucoinfutures.py,sha256=5cRGLy4MKfD7gmA8GMZdv3697BD_I7WBgR-zOgxVXss,140158
|
297
297
|
ccxt/async_support/kuna.py,sha256=_8S74LqI1c5zbCbaSfJgUsVyqus9gB2OV9s3UMXkzYQ,96490
|
298
298
|
ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
|
299
299
|
ccxt/async_support/lbank.py,sha256=xWUzIsFFAV_yd0Igo3CimSys6z-AoQH88oQ0zzBb1w0,116962
|
@@ -330,7 +330,7 @@ ccxt/async_support/yobit.py,sha256=YtkLczlb641VjUYTfEMfS-BPUTdXQTHAPkearuXkXDQ,5
|
|
330
330
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
331
331
|
ccxt/async_support/zonda.py,sha256=Z4gA6o0bF_4MarQ5KiR2Zwi2wpmOuZTHS1JChAtNWjo,83114
|
332
332
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
333
|
-
ccxt/async_support/base/exchange.py,sha256=
|
333
|
+
ccxt/async_support/base/exchange.py,sha256=pFZsmWTOWTY89LiholOn37mlbKf0Snsc5cDEodc-7uA,113443
|
334
334
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
335
335
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
336
336
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -344,10 +344,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
344
344
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
345
345
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
346
346
|
ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
|
347
|
-
ccxt/base/exchange.py,sha256=
|
347
|
+
ccxt/base/exchange.py,sha256=EA3lxyG1qV2-FJDJubxM06o3NdkfoKcsN9EERzZPWeo,301504
|
348
348
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
349
|
-
ccxt/base/types.py,sha256=
|
350
|
-
ccxt/pro/__init__.py,sha256=
|
349
|
+
ccxt/base/types.py,sha256=ikIahyhQe32e8y89-wrlcuRNQvExWkbijP2YSlTH2WM,10033
|
350
|
+
ccxt/pro/__init__.py,sha256=pR6fhhB18vbkGsKk_xIxRQCaVVOSQd3zyJ5ubslgxMA,7710
|
351
351
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
352
352
|
ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
|
353
353
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=IOkbqZXUViJ1KtDIlE63EZaU3z31_OR2iI6yL0azKL0,8500
|
|
650
650
|
ccxt/test/tests_helpers.py,sha256=z5TiaK0WyUCmM_uGTFz7cgMNqNwG_SMI9qk7yec5ces,9693
|
651
651
|
ccxt/test/tests_init.py,sha256=GodMIrJue4KBHHqD4vSPZxokPWpxbZIuEp19UdxlFAg,1166
|
652
652
|
ccxt/test/tests_sync.py,sha256=c9hEBBjaLRJ-rqGiR-SpVUXcFJsvrZ7mxhLKb7TJWEc,84062
|
653
|
-
ccxt-4.4.
|
654
|
-
ccxt-4.4.
|
655
|
-
ccxt-4.4.
|
656
|
-
ccxt-4.4.
|
657
|
-
ccxt-4.4.
|
653
|
+
ccxt-4.4.19.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
654
|
+
ccxt-4.4.19.dist-info/METADATA,sha256=I10Mmg7ajks_N3qnYM_3OenZ_em64roY5EGrqdq87J0,114487
|
655
|
+
ccxt-4.4.19.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
656
|
+
ccxt-4.4.19.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
657
|
+
ccxt-4.4.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|