ccxt 4.2.86__py2.py3-none-any.whl → 4.2.88__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/ascendex.py +16 -6
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/ascendex.py +16 -6
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +28 -11
- ccxt/async_support/bingx.py +39 -3
- ccxt/async_support/bitfinex.py +2 -0
- ccxt/async_support/bitfinex2.py +18 -4
- ccxt/async_support/bitflyer.py +18 -0
- ccxt/async_support/bitget.py +37 -22
- ccxt/async_support/bitopro.py +2 -0
- ccxt/async_support/bitrue.py +16 -8
- ccxt/async_support/bitvavo.py +2 -0
- ccxt/async_support/btcmarkets.py +1 -1
- ccxt/async_support/btcturk.py +2 -1
- ccxt/async_support/coinex.py +182 -58
- ccxt/async_support/cryptocom.py +1 -1
- ccxt/async_support/currencycom.py +1 -1
- ccxt/async_support/delta.py +8 -6
- ccxt/async_support/digifinex.py +9 -7
- ccxt/async_support/exmo.py +15 -15
- ccxt/async_support/gate.py +23 -20
- ccxt/async_support/hitbtc.py +31 -7
- ccxt/async_support/htx.py +2 -2
- ccxt/async_support/huobijp.py +1 -1
- ccxt/async_support/hyperliquid.py +242 -16
- ccxt/async_support/idex.py +1 -1
- ccxt/async_support/krakenfutures.py +4 -5
- ccxt/async_support/kucoin.py +7 -4
- ccxt/async_support/kucoinfutures.py +2 -2
- ccxt/async_support/lbank.py +2 -0
- ccxt/async_support/mexc.py +4 -4
- ccxt/async_support/oceanex.py +1 -1
- ccxt/async_support/okx.py +29 -15
- ccxt/async_support/phemex.py +6 -4
- ccxt/async_support/wazirx.py +1 -1
- ccxt/async_support/zonda.py +2 -0
- ccxt/base/exchange.py +22 -3
- ccxt/base/types.py +12 -0
- ccxt/binance.py +28 -11
- ccxt/bingx.py +39 -3
- ccxt/bitfinex.py +2 -0
- ccxt/bitfinex2.py +18 -4
- ccxt/bitflyer.py +18 -0
- ccxt/bitget.py +37 -22
- ccxt/bitopro.py +2 -0
- ccxt/bitrue.py +16 -8
- ccxt/bitvavo.py +2 -0
- ccxt/btcmarkets.py +1 -1
- ccxt/btcturk.py +2 -1
- ccxt/coinex.py +182 -58
- ccxt/cryptocom.py +1 -1
- ccxt/currencycom.py +1 -1
- ccxt/delta.py +8 -6
- ccxt/digifinex.py +9 -7
- ccxt/exmo.py +15 -15
- ccxt/gate.py +23 -20
- ccxt/hitbtc.py +31 -7
- ccxt/htx.py +2 -2
- ccxt/huobijp.py +1 -1
- ccxt/hyperliquid.py +241 -16
- ccxt/idex.py +1 -1
- ccxt/krakenfutures.py +4 -5
- ccxt/kucoin.py +7 -4
- ccxt/kucoinfutures.py +2 -2
- ccxt/lbank.py +2 -0
- ccxt/mexc.py +4 -4
- ccxt/oceanex.py +1 -1
- ccxt/okx.py +29 -15
- ccxt/phemex.py +6 -4
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/kucoin.py +10 -6
- ccxt/test/base/test_last_price.py +0 -1
- ccxt/test/base/test_shared_methods.py +1 -2
- ccxt/test/base/test_status.py +1 -1
- ccxt/wazirx.py +1 -1
- ccxt/zonda.py +2 -0
- {ccxt-4.2.86.dist-info → ccxt-4.2.88.dist-info}/METADATA +5 -6
- {ccxt-4.2.86.dist-info → ccxt-4.2.88.dist-info}/RECORD +82 -82
- {ccxt-4.2.86.dist-info → ccxt-4.2.88.dist-info}/WHEEL +0 -0
- {ccxt-4.2.86.dist-info → ccxt-4.2.88.dist-info}/top_level.txt +0 -0
ccxt/krakenfutures.py
CHANGED
@@ -363,7 +363,8 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
363
363
|
# swap == perpetual
|
364
364
|
settle = None
|
365
365
|
settleId = None
|
366
|
-
|
366
|
+
cvtp = self.safe_string(market, 'contractValueTradePrecision')
|
367
|
+
amountPrecision = self.parse_number(self.integer_precision_to_amount(cvtp))
|
367
368
|
pricePrecision = self.safe_number(market, 'tickSize')
|
368
369
|
contract = (swap or future or index)
|
369
370
|
swapOrFutures = (swap or future)
|
@@ -635,14 +636,12 @@ class krakenfutures(Exchange, ImplicitAPI):
|
|
635
636
|
request['from'] = self.parse_to_int(since / 1000)
|
636
637
|
if limit is None:
|
637
638
|
limit = 5000
|
638
|
-
|
639
|
-
raise BadRequest(self.id + ' fetchOHLCV() limit cannot exceed 5000')
|
639
|
+
limit = min(limit, 5000)
|
640
640
|
toTimestamp = self.sum(request['from'], limit * duration - 1)
|
641
641
|
currentTimestamp = self.seconds()
|
642
642
|
request['to'] = min(toTimestamp, currentTimestamp)
|
643
643
|
elif limit is not None:
|
644
|
-
|
645
|
-
raise BadRequest(self.id + ' fetchOHLCV() limit cannot exceed 5000')
|
644
|
+
limit = min(limit, 5000)
|
646
645
|
duration = self.parse_timeframe(timeframe)
|
647
646
|
request['to'] = self.seconds()
|
648
647
|
request['from'] = self.parse_to_int(request['to'] - (duration * limit))
|
ccxt/kucoin.py
CHANGED
@@ -3325,9 +3325,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3325
3325
|
def fetch_balance(self, params={}) -> Balances:
|
3326
3326
|
"""
|
3327
3327
|
query for balance and get the amount of funds available for trading or funds locked in orders
|
3328
|
-
:see: https://docs.kucoin.com/#list-accounts
|
3329
3328
|
:see: https://www.kucoin.com/docs/rest/account/basic-info/get-account-list-spot-margin-trade_hf
|
3330
|
-
:see: https://
|
3329
|
+
:see: https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-margin
|
3330
|
+
:see: https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-isolated-margin
|
3331
3331
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3332
3332
|
:param dict [params.marginMode]: 'cross' or 'isolated', margin type for fetching margin balance
|
3333
3333
|
:param dict [params.type]: extra parameters specific to the exchange API endpoint
|
@@ -3352,7 +3352,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3352
3352
|
response = None
|
3353
3353
|
request = {}
|
3354
3354
|
isolated = (marginMode == 'isolated') or (type == 'isolated')
|
3355
|
-
cross = (marginMode == 'cross') or (type == '
|
3355
|
+
cross = (marginMode == 'cross') or (type == 'margin')
|
3356
3356
|
if isolated:
|
3357
3357
|
if currency is not None:
|
3358
3358
|
request['balanceCurrency'] = currency['id']
|
@@ -3417,13 +3417,14 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3417
3417
|
# }
|
3418
3418
|
# }
|
3419
3419
|
#
|
3420
|
-
data =
|
3420
|
+
data = None
|
3421
3421
|
result = {
|
3422
3422
|
'info': response,
|
3423
3423
|
'timestamp': None,
|
3424
3424
|
'datetime': None,
|
3425
3425
|
}
|
3426
3426
|
if isolated:
|
3427
|
+
data = self.safe_dict(response, 'data', {})
|
3427
3428
|
assets = self.safe_value(data, 'assets', data)
|
3428
3429
|
for i in range(0, len(assets)):
|
3429
3430
|
entry = assets[i]
|
@@ -3438,6 +3439,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3438
3439
|
subResult[quoteCode] = self.parse_balance_helper(quote)
|
3439
3440
|
result[symbol] = self.safe_balance(subResult)
|
3440
3441
|
elif cross:
|
3442
|
+
data = self.safe_dict(response, 'data', {})
|
3441
3443
|
accounts = self.safe_list(data, 'accounts', [])
|
3442
3444
|
for i in range(0, len(accounts)):
|
3443
3445
|
balance = accounts[i]
|
@@ -3445,6 +3447,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3445
3447
|
codeInner = self.safe_currency_code(currencyId)
|
3446
3448
|
result[codeInner] = self.parse_balance_helper(balance)
|
3447
3449
|
else:
|
3450
|
+
data = self.safe_list(response, 'data', [])
|
3448
3451
|
for i in range(0, len(data)):
|
3449
3452
|
balance = data[i]
|
3450
3453
|
balanceType = self.safe_string(balance, 'type')
|
ccxt/kucoinfutures.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.kucoin import kucoin
|
7
7
|
from ccxt.abstract.kucoinfutures import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
8
|
+
from ccxt.base.types import Balances, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import PermissionDenied
|
11
11
|
from ccxt.base.errors import AccountSuspended
|
@@ -1424,7 +1424,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1424
1424
|
#
|
1425
1425
|
return self.safe_value(response, 'data')
|
1426
1426
|
|
1427
|
-
def add_margin(self, symbol: str, amount, params={}):
|
1427
|
+
def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
|
1428
1428
|
"""
|
1429
1429
|
add margin
|
1430
1430
|
:see: https://www.kucoin.com/docs/rest/futures-trading/positions/add-margin-manually
|
ccxt/lbank.py
CHANGED
@@ -969,6 +969,8 @@ class lbank(Exchange, ImplicitAPI):
|
|
969
969
|
market = self.market(symbol)
|
970
970
|
if limit is None:
|
971
971
|
limit = 100
|
972
|
+
else:
|
973
|
+
limit = min(limit, 2000)
|
972
974
|
if since is None:
|
973
975
|
duration = self.parse_timeframe(timeframe)
|
974
976
|
since = self.milliseconds() - duration * 1000 * limit
|
ccxt/mexc.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.mexc import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, IndexType, Int, Leverage, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Account, Balances, Currency, IndexType, Int, Leverage, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -3778,7 +3778,7 @@ class mexc(Exchange, ImplicitAPI):
|
|
3778
3778
|
# }
|
3779
3779
|
return response
|
3780
3780
|
|
3781
|
-
def reduce_margin(self, symbol: str, amount, params={}):
|
3781
|
+
def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
|
3782
3782
|
"""
|
3783
3783
|
remove margin from a position
|
3784
3784
|
:param str symbol: unified market symbol
|
@@ -3788,7 +3788,7 @@ class mexc(Exchange, ImplicitAPI):
|
|
3788
3788
|
"""
|
3789
3789
|
return self.modify_margin_helper(symbol, amount, 'SUB', params)
|
3790
3790
|
|
3791
|
-
def add_margin(self, symbol: str, amount, params={}):
|
3791
|
+
def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
|
3792
3792
|
"""
|
3793
3793
|
add margin
|
3794
3794
|
:param str symbol: unified market symbol
|
@@ -4228,7 +4228,7 @@ class mexc(Exchange, ImplicitAPI):
|
|
4228
4228
|
key = self.safe_string(keys, 0)
|
4229
4229
|
result = self.safe_dict(addressStructures, key)
|
4230
4230
|
if result is None:
|
4231
|
-
raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using
|
4231
|
+
raise InvalidAddress(self.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using .createDepositAddress() method or in MEXC website')
|
4232
4232
|
return result
|
4233
4233
|
|
4234
4234
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
ccxt/oceanex.py
CHANGED
@@ -750,7 +750,7 @@ class oceanex(Exchange, ImplicitAPI):
|
|
750
750
|
if since is not None:
|
751
751
|
request['timestamp'] = since
|
752
752
|
if limit is not None:
|
753
|
-
request['limit'] = limit
|
753
|
+
request['limit'] = min(limit, 10000)
|
754
754
|
response = self.publicPostK(self.extend(request, params))
|
755
755
|
ohlcvs = self.safe_list(response, 'data', [])
|
756
756
|
return self.parse_ohlcvs(ohlcvs, market, timeframe, since, limit)
|
ccxt/okx.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.okx import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Account, Balances, Currency, Greeks, Int, Leverage, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -6006,7 +6006,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6006
6006
|
data = self.safe_value(response, 'data')
|
6007
6007
|
return self.parse_borrow_rate_history(data, code, since, limit)
|
6008
6008
|
|
6009
|
-
def modify_margin_helper(self, symbol: str, amount, type, params={}):
|
6009
|
+
def modify_margin_helper(self, symbol: str, amount, type, params={}) -> MarginModification:
|
6010
6010
|
self.load_markets()
|
6011
6011
|
market = self.market(symbol)
|
6012
6012
|
posSide = self.safe_string(params, 'posSide', 'net')
|
@@ -6032,29 +6032,43 @@ class okx(Exchange, ImplicitAPI):
|
|
6032
6032
|
# "msg": ""
|
6033
6033
|
# }
|
6034
6034
|
#
|
6035
|
-
|
6035
|
+
data = self.safe_list(response, 'data', [])
|
6036
|
+
errorCode = self.safe_string(response, 'code')
|
6037
|
+
item = self.safe_dict(data, 0, {})
|
6038
|
+
return self.extend(self.parse_margin_modification(item, market), {
|
6039
|
+
'status': 'ok' if (errorCode == '0') else 'failed',
|
6040
|
+
})
|
6036
6041
|
|
6037
|
-
def parse_margin_modification(self, data, market: Market = None):
|
6038
|
-
|
6039
|
-
|
6040
|
-
|
6041
|
-
|
6042
|
-
|
6043
|
-
|
6042
|
+
def parse_margin_modification(self, data, market: Market = None) -> MarginModification:
|
6043
|
+
#
|
6044
|
+
# addMargin/reduceMargin
|
6045
|
+
#
|
6046
|
+
# {
|
6047
|
+
# "amt": "0.01",
|
6048
|
+
# "instId": "ETH-USD-SWAP",
|
6049
|
+
# "posSide": "net",
|
6050
|
+
# "type": "reduce"
|
6051
|
+
# }
|
6052
|
+
#
|
6053
|
+
amountRaw = self.safe_number(data, 'amt')
|
6054
|
+
typeRaw = self.safe_string(data, 'type')
|
6044
6055
|
type = 'reduce' if (typeRaw == 'reduce') else 'add'
|
6045
|
-
marketId = self.safe_string(
|
6056
|
+
marketId = self.safe_string(data, 'instId')
|
6046
6057
|
responseMarket = self.safe_market(marketId, market)
|
6047
6058
|
code = responseMarket['base'] if responseMarket['inverse'] else responseMarket['quote']
|
6048
6059
|
return {
|
6049
6060
|
'info': data,
|
6061
|
+
'symbol': responseMarket['symbol'],
|
6050
6062
|
'type': type,
|
6051
6063
|
'amount': amountRaw,
|
6064
|
+
'total': None,
|
6052
6065
|
'code': code,
|
6053
|
-
'
|
6054
|
-
'
|
6066
|
+
'status': None,
|
6067
|
+
'timestamp': None,
|
6068
|
+
'datetime': None,
|
6055
6069
|
}
|
6056
6070
|
|
6057
|
-
def reduce_margin(self, symbol: str, amount, params={}):
|
6071
|
+
def reduce_margin(self, symbol: str, amount, params={}) -> MarginModification:
|
6058
6072
|
"""
|
6059
6073
|
remove margin from a position
|
6060
6074
|
:see: https://www.okx.com/docs-v5/en/#trading-account-rest-api-increase-decrease-margin
|
@@ -6065,7 +6079,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6065
6079
|
"""
|
6066
6080
|
return self.modify_margin_helper(symbol, amount, 'reduce', params)
|
6067
6081
|
|
6068
|
-
def add_margin(self, symbol: str, amount, params={}):
|
6082
|
+
def add_margin(self, symbol: str, amount, params={}) -> MarginModification:
|
6069
6083
|
"""
|
6070
6084
|
add margin
|
6071
6085
|
:see: https://www.okx.com/docs-v5/en/#trading-account-rest-api-increase-decrease-margin
|
ccxt/phemex.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.phemex import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import numbers
|
10
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
|
+
from ccxt.base.types import Balances, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import PermissionDenied
|
@@ -3744,7 +3744,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
3744
3744
|
'previousFundingDatetime': None,
|
3745
3745
|
}
|
3746
3746
|
|
3747
|
-
def set_margin(self, symbol: str, amount: float, params={}):
|
3747
|
+
def set_margin(self, symbol: str, amount: float, params={}) -> MarginModification:
|
3748
3748
|
"""
|
3749
3749
|
Either adds or reduces margin in an isolated position in order to set the margin to a specific value
|
3750
3750
|
:see: https://github.com/phemex/phemex-api-docs/blob/master/Public-Contract-API-en.md#assign-position-balance-in-isolated-marign-mode
|
@@ -3777,7 +3777,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
3777
3777
|
}
|
3778
3778
|
return self.safe_string(statuses, status, status)
|
3779
3779
|
|
3780
|
-
def parse_margin_modification(self, data, market: Market = None):
|
3780
|
+
def parse_margin_modification(self, data, market: Market = None) -> MarginModification:
|
3781
3781
|
#
|
3782
3782
|
# {
|
3783
3783
|
# "code": 0,
|
@@ -3790,12 +3790,14 @@ class phemex(Exchange, ImplicitAPI):
|
|
3790
3790
|
codeCurrency = 'base' if inverse else 'quote'
|
3791
3791
|
return {
|
3792
3792
|
'info': data,
|
3793
|
+
'symbol': self.safe_symbol(None, market),
|
3793
3794
|
'type': 'set',
|
3794
3795
|
'amount': None,
|
3795
3796
|
'total': None,
|
3796
3797
|
'code': market[codeCurrency],
|
3797
|
-
'symbol': self.safe_symbol(None, market),
|
3798
3798
|
'status': self.parse_margin_status(self.safe_string(data, 'code')),
|
3799
|
+
'timestamp': None,
|
3800
|
+
'datetime': None,
|
3799
3801
|
}
|
3800
3802
|
|
3801
3803
|
def set_margin_mode(self, marginMode: str, symbol: Str = None, params={}):
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/kucoin.py
CHANGED
@@ -536,14 +536,18 @@ class kucoin(ccxt.async_support.kucoin):
|
|
536
536
|
marketId = self.safe_string(data, 'symbol', topicSymbol)
|
537
537
|
symbol = self.safe_symbol(marketId, None, '-')
|
538
538
|
messageHash = 'orderbook:' + symbol
|
539
|
-
orderbook = self.safe_dict(self.orderbooks, symbol)
|
539
|
+
# orderbook = self.safe_dict(self.orderbooks, symbol)
|
540
540
|
if subject == 'level2':
|
541
|
-
if
|
542
|
-
|
541
|
+
if not (symbol in self.orderbooks):
|
542
|
+
self.orderbooks[symbol] = self.order_book()
|
543
543
|
else:
|
544
|
+
orderbook = self.orderbooks[symbol]
|
544
545
|
orderbook.reset()
|
545
|
-
|
546
|
+
self.orderbooks[symbol]['symbol'] = symbol
|
546
547
|
else:
|
548
|
+
if not (symbol in self.orderbooks):
|
549
|
+
self.orderbooks[symbol] = self.order_book()
|
550
|
+
orderbook = self.orderbooks[symbol]
|
547
551
|
nonce = self.safe_integer(orderbook, 'nonce')
|
548
552
|
deltaEnd = self.safe_integer_2(data, 'sequenceEnd', 'timestamp')
|
549
553
|
if nonce is None:
|
@@ -563,8 +567,8 @@ class kucoin(ccxt.async_support.kucoin):
|
|
563
567
|
return
|
564
568
|
elif nonce >= deltaEnd:
|
565
569
|
return
|
566
|
-
self.handle_delta(
|
567
|
-
client.resolve(
|
570
|
+
self.handle_delta(self.orderbooks[symbol], data)
|
571
|
+
client.resolve(self.orderbooks[symbol], messageHash)
|
568
572
|
|
569
573
|
def get_cache_index(self, orderbook, cache):
|
570
574
|
firstDelta = self.safe_value(cache, 0)
|
@@ -12,7 +12,6 @@ sys.path.append(root)
|
|
12
12
|
# ----------------------------------------------------------------------------
|
13
13
|
# -*- coding: utf-8 -*-
|
14
14
|
|
15
|
-
from ccxt.base.precise import Precise # noqa E402
|
16
15
|
from ccxt.test.base import test_shared_methods # noqa E402
|
17
16
|
|
18
17
|
def test_last_price(exchange, skipped_properties, method, entry, symbol):
|
@@ -15,9 +15,8 @@ sys.path.append(root)
|
|
15
15
|
from ccxt.base.decimal_to_precision import TICK_SIZE # noqa E402
|
16
16
|
import numbers # noqa E402
|
17
17
|
from ccxt.base.precise import Precise # noqa E402
|
18
|
-
from ccxt.base.errors import OperationFailed # noqa E402
|
19
18
|
from ccxt.base.errors import OnMaintenance # noqa E402
|
20
|
-
from ccxt.base.errors import
|
19
|
+
from ccxt.base.errors import OperationFailed # noqa E402
|
21
20
|
|
22
21
|
def log_template(exchange, method, entry):
|
23
22
|
return ' <<< ' + exchange.id + ' ' + method + ' ::: ' + exchange.json(entry) + ' >>> '
|
ccxt/test/base/test_status.py
CHANGED
@@ -12,7 +12,7 @@ sys.path.append(root)
|
|
12
12
|
# ----------------------------------------------------------------------------
|
13
13
|
# -*- coding: utf-8 -*-
|
14
14
|
|
15
|
-
|
15
|
+
|
16
16
|
|
17
17
|
def test_status(exchange, skipped_properties, method, entry, now):
|
18
18
|
format = {
|
ccxt/wazirx.py
CHANGED
@@ -324,7 +324,7 @@ class wazirx(Exchange, ImplicitAPI):
|
|
324
324
|
'interval': self.safe_string(self.timeframes, timeframe, timeframe),
|
325
325
|
}
|
326
326
|
if limit is not None:
|
327
|
-
request['limit'] = limit
|
327
|
+
request['limit'] = min(limit, 2000)
|
328
328
|
until = self.safe_integer(params, 'until')
|
329
329
|
params = self.omit(params, ['until'])
|
330
330
|
if since is not None:
|
ccxt/zonda.py
CHANGED
@@ -1181,6 +1181,8 @@ class zonda(Exchange, ImplicitAPI):
|
|
1181
1181
|
}
|
1182
1182
|
if limit is None:
|
1183
1183
|
limit = 100
|
1184
|
+
else:
|
1185
|
+
limit = min(limit, 11000) # supports up to 11k candles diapason
|
1184
1186
|
duration = self.parse_timeframe(timeframe)
|
1185
1187
|
timerange = limit * duration * 1000
|
1186
1188
|
if since is None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.88
|
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
|
@@ -69,7 +69,6 @@ Current feature list:
|
|
69
69
|
|
70
70
|
|
71
71
|
## Sponsored Promotion
|
72
|
-
[](https://www.bitget.com/events/competition/86c98f96df155e6bb397e866dcd86afc?channelCode=ccxt&vipCode=tg9j)
|
73
72
|
|
74
73
|
## See Also
|
75
74
|
|
@@ -102,7 +101,7 @@ Current feature list:
|
|
102
101
|
| [](https://www.okx.com/join/CCXT2023) | okx | [OKX](https://www.okx.com/join/CCXT2023) | [](https://www.okx.com/docs-v5/en/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://www.okx.com/join/CCXT2023) |
|
103
102
|
| [](https://x.woo.org/register?ref=YWOWC96B) | woo | [WOO X](https://x.woo.org/register?ref=YWOWC96B) | [](https://docs.woo.org/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://x.woo.org/register?ref=YWOWC96B) |
|
104
103
|
|
105
|
-
## Supported Cryptocurrency
|
104
|
+
## Supported Cryptocurrency Exchanges
|
106
105
|
|
107
106
|
The CCXT library currently supports the following 97 cryptocurrency exchange markets and trading APIs:
|
108
107
|
|
@@ -262,13 +261,13 @@ console.log(version, Object.keys(exchanges));
|
|
262
261
|
|
263
262
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
264
263
|
|
265
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
266
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
264
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.88/dist/ccxt.browser.js
|
265
|
+
* unpkg: https://unpkg.com/ccxt@4.2.88/dist/ccxt.browser.js
|
267
266
|
|
268
267
|
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.
|
269
268
|
|
270
269
|
```HTML
|
271
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
270
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.88/dist/ccxt.browser.js"></script>
|
272
271
|
```
|
273
272
|
|
274
273
|
Creates a global `ccxt` object:
|