ccxt 4.3.61__py2.py3-none-any.whl → 4.3.63__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 +2 -1
- ccxt/abstract/binance.py +5 -5
- ccxt/abstract/binancecoinm.py +5 -5
- ccxt/abstract/binanceus.py +5 -5
- ccxt/abstract/binanceusdm.py +5 -5
- ccxt/abstract/cryptocom.py +11 -0
- ccxt/abstract/woo.py +3 -0
- ccxt/ace.py +33 -15
- ccxt/async_support/__init__.py +2 -1
- ccxt/async_support/ace.py +33 -15
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/base/ws/fast_client.py +2 -2
- ccxt/async_support/binance.py +43 -38
- ccxt/async_support/bingx.py +492 -184
- ccxt/async_support/bybit.py +1 -1
- ccxt/async_support/coinbaseinternational.py +1 -1
- ccxt/async_support/cryptocom.py +17 -2
- ccxt/async_support/mercado.py +5 -1
- ccxt/async_support/tradeogre.py +1 -1
- ccxt/async_support/woo.py +296 -81
- ccxt/async_support/xt.py +4 -4
- ccxt/base/errors.py +8 -1
- ccxt/base/exchange.py +8 -2
- ccxt/binance.py +43 -38
- ccxt/bingx.py +492 -184
- ccxt/bybit.py +1 -1
- ccxt/coinbaseinternational.py +1 -1
- ccxt/cryptocom.py +17 -2
- ccxt/mercado.py +5 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/alpaca.py +3 -3
- ccxt/pro/binance.py +58 -39
- ccxt/pro/bingx.py +2 -2
- ccxt/pro/bitfinex2.py +8 -6
- ccxt/pro/bitget.py +6 -3
- ccxt/pro/bitmex.py +1 -1
- ccxt/pro/bitopro.py +1 -1
- ccxt/pro/bitvavo.py +1 -1
- ccxt/pro/bybit.py +46 -23
- ccxt/pro/coinbaseexchange.py +2 -2
- ccxt/pro/coincheck.py +1 -1
- ccxt/pro/coinone.py +1 -1
- ccxt/pro/cryptocom.py +8 -3
- ccxt/pro/deribit.py +1 -1
- ccxt/pro/gate.py +8 -5
- ccxt/pro/hollaex.py +1 -1
- ccxt/pro/htx.py +6 -2
- ccxt/pro/hyperliquid.py +3 -3
- ccxt/pro/independentreserve.py +6 -4
- ccxt/pro/kraken.py +80 -7
- ccxt/pro/kucoin.py +1 -1
- ccxt/pro/mexc.py +1 -1
- ccxt/pro/okx.py +5 -5
- ccxt/pro/oxfun.py +1 -1
- ccxt/pro/phemex.py +1 -1
- ccxt/pro/poloniexfutures.py +5 -2
- ccxt/pro/upbit.py +1 -1
- ccxt/pro/vertex.py +2 -2
- ccxt/pro/whitebit.py +1 -1
- ccxt/pro/woo.py +1 -1
- ccxt/pro/woofipro.py +1 -1
- ccxt/tradeogre.py +1 -1
- ccxt/woo.py +296 -81
- ccxt/xt.py +4 -4
- {ccxt-4.3.61.dist-info → ccxt-4.3.63.dist-info}/METADATA +4 -4
- {ccxt-4.3.61.dist-info → ccxt-4.3.63.dist-info}/RECORD +69 -69
- {ccxt-4.3.61.dist-info → ccxt-4.3.63.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.61.dist-info → ccxt-4.3.63.dist-info}/WHEEL +0 -0
- {ccxt-4.3.61.dist-info → ccxt-4.3.63.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
# ----------------------------------------------------------------------------
|
24
24
|
|
25
|
-
__version__ = '4.3.
|
25
|
+
__version__ = '4.3.63'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -74,6 +74,7 @@ from ccxt.base.errors import RateLimitExceeded # noqa: F4
|
|
74
74
|
from ccxt.base.errors import ExchangeNotAvailable # noqa: F401
|
75
75
|
from ccxt.base.errors import OnMaintenance # noqa: F401
|
76
76
|
from ccxt.base.errors import InvalidNonce # noqa: F401
|
77
|
+
from ccxt.base.errors import ChecksumError # noqa: F401
|
77
78
|
from ccxt.base.errors import RequestTimeout # noqa: F401
|
78
79
|
from ccxt.base.errors import BadResponse # noqa: F401
|
79
80
|
from ccxt.base.errors import NullResponse # noqa: F401
|
ccxt/abstract/binance.py
CHANGED
@@ -491,7 +491,7 @@ class ImplicitAPI:
|
|
491
491
|
fapiprivate_get_forceorders = fapiPrivateGetForceOrders = Entry('forceOrders', 'fapiPrivate', 'GET', {'cost': 20, 'noSymbol': 50})
|
492
492
|
fapiprivate_get_allorders = fapiPrivateGetAllOrders = Entry('allOrders', 'fapiPrivate', 'GET', {'cost': 5})
|
493
493
|
fapiprivate_get_openorder = fapiPrivateGetOpenOrder = Entry('openOrder', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
-
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
+
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1, 'noSymbol': 40})
|
495
495
|
fapiprivate_get_order = fapiPrivateGetOrder = Entry('order', 'fapiPrivate', 'GET', {'cost': 1})
|
496
496
|
fapiprivate_get_account = fapiPrivateGetAccount = Entry('account', 'fapiPrivate', 'GET', {'cost': 5})
|
497
497
|
fapiprivate_get_balance = fapiPrivateGetBalance = Entry('balance', 'fapiPrivate', 'GET', {'cost': 5})
|
@@ -629,18 +629,18 @@ class ImplicitAPI:
|
|
629
629
|
papi_get_ping = papiGetPing = Entry('ping', 'papi', 'GET', {'cost': 1})
|
630
630
|
papi_get_um_order = papiGetUmOrder = Entry('um/order', 'papi', 'GET', {'cost': 1})
|
631
631
|
papi_get_um_openorder = papiGetUmOpenOrder = Entry('um/openOrder', 'papi', 'GET', {'cost': 1})
|
632
|
-
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1})
|
632
|
+
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
633
633
|
papi_get_um_allorders = papiGetUmAllOrders = Entry('um/allOrders', 'papi', 'GET', {'cost': 5})
|
634
634
|
papi_get_cm_order = papiGetCmOrder = Entry('cm/order', 'papi', 'GET', {'cost': 1})
|
635
635
|
papi_get_cm_openorder = papiGetCmOpenOrder = Entry('cm/openOrder', 'papi', 'GET', {'cost': 1})
|
636
|
-
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1})
|
636
|
+
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
637
637
|
papi_get_cm_allorders = papiGetCmAllOrders = Entry('cm/allOrders', 'papi', 'GET', {'cost': 20})
|
638
638
|
papi_get_um_conditional_openorder = papiGetUmConditionalOpenOrder = Entry('um/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
639
|
-
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
639
|
+
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
640
640
|
papi_get_um_conditional_orderhistory = papiGetUmConditionalOrderHistory = Entry('um/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
641
641
|
papi_get_um_conditional_allorders = papiGetUmConditionalAllOrders = Entry('um/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
642
642
|
papi_get_cm_conditional_openorder = papiGetCmConditionalOpenOrder = Entry('cm/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
643
|
-
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
643
|
+
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
644
644
|
papi_get_cm_conditional_orderhistory = papiGetCmConditionalOrderHistory = Entry('cm/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
645
645
|
papi_get_cm_conditional_allorders = papiGetCmConditionalAllOrders = Entry('cm/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
646
646
|
papi_get_margin_order = papiGetMarginOrder = Entry('margin/order', 'papi', 'GET', {'cost': 5})
|
ccxt/abstract/binancecoinm.py
CHANGED
@@ -491,7 +491,7 @@ class ImplicitAPI:
|
|
491
491
|
fapiprivate_get_forceorders = fapiPrivateGetForceOrders = Entry('forceOrders', 'fapiPrivate', 'GET', {'cost': 20, 'noSymbol': 50})
|
492
492
|
fapiprivate_get_allorders = fapiPrivateGetAllOrders = Entry('allOrders', 'fapiPrivate', 'GET', {'cost': 5})
|
493
493
|
fapiprivate_get_openorder = fapiPrivateGetOpenOrder = Entry('openOrder', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
-
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
+
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1, 'noSymbol': 40})
|
495
495
|
fapiprivate_get_order = fapiPrivateGetOrder = Entry('order', 'fapiPrivate', 'GET', {'cost': 1})
|
496
496
|
fapiprivate_get_account = fapiPrivateGetAccount = Entry('account', 'fapiPrivate', 'GET', {'cost': 5})
|
497
497
|
fapiprivate_get_balance = fapiPrivateGetBalance = Entry('balance', 'fapiPrivate', 'GET', {'cost': 5})
|
@@ -629,18 +629,18 @@ class ImplicitAPI:
|
|
629
629
|
papi_get_ping = papiGetPing = Entry('ping', 'papi', 'GET', {'cost': 1})
|
630
630
|
papi_get_um_order = papiGetUmOrder = Entry('um/order', 'papi', 'GET', {'cost': 1})
|
631
631
|
papi_get_um_openorder = papiGetUmOpenOrder = Entry('um/openOrder', 'papi', 'GET', {'cost': 1})
|
632
|
-
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1})
|
632
|
+
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
633
633
|
papi_get_um_allorders = papiGetUmAllOrders = Entry('um/allOrders', 'papi', 'GET', {'cost': 5})
|
634
634
|
papi_get_cm_order = papiGetCmOrder = Entry('cm/order', 'papi', 'GET', {'cost': 1})
|
635
635
|
papi_get_cm_openorder = papiGetCmOpenOrder = Entry('cm/openOrder', 'papi', 'GET', {'cost': 1})
|
636
|
-
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1})
|
636
|
+
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
637
637
|
papi_get_cm_allorders = papiGetCmAllOrders = Entry('cm/allOrders', 'papi', 'GET', {'cost': 20})
|
638
638
|
papi_get_um_conditional_openorder = papiGetUmConditionalOpenOrder = Entry('um/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
639
|
-
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
639
|
+
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
640
640
|
papi_get_um_conditional_orderhistory = papiGetUmConditionalOrderHistory = Entry('um/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
641
641
|
papi_get_um_conditional_allorders = papiGetUmConditionalAllOrders = Entry('um/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
642
642
|
papi_get_cm_conditional_openorder = papiGetCmConditionalOpenOrder = Entry('cm/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
643
|
-
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
643
|
+
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
644
644
|
papi_get_cm_conditional_orderhistory = papiGetCmConditionalOrderHistory = Entry('cm/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
645
645
|
papi_get_cm_conditional_allorders = papiGetCmConditionalAllOrders = Entry('cm/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
646
646
|
papi_get_margin_order = papiGetMarginOrder = Entry('margin/order', 'papi', 'GET', {'cost': 5})
|
ccxt/abstract/binanceus.py
CHANGED
@@ -543,7 +543,7 @@ class ImplicitAPI:
|
|
543
543
|
fapiprivate_get_forceorders = fapiPrivateGetForceOrders = Entry('forceOrders', 'fapiPrivate', 'GET', {'cost': 20, 'noSymbol': 50})
|
544
544
|
fapiprivate_get_allorders = fapiPrivateGetAllOrders = Entry('allOrders', 'fapiPrivate', 'GET', {'cost': 5})
|
545
545
|
fapiprivate_get_openorder = fapiPrivateGetOpenOrder = Entry('openOrder', 'fapiPrivate', 'GET', {'cost': 1})
|
546
|
-
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1})
|
546
|
+
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1, 'noSymbol': 40})
|
547
547
|
fapiprivate_get_order = fapiPrivateGetOrder = Entry('order', 'fapiPrivate', 'GET', {'cost': 1})
|
548
548
|
fapiprivate_get_account = fapiPrivateGetAccount = Entry('account', 'fapiPrivate', 'GET', {'cost': 5})
|
549
549
|
fapiprivate_get_balance = fapiPrivateGetBalance = Entry('balance', 'fapiPrivate', 'GET', {'cost': 5})
|
@@ -681,18 +681,18 @@ class ImplicitAPI:
|
|
681
681
|
papi_get_ping = papiGetPing = Entry('ping', 'papi', 'GET', {'cost': 1})
|
682
682
|
papi_get_um_order = papiGetUmOrder = Entry('um/order', 'papi', 'GET', {'cost': 1})
|
683
683
|
papi_get_um_openorder = papiGetUmOpenOrder = Entry('um/openOrder', 'papi', 'GET', {'cost': 1})
|
684
|
-
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1})
|
684
|
+
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
685
685
|
papi_get_um_allorders = papiGetUmAllOrders = Entry('um/allOrders', 'papi', 'GET', {'cost': 5})
|
686
686
|
papi_get_cm_order = papiGetCmOrder = Entry('cm/order', 'papi', 'GET', {'cost': 1})
|
687
687
|
papi_get_cm_openorder = papiGetCmOpenOrder = Entry('cm/openOrder', 'papi', 'GET', {'cost': 1})
|
688
|
-
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1})
|
688
|
+
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
689
689
|
papi_get_cm_allorders = papiGetCmAllOrders = Entry('cm/allOrders', 'papi', 'GET', {'cost': 20})
|
690
690
|
papi_get_um_conditional_openorder = papiGetUmConditionalOpenOrder = Entry('um/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
691
|
-
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
691
|
+
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
692
692
|
papi_get_um_conditional_orderhistory = papiGetUmConditionalOrderHistory = Entry('um/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
693
693
|
papi_get_um_conditional_allorders = papiGetUmConditionalAllOrders = Entry('um/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
694
694
|
papi_get_cm_conditional_openorder = papiGetCmConditionalOpenOrder = Entry('cm/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
695
|
-
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
695
|
+
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
696
696
|
papi_get_cm_conditional_orderhistory = papiGetCmConditionalOrderHistory = Entry('cm/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
697
697
|
papi_get_cm_conditional_allorders = papiGetCmConditionalAllOrders = Entry('cm/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
698
698
|
papi_get_margin_order = papiGetMarginOrder = Entry('margin/order', 'papi', 'GET', {'cost': 5})
|
ccxt/abstract/binanceusdm.py
CHANGED
@@ -491,7 +491,7 @@ class ImplicitAPI:
|
|
491
491
|
fapiprivate_get_forceorders = fapiPrivateGetForceOrders = Entry('forceOrders', 'fapiPrivate', 'GET', {'cost': 20, 'noSymbol': 50})
|
492
492
|
fapiprivate_get_allorders = fapiPrivateGetAllOrders = Entry('allOrders', 'fapiPrivate', 'GET', {'cost': 5})
|
493
493
|
fapiprivate_get_openorder = fapiPrivateGetOpenOrder = Entry('openOrder', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
-
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1})
|
494
|
+
fapiprivate_get_openorders = fapiPrivateGetOpenOrders = Entry('openOrders', 'fapiPrivate', 'GET', {'cost': 1, 'noSymbol': 40})
|
495
495
|
fapiprivate_get_order = fapiPrivateGetOrder = Entry('order', 'fapiPrivate', 'GET', {'cost': 1})
|
496
496
|
fapiprivate_get_account = fapiPrivateGetAccount = Entry('account', 'fapiPrivate', 'GET', {'cost': 5})
|
497
497
|
fapiprivate_get_balance = fapiPrivateGetBalance = Entry('balance', 'fapiPrivate', 'GET', {'cost': 5})
|
@@ -629,18 +629,18 @@ class ImplicitAPI:
|
|
629
629
|
papi_get_ping = papiGetPing = Entry('ping', 'papi', 'GET', {'cost': 1})
|
630
630
|
papi_get_um_order = papiGetUmOrder = Entry('um/order', 'papi', 'GET', {'cost': 1})
|
631
631
|
papi_get_um_openorder = papiGetUmOpenOrder = Entry('um/openOrder', 'papi', 'GET', {'cost': 1})
|
632
|
-
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1})
|
632
|
+
papi_get_um_openorders = papiGetUmOpenOrders = Entry('um/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
633
633
|
papi_get_um_allorders = papiGetUmAllOrders = Entry('um/allOrders', 'papi', 'GET', {'cost': 5})
|
634
634
|
papi_get_cm_order = papiGetCmOrder = Entry('cm/order', 'papi', 'GET', {'cost': 1})
|
635
635
|
papi_get_cm_openorder = papiGetCmOpenOrder = Entry('cm/openOrder', 'papi', 'GET', {'cost': 1})
|
636
|
-
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1})
|
636
|
+
papi_get_cm_openorders = papiGetCmOpenOrders = Entry('cm/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
637
637
|
papi_get_cm_allorders = papiGetCmAllOrders = Entry('cm/allOrders', 'papi', 'GET', {'cost': 20})
|
638
638
|
papi_get_um_conditional_openorder = papiGetUmConditionalOpenOrder = Entry('um/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
639
|
-
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
639
|
+
papi_get_um_conditional_openorders = papiGetUmConditionalOpenOrders = Entry('um/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
640
640
|
papi_get_um_conditional_orderhistory = papiGetUmConditionalOrderHistory = Entry('um/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
641
641
|
papi_get_um_conditional_allorders = papiGetUmConditionalAllOrders = Entry('um/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
642
642
|
papi_get_cm_conditional_openorder = papiGetCmConditionalOpenOrder = Entry('cm/conditional/openOrder', 'papi', 'GET', {'cost': 1})
|
643
|
-
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 40})
|
643
|
+
papi_get_cm_conditional_openorders = papiGetCmConditionalOpenOrders = Entry('cm/conditional/openOrders', 'papi', 'GET', {'cost': 1, 'noSymbol': 40})
|
644
644
|
papi_get_cm_conditional_orderhistory = papiGetCmConditionalOrderHistory = Entry('cm/conditional/orderHistory', 'papi', 'GET', {'cost': 1})
|
645
645
|
papi_get_cm_conditional_allorders = papiGetCmConditionalAllOrders = Entry('cm/conditional/allOrders', 'papi', 'GET', {'cost': 40})
|
646
646
|
papi_get_margin_order = papiGetMarginOrder = Entry('margin/order', 'papi', 'GET', {'cost': 5})
|
ccxt/abstract/cryptocom.py
CHANGED
@@ -11,6 +11,7 @@ class ImplicitAPI:
|
|
11
11
|
v1_public_get_public_get_valuations = v1PublicGetPublicGetValuations = Entry('public/get-valuations', ['v1', 'public'], 'GET', {'cost': 1})
|
12
12
|
v1_public_get_public_get_expired_settlement_price = v1PublicGetPublicGetExpiredSettlementPrice = Entry('public/get-expired-settlement-price', ['v1', 'public'], 'GET', {'cost': 3.3333333333333335})
|
13
13
|
v1_public_get_public_get_insurance = v1PublicGetPublicGetInsurance = Entry('public/get-insurance', ['v1', 'public'], 'GET', {'cost': 1})
|
14
|
+
v1_public_post_public_staking_get_conversion_rate = v1PublicPostPublicStakingGetConversionRate = Entry('public/staking/get-conversion-rate', ['v1', 'public'], 'POST', {'cost': 2})
|
14
15
|
v1_private_post_private_set_cancel_on_disconnect = v1PrivatePostPrivateSetCancelOnDisconnect = Entry('private/set-cancel-on-disconnect', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
15
16
|
v1_private_post_private_get_cancel_on_disconnect = v1PrivatePostPrivateGetCancelOnDisconnect = Entry('private/get-cancel-on-disconnect', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
16
17
|
v1_private_post_private_user_balance = v1PrivatePostPrivateUserBalance = Entry('private/user-balance', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
@@ -37,6 +38,16 @@ class ImplicitAPI:
|
|
37
38
|
v1_private_post_private_get_accounts = v1PrivatePostPrivateGetAccounts = Entry('private/get-accounts', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
38
39
|
v1_private_post_private_get_withdrawal_history = v1PrivatePostPrivateGetWithdrawalHistory = Entry('private/get-withdrawal-history', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
39
40
|
v1_private_post_private_get_deposit_history = v1PrivatePostPrivateGetDepositHistory = Entry('private/get-deposit-history', ['v1', 'private'], 'POST', {'cost': 3.3333333333333335})
|
41
|
+
v1_private_post_private_staking_stake = v1PrivatePostPrivateStakingStake = Entry('private/staking/stake', ['v1', 'private'], 'POST', {'cost': 2})
|
42
|
+
v1_private_post_private_staking_unstake = v1PrivatePostPrivateStakingUnstake = Entry('private/staking/unstake', ['v1', 'private'], 'POST', {'cost': 2})
|
43
|
+
v1_private_post_private_staking_get_staking_position = v1PrivatePostPrivateStakingGetStakingPosition = Entry('private/staking/get-staking-position', ['v1', 'private'], 'POST', {'cost': 2})
|
44
|
+
v1_private_post_private_staking_get_staking_instruments = v1PrivatePostPrivateStakingGetStakingInstruments = Entry('private/staking/get-staking-instruments', ['v1', 'private'], 'POST', {'cost': 2})
|
45
|
+
v1_private_post_private_staking_get_open_stake = v1PrivatePostPrivateStakingGetOpenStake = Entry('private/staking/get-open-stake', ['v1', 'private'], 'POST', {'cost': 2})
|
46
|
+
v1_private_post_private_staking_get_stake_history = v1PrivatePostPrivateStakingGetStakeHistory = Entry('private/staking/get-stake-history', ['v1', 'private'], 'POST', {'cost': 2})
|
47
|
+
v1_private_post_private_staking_get_reward_history = v1PrivatePostPrivateStakingGetRewardHistory = Entry('private/staking/get-reward-history', ['v1', 'private'], 'POST', {'cost': 2})
|
48
|
+
v1_private_post_private_staking_convert = v1PrivatePostPrivateStakingConvert = Entry('private/staking/convert', ['v1', 'private'], 'POST', {'cost': 2})
|
49
|
+
v1_private_post_private_staking_get_open_convert = v1PrivatePostPrivateStakingGetOpenConvert = Entry('private/staking/get-open-convert', ['v1', 'private'], 'POST', {'cost': 2})
|
50
|
+
v1_private_post_private_staking_get_convert_history = v1PrivatePostPrivateStakingGetConvertHistory = Entry('private/staking/get-convert-history', ['v1', 'private'], 'POST', {'cost': 2})
|
40
51
|
v2_public_get_public_auth = v2PublicGetPublicAuth = Entry('public/auth', ['v2', 'public'], 'GET', {'cost': 1})
|
41
52
|
v2_public_get_public_get_instruments = v2PublicGetPublicGetInstruments = Entry('public/get-instruments', ['v2', 'public'], 'GET', {'cost': 1})
|
42
53
|
v2_public_get_public_get_book = v2PublicGetPublicGetBook = Entry('public/get-book', ['v2', 'public'], 'GET', {'cost': 1})
|
ccxt/abstract/woo.py
CHANGED
@@ -42,6 +42,7 @@ class ImplicitAPI:
|
|
42
42
|
v1_private_get_positions = v1PrivateGetPositions = Entry('positions', ['v1', 'private'], 'GET', {'cost': 3.33})
|
43
43
|
v1_private_get_position_symbol = v1PrivateGetPositionSymbol = Entry('position/{symbol}', ['v1', 'private'], 'GET', {'cost': 3.33})
|
44
44
|
v1_private_get_client_transaction_history = v1PrivateGetClientTransactionHistory = Entry('client/transaction_history', ['v1', 'private'], 'GET', {'cost': 60})
|
45
|
+
v1_private_get_client_futures_leverage = v1PrivateGetClientFuturesLeverage = Entry('client/futures_leverage', ['v1', 'private'], 'GET', {'cost': 60})
|
45
46
|
v1_private_post_order = v1PrivatePostOrder = Entry('order', ['v1', 'private'], 'POST', {'cost': 5})
|
46
47
|
v1_private_post_order_cancel_all_after = v1PrivatePostOrderCancelAllAfter = Entry('order/cancel_all_after', ['v1', 'private'], 'POST', {'cost': 1})
|
47
48
|
v1_private_post_asset_main_sub_transfer = v1PrivatePostAssetMainSubTransfer = Entry('asset/main_sub_transfer', ['v1', 'private'], 'POST', {'cost': 30})
|
@@ -52,6 +53,8 @@ class ImplicitAPI:
|
|
52
53
|
v1_private_post_client_account_mode = v1PrivatePostClientAccountMode = Entry('client/account_mode', ['v1', 'private'], 'POST', {'cost': 120})
|
53
54
|
v1_private_post_client_position_mode = v1PrivatePostClientPositionMode = Entry('client/position_mode', ['v1', 'private'], 'POST', {'cost': 5})
|
54
55
|
v1_private_post_client_leverage = v1PrivatePostClientLeverage = Entry('client/leverage', ['v1', 'private'], 'POST', {'cost': 120})
|
56
|
+
v1_private_post_client_futures_leverage = v1PrivatePostClientFuturesLeverage = Entry('client/futures_leverage', ['v1', 'private'], 'POST', {'cost': 30})
|
57
|
+
v1_private_post_client_isolated_margin = v1PrivatePostClientIsolatedMargin = Entry('client/isolated_margin', ['v1', 'private'], 'POST', {'cost': 30})
|
55
58
|
v1_private_delete_order = v1PrivateDeleteOrder = Entry('order', ['v1', 'private'], 'DELETE', {'cost': 1})
|
56
59
|
v1_private_delete_client_order = v1PrivateDeleteClientOrder = Entry('client/order', ['v1', 'private'], 'DELETE', {'cost': 1})
|
57
60
|
v1_private_delete_orders = v1PrivateDeleteOrders = Entry('orders', ['v1', 'private'], 'DELETE', {'cost': 1})
|
ccxt/ace.py
CHANGED
@@ -203,10 +203,23 @@ class ace(Exchange, ImplicitAPI):
|
|
203
203
|
return self.parse_markets(response)
|
204
204
|
|
205
205
|
def parse_market(self, market: dict) -> Market:
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
206
|
+
#
|
207
|
+
# {
|
208
|
+
# "symbol": "ADA/TWD",
|
209
|
+
# "base": "ADA",
|
210
|
+
# "baseCurrencyId": "122",
|
211
|
+
# "quote": "TWD",
|
212
|
+
# "quoteCurrencyId": "1",
|
213
|
+
# "basePrecision": "2",
|
214
|
+
# "quotePrecision": "3",
|
215
|
+
# "minLimitBaseAmount": "1.0",
|
216
|
+
# "maxLimitBaseAmount": "150000.0"
|
217
|
+
# }
|
218
|
+
#
|
219
|
+
baseId = self.safe_string(market, 'baseCurrencyId')
|
220
|
+
base = self.safe_currency_code(self.safe_string(market, 'base'))
|
221
|
+
quoteId = self.safe_string(market, 'quoteCurrencyId')
|
222
|
+
quote = self.safe_currency_code(self.safe_string(market, 'quote'))
|
210
223
|
symbol = base + '/' + quote
|
211
224
|
return {
|
212
225
|
'id': self.safe_string(market, 'symbol'),
|
@@ -304,7 +317,7 @@ class ace(Exchange, ImplicitAPI):
|
|
304
317
|
market = self.market(symbol)
|
305
318
|
response = self.publicGetOapiV2ListTradePrice(params)
|
306
319
|
marketId = market['id']
|
307
|
-
ticker = self.
|
320
|
+
ticker = self.safe_dict(response, marketId, {})
|
308
321
|
#
|
309
322
|
# {
|
310
323
|
# "BTC/USDT":{
|
@@ -340,7 +353,7 @@ class ace(Exchange, ImplicitAPI):
|
|
340
353
|
for i in range(0, len(pairs)):
|
341
354
|
marketId = pairs[i]
|
342
355
|
market = self.safe_market(marketId)
|
343
|
-
rawTicker = self.
|
356
|
+
rawTicker = self.safe_dict(response, marketId)
|
344
357
|
ticker = self.parse_ticker(rawTicker, market)
|
345
358
|
tickers.append(ticker)
|
346
359
|
return self.filter_by_array_tickers(tickers, 'symbol', symbols)
|
@@ -454,7 +467,7 @@ class ace(Exchange, ImplicitAPI):
|
|
454
467
|
if since is not None:
|
455
468
|
request['startTime'] = since
|
456
469
|
response = self.privatePostV2KlineGetKline(self.extend(request, params))
|
457
|
-
data = self.
|
470
|
+
data = self.safe_list(response, 'attachment', [])
|
458
471
|
#
|
459
472
|
# {
|
460
473
|
# "attachment":[
|
@@ -533,18 +546,18 @@ class ace(Exchange, ImplicitAPI):
|
|
533
546
|
if dateTime is not None:
|
534
547
|
timestamp = self.parse8601(dateTime)
|
535
548
|
timestamp = timestamp - 28800000 # 8 hours
|
536
|
-
orderSide = self.
|
549
|
+
orderSide = self.safe_string(order, 'buyOrSell')
|
537
550
|
if orderSide is not None:
|
538
|
-
side = 'buy' if (orderSide == 1) else 'sell'
|
551
|
+
side = 'buy' if (orderSide == '1') else 'sell'
|
539
552
|
amount = self.safe_string(order, 'num')
|
540
553
|
price = self.safe_string(order, 'price')
|
541
554
|
quoteId = self.safe_string(order, 'quoteCurrencyName')
|
542
555
|
baseId = self.safe_string(order, 'baseCurrencyName')
|
543
556
|
if quoteId is not None and baseId is not None:
|
544
557
|
symbol = baseId + '/' + quoteId
|
545
|
-
orderType = self.
|
558
|
+
orderType = self.safe_string(order, 'type')
|
546
559
|
if orderType is not None:
|
547
|
-
type = 'limit' if (orderType == 1) else 'market'
|
560
|
+
type = 'limit' if (orderType == '1') else 'market'
|
548
561
|
filled = self.safe_string(order, 'tradeNum')
|
549
562
|
remaining = self.safe_string(order, 'remainNum')
|
550
563
|
status = self.parse_order_status(self.safe_string(order, 'status'))
|
@@ -694,7 +707,7 @@ class ace(Exchange, ImplicitAPI):
|
|
694
707
|
if limit is not None:
|
695
708
|
request['size'] = limit
|
696
709
|
response = self.privatePostV2OrderGetOrderList(self.extend(request, params))
|
697
|
-
orders = self.
|
710
|
+
orders = self.safe_list(response, 'attachment')
|
698
711
|
#
|
699
712
|
# {
|
700
713
|
# "attachment": [
|
@@ -851,7 +864,7 @@ class ace(Exchange, ImplicitAPI):
|
|
851
864
|
# "status": 200
|
852
865
|
# }
|
853
866
|
#
|
854
|
-
data = self.
|
867
|
+
data = self.safe_dict(response, 'attachment')
|
855
868
|
trades = self.safe_list(data, 'trades', [])
|
856
869
|
return self.parse_trades(trades, market, since, limit)
|
857
870
|
|
@@ -947,7 +960,7 @@ class ace(Exchange, ImplicitAPI):
|
|
947
960
|
"""
|
948
961
|
self.load_markets()
|
949
962
|
response = self.privatePostV2CoinCustomerAccount(params)
|
950
|
-
balances = self.
|
963
|
+
balances = self.safe_list(response, 'attachment', [])
|
951
964
|
#
|
952
965
|
# {
|
953
966
|
# "attachment":[
|
@@ -981,7 +994,12 @@ class ace(Exchange, ImplicitAPI):
|
|
981
994
|
}, params)
|
982
995
|
sortedData = self.keysort(data)
|
983
996
|
values = list(sortedData.values())
|
984
|
-
|
997
|
+
stringifiedValues = []
|
998
|
+
for i in range(0, len(values)):
|
999
|
+
value = values[i]
|
1000
|
+
strValue = str(value)
|
1001
|
+
stringifiedValues.append(strValue)
|
1002
|
+
auth += ''.join(stringifiedValues)
|
985
1003
|
signature = self.hash(self.encode(auth), 'sha256', 'hex')
|
986
1004
|
data['signKey'] = signature
|
987
1005
|
headers = {
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.63'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -53,6 +53,7 @@ from ccxt.base.errors import RateLimitExceeded # noqa: F4
|
|
53
53
|
from ccxt.base.errors import ExchangeNotAvailable # noqa: F401
|
54
54
|
from ccxt.base.errors import OnMaintenance # noqa: F401
|
55
55
|
from ccxt.base.errors import InvalidNonce # noqa: F401
|
56
|
+
from ccxt.base.errors import ChecksumError # noqa: F401
|
56
57
|
from ccxt.base.errors import RequestTimeout # noqa: F401
|
57
58
|
from ccxt.base.errors import BadResponse # noqa: F401
|
58
59
|
from ccxt.base.errors import NullResponse # noqa: F401
|
ccxt/async_support/ace.py
CHANGED
@@ -203,10 +203,23 @@ class ace(Exchange, ImplicitAPI):
|
|
203
203
|
return self.parse_markets(response)
|
204
204
|
|
205
205
|
def parse_market(self, market: dict) -> Market:
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
206
|
+
#
|
207
|
+
# {
|
208
|
+
# "symbol": "ADA/TWD",
|
209
|
+
# "base": "ADA",
|
210
|
+
# "baseCurrencyId": "122",
|
211
|
+
# "quote": "TWD",
|
212
|
+
# "quoteCurrencyId": "1",
|
213
|
+
# "basePrecision": "2",
|
214
|
+
# "quotePrecision": "3",
|
215
|
+
# "minLimitBaseAmount": "1.0",
|
216
|
+
# "maxLimitBaseAmount": "150000.0"
|
217
|
+
# }
|
218
|
+
#
|
219
|
+
baseId = self.safe_string(market, 'baseCurrencyId')
|
220
|
+
base = self.safe_currency_code(self.safe_string(market, 'base'))
|
221
|
+
quoteId = self.safe_string(market, 'quoteCurrencyId')
|
222
|
+
quote = self.safe_currency_code(self.safe_string(market, 'quote'))
|
210
223
|
symbol = base + '/' + quote
|
211
224
|
return {
|
212
225
|
'id': self.safe_string(market, 'symbol'),
|
@@ -304,7 +317,7 @@ class ace(Exchange, ImplicitAPI):
|
|
304
317
|
market = self.market(symbol)
|
305
318
|
response = await self.publicGetOapiV2ListTradePrice(params)
|
306
319
|
marketId = market['id']
|
307
|
-
ticker = self.
|
320
|
+
ticker = self.safe_dict(response, marketId, {})
|
308
321
|
#
|
309
322
|
# {
|
310
323
|
# "BTC/USDT":{
|
@@ -340,7 +353,7 @@ class ace(Exchange, ImplicitAPI):
|
|
340
353
|
for i in range(0, len(pairs)):
|
341
354
|
marketId = pairs[i]
|
342
355
|
market = self.safe_market(marketId)
|
343
|
-
rawTicker = self.
|
356
|
+
rawTicker = self.safe_dict(response, marketId)
|
344
357
|
ticker = self.parse_ticker(rawTicker, market)
|
345
358
|
tickers.append(ticker)
|
346
359
|
return self.filter_by_array_tickers(tickers, 'symbol', symbols)
|
@@ -454,7 +467,7 @@ class ace(Exchange, ImplicitAPI):
|
|
454
467
|
if since is not None:
|
455
468
|
request['startTime'] = since
|
456
469
|
response = await self.privatePostV2KlineGetKline(self.extend(request, params))
|
457
|
-
data = self.
|
470
|
+
data = self.safe_list(response, 'attachment', [])
|
458
471
|
#
|
459
472
|
# {
|
460
473
|
# "attachment":[
|
@@ -533,18 +546,18 @@ class ace(Exchange, ImplicitAPI):
|
|
533
546
|
if dateTime is not None:
|
534
547
|
timestamp = self.parse8601(dateTime)
|
535
548
|
timestamp = timestamp - 28800000 # 8 hours
|
536
|
-
orderSide = self.
|
549
|
+
orderSide = self.safe_string(order, 'buyOrSell')
|
537
550
|
if orderSide is not None:
|
538
|
-
side = 'buy' if (orderSide == 1) else 'sell'
|
551
|
+
side = 'buy' if (orderSide == '1') else 'sell'
|
539
552
|
amount = self.safe_string(order, 'num')
|
540
553
|
price = self.safe_string(order, 'price')
|
541
554
|
quoteId = self.safe_string(order, 'quoteCurrencyName')
|
542
555
|
baseId = self.safe_string(order, 'baseCurrencyName')
|
543
556
|
if quoteId is not None and baseId is not None:
|
544
557
|
symbol = baseId + '/' + quoteId
|
545
|
-
orderType = self.
|
558
|
+
orderType = self.safe_string(order, 'type')
|
546
559
|
if orderType is not None:
|
547
|
-
type = 'limit' if (orderType == 1) else 'market'
|
560
|
+
type = 'limit' if (orderType == '1') else 'market'
|
548
561
|
filled = self.safe_string(order, 'tradeNum')
|
549
562
|
remaining = self.safe_string(order, 'remainNum')
|
550
563
|
status = self.parse_order_status(self.safe_string(order, 'status'))
|
@@ -694,7 +707,7 @@ class ace(Exchange, ImplicitAPI):
|
|
694
707
|
if limit is not None:
|
695
708
|
request['size'] = limit
|
696
709
|
response = await self.privatePostV2OrderGetOrderList(self.extend(request, params))
|
697
|
-
orders = self.
|
710
|
+
orders = self.safe_list(response, 'attachment')
|
698
711
|
#
|
699
712
|
# {
|
700
713
|
# "attachment": [
|
@@ -851,7 +864,7 @@ class ace(Exchange, ImplicitAPI):
|
|
851
864
|
# "status": 200
|
852
865
|
# }
|
853
866
|
#
|
854
|
-
data = self.
|
867
|
+
data = self.safe_dict(response, 'attachment')
|
855
868
|
trades = self.safe_list(data, 'trades', [])
|
856
869
|
return self.parse_trades(trades, market, since, limit)
|
857
870
|
|
@@ -947,7 +960,7 @@ class ace(Exchange, ImplicitAPI):
|
|
947
960
|
"""
|
948
961
|
await self.load_markets()
|
949
962
|
response = await self.privatePostV2CoinCustomerAccount(params)
|
950
|
-
balances = self.
|
963
|
+
balances = self.safe_list(response, 'attachment', [])
|
951
964
|
#
|
952
965
|
# {
|
953
966
|
# "attachment":[
|
@@ -981,7 +994,12 @@ class ace(Exchange, ImplicitAPI):
|
|
981
994
|
}, params)
|
982
995
|
sortedData = self.keysort(data)
|
983
996
|
values = list(sortedData.values())
|
984
|
-
|
997
|
+
stringifiedValues = []
|
998
|
+
for i in range(0, len(values)):
|
999
|
+
value = values[i]
|
1000
|
+
strValue = str(value)
|
1001
|
+
stringifiedValues.append(strValue)
|
1002
|
+
auth += ''.join(stringifiedValues)
|
985
1003
|
signature = self.hash(self.encode(auth), 'sha256', 'hex')
|
986
1004
|
data['signKey'] = signature
|
987
1005
|
headers = {
|
@@ -35,7 +35,7 @@ class FastClient(AiohttpClient):
|
|
35
35
|
self.stack.append(message)
|
36
36
|
|
37
37
|
def feed_eof():
|
38
|
-
if self._close_code == 1000: # OK close
|
38
|
+
if self.connection._close_code == 1000: # OK close
|
39
39
|
self.on_close(1000)
|
40
40
|
else:
|
41
41
|
self.on_error(1006) # ABNORMAL_CLOSURE
|
@@ -58,7 +58,7 @@ class FastClient(AiohttpClient):
|
|
58
58
|
try:
|
59
59
|
await _self._writer.close(code, message)
|
60
60
|
_self._response.close()
|
61
|
-
|
61
|
+
_self._close_code = 1000
|
62
62
|
except asyncio.CancelledError:
|
63
63
|
_self._response.close()
|
64
64
|
_self._close_code = 1006
|