ccxt 2.9.7__py2.py3-none-any.whl → 2.9.9__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +3 -1
- ccxt/async_support/bitget.py +12 -12
- ccxt/async_support/bithumb.py +37 -34
- ccxt/async_support/btcex.py +5 -1
- ccxt/async_support/gate.py +11 -2
- ccxt/async_support/okx.py +13 -8
- ccxt/base/exchange.py +3 -1
- ccxt/bitget.py +12 -12
- ccxt/bithumb.py +37 -34
- ccxt/btcex.py +5 -1
- ccxt/gate.py +11 -2
- ccxt/okx.py +13 -8
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/base/exchange.py +1 -1
- ccxt/pro/huobi.py +28 -24
- ccxt/pro/huobijp.py +27 -23
- {ccxt-2.9.7.dist-info → ccxt-2.9.9.dist-info}/METADATA +6 -6
- {ccxt-2.9.7.dist-info → ccxt-2.9.9.dist-info}/RECORD +22 -22
- {ccxt-2.9.7.dist-info → ccxt-2.9.9.dist-info}/WHEEL +0 -0
- {ccxt-2.9.7.dist-info → ccxt-2.9.9.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '2.9.
|
5
|
+
__version__ = '2.9.9'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -1500,6 +1500,8 @@ class Exchange(BaseExchange):
|
|
1500
1500
|
self.status = self.extend(self.status, {
|
1501
1501
|
'updated': time,
|
1502
1502
|
})
|
1503
|
+
if not ('info' in self.status):
|
1504
|
+
self.status['info'] = None
|
1503
1505
|
return self.status
|
1504
1506
|
|
1505
1507
|
async def fetch_funding_fee(self, code, params={}):
|
ccxt/async_support/bitget.py
CHANGED
@@ -1749,18 +1749,18 @@ class bitget(Exchange):
|
|
1749
1749
|
# private
|
1750
1750
|
#
|
1751
1751
|
# {
|
1752
|
-
# accountId: '
|
1753
|
-
# symbol: '
|
1754
|
-
# orderId: '
|
1755
|
-
# fillId: '
|
1752
|
+
# accountId: '4383649766',
|
1753
|
+
# symbol: 'ETHBTC_SPBL',
|
1754
|
+
# orderId: '1009402341131468800',
|
1755
|
+
# fillId: '1009402351489581068',
|
1756
1756
|
# orderType: 'limit',
|
1757
|
-
# side: '
|
1758
|
-
# fillPrice: '
|
1759
|
-
# fillQuantity: '0.
|
1760
|
-
# fillTotalAmount: '
|
1761
|
-
# feeCcy: '
|
1762
|
-
# fees: '0.
|
1763
|
-
# cTime: '
|
1757
|
+
# side: 'sell',
|
1758
|
+
# fillPrice: '0.06997800',
|
1759
|
+
# fillQuantity: '0.04120000',
|
1760
|
+
# fillTotalAmount: '0.00288309',
|
1761
|
+
# feeCcy: 'BTC',
|
1762
|
+
# fees: '-0.00000288',
|
1763
|
+
# cTime: '1676386195060'
|
1764
1764
|
# }
|
1765
1765
|
#
|
1766
1766
|
# {
|
@@ -1794,7 +1794,7 @@ class bitget(Exchange):
|
|
1794
1794
|
fee = {
|
1795
1795
|
'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
|
1796
1796
|
'currency': currencyCode,
|
1797
|
-
'cost': feeAmount,
|
1797
|
+
'cost': Precise.string_neg(feeAmount),
|
1798
1798
|
}
|
1799
1799
|
datetime = self.iso8601(timestamp)
|
1800
1800
|
return self.safe_trade({
|
ccxt/async_support/bithumb.py
CHANGED
@@ -387,41 +387,44 @@ class bithumb(Exchange):
|
|
387
387
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
|
388
388
|
"""
|
389
389
|
await self.load_markets()
|
390
|
-
symbols = self.market_symbols(symbols)
|
391
|
-
response = await self.publicGetTickerAll(params)
|
392
|
-
#
|
393
|
-
# {
|
394
|
-
# "status":"0000",
|
395
|
-
# "data":{
|
396
|
-
# "BTC":{
|
397
|
-
# "opening_price":"9045000",
|
398
|
-
# "closing_price":"9132000",
|
399
|
-
# "min_price":"8938000",
|
400
|
-
# "max_price":"9168000",
|
401
|
-
# "units_traded":"4619.79967497",
|
402
|
-
# "acc_trade_value":"42021363832.5187",
|
403
|
-
# "prev_closing_price":"9041000",
|
404
|
-
# "units_traded_24H":"8793.5045804",
|
405
|
-
# "acc_trade_value_24H":"78933458515.4962",
|
406
|
-
# "fluctate_24H":"530000",
|
407
|
-
# "fluctate_rate_24H":"6.16"
|
408
|
-
# },
|
409
|
-
# "date":"1587710878669"
|
410
|
-
# }
|
411
|
-
# }
|
412
|
-
#
|
413
390
|
result = {}
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
391
|
+
quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
|
392
|
+
quotes = list(quoteCurrencies.keys())
|
393
|
+
for i in range(0, len(quotes)):
|
394
|
+
quote = quotes[i]
|
395
|
+
method = 'publicGetTickerALL' + quote
|
396
|
+
response = await getattr(self, method)(params)
|
397
|
+
#
|
398
|
+
# {
|
399
|
+
# "status":"0000",
|
400
|
+
# "data":{
|
401
|
+
# "BTC":{
|
402
|
+
# "opening_price":"9045000",
|
403
|
+
# "closing_price":"9132000",
|
404
|
+
# "min_price":"8938000",
|
405
|
+
# "max_price":"9168000",
|
406
|
+
# "units_traded":"4619.79967497",
|
407
|
+
# "acc_trade_value":"42021363832.5187",
|
408
|
+
# "prev_closing_price":"9041000",
|
409
|
+
# "units_traded_24H":"8793.5045804",
|
410
|
+
# "acc_trade_value_24H":"78933458515.4962",
|
411
|
+
# "fluctate_24H":"530000",
|
412
|
+
# "fluctate_rate_24H":"6.16"
|
413
|
+
# },
|
414
|
+
# "date":"1587710878669"
|
415
|
+
# }
|
416
|
+
# }
|
417
|
+
#
|
418
|
+
data = self.safe_value(response, 'data', {})
|
419
|
+
timestamp = self.safe_integer(data, 'date')
|
420
|
+
tickers = self.omit(data, 'date')
|
421
|
+
currencyIds = list(tickers.keys())
|
422
|
+
for j in range(0, len(currencyIds)):
|
423
|
+
currencyId = currencyIds[j]
|
424
|
+
ticker = data[currencyId]
|
425
|
+
base = self.safe_currency_code(currencyId)
|
426
|
+
symbol = base + '/' + quote
|
427
|
+
market = self.safe_market(symbol)
|
425
428
|
ticker['date'] = timestamp
|
426
429
|
result[symbol] = self.parse_ticker(ticker, market)
|
427
430
|
return self.filter_by_array(result, 'symbol', symbols)
|
ccxt/async_support/btcex.py
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.base.errors import ExchangeError
|
8
8
|
from ccxt.base.errors import AuthenticationError
|
9
|
+
from ccxt.base.errors import PermissionDenied
|
9
10
|
from ccxt.base.errors import ArgumentsRequired
|
10
11
|
from ccxt.base.errors import BadRequest
|
11
12
|
from ccxt.base.errors import InsufficientFunds
|
@@ -228,10 +229,12 @@ class btcex(Exchange):
|
|
228
229
|
'403': AuthenticationError, # ACCESS_DENIED_ERROR Access denied
|
229
230
|
'1000': ExchangeNotAvailable, # NO_SERVICE No service found
|
230
231
|
'1001': BadRequest, # BAD_REQUEST Bad requested
|
232
|
+
'1005': DDoSProtection, # {"code":1005,"message":"Operate too frequently"}
|
231
233
|
'2000': AuthenticationError, # NEED_LOGIN Login is required
|
232
234
|
'2001': AuthenticationError, # ACCOUNT_NOT_MATCH Account information does not match
|
233
235
|
'2002': AuthenticationError, # ACCOUNT_NEED_ENABLE Account needs to be activated
|
234
236
|
'2003': AuthenticationError, # ACCOUNT_NOT_AVAILABLE Account not available
|
237
|
+
'2010': PermissionDenied, # {"code":2010,"message":"Access denied","data":{}}
|
235
238
|
'3000': AuthenticationError, # TEST user
|
236
239
|
'3002': AuthenticationError, # NICKNAME_EXIST Nicknames exist
|
237
240
|
'3003': AuthenticationError, # ACCOUNT_NOT_EXIST No account
|
@@ -296,6 +299,7 @@ class btcex(Exchange):
|
|
296
299
|
'5013': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_HIGH order price range is too high.
|
297
300
|
'5014': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
|
298
301
|
'5109': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
|
302
|
+
'5119': InvalidOrder, # {"code":5119,"message":"Cannot be less than the minimum order value:10USDT, instrument: GXE/USDT","data":{"coinType":"USDT","amount":"10","instrumentName":"GXE/USDT"}}
|
299
303
|
'5135': InvalidOrder, # The quantity should be larger than: 0.01
|
300
304
|
'5901': InvalidOrder, # TRANSFER_RESULT transfer out success.
|
301
305
|
'5902': InvalidOrder, # ORDER_SUCCESS place order success.
|
@@ -1254,7 +1258,7 @@ class btcex(Exchange):
|
|
1254
1258
|
'instrument_name': market['id'],
|
1255
1259
|
'type': type,
|
1256
1260
|
}
|
1257
|
-
if side == 'sell':
|
1261
|
+
if side == 'sell' or type == 'limit':
|
1258
1262
|
request['amount'] = self.amount_to_precision(symbol, amount)
|
1259
1263
|
if type == 'limit':
|
1260
1264
|
request['price'] = self.price_to_precision(symbol, price)
|
ccxt/async_support/gate.py
CHANGED
@@ -39,7 +39,7 @@ class gate(Exchange):
|
|
39
39
|
'pro': True,
|
40
40
|
'urls': {
|
41
41
|
'logo': 'https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg',
|
42
|
-
'doc': 'https://www.gate.io/docs/apiv4/en/
|
42
|
+
'doc': 'https://www.gate.io/docs/developers/apiv4/en/',
|
43
43
|
'www': 'https://gate.io/',
|
44
44
|
'api': {
|
45
45
|
'public': {
|
@@ -699,6 +699,11 @@ class gate(Exchange):
|
|
699
699
|
async def fetch_markets(self, params={}):
|
700
700
|
"""
|
701
701
|
retrieves data on all markets for gate
|
702
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-currency-pairs-supported # spot
|
703
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-supported-currency-pairs-supported-in-margin-trading # margin
|
704
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts # swap
|
705
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts-2 # future
|
706
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-the-contracts-with-specified-underlying-and-expiration-time # option
|
702
707
|
:param dict params: extra parameters specific to the exchange api endpoint
|
703
708
|
:returns [dict]: an array of objects representing market data
|
704
709
|
"""
|
@@ -2303,10 +2308,14 @@ class gate(Exchange):
|
|
2303
2308
|
async def fetch_ohlcv(self, symbol, timeframe='1m', since=None, limit=None, params={}):
|
2304
2309
|
"""
|
2305
2310
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
2311
|
+
see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # spot
|
2312
|
+
see https://www.gate.io/docs/developers/apiv4/en/#get-futures-candlesticks # swap
|
2313
|
+
see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # future
|
2314
|
+
see https://www.gate.io/docs/developers/apiv4/en/#get-options-candlesticks # option
|
2306
2315
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
2307
2316
|
:param str timeframe: the length of time each candle represents
|
2308
2317
|
:param int|None since: timestamp in ms of the earliest candle to fetch
|
2309
|
-
:param int|None limit: the maximum amount of candles to fetch
|
2318
|
+
:param int|None limit: the maximum amount of candles to fetch, limit is conflicted with since and params["until"], If either since and params["until"] is specified, request will be rejected
|
2310
2319
|
:param dict params: extra parameters specific to the gateio api endpoint
|
2311
2320
|
:param str|None params['price']: "mark" or "index" for mark price and index price candles
|
2312
2321
|
:param int|None params['until']: timestamp in ms of the latest candle to fetch
|
ccxt/async_support/okx.py
CHANGED
@@ -3577,26 +3577,31 @@ class okx(Exchange):
|
|
3577
3577
|
currency = self.currency(code)
|
3578
3578
|
if (tag is not None) and (len(tag) > 0):
|
3579
3579
|
address = address + ':' + tag
|
3580
|
-
fee = self.safe_string(params, 'fee')
|
3581
|
-
if fee is None:
|
3582
|
-
raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
|
3583
3580
|
request = {
|
3584
3581
|
'ccy': currency['id'],
|
3585
3582
|
'toAddr': address,
|
3586
3583
|
'dest': '4', # 2 = OKCoin International, 3 = OKX 4 = others
|
3587
3584
|
'amt': self.number_to_string(amount),
|
3588
|
-
'fee': self.number_to_string(fee), # withdrawals to OKCoin or OKX are fee-free, please set 0
|
3589
3585
|
}
|
3590
|
-
if 'password' in params:
|
3591
|
-
request['pwd'] = params['password']
|
3592
|
-
elif 'pwd' in params:
|
3593
|
-
request['pwd'] = params['pwd']
|
3594
3586
|
networks = self.safe_value(self.options, 'networks', {})
|
3595
3587
|
network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
|
3596
3588
|
network = self.safe_string(networks, network, network) # handle ETH>ERC20 alias
|
3597
3589
|
if network is not None:
|
3598
3590
|
request['chain'] = currency['id'] + '-' + network
|
3599
3591
|
params = self.omit(params, 'network')
|
3592
|
+
fee = self.safe_string(params, 'fee')
|
3593
|
+
if fee is None:
|
3594
|
+
currencies = await self.fetch_currencies()
|
3595
|
+
self.currencies = self.deep_extend(self.currencies, currencies)
|
3596
|
+
targetNetwork = self.safe_value(currency['networks'], self.network_id_to_code(network), {})
|
3597
|
+
fee = self.safe_string(targetNetwork, 'fee')
|
3598
|
+
if fee is None:
|
3599
|
+
raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
|
3600
|
+
request['fee'] = self.number_to_string(fee) # withdrawals to OKCoin or OKX are fee-free, please set 0
|
3601
|
+
if 'password' in params:
|
3602
|
+
request['pwd'] = params['password']
|
3603
|
+
elif 'pwd' in params:
|
3604
|
+
request['pwd'] = params['pwd']
|
3600
3605
|
query = self.omit(params, ['fee', 'password', 'pwd'])
|
3601
3606
|
if not ('pwd' in request):
|
3602
3607
|
raise ExchangeError(self.id + ' withdraw() requires a password parameter or a pwd parameter, it must be the funding password, not the API passphrase')
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '2.9.
|
7
|
+
__version__ = '2.9.9'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3014,6 +3014,8 @@ class Exchange(object):
|
|
3014
3014
|
self.status = self.extend(self.status, {
|
3015
3015
|
'updated': time,
|
3016
3016
|
})
|
3017
|
+
if not ('info' in self.status):
|
3018
|
+
self.status['info'] = None
|
3017
3019
|
return self.status
|
3018
3020
|
|
3019
3021
|
def fetch_funding_fee(self, code, params={}):
|
ccxt/bitget.py
CHANGED
@@ -1747,18 +1747,18 @@ class bitget(Exchange):
|
|
1747
1747
|
# private
|
1748
1748
|
#
|
1749
1749
|
# {
|
1750
|
-
# accountId: '
|
1751
|
-
# symbol: '
|
1752
|
-
# orderId: '
|
1753
|
-
# fillId: '
|
1750
|
+
# accountId: '4383649766',
|
1751
|
+
# symbol: 'ETHBTC_SPBL',
|
1752
|
+
# orderId: '1009402341131468800',
|
1753
|
+
# fillId: '1009402351489581068',
|
1754
1754
|
# orderType: 'limit',
|
1755
|
-
# side: '
|
1756
|
-
# fillPrice: '
|
1757
|
-
# fillQuantity: '0.
|
1758
|
-
# fillTotalAmount: '
|
1759
|
-
# feeCcy: '
|
1760
|
-
# fees: '0.
|
1761
|
-
# cTime: '
|
1755
|
+
# side: 'sell',
|
1756
|
+
# fillPrice: '0.06997800',
|
1757
|
+
# fillQuantity: '0.04120000',
|
1758
|
+
# fillTotalAmount: '0.00288309',
|
1759
|
+
# feeCcy: 'BTC',
|
1760
|
+
# fees: '-0.00000288',
|
1761
|
+
# cTime: '1676386195060'
|
1762
1762
|
# }
|
1763
1763
|
#
|
1764
1764
|
# {
|
@@ -1792,7 +1792,7 @@ class bitget(Exchange):
|
|
1792
1792
|
fee = {
|
1793
1793
|
'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
|
1794
1794
|
'currency': currencyCode,
|
1795
|
-
'cost': feeAmount,
|
1795
|
+
'cost': Precise.string_neg(feeAmount),
|
1796
1796
|
}
|
1797
1797
|
datetime = self.iso8601(timestamp)
|
1798
1798
|
return self.safe_trade({
|
ccxt/bithumb.py
CHANGED
@@ -387,41 +387,44 @@ class bithumb(Exchange):
|
|
387
387
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
|
388
388
|
"""
|
389
389
|
self.load_markets()
|
390
|
-
symbols = self.market_symbols(symbols)
|
391
|
-
response = self.publicGetTickerAll(params)
|
392
|
-
#
|
393
|
-
# {
|
394
|
-
# "status":"0000",
|
395
|
-
# "data":{
|
396
|
-
# "BTC":{
|
397
|
-
# "opening_price":"9045000",
|
398
|
-
# "closing_price":"9132000",
|
399
|
-
# "min_price":"8938000",
|
400
|
-
# "max_price":"9168000",
|
401
|
-
# "units_traded":"4619.79967497",
|
402
|
-
# "acc_trade_value":"42021363832.5187",
|
403
|
-
# "prev_closing_price":"9041000",
|
404
|
-
# "units_traded_24H":"8793.5045804",
|
405
|
-
# "acc_trade_value_24H":"78933458515.4962",
|
406
|
-
# "fluctate_24H":"530000",
|
407
|
-
# "fluctate_rate_24H":"6.16"
|
408
|
-
# },
|
409
|
-
# "date":"1587710878669"
|
410
|
-
# }
|
411
|
-
# }
|
412
|
-
#
|
413
390
|
result = {}
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
391
|
+
quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
|
392
|
+
quotes = list(quoteCurrencies.keys())
|
393
|
+
for i in range(0, len(quotes)):
|
394
|
+
quote = quotes[i]
|
395
|
+
method = 'publicGetTickerALL' + quote
|
396
|
+
response = getattr(self, method)(params)
|
397
|
+
#
|
398
|
+
# {
|
399
|
+
# "status":"0000",
|
400
|
+
# "data":{
|
401
|
+
# "BTC":{
|
402
|
+
# "opening_price":"9045000",
|
403
|
+
# "closing_price":"9132000",
|
404
|
+
# "min_price":"8938000",
|
405
|
+
# "max_price":"9168000",
|
406
|
+
# "units_traded":"4619.79967497",
|
407
|
+
# "acc_trade_value":"42021363832.5187",
|
408
|
+
# "prev_closing_price":"9041000",
|
409
|
+
# "units_traded_24H":"8793.5045804",
|
410
|
+
# "acc_trade_value_24H":"78933458515.4962",
|
411
|
+
# "fluctate_24H":"530000",
|
412
|
+
# "fluctate_rate_24H":"6.16"
|
413
|
+
# },
|
414
|
+
# "date":"1587710878669"
|
415
|
+
# }
|
416
|
+
# }
|
417
|
+
#
|
418
|
+
data = self.safe_value(response, 'data', {})
|
419
|
+
timestamp = self.safe_integer(data, 'date')
|
420
|
+
tickers = self.omit(data, 'date')
|
421
|
+
currencyIds = list(tickers.keys())
|
422
|
+
for j in range(0, len(currencyIds)):
|
423
|
+
currencyId = currencyIds[j]
|
424
|
+
ticker = data[currencyId]
|
425
|
+
base = self.safe_currency_code(currencyId)
|
426
|
+
symbol = base + '/' + quote
|
427
|
+
market = self.safe_market(symbol)
|
425
428
|
ticker['date'] = timestamp
|
426
429
|
result[symbol] = self.parse_ticker(ticker, market)
|
427
430
|
return self.filter_by_array(result, 'symbol', symbols)
|
ccxt/btcex.py
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.base.errors import ExchangeError
|
8
8
|
from ccxt.base.errors import AuthenticationError
|
9
|
+
from ccxt.base.errors import PermissionDenied
|
9
10
|
from ccxt.base.errors import ArgumentsRequired
|
10
11
|
from ccxt.base.errors import BadRequest
|
11
12
|
from ccxt.base.errors import InsufficientFunds
|
@@ -228,10 +229,12 @@ class btcex(Exchange):
|
|
228
229
|
'403': AuthenticationError, # ACCESS_DENIED_ERROR Access denied
|
229
230
|
'1000': ExchangeNotAvailable, # NO_SERVICE No service found
|
230
231
|
'1001': BadRequest, # BAD_REQUEST Bad requested
|
232
|
+
'1005': DDoSProtection, # {"code":1005,"message":"Operate too frequently"}
|
231
233
|
'2000': AuthenticationError, # NEED_LOGIN Login is required
|
232
234
|
'2001': AuthenticationError, # ACCOUNT_NOT_MATCH Account information does not match
|
233
235
|
'2002': AuthenticationError, # ACCOUNT_NEED_ENABLE Account needs to be activated
|
234
236
|
'2003': AuthenticationError, # ACCOUNT_NOT_AVAILABLE Account not available
|
237
|
+
'2010': PermissionDenied, # {"code":2010,"message":"Access denied","data":{}}
|
235
238
|
'3000': AuthenticationError, # TEST user
|
236
239
|
'3002': AuthenticationError, # NICKNAME_EXIST Nicknames exist
|
237
240
|
'3003': AuthenticationError, # ACCOUNT_NOT_EXIST No account
|
@@ -296,6 +299,7 @@ class btcex(Exchange):
|
|
296
299
|
'5013': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_HIGH order price range is too high.
|
297
300
|
'5014': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
|
298
301
|
'5109': InvalidOrder, # ORDER_PRICE_RANGE_IS_TOO_LOW Order price range is too low.
|
302
|
+
'5119': InvalidOrder, # {"code":5119,"message":"Cannot be less than the minimum order value:10USDT, instrument: GXE/USDT","data":{"coinType":"USDT","amount":"10","instrumentName":"GXE/USDT"}}
|
299
303
|
'5135': InvalidOrder, # The quantity should be larger than: 0.01
|
300
304
|
'5901': InvalidOrder, # TRANSFER_RESULT transfer out success.
|
301
305
|
'5902': InvalidOrder, # ORDER_SUCCESS place order success.
|
@@ -1254,7 +1258,7 @@ class btcex(Exchange):
|
|
1254
1258
|
'instrument_name': market['id'],
|
1255
1259
|
'type': type,
|
1256
1260
|
}
|
1257
|
-
if side == 'sell':
|
1261
|
+
if side == 'sell' or type == 'limit':
|
1258
1262
|
request['amount'] = self.amount_to_precision(symbol, amount)
|
1259
1263
|
if type == 'limit':
|
1260
1264
|
request['price'] = self.price_to_precision(symbol, price)
|
ccxt/gate.py
CHANGED
@@ -38,7 +38,7 @@ class gate(Exchange):
|
|
38
38
|
'pro': True,
|
39
39
|
'urls': {
|
40
40
|
'logo': 'https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg',
|
41
|
-
'doc': 'https://www.gate.io/docs/apiv4/en/
|
41
|
+
'doc': 'https://www.gate.io/docs/developers/apiv4/en/',
|
42
42
|
'www': 'https://gate.io/',
|
43
43
|
'api': {
|
44
44
|
'public': {
|
@@ -698,6 +698,11 @@ class gate(Exchange):
|
|
698
698
|
def fetch_markets(self, params={}):
|
699
699
|
"""
|
700
700
|
retrieves data on all markets for gate
|
701
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-currency-pairs-supported # spot
|
702
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-supported-currency-pairs-supported-in-margin-trading # margin
|
703
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts # swap
|
704
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-futures-contracts-2 # future
|
705
|
+
see https://www.gate.io/docs/developers/apiv4/en/#list-all-the-contracts-with-specified-underlying-and-expiration-time # option
|
701
706
|
:param dict params: extra parameters specific to the exchange api endpoint
|
702
707
|
:returns [dict]: an array of objects representing market data
|
703
708
|
"""
|
@@ -2301,10 +2306,14 @@ class gate(Exchange):
|
|
2301
2306
|
def fetch_ohlcv(self, symbol, timeframe='1m', since=None, limit=None, params={}):
|
2302
2307
|
"""
|
2303
2308
|
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
|
2309
|
+
see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # spot
|
2310
|
+
see https://www.gate.io/docs/developers/apiv4/en/#get-futures-candlesticks # swap
|
2311
|
+
see https://www.gate.io/docs/developers/apiv4/en/#market-candlesticks # future
|
2312
|
+
see https://www.gate.io/docs/developers/apiv4/en/#get-options-candlesticks # option
|
2304
2313
|
:param str symbol: unified symbol of the market to fetch OHLCV data for
|
2305
2314
|
:param str timeframe: the length of time each candle represents
|
2306
2315
|
:param int|None since: timestamp in ms of the earliest candle to fetch
|
2307
|
-
:param int|None limit: the maximum amount of candles to fetch
|
2316
|
+
:param int|None limit: the maximum amount of candles to fetch, limit is conflicted with since and params["until"], If either since and params["until"] is specified, request will be rejected
|
2308
2317
|
:param dict params: extra parameters specific to the gateio api endpoint
|
2309
2318
|
:param str|None params['price']: "mark" or "index" for mark price and index price candles
|
2310
2319
|
:param int|None params['until']: timestamp in ms of the latest candle to fetch
|
ccxt/okx.py
CHANGED
@@ -3575,26 +3575,31 @@ class okx(Exchange):
|
|
3575
3575
|
currency = self.currency(code)
|
3576
3576
|
if (tag is not None) and (len(tag) > 0):
|
3577
3577
|
address = address + ':' + tag
|
3578
|
-
fee = self.safe_string(params, 'fee')
|
3579
|
-
if fee is None:
|
3580
|
-
raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
|
3581
3578
|
request = {
|
3582
3579
|
'ccy': currency['id'],
|
3583
3580
|
'toAddr': address,
|
3584
3581
|
'dest': '4', # 2 = OKCoin International, 3 = OKX 4 = others
|
3585
3582
|
'amt': self.number_to_string(amount),
|
3586
|
-
'fee': self.number_to_string(fee), # withdrawals to OKCoin or OKX are fee-free, please set 0
|
3587
3583
|
}
|
3588
|
-
if 'password' in params:
|
3589
|
-
request['pwd'] = params['password']
|
3590
|
-
elif 'pwd' in params:
|
3591
|
-
request['pwd'] = params['pwd']
|
3592
3584
|
networks = self.safe_value(self.options, 'networks', {})
|
3593
3585
|
network = self.safe_string_upper(params, 'network') # self line allows the user to specify either ERC20 or ETH
|
3594
3586
|
network = self.safe_string(networks, network, network) # handle ETH>ERC20 alias
|
3595
3587
|
if network is not None:
|
3596
3588
|
request['chain'] = currency['id'] + '-' + network
|
3597
3589
|
params = self.omit(params, 'network')
|
3590
|
+
fee = self.safe_string(params, 'fee')
|
3591
|
+
if fee is None:
|
3592
|
+
currencies = self.fetch_currencies()
|
3593
|
+
self.currencies = self.deep_extend(self.currencies, currencies)
|
3594
|
+
targetNetwork = self.safe_value(currency['networks'], self.network_id_to_code(network), {})
|
3595
|
+
fee = self.safe_string(targetNetwork, 'fee')
|
3596
|
+
if fee is None:
|
3597
|
+
raise ArgumentsRequired(self.id + " withdraw() requires a 'fee' string parameter, network transaction fee must be ≥ 0. Withdrawals to OKCoin or OKX are fee-free, please set '0'. Withdrawing to external digital asset address requires network transaction fee.")
|
3598
|
+
request['fee'] = self.number_to_string(fee) # withdrawals to OKCoin or OKX are fee-free, please set 0
|
3599
|
+
if 'password' in params:
|
3600
|
+
request['pwd'] = params['password']
|
3601
|
+
elif 'pwd' in params:
|
3602
|
+
request['pwd'] = params['pwd']
|
3598
3603
|
query = self.omit(params, ['fee', 'password', 'pwd'])
|
3599
3604
|
if not ('pwd' in request):
|
3600
3605
|
raise ExchangeError(self.id + ' withdraw() requires a password parameter or a pwd parameter, it must be the funding password, not the API passphrase')
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/base/exchange.py
CHANGED
ccxt/pro/huobi.py
CHANGED
@@ -397,31 +397,35 @@ class huobi(Exchange, ccxt.async_support.huobi):
|
|
397
397
|
client.reject(e, messageHash)
|
398
398
|
|
399
399
|
async def watch_order_book_snapshot(self, client, message, subscription):
|
400
|
-
symbol = self.safe_string(subscription, 'symbol')
|
401
|
-
limit = self.safe_integer(subscription, 'limit')
|
402
|
-
params = self.safe_value(subscription, 'params')
|
403
|
-
attempts = self.safe_integer(subscription, 'numAttempts', 0)
|
404
400
|
messageHash = self.safe_string(subscription, 'messageHash')
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
'
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
401
|
+
try:
|
402
|
+
symbol = self.safe_string(subscription, 'symbol')
|
403
|
+
limit = self.safe_integer(subscription, 'limit')
|
404
|
+
params = self.safe_value(subscription, 'params')
|
405
|
+
attempts = self.safe_integer(subscription, 'numAttempts', 0)
|
406
|
+
market = self.market(symbol)
|
407
|
+
url = self.get_url_by_market_type(market['type'], market['linear'])
|
408
|
+
requestId = self.request_id()
|
409
|
+
request = {
|
410
|
+
'req': messageHash,
|
411
|
+
'id': requestId,
|
412
|
+
}
|
413
|
+
# self is a temporary subscription by a specific requestId
|
414
|
+
# it has a very short lifetime until the snapshot is received over ws
|
415
|
+
snapshotSubscription = {
|
416
|
+
'id': requestId,
|
417
|
+
'messageHash': messageHash,
|
418
|
+
'symbol': symbol,
|
419
|
+
'limit': limit,
|
420
|
+
'params': params,
|
421
|
+
'numAttempts': attempts,
|
422
|
+
'method': self.handle_order_book_snapshot,
|
423
|
+
}
|
424
|
+
orderbook = await self.watch(url, requestId, request, requestId, snapshotSubscription)
|
425
|
+
return orderbook.limit()
|
426
|
+
except Exception as e:
|
427
|
+
del client.subscriptions[messageHash]
|
428
|
+
client.reject(e, messageHash)
|
425
429
|
|
426
430
|
def handle_delta(self, bookside, delta):
|
427
431
|
price = self.safe_float(delta, 0)
|
ccxt/pro/huobijp.py
CHANGED
@@ -321,30 +321,34 @@ class huobijp(Exchange, ccxt.async_support.huobijp):
|
|
321
321
|
client.resolve(orderbook, messageHash)
|
322
322
|
|
323
323
|
async def watch_order_book_snapshot(self, client, message, subscription):
|
324
|
-
symbol = self.safe_string(subscription, 'symbol')
|
325
|
-
limit = self.safe_integer(subscription, 'limit')
|
326
|
-
params = self.safe_value(subscription, 'params')
|
327
324
|
messageHash = self.safe_string(subscription, 'messageHash')
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
'
|
334
|
-
'
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
325
|
+
try:
|
326
|
+
symbol = self.safe_string(subscription, 'symbol')
|
327
|
+
limit = self.safe_integer(subscription, 'limit')
|
328
|
+
params = self.safe_value(subscription, 'params')
|
329
|
+
api = self.safe_string(self.options, 'api', 'api')
|
330
|
+
hostname = {'hostname': self.hostname}
|
331
|
+
url = self.implode_params(self.urls['api']['ws'][api]['public'], hostname)
|
332
|
+
requestId = self.request_id()
|
333
|
+
request = {
|
334
|
+
'req': messageHash,
|
335
|
+
'id': requestId,
|
336
|
+
}
|
337
|
+
# self is a temporary subscription by a specific requestId
|
338
|
+
# it has a very short lifetime until the snapshot is received over ws
|
339
|
+
snapshotSubscription = {
|
340
|
+
'id': requestId,
|
341
|
+
'messageHash': messageHash,
|
342
|
+
'symbol': symbol,
|
343
|
+
'limit': limit,
|
344
|
+
'params': params,
|
345
|
+
'method': self.handle_order_book_snapshot,
|
346
|
+
}
|
347
|
+
orderbook = await self.watch(url, requestId, request, requestId, snapshotSubscription)
|
348
|
+
return orderbook.limit()
|
349
|
+
except Exception as e:
|
350
|
+
del client.subscriptions[messageHash]
|
351
|
+
client.reject(e, messageHash)
|
348
352
|
|
349
353
|
def handle_delta(self, bookside, delta):
|
350
354
|
price = self.safe_float(delta, 0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 2.9.
|
3
|
+
Version: 2.9.9
|
4
4
|
Summary: A JavaScript / Python / PHP cryptocurrency trading library with support for 130+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -89,7 +89,7 @@ Current feature list:
|
|
89
89
|
| [](http://www.bitmart.com/?r=rQCFLh) | bitmart | [BitMart](http://www.bitmart.com/?r=rQCFLh) | [](https://developer-pro.bitmart.com/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](http://www.bitmart.com/?r=rQCFLh) |
|
90
90
|
| [](https://bitvavo.com/?a=24F34952F7) | bitvavo | [Bitvavo](https://bitvavo.com/?a=24F34952F7) | [](https://docs.bitvavo.com/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
91
91
|
| [](https://www.bybit.com/register?affiliate_id=35953) | bybit | [Bybit](https://www.bybit.com/register?affiliate_id=35953) | [](https://bybit-exchange.github.io/docs/inverse/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
92
|
-
| [](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [](https://www.gate.io/docs/apiv4/en/
|
92
|
+
| [](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [](https://www.gate.io/docs/developers/apiv4/en/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://www.gate.io/ref/2436035) |
|
93
93
|
| [](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | huobi | [Huobi](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | [](https://huobiapi.github.io/docs/spot/v1/en/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | [](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) |
|
94
94
|
| [](https://idex.io) | idex | [IDEX](https://idex.io) | [](https://docs.idex.io/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
95
95
|
| [](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | kucoin | [KuCoin](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | [](https://docs.kucoin.com) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) | |
|
@@ -160,7 +160,7 @@ The CCXT library currently supports the following 105 cryptocurrency exchange ma
|
|
160
160
|
| [](https://exmo.me/?ref=131685) | exmo | [EXMO](https://exmo.me/?ref=131685) | [](https://exmo.me/en/api_doc?ref=131685) | | |
|
161
161
|
| [](https://one.ndax.io/bfQiSL) | flowbtc | [flowBTC](https://one.ndax.io/bfQiSL) | [](https://www.flowbtc.com.br/api.html) | | [](https://ccxt.pro) |
|
162
162
|
| [](https://fmfw.io/referral/da948b21d6c92d69) | fmfwio | [FMFW.io](https://fmfw.io/referral/da948b21d6c92d69) | [](https://api.fmfw.io/api/2/explore/) | | [](https://ccxt.pro) |
|
163
|
-
| [](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [](https://www.gate.io/docs/apiv4/en/
|
163
|
+
| [](https://www.gate.io/ref/2436035) | gate | [Gate.io](https://www.gate.io/ref/2436035) | [](https://www.gate.io/docs/developers/apiv4/en/) | [](https://github.com/ccxt/ccxt/wiki/Certification) | [](https://ccxt.pro) |
|
164
164
|
| [](https://gemini.com/) | gemini | [Gemini](https://gemini.com/) | [](https://docs.gemini.com/rest-api) | | [](https://ccxt.pro) |
|
165
165
|
| [](https://hitbtc.com/?ref_id=5a5d39a65d466) | hitbtc | [HitBTC](https://hitbtc.com/?ref_id=5a5d39a65d466) | [](https://api.hitbtc.com/v2) | | [](https://ccxt.pro) |
|
166
166
|
| [](https://hitbtc.com/?ref_id=5a5d39a65d466) | hitbtc3 | [HitBTC](https://hitbtc.com/?ref_id=5a5d39a65d466) | [](https://api.hitbtc.com) | | |
|
@@ -259,13 +259,13 @@ console.log (ccxt.exchanges) // print all available exchanges
|
|
259
259
|
|
260
260
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
261
261
|
|
262
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@2.9.
|
263
|
-
* unpkg: https://unpkg.com/ccxt@2.9.
|
262
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@2.9.9/dist/ccxt.browser.js
|
263
|
+
* unpkg: https://unpkg.com/ccxt@2.9.9/dist/ccxt.browser.js
|
264
264
|
|
265
265
|
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.
|
266
266
|
|
267
267
|
```HTML
|
268
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@2.9.
|
268
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@2.9.9/dist/ccxt.browser.js"></script>
|
269
269
|
```
|
270
270
|
|
271
271
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=EsxMjnrSlpveBH_vBSbtmk0GUSC8utPz562MwZcSLwI,15912
|
2
2
|
ccxt/ace.py,sha256=LHJs8ki3q_vhTf67M2dY5PhdhlNe3iYdWpI8Ac2rtB8,41009
|
3
3
|
ccxt/alpaca.py,sha256=dd8lDHGg24qRhOyfvXgyjiLZ6YgnJ5ODpW4t4GFR8d8,32910
|
4
4
|
ccxt/ascendex.py,sha256=lmBXXBJxSnfQP_Yl2e8djgx1v1aKPdMEFHNRXKv_f1o,125846
|
@@ -17,8 +17,8 @@ ccxt/bitfinex.py,sha256=tjxxr7W64b10YkQSk32-znXQbQ20rUpK0WrL4BmgS8I,68969
|
|
17
17
|
ccxt/bitfinex2.py,sha256=gX36B6gY8zhDV_NL99aGyegpTFS429Sv_LBhn_oh6Jk,111167
|
18
18
|
ccxt/bitflyer.py,sha256=5yZf04cQqQGAjk4Yabyn4Hg8iq61tnd1cmvLC_G6XOE,37335
|
19
19
|
ccxt/bitforex.py,sha256=3mY0W3r2guT_b8qUxDCi_UBSrfLKwzO2jZ4C193_mRo,27957
|
20
|
-
ccxt/bitget.py,sha256=
|
21
|
-
ccxt/bithumb.py,sha256=
|
20
|
+
ccxt/bitget.py,sha256=pGmrhXhbE0VH1EVmnwR3BX1pzQrHnEnWNUE6aPE0B8U,198368
|
21
|
+
ccxt/bithumb.py,sha256=I9GpVTcvA5mV7LIKOgqDDncUul108wCTCADlY1NpQi4,42254
|
22
22
|
ccxt/bitmart.py,sha256=f7k6gVbq0p7ZC_7Hk0hUgCgEZTuCjykYWWPewk-nldA,129463
|
23
23
|
ccxt/bitmex.py,sha256=wEh80OgAG8mQKssDXE4G_xVDdwnJfIGuWGv9JEawxJM,118244
|
24
24
|
ccxt/bitopro.py,sha256=rMHo98gPT42GnxSrE1JQDFQSp04tGu_L02LcqHWInhI,62873
|
@@ -34,7 +34,7 @@ ccxt/bl3p.py,sha256=acdOKkTdRhw-xZCxetX_m_yFQZGK4o154np9TcIv9E4,16070
|
|
34
34
|
ccxt/blockchaincom.py,sha256=IcWTOgO3kCltoMPdBj_ZcKOCGaHUDlbo7NE9MJWj5Eo,46632
|
35
35
|
ccxt/btcalpha.py,sha256=Qtu0ZBYCsJfZPp6fyCGuesq4-YeHFP-XfyuHlGwTNlA,34666
|
36
36
|
ccxt/btcbox.py,sha256=0URf87IdA9Pr84WyTdozuvkG-LM6S_5gE0nmK8Soy08,22169
|
37
|
-
ccxt/btcex.py,sha256=
|
37
|
+
ccxt/btcex.py,sha256=juePyEUEB_XQHEjObpfekSQXp7LO69mG2e-ME0S5DHY,110055
|
38
38
|
ccxt/btcmarkets.py,sha256=trlczer8FfF-G8goHx7JGL69t4dKEicqN1s3vTPkLNc,48035
|
39
39
|
ccxt/btctradeua.py,sha256=eyflzEU3iWPLTnc2Rlpwztj3mrhfl4CeMB4kDpvCnfk,21661
|
40
40
|
ccxt/btcturk.py,sha256=nCpy58mPkvJexbFgYpBVTK42r0KbBPzMVYDR4LQMujY,34977
|
@@ -58,7 +58,7 @@ ccxt/digifinex.py,sha256=LBx3ocJrcfGFjp-R0oPr1q_9ZVuxeKvVJqrW3QNv5Qo,151213
|
|
58
58
|
ccxt/exmo.py,sha256=GS5h7TgVAMp_qGIx-OTvmbEcsDse9DasclVb1HtwMHo,87997
|
59
59
|
ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
|
60
60
|
ccxt/fmfwio.py,sha256=9yqAG-NvgAny6NE08VOh_FQe_RylCaD5uF0d5t_0f44,1180
|
61
|
-
ccxt/gate.py,sha256=
|
61
|
+
ccxt/gate.py,sha256=rptiRa6SW3ogqpf6J5h13p_MwFyYD9FJpNDnyZP9B5g,218659
|
62
62
|
ccxt/gateio.py,sha256=GgoKg6c0l1Wndp_GRw76jmW-HvKE5Gr7FvyTVdPmHJU,387
|
63
63
|
ccxt/gemini.py,sha256=j3_9NMjmHFXcODAGQA0sSjsc0Qu2roycW-R8c2-ZXNc,68600
|
64
64
|
ccxt/hitbtc.py,sha256=Rf2CUROSy8fyV9HBFToJrlUY3rGXCHe34_sBmSYVJFQ,61602
|
@@ -90,7 +90,7 @@ ccxt/oceanex.py,sha256=WMk7FhhrdVmRtBLGzod04qIHOsdvbxfuYqVLIXxxSLc,36733
|
|
90
90
|
ccxt/okcoin.py,sha256=JLud4dZXKJ2aOXxCM-HQ778WnBYafu6ESfifOKrlBMo,177429
|
91
91
|
ccxt/okex.py,sha256=yVJP17cwsKQy1wuLljWL9dTiPQIP6UdMj7AnMSV2PL8,378
|
92
92
|
ccxt/okex5.py,sha256=O7oiOpzvw_K7bO3evsceKI-zItrXr5StA07DGMt2Hoo,384
|
93
|
-
ccxt/okx.py,sha256=
|
93
|
+
ccxt/okx.py,sha256=BBYeeqhB-l_IQj7M3fshQX9B5Rj7qTJYdFRSK8F77nw,259632
|
94
94
|
ccxt/paymium.py,sha256=tFKD930DyU2dhQBCpQKbPIoh2cdxSTflfRW-xEGRrBE,22543
|
95
95
|
ccxt/phemex.py,sha256=jgjtgNjYT_3i8acScrkaStCKrF33Kvoa5YvIN2WmEv8,182787
|
96
96
|
ccxt/poloniex.py,sha256=dBA23y-Bstpi5CVlXtCrgbM1BWsROm6ZP5kLH-Uaf-Q,83276
|
@@ -110,7 +110,7 @@ ccxt/yobit.py,sha256=XSwUxMPj7615KMSJ0uO_6r_XC86PVI9JmoFW7Sa5rhQ,50480
|
|
110
110
|
ccxt/zaif.py,sha256=amUZYqnOc_YQHoEHYmXQDAuprZX9IiLwIVQELrM4EdY,27619
|
111
111
|
ccxt/zb.py,sha256=ET77-_n6472ce0w2rEvmm9yaxTaH3fsXHoVn58i-tEA,183164
|
112
112
|
ccxt/zonda.py,sha256=BgryogRDDWndzXIhzUCVmDp-Z-4NStgUQ52KveQ3F_k,72727
|
113
|
-
ccxt/async_support/__init__.py,sha256=
|
113
|
+
ccxt/async_support/__init__.py,sha256=SYzqUkfg6wD4NEKTZL3S9g0u6cCbAdV3nQSBbR7M_vE,15745
|
114
114
|
ccxt/async_support/ace.py,sha256=KBkF9jOtfuexziucqdz9hVQ8EQDYEaHAnF7qpb3sUT8,41239
|
115
115
|
ccxt/async_support/alpaca.py,sha256=4vMmD34LgVuwoWN4AK_2Wt12dL5KA3uwGJKQuzG6sAg,33056
|
116
116
|
ccxt/async_support/ascendex.py,sha256=epuquvLlW0vwcjs46tlMTuRf2kAP3rqzCqUMg9IDppw,126460
|
@@ -129,8 +129,8 @@ ccxt/async_support/bitfinex.py,sha256=x0CdZB3ygOoaFPungaI8bOH6QoNOG116UIsHUG-T7w
|
|
129
129
|
ccxt/async_support/bitfinex2.py,sha256=lJoVtHMOEliF8cVvAw8uEx4Z6Aj8O4TRhBE1lDZQ5WE,111643
|
130
130
|
ccxt/async_support/bitflyer.py,sha256=_5E8RTxzK-Cw1VUP_8wiwHegltIzVCKIQyPCvlEi9jc,37643
|
131
131
|
ccxt/async_support/bitforex.py,sha256=YiF2LdoCa6Hsrzz-aQGppTKxuw1EUEuE6FoZ2iJqD94,28163
|
132
|
-
ccxt/async_support/bitget.py,sha256=
|
133
|
-
ccxt/async_support/bithumb.py,sha256=
|
132
|
+
ccxt/async_support/bitget.py,sha256=h38SCFGrkdsXwWkTJDRCMmnRVrXS90E9WhGJgfc2sTY,199204
|
133
|
+
ccxt/async_support/bithumb.py,sha256=Pc0N0QMcuuKcqAK4tyCkVyCFExghoOicPldJY6tT6Sg,42472
|
134
134
|
ccxt/async_support/bitmart.py,sha256=saATo-m7e4WVVZJoRP1wlKdsMwDbXTdRVcy-Il5096w,130101
|
135
135
|
ccxt/async_support/bitmex.py,sha256=SFOTkVUO61cfQSEnnKystwIULFvZ6MUb6LyyjcZ7j0I,118708
|
136
136
|
ccxt/async_support/bitopro.py,sha256=EJOBphHIPKS91D4dY8-w69r3vWCatUFndBE1X8t3fSw,63241
|
@@ -146,7 +146,7 @@ ccxt/async_support/bl3p.py,sha256=Lsargo-0A-EryC9tu9O59uxcds-p31aGIKBE575Psmk,16
|
|
146
146
|
ccxt/async_support/blockchaincom.py,sha256=BfeCR1h9KURIW9vEjiawXDDrHBe-t72XJ5ymcwsXKL4,47060
|
147
147
|
ccxt/async_support/btcalpha.py,sha256=M7EGVVsdAHPXE7u8--RM2UQ3m9G134MvLdi8HIDDGq4,34944
|
148
148
|
ccxt/async_support/btcbox.py,sha256=ej6RzOaIfNbfJ71RyaeBQenz2OUcaW5VzdmpqhJ0TIE,22363
|
149
|
-
ccxt/async_support/btcex.py,sha256=
|
149
|
+
ccxt/async_support/btcex.py,sha256=l-lEw-EQInMN6EGKkVkyqyOsNFPPW1odOTjfLZ60WwA,110681
|
150
150
|
ccxt/async_support/btcmarkets.py,sha256=mqB-YZnh_ZRK9PwpvAcp579Cj6Ul_A3d3AIEOtGmFjQ,48385
|
151
151
|
ccxt/async_support/btctradeua.py,sha256=B5OlisST-2mpE_r8svLfxqj4LWZ1EMyaAMcOb971cg0,21807
|
152
152
|
ccxt/async_support/btcturk.py,sha256=jhTw3LqZNdkfnBcF-3nJubvMKdr_nICJ_-u2qFy9UyM,35195
|
@@ -170,7 +170,7 @@ ccxt/async_support/digifinex.py,sha256=mwWtWNiYPYvbtlT2Vw0IxhvYaajI3lKdhWV3-a_84
|
|
170
170
|
ccxt/async_support/exmo.py,sha256=A_9XE1aA2Ch2yMtyJGctVnCrsTCXYAeUsB8eNJXrN_g,88539
|
171
171
|
ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
|
172
172
|
ccxt/async_support/fmfwio.py,sha256=8ag6QCIc8UV5eE3BpSc5mFP2nuJR2Wu2wGyOGKFej2g,1194
|
173
|
-
ccxt/async_support/gate.py,sha256=
|
173
|
+
ccxt/async_support/gate.py,sha256=PyzbsNpBrs6-90hj8W__3VIAJZN-AOPY3rkKp6tw17E,219513
|
174
174
|
ccxt/async_support/gateio.py,sha256=89g56dHNlw5e8yaAbwnoxoxufj9JP1ksiz9dgyP8VuQ,401
|
175
175
|
ccxt/async_support/gemini.py,sha256=wGZfJYRBHjil5ag5xO6_1y2m6EMDD0cbee7q3on0OKU,69076
|
176
176
|
ccxt/async_support/hitbtc.py,sha256=gO4SYBdjSFXZoLX0dkCFzSgPMc7vrLunQRvlzqK4lco,62036
|
@@ -202,7 +202,7 @@ ccxt/async_support/oceanex.py,sha256=J3DbqR42xMvrDk9GMAP9ngYqLV_VsDz0IESJE3S0iNo
|
|
202
202
|
ccxt/async_support/okcoin.py,sha256=861qonrLRM8QnDgglCEk8h75gQMxxIuLtiBIkPXn_tA,177893
|
203
203
|
ccxt/async_support/okex.py,sha256=6pyaxRyqPd4-BF_7xAGE965VD233eihKZBq6l3KgZtM,392
|
204
204
|
ccxt/async_support/okex5.py,sha256=A3NMLSKaCaMcZptkv3WsLju3xSLAnTAo8-NMueRfH5E,398
|
205
|
-
ccxt/async_support/okx.py,sha256=
|
205
|
+
ccxt/async_support/okx.py,sha256=2zmtStg4eQTnKesSmM27SBatKd7jHpgMQs14UdQQcmE,260660
|
206
206
|
ccxt/async_support/paymium.py,sha256=jr7ezlYsxIRh-pT7Eu0N3NsS9-hv845oGQoHyrhKS7A,22731
|
207
207
|
ccxt/async_support/phemex.py,sha256=QRUMAQmzgsz7bgFTEatJKiuTEuU8ymY234N0IOdK2XA,183323
|
208
208
|
ccxt/async_support/poloniex.py,sha256=NnZzjR1aJ5gmZMEDhlYIfTfS5jV04IQjMsJcGUraDv0,83776
|
@@ -223,14 +223,14 @@ ccxt/async_support/zaif.py,sha256=pU8VIbfzoal-aYYOwXjCJom1wv39QQHp2QWVmf7v5uI,27
|
|
223
223
|
ccxt/async_support/zb.py,sha256=f91YoThqWGOyYl_ywW2x6pw_LQABGS8_4DczWAQKLpU,183868
|
224
224
|
ccxt/async_support/zonda.py,sha256=9pqglR6VBN-iqEYj7CBIZC-96tl05WFrkLf_5csxPVk,73017
|
225
225
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
226
|
-
ccxt/async_support/base/exchange.py,sha256=
|
226
|
+
ccxt/async_support/base/exchange.py,sha256=I6VBnPvjTQ_QJcy16Db8jRvvr1FEuOF-soZ8eTzEs2Y,108097
|
227
227
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
228
228
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
229
229
|
ccxt/base/decimal_to_precision.py,sha256=FG3IBmZKwWPg7Kj2mgCX7txELUEhfgfmnxrbKwVVtok,6531
|
230
230
|
ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
|
231
|
-
ccxt/base/exchange.py,sha256=
|
231
|
+
ccxt/base/exchange.py,sha256=uNhb-ApI9e1tVYRdEpstS1Xh78O7kstgm4cN4rr0zHU,163549
|
232
232
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
233
|
-
ccxt/pro/__init__.py,sha256=
|
233
|
+
ccxt/pro/__init__.py,sha256=11yhyUIBbi2pN1ATXUX2NOkFQQb-o1q2z2AMztFSr_0,5946
|
234
234
|
ccxt/pro/alpaca.py,sha256=7o59h7qBbF9U1_jVBFVlGvstywQOh_dkfV4yqXuspgo,26426
|
235
235
|
ccxt/pro/ascendex.py,sha256=UikwO6-yiSfIV-OImOOIZ2xO_zanAB49VDQsoDN6Q5M,34311
|
236
236
|
ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
|
@@ -264,8 +264,8 @@ ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
|
|
264
264
|
ccxt/pro/gemini.py,sha256=lYy57_MclS6WM2wfSUgsrP5Dn9p_ryC_IP4HA8fDAko,24937
|
265
265
|
ccxt/pro/hitbtc.py,sha256=VCBZ6Mj-EavScBP7KRcSjMS0OZoRwFR5Goydgpa6qgw,15011
|
266
266
|
ccxt/pro/hollaex.py,sha256=x58RgiJEMq3m0Y-WCwSZW7B-ADBQRFMAjMHFbJLpZp8,21559
|
267
|
-
ccxt/pro/huobi.py,sha256=
|
268
|
-
ccxt/pro/huobijp.py,sha256=
|
267
|
+
ccxt/pro/huobi.py,sha256=fgmvEjqp1nA-9krGdwB29rGCOuiCHiaHPh7fnEGEXQk,85187
|
268
|
+
ccxt/pro/huobijp.py,sha256=eD7yfA3wyR2Rf_kkeQN-cZMtz8tmbnLy-UktCvH-vck,22484
|
269
269
|
ccxt/pro/huobipro.py,sha256=JqLbm74WLluxAjWDAGGwY4bx8_ShCwOOqQ0476LfnHs,400
|
270
270
|
ccxt/pro/idex.py,sha256=E6o-vtvsbi6ja4egTxe6QBARNTD5npx_4eqEGkkfqN0,27750
|
271
271
|
ccxt/pro/independentreserve.py,sha256=n0u0Fxfo21keguFqxf1ikqSLsrLWFEJ0c0kM7RXOfAM,10940
|
@@ -289,7 +289,7 @@ ccxt/pro/base/__init__.py,sha256=XscxcHui5I8za8dAzz0O3J-UeyxGkUEXlErAaBWHCjY,184
|
|
289
289
|
ccxt/pro/base/aiohttp_client.py,sha256=wd0ae_KYgQ3gqYgj7uYeJcDPfJWzxMKUQsxs8ZZcTr4,4961
|
290
290
|
ccxt/pro/base/cache.py,sha256=r9l1tEvR3sfN4Joqj6bPBRS0Xrg7mjAFjTDW4QBMozY,6085
|
291
291
|
ccxt/pro/base/client.py,sha256=XvQt-puPiGBXYw1s9nFXj_xXRNkDxc8hF5kvQBVwBnk,7270
|
292
|
-
ccxt/pro/base/exchange.py,sha256
|
292
|
+
ccxt/pro/base/exchange.py,sha256=OlPgFPNw_iDOvpbi8T-lnromq_lhv7NSUHfjo2YLlrE,8212
|
293
293
|
ccxt/pro/base/fast_client.py,sha256=NCAHUS35OzhsPve2owVLzM9BmM7cTsYcNFEJBw1UESU,3245
|
294
294
|
ccxt/pro/base/functions.py,sha256=vf2FUrlCak5Tf5a6-vbTtmtzHzbXi0nECRygTmNhxFw,1495
|
295
295
|
ccxt/pro/base/future.py,sha256=hcvcH5rUP4Jn7qbQwx19P4ItM1DWZU2vvRS8Ob6MIDU,249
|
@@ -326,7 +326,7 @@ ccxt/test/test_sync.py,sha256=omZA0xK_2nl58Gwoz65Oi4xRN4uLyuZ0AWZwf2Eqa9w,22795
|
|
326
326
|
ccxt/test/test_throttle.py,sha256=GvLQWtA4fAk_yJrxeisek-wAz7eJdHj0DDKR4_V1beg,3123
|
327
327
|
ccxt/test/test_trade.py,sha256=-pw3gxe26wozFeN_Vy4zWNUQr0fSXOg3FRu-gVvOrqE,3243
|
328
328
|
ccxt/test/test_transaction.py,sha256=IlyTFDWDwGUGzk94yx6vLaJy9zyCRlhEVigXE6hDd40,1514
|
329
|
-
ccxt-2.9.
|
330
|
-
ccxt-2.9.
|
331
|
-
ccxt-2.9.
|
332
|
-
ccxt-2.9.
|
329
|
+
ccxt-2.9.9.dist-info/METADATA,sha256=2-klFi1hlyOPzqH4JM50fO_4nfOJ_Evdxm_Cz4Cv_g0,110825
|
330
|
+
ccxt-2.9.9.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
|
331
|
+
ccxt-2.9.9.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
332
|
+
ccxt-2.9.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|