ccxt 4.0.41__py2.py3-none-any.whl → 4.0.43__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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bybit.py +2 -2
- ccxt/async_support/delta.py +56 -12
- ccxt/base/exchange.py +1 -1
- ccxt/bybit.py +2 -2
- ccxt/delta.py +56 -12
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +2 -1
- ccxt/pro/bybit.py +71 -26
- ccxt/pro/cryptocom.py +6 -1
- ccxt/test/base/test_shared_methods.py +1 -1
- {ccxt-4.0.41.dist-info → ccxt-4.0.43.dist-info}/METADATA +8 -8
- {ccxt-4.0.41.dist-info → ccxt-4.0.43.dist-info}/RECORD +17 -17
- {ccxt-4.0.41.dist-info → ccxt-4.0.43.dist-info}/WHEEL +0 -0
- {ccxt-4.0.41.dist-info → ccxt-4.0.43.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/bybit.py
CHANGED
@@ -3163,13 +3163,13 @@ class bybit(Exchange, ImplicitAPI):
|
|
3163
3163
|
'PENDING_CANCEL': 'open',
|
3164
3164
|
'PENDING_NEW': 'open',
|
3165
3165
|
'REJECTED': 'rejected',
|
3166
|
-
'PARTIALLY_FILLED_CANCELLED': '
|
3166
|
+
'PARTIALLY_FILLED_CANCELLED': 'closed', # context: https://github.com/ccxt/ccxt/issues/18685
|
3167
3167
|
# v3 contract / unified margin / unified account
|
3168
3168
|
'Created': 'open',
|
3169
3169
|
'New': 'open',
|
3170
3170
|
'Rejected': 'rejected', # order is triggered but failed upon being placed
|
3171
3171
|
'PartiallyFilled': 'open',
|
3172
|
-
'PartiallyFilledCanceled': '
|
3172
|
+
'PartiallyFilledCanceled': 'closed', # context: https://github.com/ccxt/ccxt/issues/18685
|
3173
3173
|
'Filled': 'closed',
|
3174
3174
|
'PendingCancel': 'open',
|
3175
3175
|
'Cancelled': 'canceled',
|
ccxt/async_support/delta.py
CHANGED
@@ -11,7 +11,6 @@ from ccxt.base.types import OrderType
|
|
11
11
|
from typing import Optional
|
12
12
|
from typing import List
|
13
13
|
from ccxt.base.errors import ExchangeError
|
14
|
-
from ccxt.base.errors import ArgumentsRequired
|
15
14
|
from ccxt.base.errors import BadRequest
|
16
15
|
from ccxt.base.errors import BadSymbol
|
17
16
|
from ccxt.base.errors import InsufficientFunds
|
@@ -36,14 +35,15 @@ class delta(Exchange, ImplicitAPI):
|
|
36
35
|
'has': {
|
37
36
|
'CORS': None,
|
38
37
|
'spot': True,
|
39
|
-
'margin':
|
40
|
-
'swap':
|
41
|
-
'future':
|
42
|
-
'option':
|
38
|
+
'margin': False,
|
39
|
+
'swap': True,
|
40
|
+
'future': False,
|
41
|
+
'option': True,
|
43
42
|
'addMargin': True,
|
44
43
|
'cancelAllOrders': True,
|
45
44
|
'cancelOrder': True,
|
46
45
|
'createOrder': True,
|
46
|
+
'createReduceOnlyOrder': True,
|
47
47
|
'editOrder': True,
|
48
48
|
'fetchBalance': True,
|
49
49
|
'fetchClosedOrders': True,
|
@@ -51,15 +51,18 @@ class delta(Exchange, ImplicitAPI):
|
|
51
51
|
'fetchDeposit': None,
|
52
52
|
'fetchDepositAddress': True,
|
53
53
|
'fetchDeposits': None,
|
54
|
+
'fetchFundingHistory': False,
|
54
55
|
'fetchFundingRate': True,
|
55
56
|
'fetchFundingRateHistory': False,
|
56
57
|
'fetchFundingRates': True,
|
58
|
+
'fetchIndexOHLCV': True,
|
57
59
|
'fetchLedger': True,
|
58
60
|
'fetchLeverage': True,
|
59
61
|
'fetchLeverageTiers': False, # An infinite number of tiers, see examples/js/delta-maintenance-margin-rate-max-leverage.js
|
60
62
|
'fetchMarginMode': False,
|
61
63
|
'fetchMarketLeverageTiers': False,
|
62
64
|
'fetchMarkets': True,
|
65
|
+
'fetchMarkOHLCV': True,
|
63
66
|
'fetchMyTrades': True,
|
64
67
|
'fetchOHLCV': True,
|
65
68
|
'fetchOpenInterest': True,
|
@@ -68,6 +71,7 @@ class delta(Exchange, ImplicitAPI):
|
|
68
71
|
'fetchPosition': True,
|
69
72
|
'fetchPositionMode': False,
|
70
73
|
'fetchPositions': True,
|
74
|
+
'fetchPremiumIndexOHLCV': False,
|
71
75
|
'fetchSettlementHistory': True,
|
72
76
|
'fetchStatus': True,
|
73
77
|
'fetchTicker': True,
|
@@ -80,6 +84,9 @@ class delta(Exchange, ImplicitAPI):
|
|
80
84
|
'fetchWithdrawals': None,
|
81
85
|
'reduceMargin': True,
|
82
86
|
'setLeverage': True,
|
87
|
+
'setMargin': False,
|
88
|
+
'setMarginMode': False,
|
89
|
+
'setPositionMode': False,
|
83
90
|
'transfer': False,
|
84
91
|
'withdraw': False,
|
85
92
|
},
|
@@ -418,6 +425,7 @@ class delta(Exchange, ImplicitAPI):
|
|
418
425
|
async def fetch_currencies(self, params={}):
|
419
426
|
"""
|
420
427
|
fetches all available currencies on an exchange
|
428
|
+
see https://docs.delta.exchange/#get-list-of-all-assets
|
421
429
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
422
430
|
:returns dict: an associative dictionary of currencies
|
423
431
|
"""
|
@@ -499,6 +507,7 @@ class delta(Exchange, ImplicitAPI):
|
|
499
507
|
async def fetch_markets(self, params={}):
|
500
508
|
"""
|
501
509
|
retrieves data on all markets for delta
|
510
|
+
see https://docs.delta.exchange/#get-list-of-products
|
502
511
|
:param dict [params]: extra parameters specific to the exchange api endpoint
|
503
512
|
:returns dict[]: an array of objects representing market data
|
504
513
|
"""
|
@@ -1229,6 +1238,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1229
1238
|
async def fetch_order_book(self, symbol: str, limit: Optional[int] = None, params={}):
|
1230
1239
|
"""
|
1231
1240
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1241
|
+
see https://docs.delta.exchange/#get-l2-orderbook
|
1232
1242
|
:param str symbol: unified symbol of the market to fetch the order book for
|
1233
1243
|
:param int [limit]: the maximum amount of order book entries to return
|
1234
1244
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
@@ -1361,6 +1371,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1361
1371
|
async def fetch_trades(self, symbol: str, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1362
1372
|
"""
|
1363
1373
|
get the list of most recent trades for a particular symbol
|
1374
|
+
see https://docs.delta.exchange/#get-public-trades
|
1364
1375
|
:param str symbol: unified symbol of the market to fetch trades for
|
1365
1376
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
1366
1377
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -1414,6 +1425,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1414
1425
|
async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1415
1426
|
"""
|
1416
1427
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1428
|
+
see https://docs.delta.exchange/#get-ohlc-candles
|
1417
1429
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1418
1430
|
:param str timeframe: the length of time each candle represents
|
1419
1431
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -1424,7 +1436,6 @@ class delta(Exchange, ImplicitAPI):
|
|
1424
1436
|
await self.load_markets()
|
1425
1437
|
market = self.market(symbol)
|
1426
1438
|
request = {
|
1427
|
-
'symbol': market['id'],
|
1428
1439
|
'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
|
1429
1440
|
}
|
1430
1441
|
duration = self.parse_timeframe(timeframe)
|
@@ -1437,6 +1448,14 @@ class delta(Exchange, ImplicitAPI):
|
|
1437
1448
|
start = self.parse_to_int(since / 1000)
|
1438
1449
|
request['start'] = start
|
1439
1450
|
request['end'] = self.sum(start, limit * duration)
|
1451
|
+
price = self.safe_string(params, 'price')
|
1452
|
+
if price == 'mark':
|
1453
|
+
request['symbol'] = 'MARK:' + market['id']
|
1454
|
+
elif price == 'index':
|
1455
|
+
request['symbol'] = market['info']['spot_index']['symbol']
|
1456
|
+
else:
|
1457
|
+
request['symbol'] = market['id']
|
1458
|
+
params = self.omit(params, 'price')
|
1440
1459
|
response = await self.publicGetHistoryCandles(self.extend(request, params))
|
1441
1460
|
#
|
1442
1461
|
# {
|
@@ -1469,6 +1488,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1469
1488
|
async def fetch_balance(self, params={}):
|
1470
1489
|
"""
|
1471
1490
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
1491
|
+
see https://docs.delta.exchange/#get-wallet-balances
|
1472
1492
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1473
1493
|
:returns dict: a `balance structure <https://docs.ccxt.com/en/latest/manual.html?#balance-structure>`
|
1474
1494
|
"""
|
@@ -1500,6 +1520,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1500
1520
|
async def fetch_position(self, symbol: str, params={}):
|
1501
1521
|
"""
|
1502
1522
|
fetch data on a single open contract trade position
|
1523
|
+
see https://docs.delta.exchange/#get-position
|
1503
1524
|
:param str symbol: unified market symbol of the market the position is held in, default is None
|
1504
1525
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1505
1526
|
:returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -1526,6 +1547,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1526
1547
|
async def fetch_positions(self, symbols: Optional[List[str]] = None, params={}):
|
1527
1548
|
"""
|
1528
1549
|
fetch all open positions
|
1550
|
+
see https://docs.delta.exchange/#get-margined-positions
|
1529
1551
|
:param str[]|None symbols: list of unified market symbols
|
1530
1552
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1531
1553
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -1717,12 +1739,14 @@ class delta(Exchange, ImplicitAPI):
|
|
1717
1739
|
async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
|
1718
1740
|
"""
|
1719
1741
|
create a trade order
|
1742
|
+
see https://docs.delta.exchange/#place-order
|
1720
1743
|
:param str symbol: unified symbol of the market to create an order in
|
1721
1744
|
:param str type: 'market' or 'limit'
|
1722
1745
|
:param str side: 'buy' or 'sell'
|
1723
1746
|
:param float amount: how much of currency you want to trade in units of base currency
|
1724
1747
|
:param float price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
1725
1748
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1749
|
+
:param bool [params.reduceOnly]: *contract only* indicates if self order is to reduce the size of a position
|
1726
1750
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1727
1751
|
"""
|
1728
1752
|
await self.load_markets()
|
@@ -1745,6 +1769,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1745
1769
|
params = self.omit(params, ['clientOrderId', 'client_order_id'])
|
1746
1770
|
if clientOrderId is not None:
|
1747
1771
|
request['client_order_id'] = clientOrderId
|
1772
|
+
reduceOnly = self.safe_value(params, 'reduceOnly')
|
1773
|
+
if reduceOnly:
|
1774
|
+
request['reduce_only'] = reduceOnly
|
1775
|
+
params = self.omit(params, 'reduceOnly')
|
1748
1776
|
response = await self.privatePostOrders(self.extend(request, params))
|
1749
1777
|
#
|
1750
1778
|
# {
|
@@ -1786,6 +1814,18 @@ class delta(Exchange, ImplicitAPI):
|
|
1786
1814
|
return self.parse_order(result, market)
|
1787
1815
|
|
1788
1816
|
async def edit_order(self, id: str, symbol, type, side, amount=None, price=None, params={}):
|
1817
|
+
"""
|
1818
|
+
edit a trade order
|
1819
|
+
see https://docs.delta.exchange/#edit-order
|
1820
|
+
:param str id: order id
|
1821
|
+
:param str symbol: unified symbol of the market to create an order in
|
1822
|
+
:param str type: 'market' or 'limit'
|
1823
|
+
:param str side: 'buy' or 'sell'
|
1824
|
+
:param float amount: how much of the currency you want to trade in units of the base currency
|
1825
|
+
:param float price: the price at which the order is to be fullfilled, in units of the quote currency
|
1826
|
+
:param dict [params]: extra parameters specific to the delta api endpoint
|
1827
|
+
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1828
|
+
"""
|
1789
1829
|
await self.load_markets()
|
1790
1830
|
market = self.market(symbol)
|
1791
1831
|
request = {
|
@@ -1822,13 +1862,13 @@ class delta(Exchange, ImplicitAPI):
|
|
1822
1862
|
async def cancel_order(self, id: str, symbol: Optional[str] = None, params={}):
|
1823
1863
|
"""
|
1824
1864
|
cancels an open order
|
1865
|
+
see https://docs.delta.exchange/#cancel-order
|
1825
1866
|
:param str id: order id
|
1826
1867
|
:param str symbol: unified symbol of the market the order was made in
|
1827
1868
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1828
1869
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1829
1870
|
"""
|
1830
|
-
|
1831
|
-
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
1871
|
+
self.check_required_symbol('cancelOrder', symbol)
|
1832
1872
|
await self.load_markets()
|
1833
1873
|
market = self.market(symbol)
|
1834
1874
|
request = {
|
@@ -1878,12 +1918,12 @@ class delta(Exchange, ImplicitAPI):
|
|
1878
1918
|
async def cancel_all_orders(self, symbol: Optional[str] = None, params={}):
|
1879
1919
|
"""
|
1880
1920
|
cancel all open orders in a market
|
1921
|
+
see https://docs.delta.exchange/#cancel-all-open-orders
|
1881
1922
|
:param str symbol: unified market symbol of the market to cancel orders in
|
1882
1923
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1883
1924
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1884
1925
|
"""
|
1885
|
-
|
1886
|
-
raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
|
1926
|
+
self.check_required_symbol('cancelAllOrders', symbol)
|
1887
1927
|
await self.load_markets()
|
1888
1928
|
market = self.market(symbol)
|
1889
1929
|
request = {
|
@@ -1903,9 +1943,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1903
1943
|
async def fetch_open_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1904
1944
|
"""
|
1905
1945
|
fetch all unfilled currently open orders
|
1946
|
+
see https://docs.delta.exchange/#get-active-orders
|
1906
1947
|
:param str symbol: unified market symbol
|
1907
1948
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1908
|
-
:param int [limit]: the maximum number of
|
1949
|
+
:param int [limit]: the maximum number of open order structures to retrieve
|
1909
1950
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1910
1951
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1911
1952
|
"""
|
@@ -1914,9 +1955,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1914
1955
|
async def fetch_closed_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1915
1956
|
"""
|
1916
1957
|
fetches information on multiple closed orders made by the user
|
1958
|
+
see https://docs.delta.exchange/#get-order-history-cancelled-and-closed
|
1917
1959
|
:param str symbol: unified market symbol of the market orders were made in
|
1918
1960
|
:param int [since]: the earliest time in ms to fetch orders for
|
1919
|
-
:param int [limit]: the maximum number of
|
1961
|
+
:param int [limit]: the maximum number of order structures to retrieve
|
1920
1962
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1921
1963
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1922
1964
|
"""
|
@@ -1972,6 +2014,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1972
2014
|
async def fetch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1973
2015
|
"""
|
1974
2016
|
fetch all trades made by the user
|
2017
|
+
see https://docs.delta.exchange/#get-user-fills-by-filters
|
1975
2018
|
:param str symbol: unified market symbol
|
1976
2019
|
:param int [since]: the earliest time in ms to fetch trades for
|
1977
2020
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -2048,6 +2091,7 @@ class delta(Exchange, ImplicitAPI):
|
|
2048
2091
|
async def fetch_ledger(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2049
2092
|
"""
|
2050
2093
|
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
2094
|
+
see https://docs.delta.exchange/#get-wallet-transactions
|
2051
2095
|
:param str code: unified currency code, default is None
|
2052
2096
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
2053
2097
|
:param int [limit]: max number of ledger entrys to return, default is None
|
ccxt/base/exchange.py
CHANGED
ccxt/bybit.py
CHANGED
@@ -3162,13 +3162,13 @@ class bybit(Exchange, ImplicitAPI):
|
|
3162
3162
|
'PENDING_CANCEL': 'open',
|
3163
3163
|
'PENDING_NEW': 'open',
|
3164
3164
|
'REJECTED': 'rejected',
|
3165
|
-
'PARTIALLY_FILLED_CANCELLED': '
|
3165
|
+
'PARTIALLY_FILLED_CANCELLED': 'closed', # context: https://github.com/ccxt/ccxt/issues/18685
|
3166
3166
|
# v3 contract / unified margin / unified account
|
3167
3167
|
'Created': 'open',
|
3168
3168
|
'New': 'open',
|
3169
3169
|
'Rejected': 'rejected', # order is triggered but failed upon being placed
|
3170
3170
|
'PartiallyFilled': 'open',
|
3171
|
-
'PartiallyFilledCanceled': '
|
3171
|
+
'PartiallyFilledCanceled': 'closed', # context: https://github.com/ccxt/ccxt/issues/18685
|
3172
3172
|
'Filled': 'closed',
|
3173
3173
|
'PendingCancel': 'open',
|
3174
3174
|
'Cancelled': 'canceled',
|
ccxt/delta.py
CHANGED
@@ -11,7 +11,6 @@ from ccxt.base.types import OrderType
|
|
11
11
|
from typing import Optional
|
12
12
|
from typing import List
|
13
13
|
from ccxt.base.errors import ExchangeError
|
14
|
-
from ccxt.base.errors import ArgumentsRequired
|
15
14
|
from ccxt.base.errors import BadRequest
|
16
15
|
from ccxt.base.errors import BadSymbol
|
17
16
|
from ccxt.base.errors import InsufficientFunds
|
@@ -36,14 +35,15 @@ class delta(Exchange, ImplicitAPI):
|
|
36
35
|
'has': {
|
37
36
|
'CORS': None,
|
38
37
|
'spot': True,
|
39
|
-
'margin':
|
40
|
-
'swap':
|
41
|
-
'future':
|
42
|
-
'option':
|
38
|
+
'margin': False,
|
39
|
+
'swap': True,
|
40
|
+
'future': False,
|
41
|
+
'option': True,
|
43
42
|
'addMargin': True,
|
44
43
|
'cancelAllOrders': True,
|
45
44
|
'cancelOrder': True,
|
46
45
|
'createOrder': True,
|
46
|
+
'createReduceOnlyOrder': True,
|
47
47
|
'editOrder': True,
|
48
48
|
'fetchBalance': True,
|
49
49
|
'fetchClosedOrders': True,
|
@@ -51,15 +51,18 @@ class delta(Exchange, ImplicitAPI):
|
|
51
51
|
'fetchDeposit': None,
|
52
52
|
'fetchDepositAddress': True,
|
53
53
|
'fetchDeposits': None,
|
54
|
+
'fetchFundingHistory': False,
|
54
55
|
'fetchFundingRate': True,
|
55
56
|
'fetchFundingRateHistory': False,
|
56
57
|
'fetchFundingRates': True,
|
58
|
+
'fetchIndexOHLCV': True,
|
57
59
|
'fetchLedger': True,
|
58
60
|
'fetchLeverage': True,
|
59
61
|
'fetchLeverageTiers': False, # An infinite number of tiers, see examples/js/delta-maintenance-margin-rate-max-leverage.js
|
60
62
|
'fetchMarginMode': False,
|
61
63
|
'fetchMarketLeverageTiers': False,
|
62
64
|
'fetchMarkets': True,
|
65
|
+
'fetchMarkOHLCV': True,
|
63
66
|
'fetchMyTrades': True,
|
64
67
|
'fetchOHLCV': True,
|
65
68
|
'fetchOpenInterest': True,
|
@@ -68,6 +71,7 @@ class delta(Exchange, ImplicitAPI):
|
|
68
71
|
'fetchPosition': True,
|
69
72
|
'fetchPositionMode': False,
|
70
73
|
'fetchPositions': True,
|
74
|
+
'fetchPremiumIndexOHLCV': False,
|
71
75
|
'fetchSettlementHistory': True,
|
72
76
|
'fetchStatus': True,
|
73
77
|
'fetchTicker': True,
|
@@ -80,6 +84,9 @@ class delta(Exchange, ImplicitAPI):
|
|
80
84
|
'fetchWithdrawals': None,
|
81
85
|
'reduceMargin': True,
|
82
86
|
'setLeverage': True,
|
87
|
+
'setMargin': False,
|
88
|
+
'setMarginMode': False,
|
89
|
+
'setPositionMode': False,
|
83
90
|
'transfer': False,
|
84
91
|
'withdraw': False,
|
85
92
|
},
|
@@ -418,6 +425,7 @@ class delta(Exchange, ImplicitAPI):
|
|
418
425
|
def fetch_currencies(self, params={}):
|
419
426
|
"""
|
420
427
|
fetches all available currencies on an exchange
|
428
|
+
see https://docs.delta.exchange/#get-list-of-all-assets
|
421
429
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
422
430
|
:returns dict: an associative dictionary of currencies
|
423
431
|
"""
|
@@ -499,6 +507,7 @@ class delta(Exchange, ImplicitAPI):
|
|
499
507
|
def fetch_markets(self, params={}):
|
500
508
|
"""
|
501
509
|
retrieves data on all markets for delta
|
510
|
+
see https://docs.delta.exchange/#get-list-of-products
|
502
511
|
:param dict [params]: extra parameters specific to the exchange api endpoint
|
503
512
|
:returns dict[]: an array of objects representing market data
|
504
513
|
"""
|
@@ -1229,6 +1238,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1229
1238
|
def fetch_order_book(self, symbol: str, limit: Optional[int] = None, params={}):
|
1230
1239
|
"""
|
1231
1240
|
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
|
1241
|
+
see https://docs.delta.exchange/#get-l2-orderbook
|
1232
1242
|
:param str symbol: unified symbol of the market to fetch the order book for
|
1233
1243
|
:param int [limit]: the maximum amount of order book entries to return
|
1234
1244
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
@@ -1361,6 +1371,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1361
1371
|
def fetch_trades(self, symbol: str, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1362
1372
|
"""
|
1363
1373
|
get the list of most recent trades for a particular symbol
|
1374
|
+
see https://docs.delta.exchange/#get-public-trades
|
1364
1375
|
:param str symbol: unified symbol of the market to fetch trades for
|
1365
1376
|
:param int [since]: timestamp in ms of the earliest trade to fetch
|
1366
1377
|
:param int [limit]: the maximum amount of trades to fetch
|
@@ -1414,6 +1425,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1414
1425
|
def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1415
1426
|
"""
|
1416
1427
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
1428
|
+
see https://docs.delta.exchange/#get-ohlc-candles
|
1417
1429
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
1418
1430
|
:param str timeframe: the length of time each candle represents
|
1419
1431
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
@@ -1424,7 +1436,6 @@ class delta(Exchange, ImplicitAPI):
|
|
1424
1436
|
self.load_markets()
|
1425
1437
|
market = self.market(symbol)
|
1426
1438
|
request = {
|
1427
|
-
'symbol': market['id'],
|
1428
1439
|
'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
|
1429
1440
|
}
|
1430
1441
|
duration = self.parse_timeframe(timeframe)
|
@@ -1437,6 +1448,14 @@ class delta(Exchange, ImplicitAPI):
|
|
1437
1448
|
start = self.parse_to_int(since / 1000)
|
1438
1449
|
request['start'] = start
|
1439
1450
|
request['end'] = self.sum(start, limit * duration)
|
1451
|
+
price = self.safe_string(params, 'price')
|
1452
|
+
if price == 'mark':
|
1453
|
+
request['symbol'] = 'MARK:' + market['id']
|
1454
|
+
elif price == 'index':
|
1455
|
+
request['symbol'] = market['info']['spot_index']['symbol']
|
1456
|
+
else:
|
1457
|
+
request['symbol'] = market['id']
|
1458
|
+
params = self.omit(params, 'price')
|
1440
1459
|
response = self.publicGetHistoryCandles(self.extend(request, params))
|
1441
1460
|
#
|
1442
1461
|
# {
|
@@ -1469,6 +1488,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1469
1488
|
def fetch_balance(self, params={}):
|
1470
1489
|
"""
|
1471
1490
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
1491
|
+
see https://docs.delta.exchange/#get-wallet-balances
|
1472
1492
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1473
1493
|
:returns dict: a `balance structure <https://docs.ccxt.com/en/latest/manual.html?#balance-structure>`
|
1474
1494
|
"""
|
@@ -1500,6 +1520,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1500
1520
|
def fetch_position(self, symbol: str, params={}):
|
1501
1521
|
"""
|
1502
1522
|
fetch data on a single open contract trade position
|
1523
|
+
see https://docs.delta.exchange/#get-position
|
1503
1524
|
:param str symbol: unified market symbol of the market the position is held in, default is None
|
1504
1525
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1505
1526
|
:returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -1526,6 +1547,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1526
1547
|
def fetch_positions(self, symbols: Optional[List[str]] = None, params={}):
|
1527
1548
|
"""
|
1528
1549
|
fetch all open positions
|
1550
|
+
see https://docs.delta.exchange/#get-margined-positions
|
1529
1551
|
:param str[]|None symbols: list of unified market symbols
|
1530
1552
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1531
1553
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
@@ -1717,12 +1739,14 @@ class delta(Exchange, ImplicitAPI):
|
|
1717
1739
|
def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
|
1718
1740
|
"""
|
1719
1741
|
create a trade order
|
1742
|
+
see https://docs.delta.exchange/#place-order
|
1720
1743
|
:param str symbol: unified symbol of the market to create an order in
|
1721
1744
|
:param str type: 'market' or 'limit'
|
1722
1745
|
:param str side: 'buy' or 'sell'
|
1723
1746
|
:param float amount: how much of currency you want to trade in units of base currency
|
1724
1747
|
:param float price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
1725
1748
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1749
|
+
:param bool [params.reduceOnly]: *contract only* indicates if self order is to reduce the size of a position
|
1726
1750
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1727
1751
|
"""
|
1728
1752
|
self.load_markets()
|
@@ -1745,6 +1769,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1745
1769
|
params = self.omit(params, ['clientOrderId', 'client_order_id'])
|
1746
1770
|
if clientOrderId is not None:
|
1747
1771
|
request['client_order_id'] = clientOrderId
|
1772
|
+
reduceOnly = self.safe_value(params, 'reduceOnly')
|
1773
|
+
if reduceOnly:
|
1774
|
+
request['reduce_only'] = reduceOnly
|
1775
|
+
params = self.omit(params, 'reduceOnly')
|
1748
1776
|
response = self.privatePostOrders(self.extend(request, params))
|
1749
1777
|
#
|
1750
1778
|
# {
|
@@ -1786,6 +1814,18 @@ class delta(Exchange, ImplicitAPI):
|
|
1786
1814
|
return self.parse_order(result, market)
|
1787
1815
|
|
1788
1816
|
def edit_order(self, id: str, symbol, type, side, amount=None, price=None, params={}):
|
1817
|
+
"""
|
1818
|
+
edit a trade order
|
1819
|
+
see https://docs.delta.exchange/#edit-order
|
1820
|
+
:param str id: order id
|
1821
|
+
:param str symbol: unified symbol of the market to create an order in
|
1822
|
+
:param str type: 'market' or 'limit'
|
1823
|
+
:param str side: 'buy' or 'sell'
|
1824
|
+
:param float amount: how much of the currency you want to trade in units of the base currency
|
1825
|
+
:param float price: the price at which the order is to be fullfilled, in units of the quote currency
|
1826
|
+
:param dict [params]: extra parameters specific to the delta api endpoint
|
1827
|
+
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1828
|
+
"""
|
1789
1829
|
self.load_markets()
|
1790
1830
|
market = self.market(symbol)
|
1791
1831
|
request = {
|
@@ -1822,13 +1862,13 @@ class delta(Exchange, ImplicitAPI):
|
|
1822
1862
|
def cancel_order(self, id: str, symbol: Optional[str] = None, params={}):
|
1823
1863
|
"""
|
1824
1864
|
cancels an open order
|
1865
|
+
see https://docs.delta.exchange/#cancel-order
|
1825
1866
|
:param str id: order id
|
1826
1867
|
:param str symbol: unified symbol of the market the order was made in
|
1827
1868
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1828
1869
|
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
1829
1870
|
"""
|
1830
|
-
|
1831
|
-
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
|
1871
|
+
self.check_required_symbol('cancelOrder', symbol)
|
1832
1872
|
self.load_markets()
|
1833
1873
|
market = self.market(symbol)
|
1834
1874
|
request = {
|
@@ -1878,12 +1918,12 @@ class delta(Exchange, ImplicitAPI):
|
|
1878
1918
|
def cancel_all_orders(self, symbol: Optional[str] = None, params={}):
|
1879
1919
|
"""
|
1880
1920
|
cancel all open orders in a market
|
1921
|
+
see https://docs.delta.exchange/#cancel-all-open-orders
|
1881
1922
|
:param str symbol: unified market symbol of the market to cancel orders in
|
1882
1923
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1883
1924
|
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1884
1925
|
"""
|
1885
|
-
|
1886
|
-
raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
|
1926
|
+
self.check_required_symbol('cancelAllOrders', symbol)
|
1887
1927
|
self.load_markets()
|
1888
1928
|
market = self.market(symbol)
|
1889
1929
|
request = {
|
@@ -1903,9 +1943,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1903
1943
|
def fetch_open_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1904
1944
|
"""
|
1905
1945
|
fetch all unfilled currently open orders
|
1946
|
+
see https://docs.delta.exchange/#get-active-orders
|
1906
1947
|
:param str symbol: unified market symbol
|
1907
1948
|
:param int [since]: the earliest time in ms to fetch open orders for
|
1908
|
-
:param int [limit]: the maximum number of
|
1949
|
+
:param int [limit]: the maximum number of open order structures to retrieve
|
1909
1950
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1910
1951
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1911
1952
|
"""
|
@@ -1914,9 +1955,10 @@ class delta(Exchange, ImplicitAPI):
|
|
1914
1955
|
def fetch_closed_orders(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1915
1956
|
"""
|
1916
1957
|
fetches information on multiple closed orders made by the user
|
1958
|
+
see https://docs.delta.exchange/#get-order-history-cancelled-and-closed
|
1917
1959
|
:param str symbol: unified market symbol of the market orders were made in
|
1918
1960
|
:param int [since]: the earliest time in ms to fetch orders for
|
1919
|
-
:param int [limit]: the maximum number of
|
1961
|
+
:param int [limit]: the maximum number of order structures to retrieve
|
1920
1962
|
:param dict [params]: extra parameters specific to the delta api endpoint
|
1921
1963
|
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
|
1922
1964
|
"""
|
@@ -1972,6 +2014,7 @@ class delta(Exchange, ImplicitAPI):
|
|
1972
2014
|
def fetch_my_trades(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
1973
2015
|
"""
|
1974
2016
|
fetch all trades made by the user
|
2017
|
+
see https://docs.delta.exchange/#get-user-fills-by-filters
|
1975
2018
|
:param str symbol: unified market symbol
|
1976
2019
|
:param int [since]: the earliest time in ms to fetch trades for
|
1977
2020
|
:param int [limit]: the maximum number of trades structures to retrieve
|
@@ -2048,6 +2091,7 @@ class delta(Exchange, ImplicitAPI):
|
|
2048
2091
|
def fetch_ledger(self, code: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
|
2049
2092
|
"""
|
2050
2093
|
fetch the history of changes, actions done by the user or operations that altered balance of the user
|
2094
|
+
see https://docs.delta.exchange/#get-wallet-transactions
|
2051
2095
|
:param str code: unified currency code, default is None
|
2052
2096
|
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
|
2053
2097
|
:param int [limit]: max number of ledger entrys to return, default is None
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/binance.py
CHANGED
@@ -2085,6 +2085,7 @@ class binance(ccxt.async_support.binance):
|
|
2085
2085
|
trade = self.parse_trade(message)
|
2086
2086
|
orderId = self.safe_string(trade, 'order')
|
2087
2087
|
tradeFee = self.safe_value(trade, 'fee')
|
2088
|
+
tradeFee = self.extend({}, tradeFee)
|
2088
2089
|
symbol = self.safe_string(trade, 'symbol')
|
2089
2090
|
if orderId is not None and tradeFee is not None and symbol is not None:
|
2090
2091
|
cachedOrders = self.orders
|
@@ -2095,7 +2096,7 @@ class binance(ccxt.async_support.binance):
|
|
2095
2096
|
# accumulate order fees
|
2096
2097
|
fees = self.safe_value(order, 'fees')
|
2097
2098
|
fee = self.safe_value(order, 'fee')
|
2098
|
-
if
|
2099
|
+
if not self.is_empty(fees):
|
2099
2100
|
insertNewFeeCurrency = True
|
2100
2101
|
for i in range(0, len(fees)):
|
2101
2102
|
orderFee = fees[i]
|
ccxt/pro/bybit.py
CHANGED
@@ -868,19 +868,19 @@ class bybit(ccxt.async_support.bybit):
|
|
868
868
|
# ]
|
869
869
|
# }
|
870
870
|
#
|
871
|
-
type = self.safe_string(message, 'type', '')
|
872
871
|
if self.orders is None:
|
873
872
|
limit = self.safe_integer(self.options, 'ordersLimit', 1000)
|
874
873
|
self.orders = ArrayCacheBySymbolById(limit)
|
875
874
|
orders = self.orders
|
876
|
-
rawOrders = []
|
875
|
+
rawOrders = self.safe_value(message, 'data', [])
|
876
|
+
first = self.safe_value(rawOrders, 0, {})
|
877
|
+
category = self.safe_string(first, 'category')
|
878
|
+
isSpot = category == 'spot'
|
877
879
|
parser = None
|
878
|
-
if
|
879
|
-
rawOrders = self.safe_value(message, 'data', [])
|
880
|
+
if isSpot:
|
880
881
|
parser = 'parseWsSpotOrder'
|
881
882
|
else:
|
882
883
|
parser = 'parseContractOrder'
|
883
|
-
rawOrders = self.safe_value(message, 'data', [])
|
884
884
|
rawOrders = self.safe_value(rawOrders, 'result', rawOrders)
|
885
885
|
symbols = {}
|
886
886
|
for i in range(0, len(rawOrders)):
|
@@ -925,31 +925,72 @@ class bybit(ccxt.async_support.bybit):
|
|
925
925
|
# v: '0', # leverage
|
926
926
|
# d: 'NO_LIQ'
|
927
927
|
# }
|
928
|
+
# v5
|
929
|
+
# {
|
930
|
+
# "category":"spot",
|
931
|
+
# "symbol":"LTCUSDT",
|
932
|
+
# "orderId":"1474764674982492160",
|
933
|
+
# "orderLinkId":"1690541649154749",
|
934
|
+
# "blockTradeId":"",
|
935
|
+
# "side":"Buy",
|
936
|
+
# "positionIdx":0,
|
937
|
+
# "orderStatus":"Cancelled",
|
938
|
+
# "cancelType":"UNKNOWN",
|
939
|
+
# "rejectReason":"EC_NoError",
|
940
|
+
# "timeInForce":"GTC",
|
941
|
+
# "isLeverage":"0",
|
942
|
+
# "price":"0",
|
943
|
+
# "qty":"5.00000",
|
944
|
+
# "avgPrice":"0",
|
945
|
+
# "leavesQty":"0.00000",
|
946
|
+
# "leavesValue":"5.0000000",
|
947
|
+
# "cumExecQty":"0.00000",
|
948
|
+
# "cumExecValue":"0.0000000",
|
949
|
+
# "cumExecFee":"",
|
950
|
+
# "orderType":"Market",
|
951
|
+
# "stopOrderType":"",
|
952
|
+
# "orderIv":"",
|
953
|
+
# "triggerPrice":"0.000",
|
954
|
+
# "takeProfit":"",
|
955
|
+
# "stopLoss":"",
|
956
|
+
# "triggerBy":"",
|
957
|
+
# "tpTriggerBy":"",
|
958
|
+
# "slTriggerBy":"",
|
959
|
+
# "triggerDirection":0,
|
960
|
+
# "placeType":"",
|
961
|
+
# "lastPriceOnCreated":"0.000",
|
962
|
+
# "closeOnTrigger":false,
|
963
|
+
# "reduceOnly":false,
|
964
|
+
# "smpGroup":0,
|
965
|
+
# "smpType":"None",
|
966
|
+
# "smpOrderId":"",
|
967
|
+
# "createdTime":"1690541649160",
|
968
|
+
# "updatedTime":"1690541649168"
|
969
|
+
# }
|
928
970
|
#
|
929
|
-
id = self.
|
930
|
-
marketId = self.
|
971
|
+
id = self.safe_string_2(order, 'i', 'orderId')
|
972
|
+
marketId = self.safe_string_2(order, 's', 'symbol')
|
931
973
|
symbol = self.safe_symbol(marketId, market, None, 'spot')
|
932
|
-
timestamp = self.
|
933
|
-
price = self.
|
974
|
+
timestamp = self.safe_integer_2(order, 'O', 'createdTime')
|
975
|
+
price = self.safe_string_2(order, 'p', 'price')
|
934
976
|
if price == '0':
|
935
977
|
price = None # market orders
|
936
|
-
filled = self.
|
937
|
-
status = self.parse_order_status(self.
|
938
|
-
side = self.
|
939
|
-
lastTradeTimestamp = self.
|
940
|
-
timeInForce = self.
|
978
|
+
filled = self.safe_string_2(order, 'z', 'cumExecQty')
|
979
|
+
status = self.parse_order_status(self.safe_string_2(order, 'X', 'orderStatus'))
|
980
|
+
side = self.safe_string_lower_2(order, 'S', 'side')
|
981
|
+
lastTradeTimestamp = self.safe_string_2(order, 'E', 'updatedTime')
|
982
|
+
timeInForce = self.safe_string_2(order, 'f', 'timeInForce')
|
941
983
|
amount = None
|
942
|
-
cost = self.
|
943
|
-
|
944
|
-
type
|
945
|
-
|
984
|
+
cost = self.safe_string_2(order, 'Z', 'cumExecValue')
|
985
|
+
type = self.safe_string_lower_2(order, 'o', 'orderType')
|
986
|
+
if (type is not None) and (type.find('market') >= 0):
|
987
|
+
type = 'market'
|
988
|
+
if type == 'market' and side == 'buy':
|
946
989
|
amount = filled
|
947
990
|
else:
|
948
|
-
amount =
|
949
|
-
if type.find('market') >= 0:
|
950
|
-
type = 'market'
|
991
|
+
amount = self.safe_string_2(order, 'orderQty', 'qty')
|
951
992
|
fee = None
|
952
|
-
feeCost = self.
|
993
|
+
feeCost = self.safe_string_2(order, 'n', 'cumExecFee')
|
953
994
|
if feeCost is not None and feeCost != '0':
|
954
995
|
feeCurrencyId = self.safe_string(order, 'N')
|
955
996
|
feeCurrencyCode = self.safe_currency_code(feeCurrencyId)
|
@@ -957,10 +998,11 @@ class bybit(ccxt.async_support.bybit):
|
|
957
998
|
'cost': feeCost,
|
958
999
|
'currency': feeCurrencyCode,
|
959
1000
|
}
|
1001
|
+
triggerPrice = self.omit_zero(self.safe_string(order, 'triggerPrice'))
|
960
1002
|
return self.safe_order({
|
961
1003
|
'info': order,
|
962
1004
|
'id': id,
|
963
|
-
'clientOrderId': self.
|
1005
|
+
'clientOrderId': self.safe_string_2(order, 'c', 'orderLinkId'),
|
964
1006
|
'timestamp': timestamp,
|
965
1007
|
'datetime': self.iso8601(timestamp),
|
966
1008
|
'lastTradeTimestamp': lastTradeTimestamp,
|
@@ -970,11 +1012,14 @@ class bybit(ccxt.async_support.bybit):
|
|
970
1012
|
'postOnly': None,
|
971
1013
|
'side': side,
|
972
1014
|
'price': price,
|
973
|
-
'stopPrice':
|
974
|
-
'triggerPrice':
|
1015
|
+
'stopPrice': triggerPrice,
|
1016
|
+
'triggerPrice': triggerPrice,
|
1017
|
+
'takeProfitPrice': self.safe_string(order, 'takeProfit'),
|
1018
|
+
'stopLossPrice': self.safe_string(order, 'stopLoss'),
|
1019
|
+
'reduceOnly': self.safe_value(order, 'reduceOnly'),
|
975
1020
|
'amount': amount,
|
976
1021
|
'cost': cost,
|
977
|
-
'average':
|
1022
|
+
'average': self.safe_string(order, 'avgPrice'),
|
978
1023
|
'filled': filled,
|
979
1024
|
'remaining': None,
|
980
1025
|
'status': status,
|
ccxt/pro/cryptocom.py
CHANGED
@@ -10,6 +10,7 @@ from ccxt.base.types import OrderSide
|
|
10
10
|
from ccxt.base.types import OrderType
|
11
11
|
from ccxt.async_support.base.ws.client import Client
|
12
12
|
from typing import Optional
|
13
|
+
from ccxt.base.errors import NetworkError
|
13
14
|
from ccxt.base.errors import AuthenticationError
|
14
15
|
|
15
16
|
|
@@ -55,7 +56,11 @@ class cryptocom(ccxt.async_support.cryptocom):
|
|
55
56
|
# "method": "public/heartbeat",
|
56
57
|
# "code": 0
|
57
58
|
# }
|
58
|
-
|
59
|
+
try:
|
60
|
+
await client.send({'id': self.safe_integer(message, 'id'), 'method': 'public/respond-heartbeat'})
|
61
|
+
except Exception as e:
|
62
|
+
error = NetworkError(self.id + ' pong failed with error ' + self.json(e))
|
63
|
+
client.reset(error)
|
59
64
|
|
60
65
|
async def watch_order_book(self, symbol: str, limit: Optional[int] = None, params={}):
|
61
66
|
"""
|
@@ -134,7 +134,7 @@ def assert_currency_code(exchange, skipped_properties, method, entry, actual_cod
|
|
134
134
|
log_text = log_template(exchange, method, entry)
|
135
135
|
if actual_code is not None:
|
136
136
|
assert isinstance(actual_code, str), 'currency code should be either undefined or a string' + log_text
|
137
|
-
assert (actual_code in exchange.currencies), 'currency code should be present in exchange.currencies' + log_text
|
137
|
+
assert (actual_code in exchange.currencies), 'currency code (\"' + actual_code + '\") should be present in exchange.currencies' + log_text
|
138
138
|
if expected_code is not None:
|
139
139
|
assert actual_code == expected_code, 'currency code in response (\"' + string_value(actual_code) + '\") should be equal to expected code (\"' + string_value(expected_code) + '\")' + log_text
|
140
140
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.43
|
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
|
@@ -64,7 +64,7 @@ Current feature list:
|
|
64
64
|
|
65
65
|
## Sponsored Promotion
|
66
66
|
|
67
|
-
[](https://www.okx.com/
|
67
|
+
[](https://www.okx.com/account/register?channelid=CCXT2023)
|
68
68
|
|
69
69
|
[](https://www.okx.com/liquid-marketplace?channelid=CCXT2023)
|
70
70
|
|
@@ -263,20 +263,20 @@ console.log(version, Object.keys(exchanges));
|
|
263
263
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
264
264
|
|
265
265
|
<<<<<<< HEAD
|
266
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
267
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
266
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.43/dist/ccxt.browser.js
|
267
|
+
* unpkg: https://unpkg.com/ccxt@4.0.43/dist/ccxt.browser.js
|
268
268
|
=======
|
269
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
270
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
269
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.43/dist/ccxt.browser.js
|
270
|
+
* unpkg: https://unpkg.com/ccxt@4.0.43/dist/ccxt.browser.js
|
271
271
|
>>>>>>> e74b18a3a8a8cbcfe45ce4c1d32b9c03d4fae41c
|
272
272
|
|
273
273
|
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.
|
274
274
|
|
275
275
|
```HTML
|
276
276
|
<<<<<<< HEAD
|
277
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
277
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.43/dist/ccxt.browser.js"></script>
|
278
278
|
=======
|
279
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.
|
279
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.43/dist/ccxt.browser.js"></script>
|
280
280
|
>>>>>>> e74b18a3a8a8cbcfe45ce4c1d32b9c03d4fae41c
|
281
281
|
```
|
282
282
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=Lycwv6ZL6ouN1d_6nmKFbcYQUj6PVBEbRdqCdAsaI8g,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
|
@@ -38,7 +38,7 @@ ccxt/btcbox.py,sha256=LM1tJiE9OR5g4JqcdjCa3RUKAGwQRwPLAZmo7eXu66c,22513
|
|
38
38
|
ccxt/btcmarkets.py,sha256=g6zZBYS2SMiLY9MlnP0A5VGJlIZ_0yuF8guk9E0_SQU,48609
|
39
39
|
ccxt/btctradeua.py,sha256=sy56Hmc0AaducvQ_2piTor0BwTvjD02IgqoQ-gBTYcU,22219
|
40
40
|
ccxt/btcturk.py,sha256=VJ5J9gmTJHIOQ0IQrHyrJym9BNIlWfNPpzO8_twINZo,35397
|
41
|
-
ccxt/bybit.py,sha256=
|
41
|
+
ccxt/bybit.py,sha256=Ij8oTZgbI0tObJ2k2wOTlMYxfhTHaTUNqFLkRnMYKno,410905
|
42
42
|
ccxt/cex.py,sha256=JffSHKKJYIno7pfkHNhmg6Olr7YXOJM0ui3ImX5WMHA,64733
|
43
43
|
ccxt/coinbase.py,sha256=aswSRpuvEpWPGy5EdeYbz6bTFRZw5-yboIJbBPa7n7U,129413
|
44
44
|
ccxt/coinbaseprime.py,sha256=Ygvljulxb2uKdei5yimCj1LMjLlUJNvP-G7ns1HpUFk,1219
|
@@ -52,7 +52,7 @@ ccxt/coinsph.py,sha256=ssYaS995SpKWKyvwgAG2OP0oOUkRClhdPif3KHXO4tk,87724
|
|
52
52
|
ccxt/coinspot.py,sha256=FpruJRYAEEa1Ecab0S1o5QmQLqcqUb-2upYhopTJYtY,18823
|
53
53
|
ccxt/cryptocom.py,sha256=Pg49E9wRGKeDH1N2uXaI7oN78hAbo338MghWOsYMLCg,126840
|
54
54
|
ccxt/currencycom.py,sha256=J11A-DrVPXm0PiSj9Fjv6L3w5nqDcPMOiuSrlpg2KUo,82225
|
55
|
-
ccxt/delta.py,sha256=
|
55
|
+
ccxt/delta.py,sha256=121VscwCNoZc0IjgfUmMzO64kf6-wOJ0DOyd62tr7Ss,131357
|
56
56
|
ccxt/deribit.py,sha256=cxcdtHUq3VnUH9UWdBV5kHt3VfQeemd524Lu8EI-t3E,123800
|
57
57
|
ccxt/digifinex.py,sha256=jbP6esId7yqvSkbzsyg66EOd8Et3UKUT4q3omKjXYDQ,150987
|
58
58
|
ccxt/exmo.py,sha256=bZQg1t8yrKscH3FWDKd5DmGsjR9d5-vJnOIoGG1swfk,88943
|
@@ -213,7 +213,7 @@ 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=H9SUIyarYBcDZ5nv2NxhyI6PJjZbNywT9SIuaMPycG8,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
|
@@ -253,7 +253,7 @@ ccxt/async_support/btcbox.py,sha256=l961P-BSrefmcjrrdGMg7BO0L70Nrq9TdD5mjzHKo0k,
|
|
253
253
|
ccxt/async_support/btcmarkets.py,sha256=l886ioshN0u-rOZEeFW2cDsijch8UjWuvQz6QCyJw-I,48959
|
254
254
|
ccxt/async_support/btctradeua.py,sha256=tSaZ_DygP7abbM2wwilf6ea6A7v9JePkWjr2icruxTQ,22365
|
255
255
|
ccxt/async_support/btcturk.py,sha256=tJKSlRhwK7VmPBmLbliz2Sr9RC0mqP_t_Si9g7Jyi1w,35615
|
256
|
-
ccxt/async_support/bybit.py,sha256=
|
256
|
+
ccxt/async_support/bybit.py,sha256=UAxM69cT5hz1eQvFm1tGCItKCzdrJflTP12Nkr-y1HY,412847
|
257
257
|
ccxt/async_support/cex.py,sha256=lvobfj75tjkRaJDCCJeW8SG9gRMEDP98WmTSdZalfHs,65059
|
258
258
|
ccxt/async_support/coinbase.py,sha256=ylb26vPGyVuePoSUvEhKLlbdX5CYCw3HMCgBLcuG9Xc,130093
|
259
259
|
ccxt/async_support/coinbaseprime.py,sha256=M5Ez1DsFcW3-vJ-4QoZzwYBAKjAAtJnJpkfnV4sWAIc,1233
|
@@ -267,7 +267,7 @@ ccxt/async_support/coinsph.py,sha256=Vzhgniq03Ulf_TqwsqZWJEKZLtwA_k39el6KCVb5iz0
|
|
267
267
|
ccxt/async_support/coinspot.py,sha256=3zHmFc24mgMxZkSWwq1ygwYv3UnR5d-xqr0rlOZhpPo,18957
|
268
268
|
ccxt/async_support/cryptocom.py,sha256=GlhmxHOTr_dElsQEn0dg8up0xUCUpkeI2_a26Nhc3Yo,127418
|
269
269
|
ccxt/async_support/currencycom.py,sha256=urQJtAIubM11b3LD_MOadf0vj95RSfbVf0D1q0aIrXg,82635
|
270
|
-
ccxt/async_support/delta.py,sha256=
|
270
|
+
ccxt/async_support/delta.py,sha256=G93XzS_ZlEDvtS_UZ6ikoyGrVRJWio9K-D4TEqFkfBI,131887
|
271
271
|
ccxt/async_support/deribit.py,sha256=2ORxgEFSnc2xboBeSG76cbDLdSKPzHi3QRZheYYZRrA,124372
|
272
272
|
ccxt/async_support/digifinex.py,sha256=vCpv_8FoZNs21uX0plWZioxdZDnTU9QQ2LngoMt848I,151693
|
273
273
|
ccxt/async_support/exmo.py,sha256=ocg9JUh_6p3OFA_DJdhP5tVkTuYnFfgIeMqMNzvg9XY,89485
|
@@ -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=Rnr8XxJpIDy8NBPaklnk-6rSfyHhBfUgOcd-FU17aMc,143255
|
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,14 +336,14 @@ 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=5tm4VrvVO4OIGoiRqS7s-g6z7S9p5klNGwM5Gt2b4Mk,182860
|
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=-xhdBW9_SM4TIKxWJs826jBjXExqqNjNfGuWttqI7SE,6480
|
343
343
|
ccxt/pro/alpaca.py,sha256=BBBvLzVQ6CNS2000QZp487Iwg99ZJbRycpQo3ETePtE,26671
|
344
344
|
ccxt/pro/ascendex.py,sha256=ChYDvZALiyF0LylzEVeZE41oSXT2JWkCWI7SWwzzn-Q,34551
|
345
345
|
ccxt/pro/bequant.py,sha256=3IeQ0vPg-eVqPiGMfX7yqH9qtXKm1ZqocQDeLwpA8EE,1093
|
346
|
-
ccxt/pro/binance.py,sha256=
|
346
|
+
ccxt/pro/binance.py,sha256=hH000E0hgow0LskkUcL9zgOYXxfAxczI_DnjVAa7kyM,106548
|
347
347
|
ccxt/pro/binancecoinm.py,sha256=vu5SUgP70T1Dax-Am3rch7ZldGrmUwxr_rI51Y38xjw,724
|
348
348
|
ccxt/pro/binanceus.py,sha256=xKL-1cOHyqlLTwLGg-DPf6g3JMM1oU2Kv708FiGJwrY,2016
|
349
349
|
ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
|
@@ -361,13 +361,13 @@ ccxt/pro/bittrex.py,sha256=qmJsOjtCvnFBqGz_mq8vquWyNb3jhrA27ZUAAmew2js,36714
|
|
361
361
|
ccxt/pro/bitvavo.py,sha256=yHlFOFoKcXIGXQKwSNLcMDLpecdiD6QemMNui1Jq9Rs,26018
|
362
362
|
ccxt/pro/blockchaincom.py,sha256=ekH7cVvFxtQ9idFsZ8NF6pQhWrANciwh1L8vHYdIO2I,31529
|
363
363
|
ccxt/pro/btcex.py,sha256=Rlr242PDi-zJDAAydgNwaotNGwRR3sy7TPrzUTLkkgc,31150
|
364
|
-
ccxt/pro/bybit.py,sha256=
|
364
|
+
ccxt/pro/bybit.py,sha256=hSzQ3WCASIqlBTurIhOyheGImgSzDKs0kyRs-igSnsw,62599
|
365
365
|
ccxt/pro/cex.py,sha256=jBI23_DQ326AWQLvSQ2-vDF7SVo86vqIPJn8TIsztWk,44889
|
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=BJu3N2wd9wR1JtN5bBzYAtlygqvxJAVwgNtDRgxsNqc,30100
|
369
369
|
ccxt/pro/coinex.py,sha256=gMiwmh5U6pBMGy-RZ_zIVbnn0svb38yWCUHw3H9OfnY,44155
|
370
|
-
ccxt/pro/cryptocom.py,sha256=
|
370
|
+
ccxt/pro/cryptocom.py,sha256=w8Ma_1LEVCMt2puCvxYWJ2_4GWZkEis0cKzqh7mVImo,30116
|
371
371
|
ccxt/pro/currencycom.py,sha256=EsJ_1nSBNmiaLX9BHxLCtN_YHAqb7d_dhQoZiu_eLMM,22090
|
372
372
|
ccxt/pro/deribit.py,sha256=8TmDYXiRqY6lYOKaHIgvEjFEGmtprji-D5tzmX2L5kc,34029
|
373
373
|
ccxt/pro/exmo.py,sha256=gine3Pns9MTtzGiRvcLxoS1xl7JTVuxsVD8yAEZOSUw,24400
|
@@ -443,14 +443,14 @@ ccxt/test/base/test_open_interest.py,sha256=FPQ6Uw8Ge1GXOuJSilgd2lo1jOBG9XSEyb5g
|
|
443
443
|
ccxt/test/base/test_order.py,sha256=8cWYalF3baENArsYECCQBZSgn-daCTQUbW9uKF8cSeM,3889
|
444
444
|
ccxt/test/base/test_order_book.py,sha256=_OPG7rXzRux_L9U1GmOQ-V6JUW9nMVehzhVjC-Y0yds,3225
|
445
445
|
ccxt/test/base/test_position.py,sha256=4gwnCxb-RORWYQ2q_jQRbd0T71w-6sbyeQgb5Ma8kqE,3985
|
446
|
-
ccxt/test/base/test_shared_methods.py,sha256=
|
446
|
+
ccxt/test/base/test_shared_methods.py,sha256=tF69OKB7TuMKqK2KntmkAy_wBHUqGIkuNdtJjdvb7-M,16230
|
447
447
|
ccxt/test/base/test_status.py,sha256=J9NZRnxxFVA7C3DgjDC9fBR7tyAFDeesb-0g33KnoGo,783
|
448
448
|
ccxt/test/base/test_throttle.py,sha256=GvLQWtA4fAk_yJrxeisek-wAz7eJdHj0DDKR4_V1beg,3123
|
449
449
|
ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98,5658
|
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.43.dist-info/METADATA,sha256=i1GR6X1hXF3zbRcXiqNERudkHtteqvB08gV8K2QnhNA,111374
|
454
|
+
ccxt-4.0.43.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
|
455
|
+
ccxt-4.0.43.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
456
|
+
ccxt-4.0.43.dist-info/RECORD,,
|
File without changes
|
File without changes
|