ccxt 4.2.91__py2.py3-none-any.whl → 4.2.93__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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.91'
25
+ __version__ = '4.2.93'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bybit.py CHANGED
@@ -173,6 +173,7 @@ class ImplicitAPI:
173
173
  private_get_v5_broker_earning_record = privateGetV5BrokerEarningRecord = Entry('v5/broker/earning-record', 'private', 'GET', {'cost': 5})
174
174
  private_get_v5_broker_earnings_info = privateGetV5BrokerEarningsInfo = Entry('v5/broker/earnings-info', 'private', 'GET', {'cost': 5})
175
175
  private_get_v5_broker_account_info = privateGetV5BrokerAccountInfo = Entry('v5/broker/account-info', 'private', 'GET', {'cost': 5})
176
+ private_get_v5_broker_asset_query_sub_member_deposit_record = privateGetV5BrokerAssetQuerySubMemberDepositRecord = Entry('v5/broker/asset/query-sub-member-deposit-record', 'private', 'GET', {'cost': 10})
176
177
  private_post_option_usdc_openapi_private_v1_place_order = privatePostOptionUsdcOpenapiPrivateV1PlaceOrder = Entry('option/usdc/openapi/private/v1/place-order', 'private', 'POST', {'cost': 2.5})
177
178
  private_post_option_usdc_openapi_private_v1_replace_order = privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder = Entry('option/usdc/openapi/private/v1/replace-order', 'private', 'POST', {'cost': 2.5})
178
179
  private_post_option_usdc_openapi_private_v1_cancel_order = privatePostOptionUsdcOpenapiPrivateV1CancelOrder = Entry('option/usdc/openapi/private/v1/cancel-order', 'private', 'POST', {'cost': 2.5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.93'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.91'
5
+ __version__ = '4.2.93'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -385,6 +385,7 @@ class bybit(Exchange, ImplicitAPI):
385
385
  'v5/broker/earning-record': 5,
386
386
  'v5/broker/earnings-info': 5,
387
387
  'v5/broker/account-info': 5,
388
+ 'v5/broker/asset/query-sub-member-deposit-record': 10,
388
389
  },
389
390
  'post': {
390
391
  # Legacy option USDC
@@ -3857,33 +3857,6 @@ class coinex(Exchange, ImplicitAPI):
3857
3857
  data = self.safe_value(response, 'data', {})
3858
3858
  return self.parse_leverage_tiers(data, symbols, None)
3859
3859
 
3860
- def parse_leverage_tiers(self, response, symbols: Strings = None, marketIdKey=None):
3861
- #
3862
- # {
3863
- # "BTCUSD": [
3864
- # ["500001", "100", "0.005"],
3865
- # ["1000001", "50", "0.01"],
3866
- # ["2000001", "30", "0.015"],
3867
- # ["5000001", "20", "0.02"],
3868
- # ["10000001", "15", "0.025"],
3869
- # ["20000001", "10", "0.03"]
3870
- # ],
3871
- # ...
3872
- # }
3873
- #
3874
- tiers = {}
3875
- marketIds = list(response.keys())
3876
- for i in range(0, len(marketIds)):
3877
- marketId = marketIds[i]
3878
- market = self.safe_market(marketId, None, None, 'spot')
3879
- symbol = self.safe_string(market, 'symbol')
3880
- symbolsLength = 0
3881
- if symbols is not None:
3882
- symbolsLength = len(symbols)
3883
- if symbol is not None and (symbolsLength == 0 or self.in_array(symbols, symbol)):
3884
- tiers[symbol] = self.parse_market_leverage_tiers(response[marketId], market)
3885
- return tiers
3886
-
3887
3860
  def parse_market_leverage_tiers(self, item, market: Market = None):
3888
3861
  tiers = []
3889
3862
  minNotional = 0
@@ -692,117 +692,127 @@ class deribit(Exchange, ImplicitAPI):
692
692
  """
693
693
  retrieves data on all markets for deribit
694
694
  :see: https://docs.deribit.com/#public-get_currencies
695
+ :see: https://docs.deribit.com/#public-get_instruments
695
696
  :param dict [params]: extra parameters specific to the exchange API endpoint
696
697
  :returns dict[]: an array of objects representing market data
697
698
  """
698
- currenciesResponse = await self.publicGetGetCurrencies(params)
699
- #
700
- # {
701
- # "jsonrpc": "2.0",
702
- # "result": [
703
- # {
704
- # "withdrawal_priorities": [
705
- # {value: 0.15, name: "very_low"},
706
- # {value: 1.5, name: "very_high"},
707
- # ],
708
- # "withdrawal_fee": 0.0005,
709
- # "min_withdrawal_fee": 0.0005,
710
- # "min_confirmations": 1,
711
- # "fee_precision": 4,
712
- # "currency_long": "Bitcoin",
713
- # "currency": "BTC",
714
- # "coin_type": "BITCOIN"
715
- # }
716
- # ],
717
- # "usIn": 1583761588590479,
718
- # "usOut": 1583761588590544,
719
- # "usDiff": 65,
720
- # "testnet": False
721
- # }
722
- #
723
- parsedMarkets = {}
724
- currenciesResult = self.safe_value(currenciesResponse, 'result', [])
699
+ instrumentsResponses = []
725
700
  result = []
726
- for i in range(0, len(currenciesResult)):
727
- currencyId = self.safe_string(currenciesResult[i], 'currency')
728
- request = {
729
- 'currency': currencyId,
730
- }
731
- instrumentsResponse = await self.publicGetGetInstruments(self.extend(request, params))
701
+ parsedMarkets = {}
702
+ fetchAllMarkets = None
703
+ fetchAllMarkets, params = self.handle_option_and_params(params, 'fetchMarkets', 'fetchAllMarkets', True)
704
+ if fetchAllMarkets:
705
+ instrumentsResponse = await self.publicGetGetInstruments(params)
706
+ instrumentsResponses.append(instrumentsResponse)
707
+ else:
708
+ currenciesResponse = await self.publicGetGetCurrencies(params)
732
709
  #
733
710
  # {
734
- # "jsonrpc":"2.0",
735
- # "result":[
736
- # {
737
- # "tick_size":0.0005,
738
- # "taker_commission":0.0003,
739
- # "strike":52000.0,
740
- # "settlement_period":"month",
741
- # "settlement_currency":"BTC",
742
- # "quote_currency":"BTC",
743
- # "option_type":"put", # put, call
744
- # "min_trade_amount":0.1,
745
- # "maker_commission":0.0003,
746
- # "kind":"option",
747
- # "is_active":true,
748
- # "instrument_name":"BTC-24JUN22-52000-P",
749
- # "expiration_timestamp":1656057600000,
750
- # "creation_timestamp":1648199543000,
751
- # "counter_currency":"USD",
752
- # "contract_size":1.0,
753
- # "block_trade_commission":0.0003,
754
- # "base_currency":"BTC"
755
- # },
711
+ # "jsonrpc": "2.0",
712
+ # "result": [
756
713
  # {
757
- # "tick_size":0.5,
758
- # "taker_commission":0.0005,
759
- # "settlement_period":"month", # month, week
760
- # "settlement_currency":"BTC",
761
- # "quote_currency":"USD",
762
- # "min_trade_amount":10.0,
763
- # "max_liquidation_commission":0.0075,
764
- # "max_leverage":50,
765
- # "maker_commission":0.0,
766
- # "kind":"future",
767
- # "is_active":true,
768
- # "instrument_name":"BTC-27MAY22",
769
- # "future_type":"reversed",
770
- # "expiration_timestamp":1653638400000,
771
- # "creation_timestamp":1648195209000,
772
- # "counter_currency":"USD",
773
- # "contract_size":10.0,
774
- # "block_trade_commission":0.0001,
775
- # "base_currency":"BTC"
776
- # },
777
- # {
778
- # "tick_size":0.5,
779
- # "taker_commission":0.0005,
780
- # "settlement_period":"perpetual",
781
- # "settlement_currency":"BTC",
782
- # "quote_currency":"USD",
783
- # "min_trade_amount":10.0,
784
- # "max_liquidation_commission":0.0075,
785
- # "max_leverage":50,
786
- # "maker_commission":0.0,
787
- # "kind":"future",
788
- # "is_active":true,
789
- # "instrument_name":"BTC-PERPETUAL",
790
- # "future_type":"reversed",
791
- # "expiration_timestamp":32503708800000,
792
- # "creation_timestamp":1534242287000,
793
- # "counter_currency":"USD",
794
- # "contract_size":10.0,
795
- # "block_trade_commission":0.0001,
796
- # "base_currency":"BTC"
797
- # },
714
+ # "withdrawal_priorities": [
715
+ # {value: 0.15, name: "very_low"},
716
+ # {value: 1.5, name: "very_high"},
717
+ # ],
718
+ # "withdrawal_fee": 0.0005,
719
+ # "min_withdrawal_fee": 0.0005,
720
+ # "min_confirmations": 1,
721
+ # "fee_precision": 4,
722
+ # "currency_long": "Bitcoin",
723
+ # "currency": "BTC",
724
+ # "coin_type": "BITCOIN"
725
+ # }
798
726
  # ],
799
- # "usIn":1648691472831791,
800
- # "usOut":1648691472831896,
801
- # "usDiff":105,
802
- # "testnet":false
727
+ # "usIn": 1583761588590479,
728
+ # "usOut": 1583761588590544,
729
+ # "usDiff": 65,
730
+ # "testnet": False
803
731
  # }
804
732
  #
805
- instrumentsResult = self.safe_value(instrumentsResponse, 'result', [])
733
+ currenciesResult = self.safe_value(currenciesResponse, 'result', [])
734
+ for i in range(0, len(currenciesResult)):
735
+ currencyId = self.safe_string(currenciesResult[i], 'currency')
736
+ request = {
737
+ 'currency': currencyId,
738
+ }
739
+ instrumentsResponse = await self.publicGetGetInstruments(self.extend(request, params))
740
+ #
741
+ # {
742
+ # "jsonrpc":"2.0",
743
+ # "result":[
744
+ # {
745
+ # "tick_size":0.0005,
746
+ # "taker_commission":0.0003,
747
+ # "strike":52000.0,
748
+ # "settlement_period":"month",
749
+ # "settlement_currency":"BTC",
750
+ # "quote_currency":"BTC",
751
+ # "option_type":"put", # put, call
752
+ # "min_trade_amount":0.1,
753
+ # "maker_commission":0.0003,
754
+ # "kind":"option",
755
+ # "is_active":true,
756
+ # "instrument_name":"BTC-24JUN22-52000-P",
757
+ # "expiration_timestamp":1656057600000,
758
+ # "creation_timestamp":1648199543000,
759
+ # "counter_currency":"USD",
760
+ # "contract_size":1.0,
761
+ # "block_trade_commission":0.0003,
762
+ # "base_currency":"BTC"
763
+ # },
764
+ # {
765
+ # "tick_size":0.5,
766
+ # "taker_commission":0.0005,
767
+ # "settlement_period":"month", # month, week
768
+ # "settlement_currency":"BTC",
769
+ # "quote_currency":"USD",
770
+ # "min_trade_amount":10.0,
771
+ # "max_liquidation_commission":0.0075,
772
+ # "max_leverage":50,
773
+ # "maker_commission":0.0,
774
+ # "kind":"future",
775
+ # "is_active":true,
776
+ # "instrument_name":"BTC-27MAY22",
777
+ # "future_type":"reversed",
778
+ # "expiration_timestamp":1653638400000,
779
+ # "creation_timestamp":1648195209000,
780
+ # "counter_currency":"USD",
781
+ # "contract_size":10.0,
782
+ # "block_trade_commission":0.0001,
783
+ # "base_currency":"BTC"
784
+ # },
785
+ # {
786
+ # "tick_size":0.5,
787
+ # "taker_commission":0.0005,
788
+ # "settlement_period":"perpetual",
789
+ # "settlement_currency":"BTC",
790
+ # "quote_currency":"USD",
791
+ # "min_trade_amount":10.0,
792
+ # "max_liquidation_commission":0.0075,
793
+ # "max_leverage":50,
794
+ # "maker_commission":0.0,
795
+ # "kind":"future",
796
+ # "is_active":true,
797
+ # "instrument_name":"BTC-PERPETUAL",
798
+ # "future_type":"reversed",
799
+ # "expiration_timestamp":32503708800000,
800
+ # "creation_timestamp":1534242287000,
801
+ # "counter_currency":"USD",
802
+ # "contract_size":10.0,
803
+ # "block_trade_commission":0.0001,
804
+ # "base_currency":"BTC"
805
+ # },
806
+ # ],
807
+ # "usIn":1648691472831791,
808
+ # "usOut":1648691472831896,
809
+ # "usDiff":105,
810
+ # "testnet":false
811
+ # }
812
+ #
813
+ instrumentsResponses.append(instrumentsResponse)
814
+ for i in range(0, len(instrumentsResponses)):
815
+ instrumentsResult = self.safe_value(instrumentsResponses[i], 'result', [])
806
816
  for k in range(0, len(instrumentsResult)):
807
817
  market = instrumentsResult[k]
808
818
  kind = self.safe_string(market, 'kind')
@@ -3519,51 +3519,7 @@ class digifinex(Exchange, ImplicitAPI):
3519
3519
  #
3520
3520
  data = self.safe_value(response, 'data', [])
3521
3521
  symbols = self.market_symbols(symbols)
3522
- return self.parse_leverage_tiers(data, symbols, 'symbol')
3523
-
3524
- def parse_leverage_tiers(self, response, symbols: Strings = None, marketIdKey=None):
3525
- #
3526
- # [
3527
- # {
3528
- # "instrument_id": "BTCUSDTPERP",
3529
- # "type": "REAL",
3530
- # "contract_type": "PERPETUAL",
3531
- # "base_currency": "BTC",
3532
- # "quote_currency": "USDT",
3533
- # "clear_currency": "USDT",
3534
- # "contract_value": "0.001",
3535
- # "contract_value_currency": "BTC",
3536
- # "is_inverse": False,
3537
- # "is_trading": True,
3538
- # "status": "ONLINE",
3539
- # "price_precision": 1,
3540
- # "tick_size": "0.1",
3541
- # "min_order_amount": 1,
3542
- # "open_max_limits": [
3543
- # {
3544
- # "leverage": "50",
3545
- # "max_limit": "1000000"
3546
- # }
3547
- # ]
3548
- # },
3549
- # ]
3550
- #
3551
- tiers = {}
3552
- result = {}
3553
- for i in range(0, len(response)):
3554
- entry = response[i]
3555
- marketId = self.safe_string(entry, 'instrument_id')
3556
- market = self.safe_market(marketId)
3557
- symbol = self.safe_symbol(marketId, market)
3558
- symbolsLength = 0
3559
- tiers[symbol] = self.parse_market_leverage_tiers(response[i], market)
3560
- if symbols is not None:
3561
- symbolsLength = len(symbols)
3562
- if self.in_array(symbol, symbols):
3563
- result[symbol] = self.parse_market_leverage_tiers(response[i], market)
3564
- if symbol is not None and (symbolsLength == 0 or self.in_array(symbols, symbol)):
3565
- result[symbol] = self.parse_market_leverage_tiers(response[i], market)
3566
- return result
3522
+ return self.parse_leverage_tiers(data, symbols, 'instrument_id')
3567
3523
 
3568
3524
  async def fetch_market_leverage_tiers(self, symbol: str, params={}):
3569
3525
  """
@@ -2529,15 +2529,15 @@ class kraken(Exchange, ImplicitAPI):
2529
2529
  """
2530
2530
  fetch all open positions
2531
2531
  :see: https://docs.kraken.com/rest/#tag/Account-Data/operation/getOpenPositions
2532
- :param str[]|None symbols: not used by kraken fetchPositions()
2532
+ :param str[] [symbols]: not used by kraken fetchPositions()
2533
2533
  :param dict [params]: extra parameters specific to the exchange API endpoint
2534
2534
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
2535
2535
  """
2536
2536
  await self.load_markets()
2537
2537
  request = {
2538
2538
  # 'txid': 'comma delimited list of transaction ids to restrict output to',
2539
- # 'docalcs': False, # whether or not to include profit/loss calculations
2540
- # 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2539
+ 'docalcs': 'true', # whether or not to include profit/loss calculations
2540
+ 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2541
2541
  }
2542
2542
  response = await self.privatePostOpenPositions(self.extend(request, params))
2543
2543
  #
@@ -2585,9 +2585,58 @@ class kraken(Exchange, ImplicitAPI):
2585
2585
  # ]
2586
2586
  # }
2587
2587
  #
2588
- result = self.safe_value(response, 'result')
2589
- # todo unify parsePosition/parsePositions
2590
- return result
2588
+ symbols = self.market_symbols(symbols)
2589
+ result = self.safe_list(response, 'result')
2590
+ results = self.parse_positions(result, symbols)
2591
+ return self.filter_by_array_positions(results, 'symbol', symbols, False)
2592
+
2593
+ def parse_position(self, position, market: Market = None):
2594
+ #
2595
+ # {
2596
+ # "pair": "ETHUSDT",
2597
+ # "positions": "1",
2598
+ # "type": "buy",
2599
+ # "leverage": "2.00000",
2600
+ # "cost": "28.49800",
2601
+ # "fee": "0.07979",
2602
+ # "vol": "0.02000000",
2603
+ # "vol_closed": "0.00000000",
2604
+ # "margin": "14.24900"
2605
+ # }
2606
+ #
2607
+ marketId = self.safe_string(position, 'pair')
2608
+ rawSide = self.safe_string(position, 'type')
2609
+ side = 'long' if (rawSide == 'buy') else 'short'
2610
+ return self.safe_position({
2611
+ 'info': position,
2612
+ 'id': None,
2613
+ 'symbol': self.safe_symbol(marketId, market),
2614
+ 'notional': None,
2615
+ 'marginMode': None,
2616
+ 'liquidationPrice': None,
2617
+ 'entryPrice': None,
2618
+ 'unrealizedPnl': self.safe_number(position, 'net'),
2619
+ 'realizedPnl': None,
2620
+ 'percentage': None,
2621
+ 'contracts': self.safe_number(position, 'vol'),
2622
+ 'contractSize': None,
2623
+ 'markPrice': None,
2624
+ 'lastPrice': None,
2625
+ 'side': side,
2626
+ 'hedged': None,
2627
+ 'timestamp': None,
2628
+ 'datetime': None,
2629
+ 'lastUpdateTimestamp': None,
2630
+ 'maintenanceMargin': None,
2631
+ 'maintenanceMarginPercentage': None,
2632
+ 'collateral': None,
2633
+ 'initialMargin': self.safe_number(position, 'margin'),
2634
+ 'initialMarginPercentage': None,
2635
+ 'leverage': self.safe_number(position, 'leverage'),
2636
+ 'marginRatio': None,
2637
+ 'stopLossPrice': None,
2638
+ 'takeProfitPrice': None,
2639
+ })
2591
2640
 
2592
2641
  def parse_account_type(self, account):
2593
2642
  accountByType = {
@@ -1404,10 +1404,9 @@ class probit(Exchange, ImplicitAPI):
1404
1404
  result = await self.fetch_transactions(code, since, limit, self.extend(request, params))
1405
1405
  return result
1406
1406
 
1407
- async def fetch_transactions(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1407
+ async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1408
1408
  """
1409
- * @deprecated
1410
- use fetchDepositsWithdrawals instead
1409
+ fetch history of deposits and withdrawals
1411
1410
  :see: https://docs-en.probit.com/reference/transferpayment
1412
1411
  :param str code: unified currency code
1413
1412
  :param int [since]: the earliest time in ms to fetch transactions for
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.93'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3441,18 +3441,33 @@ class Exchange(object):
3441
3441
  sorted = self.sort_by(results, 0)
3442
3442
  return self.filter_by_since_limit(sorted, since, limit, 0)
3443
3443
 
3444
- def parse_leverage_tiers(self, response: List[object], symbols: List[str] = None, marketIdKey=None):
3444
+ def parse_leverage_tiers(self, response: Any, symbols: List[str] = None, marketIdKey=None):
3445
3445
  # marketIdKey should only be None when response is a dictionary
3446
3446
  symbols = self.market_symbols(symbols)
3447
3447
  tiers = {}
3448
- for i in range(0, len(response)):
3449
- item = response[i]
3450
- id = self.safe_string(item, marketIdKey)
3451
- market = self.safe_market(id, None, None, 'swap')
3452
- symbol = market['symbol']
3453
- contract = self.safe_bool(market, 'contract', False)
3454
- if contract and ((symbols is None) or self.in_array(symbol, symbols)):
3455
- tiers[symbol] = self.parse_market_leverage_tiers(item, market)
3448
+ symbolsLength = 0
3449
+ if symbols is not None:
3450
+ symbolsLength = len(symbols)
3451
+ noSymbols = (symbols is None) or (symbolsLength == 0)
3452
+ if isinstance(response, list):
3453
+ for i in range(0, len(response)):
3454
+ item = response[i]
3455
+ id = self.safe_string(item, marketIdKey)
3456
+ market = self.safe_market(id, None, None, 'swap')
3457
+ symbol = market['symbol']
3458
+ contract = self.safe_bool(market, 'contract', False)
3459
+ if contract and (noSymbols or self.in_array(symbol, symbols)):
3460
+ tiers[symbol] = self.parse_market_leverage_tiers(item, market)
3461
+ else:
3462
+ keys = list(response.keys())
3463
+ for i in range(0, len(keys)):
3464
+ marketId = keys[i]
3465
+ item = response[marketId]
3466
+ market = self.safe_market(marketId, None, None, 'swap')
3467
+ symbol = market['symbol']
3468
+ contract = self.safe_bool(market, 'contract', False)
3469
+ if contract and (noSymbols or self.in_array(symbol, symbols)):
3470
+ tiers[symbol] = self.parse_market_leverage_tiers(item, market)
3456
3471
  return tiers
3457
3472
 
3458
3473
  def load_trading_limits(self, symbols: List[str] = None, reload=False, params={}):
@@ -5452,7 +5467,7 @@ class Exchange(object):
5452
5467
  return reconstructedDate
5453
5468
 
5454
5469
  def convert_market_id_expire_date(self, date: str):
5455
- # parse 19JAN24 to 240119
5470
+ # parse 03JAN24 to 240103
5456
5471
  monthMappping = {
5457
5472
  'JAN': '01',
5458
5473
  'FEB': '02',
@@ -5467,6 +5482,9 @@ class Exchange(object):
5467
5482
  'NOV': '11',
5468
5483
  'DEC': '12',
5469
5484
  }
5485
+ # if exchange omits first zero and provides i.e. '3JAN24' instead of '03JAN24'
5486
+ if len(date) == 6:
5487
+ date = '0' + date
5470
5488
  year = date[0:2]
5471
5489
  monthName = date[2:5]
5472
5490
  month = self.safe_string(monthMappping, monthName)
ccxt/bybit.py CHANGED
@@ -384,6 +384,7 @@ class bybit(Exchange, ImplicitAPI):
384
384
  'v5/broker/earning-record': 5,
385
385
  'v5/broker/earnings-info': 5,
386
386
  'v5/broker/account-info': 5,
387
+ 'v5/broker/asset/query-sub-member-deposit-record': 10,
387
388
  },
388
389
  'post': {
389
390
  # Legacy option USDC
ccxt/coinex.py CHANGED
@@ -3856,33 +3856,6 @@ class coinex(Exchange, ImplicitAPI):
3856
3856
  data = self.safe_value(response, 'data', {})
3857
3857
  return self.parse_leverage_tiers(data, symbols, None)
3858
3858
 
3859
- def parse_leverage_tiers(self, response, symbols: Strings = None, marketIdKey=None):
3860
- #
3861
- # {
3862
- # "BTCUSD": [
3863
- # ["500001", "100", "0.005"],
3864
- # ["1000001", "50", "0.01"],
3865
- # ["2000001", "30", "0.015"],
3866
- # ["5000001", "20", "0.02"],
3867
- # ["10000001", "15", "0.025"],
3868
- # ["20000001", "10", "0.03"]
3869
- # ],
3870
- # ...
3871
- # }
3872
- #
3873
- tiers = {}
3874
- marketIds = list(response.keys())
3875
- for i in range(0, len(marketIds)):
3876
- marketId = marketIds[i]
3877
- market = self.safe_market(marketId, None, None, 'spot')
3878
- symbol = self.safe_string(market, 'symbol')
3879
- symbolsLength = 0
3880
- if symbols is not None:
3881
- symbolsLength = len(symbols)
3882
- if symbol is not None and (symbolsLength == 0 or self.in_array(symbols, symbol)):
3883
- tiers[symbol] = self.parse_market_leverage_tiers(response[marketId], market)
3884
- return tiers
3885
-
3886
3859
  def parse_market_leverage_tiers(self, item, market: Market = None):
3887
3860
  tiers = []
3888
3861
  minNotional = 0
ccxt/deribit.py CHANGED
@@ -692,117 +692,127 @@ class deribit(Exchange, ImplicitAPI):
692
692
  """
693
693
  retrieves data on all markets for deribit
694
694
  :see: https://docs.deribit.com/#public-get_currencies
695
+ :see: https://docs.deribit.com/#public-get_instruments
695
696
  :param dict [params]: extra parameters specific to the exchange API endpoint
696
697
  :returns dict[]: an array of objects representing market data
697
698
  """
698
- currenciesResponse = self.publicGetGetCurrencies(params)
699
- #
700
- # {
701
- # "jsonrpc": "2.0",
702
- # "result": [
703
- # {
704
- # "withdrawal_priorities": [
705
- # {value: 0.15, name: "very_low"},
706
- # {value: 1.5, name: "very_high"},
707
- # ],
708
- # "withdrawal_fee": 0.0005,
709
- # "min_withdrawal_fee": 0.0005,
710
- # "min_confirmations": 1,
711
- # "fee_precision": 4,
712
- # "currency_long": "Bitcoin",
713
- # "currency": "BTC",
714
- # "coin_type": "BITCOIN"
715
- # }
716
- # ],
717
- # "usIn": 1583761588590479,
718
- # "usOut": 1583761588590544,
719
- # "usDiff": 65,
720
- # "testnet": False
721
- # }
722
- #
723
- parsedMarkets = {}
724
- currenciesResult = self.safe_value(currenciesResponse, 'result', [])
699
+ instrumentsResponses = []
725
700
  result = []
726
- for i in range(0, len(currenciesResult)):
727
- currencyId = self.safe_string(currenciesResult[i], 'currency')
728
- request = {
729
- 'currency': currencyId,
730
- }
731
- instrumentsResponse = self.publicGetGetInstruments(self.extend(request, params))
701
+ parsedMarkets = {}
702
+ fetchAllMarkets = None
703
+ fetchAllMarkets, params = self.handle_option_and_params(params, 'fetchMarkets', 'fetchAllMarkets', True)
704
+ if fetchAllMarkets:
705
+ instrumentsResponse = self.publicGetGetInstruments(params)
706
+ instrumentsResponses.append(instrumentsResponse)
707
+ else:
708
+ currenciesResponse = self.publicGetGetCurrencies(params)
732
709
  #
733
710
  # {
734
- # "jsonrpc":"2.0",
735
- # "result":[
736
- # {
737
- # "tick_size":0.0005,
738
- # "taker_commission":0.0003,
739
- # "strike":52000.0,
740
- # "settlement_period":"month",
741
- # "settlement_currency":"BTC",
742
- # "quote_currency":"BTC",
743
- # "option_type":"put", # put, call
744
- # "min_trade_amount":0.1,
745
- # "maker_commission":0.0003,
746
- # "kind":"option",
747
- # "is_active":true,
748
- # "instrument_name":"BTC-24JUN22-52000-P",
749
- # "expiration_timestamp":1656057600000,
750
- # "creation_timestamp":1648199543000,
751
- # "counter_currency":"USD",
752
- # "contract_size":1.0,
753
- # "block_trade_commission":0.0003,
754
- # "base_currency":"BTC"
755
- # },
711
+ # "jsonrpc": "2.0",
712
+ # "result": [
756
713
  # {
757
- # "tick_size":0.5,
758
- # "taker_commission":0.0005,
759
- # "settlement_period":"month", # month, week
760
- # "settlement_currency":"BTC",
761
- # "quote_currency":"USD",
762
- # "min_trade_amount":10.0,
763
- # "max_liquidation_commission":0.0075,
764
- # "max_leverage":50,
765
- # "maker_commission":0.0,
766
- # "kind":"future",
767
- # "is_active":true,
768
- # "instrument_name":"BTC-27MAY22",
769
- # "future_type":"reversed",
770
- # "expiration_timestamp":1653638400000,
771
- # "creation_timestamp":1648195209000,
772
- # "counter_currency":"USD",
773
- # "contract_size":10.0,
774
- # "block_trade_commission":0.0001,
775
- # "base_currency":"BTC"
776
- # },
777
- # {
778
- # "tick_size":0.5,
779
- # "taker_commission":0.0005,
780
- # "settlement_period":"perpetual",
781
- # "settlement_currency":"BTC",
782
- # "quote_currency":"USD",
783
- # "min_trade_amount":10.0,
784
- # "max_liquidation_commission":0.0075,
785
- # "max_leverage":50,
786
- # "maker_commission":0.0,
787
- # "kind":"future",
788
- # "is_active":true,
789
- # "instrument_name":"BTC-PERPETUAL",
790
- # "future_type":"reversed",
791
- # "expiration_timestamp":32503708800000,
792
- # "creation_timestamp":1534242287000,
793
- # "counter_currency":"USD",
794
- # "contract_size":10.0,
795
- # "block_trade_commission":0.0001,
796
- # "base_currency":"BTC"
797
- # },
714
+ # "withdrawal_priorities": [
715
+ # {value: 0.15, name: "very_low"},
716
+ # {value: 1.5, name: "very_high"},
717
+ # ],
718
+ # "withdrawal_fee": 0.0005,
719
+ # "min_withdrawal_fee": 0.0005,
720
+ # "min_confirmations": 1,
721
+ # "fee_precision": 4,
722
+ # "currency_long": "Bitcoin",
723
+ # "currency": "BTC",
724
+ # "coin_type": "BITCOIN"
725
+ # }
798
726
  # ],
799
- # "usIn":1648691472831791,
800
- # "usOut":1648691472831896,
801
- # "usDiff":105,
802
- # "testnet":false
727
+ # "usIn": 1583761588590479,
728
+ # "usOut": 1583761588590544,
729
+ # "usDiff": 65,
730
+ # "testnet": False
803
731
  # }
804
732
  #
805
- instrumentsResult = self.safe_value(instrumentsResponse, 'result', [])
733
+ currenciesResult = self.safe_value(currenciesResponse, 'result', [])
734
+ for i in range(0, len(currenciesResult)):
735
+ currencyId = self.safe_string(currenciesResult[i], 'currency')
736
+ request = {
737
+ 'currency': currencyId,
738
+ }
739
+ instrumentsResponse = self.publicGetGetInstruments(self.extend(request, params))
740
+ #
741
+ # {
742
+ # "jsonrpc":"2.0",
743
+ # "result":[
744
+ # {
745
+ # "tick_size":0.0005,
746
+ # "taker_commission":0.0003,
747
+ # "strike":52000.0,
748
+ # "settlement_period":"month",
749
+ # "settlement_currency":"BTC",
750
+ # "quote_currency":"BTC",
751
+ # "option_type":"put", # put, call
752
+ # "min_trade_amount":0.1,
753
+ # "maker_commission":0.0003,
754
+ # "kind":"option",
755
+ # "is_active":true,
756
+ # "instrument_name":"BTC-24JUN22-52000-P",
757
+ # "expiration_timestamp":1656057600000,
758
+ # "creation_timestamp":1648199543000,
759
+ # "counter_currency":"USD",
760
+ # "contract_size":1.0,
761
+ # "block_trade_commission":0.0003,
762
+ # "base_currency":"BTC"
763
+ # },
764
+ # {
765
+ # "tick_size":0.5,
766
+ # "taker_commission":0.0005,
767
+ # "settlement_period":"month", # month, week
768
+ # "settlement_currency":"BTC",
769
+ # "quote_currency":"USD",
770
+ # "min_trade_amount":10.0,
771
+ # "max_liquidation_commission":0.0075,
772
+ # "max_leverage":50,
773
+ # "maker_commission":0.0,
774
+ # "kind":"future",
775
+ # "is_active":true,
776
+ # "instrument_name":"BTC-27MAY22",
777
+ # "future_type":"reversed",
778
+ # "expiration_timestamp":1653638400000,
779
+ # "creation_timestamp":1648195209000,
780
+ # "counter_currency":"USD",
781
+ # "contract_size":10.0,
782
+ # "block_trade_commission":0.0001,
783
+ # "base_currency":"BTC"
784
+ # },
785
+ # {
786
+ # "tick_size":0.5,
787
+ # "taker_commission":0.0005,
788
+ # "settlement_period":"perpetual",
789
+ # "settlement_currency":"BTC",
790
+ # "quote_currency":"USD",
791
+ # "min_trade_amount":10.0,
792
+ # "max_liquidation_commission":0.0075,
793
+ # "max_leverage":50,
794
+ # "maker_commission":0.0,
795
+ # "kind":"future",
796
+ # "is_active":true,
797
+ # "instrument_name":"BTC-PERPETUAL",
798
+ # "future_type":"reversed",
799
+ # "expiration_timestamp":32503708800000,
800
+ # "creation_timestamp":1534242287000,
801
+ # "counter_currency":"USD",
802
+ # "contract_size":10.0,
803
+ # "block_trade_commission":0.0001,
804
+ # "base_currency":"BTC"
805
+ # },
806
+ # ],
807
+ # "usIn":1648691472831791,
808
+ # "usOut":1648691472831896,
809
+ # "usDiff":105,
810
+ # "testnet":false
811
+ # }
812
+ #
813
+ instrumentsResponses.append(instrumentsResponse)
814
+ for i in range(0, len(instrumentsResponses)):
815
+ instrumentsResult = self.safe_value(instrumentsResponses[i], 'result', [])
806
816
  for k in range(0, len(instrumentsResult)):
807
817
  market = instrumentsResult[k]
808
818
  kind = self.safe_string(market, 'kind')
ccxt/digifinex.py CHANGED
@@ -3518,51 +3518,7 @@ class digifinex(Exchange, ImplicitAPI):
3518
3518
  #
3519
3519
  data = self.safe_value(response, 'data', [])
3520
3520
  symbols = self.market_symbols(symbols)
3521
- return self.parse_leverage_tiers(data, symbols, 'symbol')
3522
-
3523
- def parse_leverage_tiers(self, response, symbols: Strings = None, marketIdKey=None):
3524
- #
3525
- # [
3526
- # {
3527
- # "instrument_id": "BTCUSDTPERP",
3528
- # "type": "REAL",
3529
- # "contract_type": "PERPETUAL",
3530
- # "base_currency": "BTC",
3531
- # "quote_currency": "USDT",
3532
- # "clear_currency": "USDT",
3533
- # "contract_value": "0.001",
3534
- # "contract_value_currency": "BTC",
3535
- # "is_inverse": False,
3536
- # "is_trading": True,
3537
- # "status": "ONLINE",
3538
- # "price_precision": 1,
3539
- # "tick_size": "0.1",
3540
- # "min_order_amount": 1,
3541
- # "open_max_limits": [
3542
- # {
3543
- # "leverage": "50",
3544
- # "max_limit": "1000000"
3545
- # }
3546
- # ]
3547
- # },
3548
- # ]
3549
- #
3550
- tiers = {}
3551
- result = {}
3552
- for i in range(0, len(response)):
3553
- entry = response[i]
3554
- marketId = self.safe_string(entry, 'instrument_id')
3555
- market = self.safe_market(marketId)
3556
- symbol = self.safe_symbol(marketId, market)
3557
- symbolsLength = 0
3558
- tiers[symbol] = self.parse_market_leverage_tiers(response[i], market)
3559
- if symbols is not None:
3560
- symbolsLength = len(symbols)
3561
- if self.in_array(symbol, symbols):
3562
- result[symbol] = self.parse_market_leverage_tiers(response[i], market)
3563
- if symbol is not None and (symbolsLength == 0 or self.in_array(symbols, symbol)):
3564
- result[symbol] = self.parse_market_leverage_tiers(response[i], market)
3565
- return result
3521
+ return self.parse_leverage_tiers(data, symbols, 'instrument_id')
3566
3522
 
3567
3523
  def fetch_market_leverage_tiers(self, symbol: str, params={}):
3568
3524
  """
ccxt/kraken.py CHANGED
@@ -2529,15 +2529,15 @@ class kraken(Exchange, ImplicitAPI):
2529
2529
  """
2530
2530
  fetch all open positions
2531
2531
  :see: https://docs.kraken.com/rest/#tag/Account-Data/operation/getOpenPositions
2532
- :param str[]|None symbols: not used by kraken fetchPositions()
2532
+ :param str[] [symbols]: not used by kraken fetchPositions()
2533
2533
  :param dict [params]: extra parameters specific to the exchange API endpoint
2534
2534
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
2535
2535
  """
2536
2536
  self.load_markets()
2537
2537
  request = {
2538
2538
  # 'txid': 'comma delimited list of transaction ids to restrict output to',
2539
- # 'docalcs': False, # whether or not to include profit/loss calculations
2540
- # 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2539
+ 'docalcs': 'true', # whether or not to include profit/loss calculations
2540
+ 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2541
2541
  }
2542
2542
  response = self.privatePostOpenPositions(self.extend(request, params))
2543
2543
  #
@@ -2585,9 +2585,58 @@ class kraken(Exchange, ImplicitAPI):
2585
2585
  # ]
2586
2586
  # }
2587
2587
  #
2588
- result = self.safe_value(response, 'result')
2589
- # todo unify parsePosition/parsePositions
2590
- return result
2588
+ symbols = self.market_symbols(symbols)
2589
+ result = self.safe_list(response, 'result')
2590
+ results = self.parse_positions(result, symbols)
2591
+ return self.filter_by_array_positions(results, 'symbol', symbols, False)
2592
+
2593
+ def parse_position(self, position, market: Market = None):
2594
+ #
2595
+ # {
2596
+ # "pair": "ETHUSDT",
2597
+ # "positions": "1",
2598
+ # "type": "buy",
2599
+ # "leverage": "2.00000",
2600
+ # "cost": "28.49800",
2601
+ # "fee": "0.07979",
2602
+ # "vol": "0.02000000",
2603
+ # "vol_closed": "0.00000000",
2604
+ # "margin": "14.24900"
2605
+ # }
2606
+ #
2607
+ marketId = self.safe_string(position, 'pair')
2608
+ rawSide = self.safe_string(position, 'type')
2609
+ side = 'long' if (rawSide == 'buy') else 'short'
2610
+ return self.safe_position({
2611
+ 'info': position,
2612
+ 'id': None,
2613
+ 'symbol': self.safe_symbol(marketId, market),
2614
+ 'notional': None,
2615
+ 'marginMode': None,
2616
+ 'liquidationPrice': None,
2617
+ 'entryPrice': None,
2618
+ 'unrealizedPnl': self.safe_number(position, 'net'),
2619
+ 'realizedPnl': None,
2620
+ 'percentage': None,
2621
+ 'contracts': self.safe_number(position, 'vol'),
2622
+ 'contractSize': None,
2623
+ 'markPrice': None,
2624
+ 'lastPrice': None,
2625
+ 'side': side,
2626
+ 'hedged': None,
2627
+ 'timestamp': None,
2628
+ 'datetime': None,
2629
+ 'lastUpdateTimestamp': None,
2630
+ 'maintenanceMargin': None,
2631
+ 'maintenanceMarginPercentage': None,
2632
+ 'collateral': None,
2633
+ 'initialMargin': self.safe_number(position, 'margin'),
2634
+ 'initialMarginPercentage': None,
2635
+ 'leverage': self.safe_number(position, 'leverage'),
2636
+ 'marginRatio': None,
2637
+ 'stopLossPrice': None,
2638
+ 'takeProfitPrice': None,
2639
+ })
2591
2640
 
2592
2641
  def parse_account_type(self, account):
2593
2642
  accountByType = {
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.93'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/probit.py CHANGED
@@ -1404,10 +1404,9 @@ class probit(Exchange, ImplicitAPI):
1404
1404
  result = self.fetch_transactions(code, since, limit, self.extend(request, params))
1405
1405
  return result
1406
1406
 
1407
- def fetch_transactions(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1407
+ def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1408
1408
  """
1409
- * @deprecated
1410
- use fetchDepositsWithdrawals instead
1409
+ fetch history of deposits and withdrawals
1411
1410
  :see: https://docs-en.probit.com/reference/transferpayment
1412
1411
  :param str code: unified currency code
1413
1412
  :param int [since]: the earliest time in ms to fetch transactions for
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.91
3
+ Version: 4.2.93
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
@@ -261,13 +261,13 @@ console.log(version, Object.keys(exchanges));
261
261
 
262
262
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
263
263
 
264
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.91/dist/ccxt.browser.js
265
- * unpkg: https://unpkg.com/ccxt@4.2.91/dist/ccxt.browser.js
264
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.93/dist/ccxt.browser.js
265
+ * unpkg: https://unpkg.com/ccxt@4.2.93/dist/ccxt.browser.js
266
266
 
267
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.
268
268
 
269
269
  ```HTML
270
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.91/dist/ccxt.browser.js"></script>
270
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.93/dist/ccxt.browser.js"></script>
271
271
  ```
272
272
 
273
273
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=neT9S1nb0M_7Bf2oM-rgaoQGQ-UJ-KrxMbcWyhGxTgQ,15656
1
+ ccxt/__init__.py,sha256=tewuItHg-1CDVBxKMatuVFaMw0S-9_pIyEH8ZWTm0W0,15656
2
2
  ccxt/ace.py,sha256=IsKHO7u3J8rJT9wCMdtwlmwPdtjnAwC9ZTMC0uNfs9A,41420
3
3
  ccxt/alpaca.py,sha256=6P2wAEGJQOjjoKQbzv1KvSuZvEZmOX987a1NqB7z9mk,46908
4
4
  ccxt/ascendex.py,sha256=_n4XN1S8WcCVN5pj9N6YvkFRJxEB2rycg4EP4PqlSyk,151300
@@ -35,13 +35,13 @@ ccxt/btcalpha.py,sha256=0np0RXEUcYJurfA3UWBiZXKHsvIbfjl_qVcx58sPwCY,36550
35
35
  ccxt/btcbox.py,sha256=XBgl9nPQUr0eL_El9-K4AuFODEXbesU6F0euVbvUs04,23341
36
36
  ccxt/btcmarkets.py,sha256=XOoDrXKNLvqMbNTUmTNMkQzsyy7oOh_Dw1USiJ8WjEs,51328
37
37
  ccxt/btcturk.py,sha256=p-_zpUEu0aIK5kR4PXQKnAqr9P0ajFsaszyFylUOHeE,36506
38
- ccxt/bybit.py,sha256=3Rqzeswv8dZjXCUIw5ppiPy6APGB0RhBge8fE0q9F_I,401556
38
+ ccxt/bybit.py,sha256=yU-28vJtKx5NnUh0BfrPSJ3jNT_AekZs9XgW1u2lGec,401635
39
39
  ccxt/cex.py,sha256=K8QEAUcjEN-xZgjt8D5_jhlagxbJHl9TUTQbPARhnkA,69653
40
40
  ccxt/coinbase.py,sha256=-ShTkuNwMInF48rvEAft_OUKNN4iUPf9FPvywCb-sVI,178431
41
41
  ccxt/coinbaseinternational.py,sha256=l4tuPmh0w-SB5sOfCn3MTihbeTY53o7KW8NgeP9bg4w,87123
42
42
  ccxt/coinbasepro.py,sha256=yn8B_KwYGvnutoxMhRvnZRpMDbSt1x0SOWav2ShEH2s,78377
43
43
  ccxt/coincheck.py,sha256=tPY3wITeTt4j0T760oMqDlIVPWBH4UEi2DlaDLoLDC8,35513
44
- ccxt/coinex.py,sha256=ubCC_ecrcotMa6En8q5t4VR6uaM9h8ScJWpSmh1X9E4,247699
44
+ ccxt/coinex.py,sha256=7GL8Km4Ire-h7oLOk1g0mMU7b5EiNlcSjC_cu1Use-g,246603
45
45
  ccxt/coinlist.py,sha256=NAxYBVv7HWlQsc1YMwmtSZQoLBbYSSkUn09kRRXmqKM,103001
46
46
  ccxt/coinmate.py,sha256=8Q6H48i3Ny-qGaV3B0YO90ADi3yy_LluYIKGq3N1mIM,45790
47
47
  ccxt/coinmetro.py,sha256=vmYo2m-s58gCaol0xvOtnANQsG8_vPSYUh0Tf36QBLw,80409
@@ -51,8 +51,8 @@ ccxt/coinspot.py,sha256=rtHhup6v6HbDCAVrZyVJJqOooJ_zoRWU0OqkEjLYL3E,23463
51
51
  ccxt/cryptocom.py,sha256=AJRC_mgzX29rnCv50ry2JzryU20qfrh_7VOWqRXFVjI,128158
52
52
  ccxt/currencycom.py,sha256=OS_TN2x2CoWvRY2e8iu16jtsu8etlN3nzwaWK6NpeLA,86759
53
53
  ccxt/delta.py,sha256=-AshKjjisVWkxxMaQJr9IucbuA3BIZcsjA4PIu6nDA0,150437
54
- ccxt/deribit.py,sha256=bwR31vFQfAkNgaLj473yHjQd-DlRyX1S4KdJ0IpoZ_I,159181
55
- ccxt/digifinex.py,sha256=4OKFvMON5swteCyQZ0AHsx0QMzEaje6J8aaTinD9E_4,169739
54
+ ccxt/deribit.py,sha256=cQKRHpmyRuJnGY-3pEXb-LEOxcWoxfpTxlQ5_NBqNh0,160139
55
+ ccxt/digifinex.py,sha256=7iczdV51dy7KnCf6dEHSuCTIPBNOyDdkIglHMgk6afI,167871
56
56
  ccxt/exmo.py,sha256=_fKoBuAA3PxFUi-Z4dZjf6rJwpavkJjmMoAlnTobw0c,114203
57
57
  ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
58
58
  ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
@@ -69,7 +69,7 @@ ccxt/hyperliquid.py,sha256=DWU4nZGKPxZmwhPMBsXWqIJAG6b_M2ly44sa2OelhSc,92412
69
69
  ccxt/idex.py,sha256=4DNXaCryJzhRi1bVg11oRC5SReloCOMS6sNSKo8F9LM,72809
70
70
  ccxt/independentreserve.py,sha256=nRprUlIbJ2ipFavUim5Ad46oYSEz8cpqFL1gg1hN-Mg,32024
71
71
  ccxt/indodax.py,sha256=xC7of6o3UWGfy3U6SNFEK_SKlkrFbLjJGut2fZyC53E,51779
72
- ccxt/kraken.py,sha256=e13dgYYhlw7g3UbDebZszxuLeAioTFijdkDj9MLXbQk,121984
72
+ ccxt/kraken.py,sha256=XQiEeTTo3TINMkLZbfOjYOdbk4kZmNvETnEzGpJTfY4,123935
73
73
  ccxt/krakenfutures.py,sha256=w3YaTs65H5mlodhRAcLsroCbzkRlb7XICkuq6bVPcWs,115673
74
74
  ccxt/kucoin.py,sha256=8b_D5-sx7FQwbw8K4BEs23d48QNLfDwnTu-STurs-Hs,214705
75
75
  ccxt/kucoinfutures.py,sha256=lvRBlOYs_sAt_xhJa_zUzy9vtNoGgl_zFgirrnjtjCM,118519
@@ -91,7 +91,7 @@ ccxt/paymium.py,sha256=2mBwmyT93k-dXBEKEix48G8PsA2IEN_5yScEM985Z10,24203
91
91
  ccxt/phemex.py,sha256=p_oRjd4F1VhNU00MQ0gSLThqNPaw6LmJUjGt8cGWE-0,218625
92
92
  ccxt/poloniex.py,sha256=cFrNzmNbjqy4bLB1CqqE9jPJToFTTiqMVkEB4eaJocw,101948
93
93
  ccxt/poloniexfutures.py,sha256=jsAT6LICUJrwZ-_6iptuXns3YiPzHIdeA_2l3iQGPJg,77370
94
- ccxt/probit.py,sha256=2l2PZ0eWhw92hyX57w9vGoqa2S_h1h6yNqKit2oWb9g,76218
94
+ ccxt/probit.py,sha256=-IZ7_QrnSdI7niuflXk3PiJA3OtMDD4urT64-ATxOUU,76208
95
95
  ccxt/timex.py,sha256=W-4ob8ZOr4Y9JeCqQLw5U6ftcj_hcIKRFcKFjfhQ6L8,71136
96
96
  ccxt/tokocrypto.py,sha256=rtWgCnMIvBPowsxqbXhhZLi2_B3D9RRLPlMVPHvOlgg,123002
97
97
  ccxt/tradeogre.py,sha256=dkEs8sDlEuUiSH1EsbUxgYiovjfepf5xJQgXj83kkCw,23761
@@ -140,7 +140,7 @@ ccxt/abstract/btcalpha.py,sha256=sbF4SAkTJq01QPQw4D2GMkKrPhKfFIsG-PNtMAC9WwU,138
140
140
  ccxt/abstract/btcbox.py,sha256=PtZ2DZyXaPVPCQ5VLa9AEIZ9S0Y-mPrIu6P9BnfJ7dg,849
141
141
  ccxt/abstract/btcmarkets.py,sha256=dQ2yTZ_8T2TEeAYIuKE0ATImbOLDLGSK7HbbBd8XVJQ,3690
142
142
  ccxt/abstract/btcturk.py,sha256=duM-QrB9MvGpopOtxkfbeYlY49bgvXQLiosRVmnQYFw,1777
143
- ccxt/abstract/bybit.py,sha256=ISfBJW7hb4C0HE0pD9DNfLFi70O5l4TPZeHNhqLZ5ic,48391
143
+ ccxt/abstract/bybit.py,sha256=8jxQZelzO8ew0BOF5Mu8KpvsOMOKlnWqya9J9hOL8Ic,48599
144
144
  ccxt/abstract/cex.py,sha256=Q0NJeDuJ4Kn_mtokYqBenhXWvLIiMSVTqbgbfcLGgv4,3311
145
145
  ccxt/abstract/coinbase.py,sha256=7vqrC4Xz0tAQrIulBh8ddLBAjzrOtCTiK_celZl9jDA,14395
146
146
  ccxt/abstract/coinbaseinternational.py,sha256=wf1fF31fQ1TAVSk1X4ju6LYQc7tHI1lN5nxRnhnzsbk,4770
@@ -207,7 +207,7 @@ ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
207
207
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
208
208
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
209
209
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
210
- ccxt/async_support/__init__.py,sha256=txlQ2mxycQl7_HaijbiTgp4hSjkQPtHtIP_RwBMzNIE,15409
210
+ ccxt/async_support/__init__.py,sha256=tJD5-0-S8TCGvMlCbvlalce_wNLwcDChU_--ij17xi4,15409
211
211
  ccxt/async_support/ace.py,sha256=IYTj0FJAAPvSrpgIpbzO6ftADPgLnQT1uk54MSSM7UA,41644
212
212
  ccxt/async_support/alpaca.py,sha256=Nsaff9RczBhiNF19RlqI6wggvEibV_2ICgB8H5Qiuck,47120
213
213
  ccxt/async_support/ascendex.py,sha256=vugf7rxYZka-ffxVycDnlXpqj5D9cdFVjkO4prlR204,152088
@@ -244,13 +244,13 @@ ccxt/async_support/btcalpha.py,sha256=dFDJZPeo7AkEu80ULoklUcgvhxR6GAaTq-VlMtN7d6
244
244
  ccxt/async_support/btcbox.py,sha256=pT_fg3eVRk4Qi2ymTyxozHBz4FZs0KcCrU3fmZ2L_r4,23535
245
245
  ccxt/async_support/btcmarkets.py,sha256=b6izd3cD8P3swetbESyX1N0qD3K0sZI7PX4qMjWmcTc,51678
246
246
  ccxt/async_support/btcturk.py,sha256=nz0nAY_whtiOupBWqdKjrYvpe6Ynu82b_SsB8kd5DC0,36724
247
- ccxt/async_support/bybit.py,sha256=5q38JImXo8Gffe4zbgFiHTDGQHJXiAcIloeoLOtUvtE,403300
247
+ ccxt/async_support/bybit.py,sha256=XvqnJqOnx-cq49_pPvvQULZprOnQd-X0qAZHswCSRG4,403379
248
248
  ccxt/async_support/cex.py,sha256=qVNevV8yMafQTMuvbeGtSeQLtQ069sux62h960pHDWA,70003
249
249
  ccxt/async_support/coinbase.py,sha256=0dGlfvNdkeeXXtjCogfg2Ml2sDT0oVfdP0MnzWrV61I,179388
250
250
  ccxt/async_support/coinbaseinternational.py,sha256=btvxx0HVXNZ4J2SyrRUetMxq0qEB2QrUKsxRAenwyJ8,87677
251
251
  ccxt/async_support/coinbasepro.py,sha256=MF5ALacohXgtM0I1g0XY_Ll6WimO82Wiyxxm-jMX858,78883
252
252
  ccxt/async_support/coincheck.py,sha256=QR6opDQdMbvXHlANLBZTMej3vyhqeVnnI1ezOJm29jU,35719
253
- ccxt/async_support/coinex.py,sha256=31HXT0F-96EucBqye31kmmHbld0SyP3kYtIPS9fCnK8,248969
253
+ ccxt/async_support/coinex.py,sha256=iv16ukku5t2WYgAUFG5eiuy_fE0hQKwqxj7I3HM6poc,247873
254
254
  ccxt/async_support/coinlist.py,sha256=0-hkddt1zUblt3Q5spO_jnhmAKVoJ6NkRAxNE9_WRAk,103489
255
255
  ccxt/async_support/coinmate.py,sha256=EP35E7xs9oW2txjLjyKAYgDlxtl3xxZTXcqtwfkYEuM,46056
256
256
  ccxt/async_support/coinmetro.py,sha256=I7ZmXVoZK-OcyMrqJ-a19NMmMuk81UoQk6UQtKKnXk4,80729
@@ -260,8 +260,8 @@ ccxt/async_support/coinspot.py,sha256=DqWK2WouFRRfchKlNFOAIhDcVK3pFfI-kHyg1BgH8P
260
260
  ccxt/async_support/cryptocom.py,sha256=Qr3xl9feyoy-Aw6ZtoAyXGhFM239r6DAIXJhiecMjCM,128712
261
261
  ccxt/async_support/currencycom.py,sha256=Kakjmk6UWO5J4f7XRvuHe1VLIBnceg6p6RPN7rWkiGs,87181
262
262
  ccxt/async_support/delta.py,sha256=RYBwnFLT0JJTtWkgi2Z6iFoeCw94JudLPGPM0gddzug,151045
263
- ccxt/async_support/deribit.py,sha256=Z5iNBTbp5VYmGDIP5mSBm86CyM4qBqKbZjVqSaFEA_E,159951
264
- ccxt/async_support/digifinex.py,sha256=BShByMLbMXHBHwd3i2chCMIeGQgYqXRRj85oJMBFBPg,170709
263
+ ccxt/async_support/deribit.py,sha256=6mACtC8xsebDGw4Y9ikgHCmPNSazeTjqqsplj0GcAtw,160915
264
+ ccxt/async_support/digifinex.py,sha256=kiArqJIPv6m1K2hVabfQ6h6o1XbCLwrH6fGBF29wodo,168841
265
265
  ccxt/async_support/exmo.py,sha256=tUaaWQHe6nb75UCckwdsODn2wQAb-XtFVbGyqRsRiHc,114835
266
266
  ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
267
267
  ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
@@ -278,7 +278,7 @@ ccxt/async_support/hyperliquid.py,sha256=XVu7E1x3MgU6LM5WUWXCQs0i1eJD7PdBJi_7hDv
278
278
  ccxt/async_support/idex.py,sha256=hEbHV8Zh_K0p_5PcZdAMxgB0tMt5J3aud7WRlCbIqPw,73285
279
279
  ccxt/async_support/independentreserve.py,sha256=02gCggRgFSmIdJyG5vO-R2JXNbB3u6U1TH2cfdckhdU,32284
280
280
  ccxt/async_support/indodax.py,sha256=A2-LUvN4BgGOu_IOnsCLjyBTQBXnxCNPJWLcuy2oyPQ,52087
281
- ccxt/async_support/kraken.py,sha256=GtmIDH1mJnqUa1HssXo7n_W4oDeZOTDGqbOPHo2Z-Ko,122568
281
+ ccxt/async_support/kraken.py,sha256=nqAxbi-vkfXetjVV7PgMhgIeNxdome3MgIlZnimEOc0,124519
282
282
  ccxt/async_support/krakenfutures.py,sha256=LxUUDt8BH69IRbtFYCSsyKZhW_QHEvhqFnAbdYNmzsA,116143
283
283
  ccxt/async_support/kucoin.py,sha256=zPl33pupehmSYWdFFLf8bz5GWkpJvQXY7MBijC1CZtM,215759
284
284
  ccxt/async_support/kucoinfutures.py,sha256=eQQiAmU-nUgnOXZt053cGuK4kfpW3Yt23iGc_87kgK8,119121
@@ -300,7 +300,7 @@ ccxt/async_support/paymium.py,sha256=3P1J9OcDOqQKG5fUs6Xte9Xu8NB5lWu-OD-AHHGZbkM
300
300
  ccxt/async_support/phemex.py,sha256=IynkDddWB10XKtf7VIg5-g-mCvrUUG5mw4sjJk4pYwY,219437
301
301
  ccxt/async_support/poloniex.py,sha256=LZ4G2R_EGQ7oWFnO_izdvnF5GrN4tvRjA_qO_P3v-wI,102496
302
302
  ccxt/async_support/poloniexfutures.py,sha256=Bo51Go_Rq-xXkVBBzXKKtqK9l_MF-CyUaAxuPVT1nDs,77756
303
- ccxt/async_support/probit.py,sha256=eH16Qe6dApBGu40DE9l_ca8dtJ76gLzN_pr91eVWdtA,76610
303
+ ccxt/async_support/probit.py,sha256=w0HW32EcHNhE6wbWcVv3UrjAEl2ZnWEFHFJjaxhqI2I,76600
304
304
  ccxt/async_support/timex.py,sha256=msj259w_qjgEyStzin06Ov3BoHGphxFD0VolSI_-YjA,71498
305
305
  ccxt/async_support/tokocrypto.py,sha256=2tU4n-9o0ywWSzEDP77AlezB4A1vNbQt7cuC_7Ic9hA,123364
306
306
  ccxt/async_support/tradeogre.py,sha256=hYuh7ar9LMpUcFcVaiCcBebfnjEB7vovHBXAfUpFk5E,23955
@@ -313,7 +313,7 @@ ccxt/async_support/yobit.py,sha256=gNE-7Yc2a2ScelR8ZWFGfhRzCr9DHcAdlI62LFjXvnI,5
313
313
  ccxt/async_support/zaif.py,sha256=PaHcaNijKkhocrw6DZoSBNUjBOLNlkUYtsJvPAqkx68,28134
314
314
  ccxt/async_support/zonda.py,sha256=0o0Q1rFuTbdhm8m_rlo8D1qLsgZhhBqnefsHi0rVA_A,80866
315
315
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
316
- ccxt/async_support/base/exchange.py,sha256=8I8IL2h_JxdLCC-zH86PQvGzndQ153bq5sC7N-R5mQ8,91193
316
+ ccxt/async_support/base/exchange.py,sha256=gvfU73y6hCkb7QsG5nzavCUNtlA3wiX936BaR1xjk0A,91193
317
317
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
318
318
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
319
319
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
@@ -327,10 +327,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
327
327
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
328
328
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
329
329
  ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
330
- ccxt/base/exchange.py,sha256=WKMwfFuC4AglP6Ma0QTtPQRbwYrxwyaFcM2ruPSz2UQ,253647
330
+ ccxt/base/exchange.py,sha256=hkXDbZ_G9ZfJH2IpLmE7_QZLgujfaKEpTgRmxmfMz2g,254525
331
331
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
332
332
  ccxt/base/types.py,sha256=6f9YtSQp-XB_iBbXqsKCfmMzn_UpfwkHl3f0rL3xGjg,7690
333
- ccxt/pro/__init__.py,sha256=Njmd5GQ6X6ATMh7NeDAG8r97vKOU5yhuZtSR8RYBGoc,6999
333
+ ccxt/pro/__init__.py,sha256=uCEg3wd6ol5Z3CL8VUOgslgRRVeYOhK0P8eeShDlt-E,6999
334
334
  ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
335
335
  ccxt/pro/ascendex.py,sha256=0RlrxSqh4-lW99T-Y8AxrU612Cpy03u2loVMeRUPXlg,35432
336
336
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -529,7 +529,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
529
529
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
530
530
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
531
531
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
532
- ccxt-4.2.91.dist-info/METADATA,sha256=PY74MW-RskF6sWYVyvNpIHguvZm-1Af39SkpBfAVuqg,110281
533
- ccxt-4.2.91.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
534
- ccxt-4.2.91.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
535
- ccxt-4.2.91.dist-info/RECORD,,
532
+ ccxt-4.2.93.dist-info/METADATA,sha256=qp0huOdUwjKTLaOaZSXFxvVFpC9ktvcFKUi7zzJYWLI,110281
533
+ ccxt-4.2.93.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
534
+ ccxt-4.2.93.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
535
+ ccxt-4.2.93.dist-info/RECORD,,
File without changes