ccxt 4.4.82__py2.py3-none-any.whl → 4.4.85__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.
Files changed (87) hide show
  1. ccxt/__init__.py +1 -5
  2. ccxt/abstract/blofin.py +8 -0
  3. ccxt/abstract/btcbox.py +1 -0
  4. ccxt/apex.py +2 -1
  5. ccxt/async_support/__init__.py +1 -5
  6. ccxt/async_support/apex.py +2 -1
  7. ccxt/async_support/base/exchange.py +26 -3
  8. ccxt/async_support/base/ws/cache.py +6 -1
  9. ccxt/async_support/bitget.py +1 -2
  10. ccxt/async_support/bitrue.py +14 -32
  11. ccxt/async_support/bitso.py +33 -0
  12. ccxt/async_support/bitstamp.py +33 -0
  13. ccxt/async_support/blofin.py +145 -14
  14. ccxt/async_support/btcbox.py +25 -5
  15. ccxt/async_support/bybit.py +16 -37
  16. ccxt/async_support/cex.py +2 -4
  17. ccxt/async_support/coinbase.py +56 -42
  18. ccxt/async_support/coinbaseexchange.py +141 -32
  19. ccxt/async_support/coincatch.py +14 -67
  20. ccxt/async_support/coinex.py +28 -29
  21. ccxt/async_support/coinlist.py +17 -16
  22. ccxt/async_support/coinmetro.py +20 -11
  23. ccxt/async_support/coinone.py +8 -10
  24. ccxt/async_support/coinsph.py +124 -2
  25. ccxt/async_support/cryptocom.py +109 -2
  26. ccxt/async_support/cryptomus.py +42 -80
  27. ccxt/async_support/delta.py +75 -36
  28. ccxt/async_support/derive.py +46 -10
  29. ccxt/async_support/ellipx.py +175 -77
  30. ccxt/async_support/gate.py +1 -1
  31. ccxt/async_support/gemini.py +3 -4
  32. ccxt/async_support/hitbtc.py +56 -65
  33. ccxt/async_support/hyperliquid.py +2 -2
  34. ccxt/async_support/kraken.py +27 -23
  35. ccxt/async_support/kucoinfutures.py +5 -0
  36. ccxt/async_support/lbank.py +1 -1
  37. ccxt/async_support/paradex.py +120 -4
  38. ccxt/base/exchange.py +21 -2
  39. ccxt/base/types.py +3 -0
  40. ccxt/bitget.py +1 -2
  41. ccxt/bitrue.py +14 -32
  42. ccxt/bitso.py +33 -0
  43. ccxt/bitstamp.py +33 -0
  44. ccxt/blofin.py +145 -14
  45. ccxt/btcbox.py +24 -5
  46. ccxt/bybit.py +16 -37
  47. ccxt/cex.py +2 -4
  48. ccxt/coinbase.py +56 -42
  49. ccxt/coinbaseexchange.py +141 -32
  50. ccxt/coincatch.py +14 -67
  51. ccxt/coinex.py +28 -29
  52. ccxt/coinlist.py +17 -16
  53. ccxt/coinmetro.py +20 -11
  54. ccxt/coinone.py +8 -10
  55. ccxt/coinsph.py +124 -2
  56. ccxt/cryptocom.py +109 -2
  57. ccxt/cryptomus.py +42 -80
  58. ccxt/delta.py +75 -36
  59. ccxt/derive.py +46 -10
  60. ccxt/ellipx.py +175 -77
  61. ccxt/gate.py +1 -1
  62. ccxt/gemini.py +3 -4
  63. ccxt/hitbtc.py +56 -65
  64. ccxt/hyperliquid.py +2 -2
  65. ccxt/kraken.py +27 -23
  66. ccxt/kucoinfutures.py +5 -0
  67. ccxt/lbank.py +1 -1
  68. ccxt/paradex.py +120 -4
  69. ccxt/pro/__init__.py +69 -3
  70. ccxt/pro/binance.py +31 -33
  71. ccxt/pro/bithumb.py +5 -3
  72. ccxt/pro/kraken.py +249 -79
  73. ccxt/pro/mexc.py +252 -7
  74. ccxt/pro/poloniex.py +6 -2
  75. {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/METADATA +7 -9
  76. {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/RECORD +79 -87
  77. ccxt/abstract/bl3p.py +0 -19
  78. ccxt/abstract/idex.py +0 -26
  79. ccxt/async_support/base/ws/fast_client.py +0 -97
  80. ccxt/async_support/bl3p.py +0 -543
  81. ccxt/async_support/idex.py +0 -1889
  82. ccxt/bl3p.py +0 -543
  83. ccxt/idex.py +0 -1889
  84. ccxt/pro/idex.py +0 -687
  85. {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/LICENSE.txt +0 -0
  86. {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/WHEEL +0 -0
  87. {ccxt-4.4.82.dist-info → ccxt-4.4.85.dist-info}/top_level.txt +0 -0
ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.82'
25
+ __version__ = '4.4.85'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -108,7 +108,6 @@ from ccxt.bitso import bitso # noqa: F4
108
108
  from ccxt.bitstamp import bitstamp # noqa: F401
109
109
  from ccxt.bitteam import bitteam # noqa: F401
110
110
  from ccxt.bitvavo import bitvavo # noqa: F401
111
- from ccxt.bl3p import bl3p # noqa: F401
112
111
  from ccxt.blockchaincom import blockchaincom # noqa: F401
113
112
  from ccxt.blofin import blofin # noqa: F401
114
113
  from ccxt.btcalpha import btcalpha # noqa: F401
@@ -150,7 +149,6 @@ from ccxt.htx import htx # noqa: F4
150
149
  from ccxt.huobi import huobi # noqa: F401
151
150
  from ccxt.huobijp import huobijp # noqa: F401
152
151
  from ccxt.hyperliquid import hyperliquid # noqa: F401
153
- from ccxt.idex import idex # noqa: F401
154
152
  from ccxt.independentreserve import independentreserve # noqa: F401
155
153
  from ccxt.indodax import indodax # noqa: F401
156
154
  from ccxt.kraken import kraken # noqa: F401
@@ -217,7 +215,6 @@ exchanges = [
217
215
  'bitstamp',
218
216
  'bitteam',
219
217
  'bitvavo',
220
- 'bl3p',
221
218
  'blockchaincom',
222
219
  'blofin',
223
220
  'btcalpha',
@@ -259,7 +256,6 @@ exchanges = [
259
256
  'huobi',
260
257
  'huobijp',
261
258
  'hyperliquid',
262
- 'idex',
263
259
  'independentreserve',
264
260
  'indodax',
265
261
  'kraken',
ccxt/abstract/blofin.py CHANGED
@@ -20,10 +20,14 @@ class ImplicitAPI:
20
20
  private_get_account_positions = privateGetAccountPositions = Entry('account/positions', 'private', 'GET', {'cost': 1})
21
21
  private_get_account_leverage_info = privateGetAccountLeverageInfo = Entry('account/leverage-info', 'private', 'GET', {'cost': 1})
22
22
  private_get_account_margin_mode = privateGetAccountMarginMode = Entry('account/margin-mode', 'private', 'GET', {'cost': 1})
23
+ private_get_account_position_mode = privateGetAccountPositionMode = Entry('account/position-mode', 'private', 'GET', {'cost': 1})
23
24
  private_get_account_batch_leverage_info = privateGetAccountBatchLeverageInfo = Entry('account/batch-leverage-info', 'private', 'GET', {'cost': 1})
24
25
  private_get_trade_orders_tpsl_pending = privateGetTradeOrdersTpslPending = Entry('trade/orders-tpsl-pending', 'private', 'GET', {'cost': 1})
26
+ private_get_trade_orders_algo_pending = privateGetTradeOrdersAlgoPending = Entry('trade/orders-algo-pending', 'private', 'GET', {'cost': 1})
25
27
  private_get_trade_orders_history = privateGetTradeOrdersHistory = Entry('trade/orders-history', 'private', 'GET', {'cost': 1})
26
28
  private_get_trade_orders_tpsl_history = privateGetTradeOrdersTpslHistory = Entry('trade/orders-tpsl-history', 'private', 'GET', {'cost': 1})
29
+ private_get_trade_orders_algo_history = privateGetTradeOrdersAlgoHistory = Entry('trade/orders-algo-history', 'private', 'GET', {'cost': 1})
30
+ private_get_trade_order_price_range = privateGetTradeOrderPriceRange = Entry('trade/order/price-range', 'private', 'GET', {'cost': 1})
27
31
  private_get_user_query_apikey = privateGetUserQueryApikey = Entry('user/query-apikey', 'private', 'GET', {'cost': 1})
28
32
  private_get_affiliate_basic = privateGetAffiliateBasic = Entry('affiliate/basic', 'private', 'GET', {'cost': 1})
29
33
  private_get_copytrading_instruments = privateGetCopytradingInstruments = Entry('copytrading/instruments', 'private', 'GET', {'cost': 1})
@@ -38,8 +42,12 @@ class ImplicitAPI:
38
42
  private_get_copytrading_trade_position_history_by_order = privateGetCopytradingTradePositionHistoryByOrder = Entry('copytrading/trade/position-history-by-order', 'private', 'GET', {'cost': 1})
39
43
  private_get_copytrading_trade_orders_history = privateGetCopytradingTradeOrdersHistory = Entry('copytrading/trade/orders-history', 'private', 'GET', {'cost': 1})
40
44
  private_get_copytrading_trade_pending_tpsl_by_order = privateGetCopytradingTradePendingTpslByOrder = Entry('copytrading/trade/pending-tpsl-by-order', 'private', 'GET', {'cost': 1})
45
+ private_post_account_set_margin_mode = privatePostAccountSetMarginMode = Entry('account/set-margin-mode', 'private', 'POST', {'cost': 1})
46
+ private_post_account_set_position_mode = privatePostAccountSetPositionMode = Entry('account/set-position-mode', 'private', 'POST', {'cost': 1})
41
47
  private_post_trade_order = privatePostTradeOrder = Entry('trade/order', 'private', 'POST', {'cost': 1})
48
+ private_post_trade_order_algo = privatePostTradeOrderAlgo = Entry('trade/order-algo', 'private', 'POST', {'cost': 1})
42
49
  private_post_trade_cancel_order = privatePostTradeCancelOrder = Entry('trade/cancel-order', 'private', 'POST', {'cost': 1})
50
+ private_post_trade_cancel_algo = privatePostTradeCancelAlgo = Entry('trade/cancel-algo', 'private', 'POST', {'cost': 1})
43
51
  private_post_account_set_leverage = privatePostAccountSetLeverage = Entry('account/set-leverage', 'private', 'POST', {'cost': 1})
44
52
  private_post_trade_batch_orders = privatePostTradeBatchOrders = Entry('trade/batch-orders', 'private', 'POST', {'cost': 1})
45
53
  private_post_trade_order_tpsl = privatePostTradeOrderTpsl = Entry('trade/order-tpsl', 'private', 'POST', {'cost': 1})
ccxt/abstract/btcbox.py CHANGED
@@ -12,3 +12,4 @@ class ImplicitAPI:
12
12
  private_post_trade_list = privatePostTradeList = Entry('trade_list', 'private', 'POST', {})
13
13
  private_post_trade_view = privatePostTradeView = Entry('trade_view', 'private', 'POST', {})
14
14
  private_post_wallet = privatePostWallet = Entry('wallet', 'private', 'POST', {})
15
+ webapi_get_ajax_coin_coininfo = webApiGetAjaxCoinCoinInfo = Entry('ajax/coin/coinInfo', 'webApi', 'GET', {})
ccxt/apex.py CHANGED
@@ -1077,9 +1077,10 @@ class apex(Exchange, ImplicitAPI):
1077
1077
  for i in range(0, len(resultList)):
1078
1078
  entry = resultList[i]
1079
1079
  timestamp = self.safe_integer(entry, 'fundingTimestamp')
1080
+ marketId = self.safe_string(entry, 'symbol')
1080
1081
  rates.append({
1081
1082
  'info': entry,
1082
- 'symbol': self.safe_string(entry, 'symbol'),
1083
+ 'symbol': self.safe_symbol(marketId, market),
1083
1084
  'fundingRate': self.safe_number(entry, 'rate'),
1084
1085
  'timestamp': timestamp,
1085
1086
  'datetime': self.iso8601(timestamp),
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.82'
7
+ __version__ = '4.4.85'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -88,7 +88,6 @@ from ccxt.async_support.bitso import bitso
88
88
  from ccxt.async_support.bitstamp import bitstamp # noqa: F401
89
89
  from ccxt.async_support.bitteam import bitteam # noqa: F401
90
90
  from ccxt.async_support.bitvavo import bitvavo # noqa: F401
91
- from ccxt.async_support.bl3p import bl3p # noqa: F401
92
91
  from ccxt.async_support.blockchaincom import blockchaincom # noqa: F401
93
92
  from ccxt.async_support.blofin import blofin # noqa: F401
94
93
  from ccxt.async_support.btcalpha import btcalpha # noqa: F401
@@ -130,7 +129,6 @@ from ccxt.async_support.htx import htx
130
129
  from ccxt.async_support.huobi import huobi # noqa: F401
131
130
  from ccxt.async_support.huobijp import huobijp # noqa: F401
132
131
  from ccxt.async_support.hyperliquid import hyperliquid # noqa: F401
133
- from ccxt.async_support.idex import idex # noqa: F401
134
132
  from ccxt.async_support.independentreserve import independentreserve # noqa: F401
135
133
  from ccxt.async_support.indodax import indodax # noqa: F401
136
134
  from ccxt.async_support.kraken import kraken # noqa: F401
@@ -197,7 +195,6 @@ exchanges = [
197
195
  'bitstamp',
198
196
  'bitteam',
199
197
  'bitvavo',
200
- 'bl3p',
201
198
  'blockchaincom',
202
199
  'blofin',
203
200
  'btcalpha',
@@ -239,7 +236,6 @@ exchanges = [
239
236
  'huobi',
240
237
  'huobijp',
241
238
  'hyperliquid',
242
- 'idex',
243
239
  'independentreserve',
244
240
  'indodax',
245
241
  'kraken',
@@ -1077,9 +1077,10 @@ class apex(Exchange, ImplicitAPI):
1077
1077
  for i in range(0, len(resultList)):
1078
1078
  entry = resultList[i]
1079
1079
  timestamp = self.safe_integer(entry, 'fundingTimestamp')
1080
+ marketId = self.safe_string(entry, 'symbol')
1080
1081
  rates.append({
1081
1082
  'info': entry,
1082
- 'symbol': self.safe_string(entry, 'symbol'),
1083
+ 'symbol': self.safe_symbol(marketId, market),
1083
1084
  'fundingRate': self.safe_number(entry, 'rate'),
1084
1085
  'timestamp': timestamp,
1085
1086
  'datetime': self.iso8601(timestamp),
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.82'
5
+ __version__ = '4.4.85'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -34,7 +34,7 @@ from ccxt.base.exchange import Exchange as BaseExchange, ArgumentsRequired
34
34
  # -----------------------------------------------------------------------------
35
35
 
36
36
  from ccxt.async_support.base.ws.functions import inflate, inflate64, gunzip
37
- from ccxt.async_support.base.ws.fast_client import FastClient
37
+ from ccxt.async_support.base.ws.aiohttp_client import AiohttpClient
38
38
  from ccxt.async_support.base.ws.future import Future
39
39
  from ccxt.async_support.base.ws.order_book import OrderBook, IndexedOrderBook, CountedOrderBook
40
40
 
@@ -279,7 +279,28 @@ class Exchange(BaseExchange):
279
279
  markets = await self.fetch_markets(params)
280
280
  return self.set_markets(markets, currencies)
281
281
 
282
+
282
283
  async def load_markets(self, reload=False, params={}):
284
+ """
285
+ Loads and prepares the markets for trading.
286
+
287
+ Args:
288
+ reload (bool): If True, the markets will be reloaded from the exchange.
289
+ params (dict): Additional exchange-specific parameters for the request.
290
+
291
+ Returns:
292
+ dict: A dictionary of markets.
293
+
294
+ Raises:
295
+ Exception: If the markets cannot be loaded or prepared.
296
+
297
+ Notes:
298
+ This method is asynchronous.
299
+ It ensures that the markets are only loaded once, even if called multiple times.
300
+ If the markets are already loaded and `reload` is False or not provided, it returns the existing markets.
301
+ If a reload is in progress, it waits for completion before returning.
302
+ If an error occurs during loading or preparation, an exception is raised.
303
+ """
283
304
  if (reload and not self.reloading_markets) or not self.markets_loading:
284
305
  self.reloading_markets = True
285
306
  coroutine = self.load_markets_helper(reload, params)
@@ -387,7 +408,9 @@ class Exchange(BaseExchange):
387
408
  'throttle': Throttler(self.tokenBucket, self.asyncio_loop),
388
409
  'asyncio_loop': self.asyncio_loop,
389
410
  }, ws_options)
390
- self.clients[url] = FastClient(url, on_message, on_error, on_close, on_connected, options)
411
+ # we use aiohttp instead of fastClient now because of this
412
+ # https://github.com/ccxt/ccxt/pull/25995
413
+ self.clients[url] = AiohttpClient(url, on_message, on_error, on_close, on_connected, options)
391
414
  self.clients[url].proxy = self.get_ws_proxy()
392
415
  return self.clients[url]
393
416
 
@@ -1,5 +1,7 @@
1
1
  import collections
2
+ import logging
2
3
 
4
+ logger = logging.getLogger(__name__)
3
5
 
4
6
  class Delegate:
5
7
  def __init__(self, name, delegated):
@@ -151,7 +153,10 @@ class ArrayCacheBySymbolById(ArrayCache):
151
153
  if len(self._deque) == self._deque.maxlen:
152
154
  delete_item = self._deque.popleft()
153
155
  self._index.popleft()
154
- del self.hashmap[delete_item['symbol']][delete_item['id']]
156
+ try:
157
+ del self.hashmap[delete_item['symbol']][delete_item['id']]
158
+ except Exception as e:
159
+ logger.error(f"Error deleting item from hashmap: {delete_item}. Error:{e}")
155
160
  self._deque.append(item)
156
161
  self._index.append(item['id'])
157
162
  if self._clear_all_updates:
@@ -2072,8 +2072,7 @@ class bitget(Exchange, ImplicitAPI):
2072
2072
  chain = chains[j]
2073
2073
  networkId = self.safe_string(chain, 'chain')
2074
2074
  network = self.network_id_to_code(networkId, code)
2075
- if network is not None:
2076
- network = network.upper()
2075
+ network = network.upper()
2077
2076
  networks[network] = {
2078
2077
  'info': chain,
2079
2078
  'id': networkId,
@@ -783,66 +783,48 @@ class bitrue(Exchange, ImplicitAPI):
783
783
  id = self.safe_string(currency, 'coin')
784
784
  name = self.safe_string(currency, 'coinFulName')
785
785
  code = self.safe_currency_code(id)
786
- deposit = None
787
- withdraw = None
788
- minWithdrawString = None
789
- maxWithdrawString = None
790
- minWithdrawFeeString = None
791
786
  networkDetails = self.safe_list(currency, 'chainDetail', [])
792
787
  networks: dict = {}
793
788
  for j in range(0, len(networkDetails)):
794
789
  entry = networkDetails[j]
795
790
  networkId = self.safe_string(entry, 'chain')
796
791
  network = self.network_id_to_code(networkId, code)
797
- enableDeposit = self.safe_bool(entry, 'enableDeposit')
798
- deposit = enableDeposit if (enableDeposit) else deposit
799
- enableWithdraw = self.safe_bool(entry, 'enableWithdraw')
800
- withdraw = enableWithdraw if (enableWithdraw) else withdraw
801
- networkWithdrawFeeString = self.safe_string(entry, 'withdrawFee')
802
- if networkWithdrawFeeString is not None:
803
- minWithdrawFeeString = networkWithdrawFeeString if (minWithdrawFeeString is None) else Precise.string_min(networkWithdrawFeeString, minWithdrawFeeString)
804
- networkMinWithdrawString = self.safe_string(entry, 'minWithdraw')
805
- if networkMinWithdrawString is not None:
806
- minWithdrawString = networkMinWithdrawString if (minWithdrawString is None) else Precise.string_min(networkMinWithdrawString, minWithdrawString)
807
- networkMaxWithdrawString = self.safe_string(entry, 'maxWithdraw')
808
- if networkMaxWithdrawString is not None:
809
- maxWithdrawString = networkMaxWithdrawString if (maxWithdrawString is None) else Precise.string_max(networkMaxWithdrawString, maxWithdrawString)
810
792
  networks[network] = {
811
793
  'info': entry,
812
794
  'id': networkId,
813
795
  'network': network,
814
- 'deposit': enableDeposit,
815
- 'withdraw': enableWithdraw,
816
- 'active': enableDeposit and enableWithdraw,
817
- 'fee': self.parse_number(networkWithdrawFeeString),
796
+ 'deposit': self.safe_bool(entry, 'enableDeposit'),
797
+ 'withdraw': self.safe_bool(entry, 'enableWithdraw'),
798
+ 'active': None,
799
+ 'fee': self.safe_number(entry, 'withdrawFee'),
818
800
  'precision': None,
819
801
  'limits': {
820
802
  'withdraw': {
821
- 'min': self.parse_number(networkMinWithdrawString),
822
- 'max': self.parse_number(networkMaxWithdrawString),
803
+ 'min': self.safe_number(entry, 'minWithdraw'),
804
+ 'max': self.safe_number(entry, 'maxWithdraw'),
823
805
  },
824
806
  },
825
807
  }
826
- result[code] = {
808
+ result[code] = self.safe_currency_structure({
827
809
  'id': id,
828
810
  'name': name,
829
811
  'code': code,
830
812
  'precision': None,
831
813
  'info': currency,
832
- 'active': deposit and withdraw,
833
- 'deposit': deposit,
834
- 'withdraw': withdraw,
814
+ 'active': None,
815
+ 'deposit': None,
816
+ 'withdraw': None,
835
817
  'networks': networks,
836
- 'fee': self.parse_number(minWithdrawFeeString),
818
+ 'fee': None,
837
819
  'fees': None,
838
820
  'type': 'crypto',
839
821
  'limits': {
840
822
  'withdraw': {
841
- 'min': self.parse_number(minWithdrawString),
842
- 'max': self.parse_number(maxWithdrawString),
823
+ 'min': None,
824
+ 'max': None,
843
825
  },
844
826
  },
845
- }
827
+ })
846
828
  return result
847
829
 
848
830
  async def fetch_markets(self, params={}) -> List[Market]:
@@ -36,6 +36,9 @@ class bitso(Exchange, ImplicitAPI):
36
36
  'future': False,
37
37
  'option': False,
38
38
  'addMargin': False,
39
+ 'borrowCrossMargin': False,
40
+ 'borrowIsolatedMargin': False,
41
+ 'borrowMargin': False,
39
42
  'cancelAllOrders': True,
40
43
  'cancelOrder': True,
41
44
  'cancelOrders': True,
@@ -43,11 +46,17 @@ class bitso(Exchange, ImplicitAPI):
43
46
  'closePosition': False,
44
47
  'createDepositAddress': False,
45
48
  'createOrder': True,
49
+ 'createOrderWithTakeProfitAndStopLoss': False,
50
+ 'createOrderWithTakeProfitAndStopLossWs': False,
46
51
  'createReduceOnlyOrder': False,
47
52
  'fetchAccounts': False,
48
53
  'fetchBalance': True,
54
+ 'fetchBorrowInterest': False,
55
+ 'fetchBorrowRate': False,
49
56
  'fetchBorrowRateHistories': False,
50
57
  'fetchBorrowRateHistory': False,
58
+ 'fetchBorrowRates': False,
59
+ 'fetchBorrowRatesPerSymbol': False,
51
60
  'fetchCrossBorrowRate': False,
52
61
  'fetchCrossBorrowRates': False,
53
62
  'fetchDeposit': True,
@@ -59,21 +68,40 @@ class bitso(Exchange, ImplicitAPI):
59
68
  'fetchDepositWithdrawFee': 'emulated',
60
69
  'fetchDepositWithdrawFees': True,
61
70
  'fetchFundingHistory': False,
71
+ 'fetchFundingInterval': False,
72
+ 'fetchFundingIntervals': False,
62
73
  'fetchFundingRate': False,
63
74
  'fetchFundingRateHistory': False,
64
75
  'fetchFundingRates': False,
76
+ 'fetchGreeks': False,
65
77
  'fetchIndexOHLCV': False,
66
78
  'fetchIsolatedBorrowRate': False,
67
79
  'fetchIsolatedBorrowRates': False,
80
+ 'fetchIsolatedPositions': False,
68
81
  'fetchLedger': True,
69
82
  'fetchLeverage': False,
83
+ 'fetchLeverages': False,
84
+ 'fetchLeverageTiers': False,
85
+ 'fetchLiquidations': False,
86
+ 'fetchLongShortRatio': False,
87
+ 'fetchLongShortRatioHistory': False,
88
+ 'fetchMarginAdjustmentHistory': False,
70
89
  'fetchMarginMode': False,
90
+ 'fetchMarginModes': False,
91
+ 'fetchMarketLeverageTiers': False,
71
92
  'fetchMarkets': True,
72
93
  'fetchMarkOHLCV': False,
94
+ 'fetchMarkPrices': False,
95
+ 'fetchMyLiquidations': False,
96
+ 'fetchMySettlementHistory': False,
73
97
  'fetchMyTrades': True,
74
98
  'fetchOHLCV': True,
99
+ 'fetchOpenInterest': False,
75
100
  'fetchOpenInterestHistory': False,
101
+ 'fetchOpenInterests': False,
76
102
  'fetchOpenOrders': True,
103
+ 'fetchOption': False,
104
+ 'fetchOptionChain': False,
77
105
  'fetchOrder': True,
78
106
  'fetchOrderBook': True,
79
107
  'fetchOrderTrades': True,
@@ -85,6 +113,7 @@ class bitso(Exchange, ImplicitAPI):
85
113
  'fetchPositionsHistory': False,
86
114
  'fetchPositionsRisk': False,
87
115
  'fetchPremiumIndexOHLCV': False,
116
+ 'fetchSettlementHistory': False,
88
117
  'fetchTicker': True,
89
118
  'fetchTickers': False,
90
119
  'fetchTime': False,
@@ -96,8 +125,12 @@ class bitso(Exchange, ImplicitAPI):
96
125
  'fetchTransactions': False,
97
126
  'fetchTransfer': False,
98
127
  'fetchTransfers': False,
128
+ 'fetchVolatilityHistory': False,
99
129
  'reduceMargin': False,
130
+ 'repayCrossMargin': False,
131
+ 'repayIsolatedMargin': False,
100
132
  'setLeverage': False,
133
+ 'setMargin': False,
101
134
  'setMarginMode': False,
102
135
  'setPositionMode': False,
103
136
  'transfer': False,
@@ -44,18 +44,27 @@ class bitstamp(Exchange, ImplicitAPI):
44
44
  'future': False,
45
45
  'option': False,
46
46
  'addMargin': False,
47
+ 'borrowCrossMargin': False,
48
+ 'borrowIsolatedMargin': False,
49
+ 'borrowMargin': False,
47
50
  'cancelAllOrders': True,
48
51
  'cancelOrder': True,
49
52
  'closeAllPositions': False,
50
53
  'closePosition': False,
51
54
  'createOrder': True,
55
+ 'createOrderWithTakeProfitAndStopLoss': False,
56
+ 'createOrderWithTakeProfitAndStopLossWs': False,
52
57
  'createReduceOnlyOrder': False,
53
58
  'createStopLimitOrder': False,
54
59
  'createStopMarketOrder': False,
55
60
  'createStopOrder': False,
56
61
  'fetchBalance': True,
62
+ 'fetchBorrowInterest': False,
63
+ 'fetchBorrowRate': False,
57
64
  'fetchBorrowRateHistories': False,
58
65
  'fetchBorrowRateHistory': False,
66
+ 'fetchBorrowRates': False,
67
+ 'fetchBorrowRatesPerSymbol': False,
59
68
  'fetchCrossBorrowRate': False,
60
69
  'fetchCrossBorrowRates': False,
61
70
  'fetchCurrencies': True,
@@ -66,21 +75,40 @@ class bitstamp(Exchange, ImplicitAPI):
66
75
  'fetchDepositWithdrawFee': 'emulated',
67
76
  'fetchDepositWithdrawFees': True,
68
77
  'fetchFundingHistory': False,
78
+ 'fetchFundingInterval': False,
79
+ 'fetchFundingIntervals': False,
69
80
  'fetchFundingRate': False,
70
81
  'fetchFundingRateHistory': False,
71
82
  'fetchFundingRates': False,
83
+ 'fetchGreeks': False,
72
84
  'fetchIndexOHLCV': False,
73
85
  'fetchIsolatedBorrowRate': False,
74
86
  'fetchIsolatedBorrowRates': False,
87
+ 'fetchIsolatedPositions': False,
75
88
  'fetchLedger': True,
76
89
  'fetchLeverage': False,
90
+ 'fetchLeverages': False,
91
+ 'fetchLeverageTiers': False,
92
+ 'fetchLiquidations': False,
93
+ 'fetchLongShortRatio': False,
94
+ 'fetchLongShortRatioHistory': False,
95
+ 'fetchMarginAdjustmentHistory': False,
77
96
  'fetchMarginMode': False,
97
+ 'fetchMarginModes': False,
98
+ 'fetchMarketLeverageTiers': False,
78
99
  'fetchMarkets': True,
79
100
  'fetchMarkOHLCV': False,
101
+ 'fetchMarkPrices': False,
102
+ 'fetchMyLiquidations': False,
103
+ 'fetchMySettlementHistory': False,
80
104
  'fetchMyTrades': True,
81
105
  'fetchOHLCV': True,
106
+ 'fetchOpenInterest': False,
82
107
  'fetchOpenInterestHistory': False,
108
+ 'fetchOpenInterests': False,
83
109
  'fetchOpenOrders': True,
110
+ 'fetchOption': False,
111
+ 'fetchOptionChain': False,
84
112
  'fetchOrder': True,
85
113
  'fetchOrderBook': True,
86
114
  'fetchPosition': False,
@@ -91,6 +119,7 @@ class bitstamp(Exchange, ImplicitAPI):
91
119
  'fetchPositionsHistory': False,
92
120
  'fetchPositionsRisk': False,
93
121
  'fetchPremiumIndexOHLCV': False,
122
+ 'fetchSettlementHistory': False,
94
123
  'fetchTicker': True,
95
124
  'fetchTickers': True,
96
125
  'fetchTrades': True,
@@ -98,9 +127,13 @@ class bitstamp(Exchange, ImplicitAPI):
98
127
  'fetchTradingFees': True,
99
128
  'fetchTransactionFees': True,
100
129
  'fetchTransactions': 'emulated',
130
+ 'fetchVolatilityHistory': False,
101
131
  'fetchWithdrawals': True,
102
132
  'reduceMargin': False,
133
+ 'repayCrossMargin': False,
134
+ 'repayIsolatedMargin': False,
103
135
  'setLeverage': False,
136
+ 'setMargin': False,
104
137
  'setMarginMode': False,
105
138
  'setPositionMode': False,
106
139
  'transfer': True,