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
@@ -876,7 +876,7 @@ class lbank(Exchange, ImplicitAPI):
876
876
  timestamp = self.milliseconds()
877
877
  if market['swap']:
878
878
  return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 'price', 'volume')
879
- return self.parse_order_book(orderbook, market['symbol'], timestamp)
879
+ return self.parse_order_book(orderbook, market['symbol'], timestamp, 'bids', 'asks', 1, 0)
880
880
 
881
881
  def parse_trade(self, trade: dict, market: Market = None) -> Trade:
882
882
  #
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.paradex import ImplicitAPI
8
- from ccxt.base.types import Any, Balances, Currency, Int, Leverage, MarginMode, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction
8
+ from ccxt.base.types import Any, Balances, Currency, Greeks, Int, Leverage, MarginMode, Market, Num, Order, OrderBook, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import AuthenticationError
@@ -75,6 +75,7 @@ class paradex(Exchange, ImplicitAPI):
75
75
  'fetchFundingRate': False,
76
76
  'fetchFundingRateHistory': False,
77
77
  'fetchFundingRates': False,
78
+ 'fetchGreeks': True,
78
79
  'fetchIndexOHLCV': False,
79
80
  'fetchIsolatedBorrowRate': False,
80
81
  'fetchIsolatedBorrowRates': False,
@@ -558,13 +559,14 @@ class paradex(Exchange, ImplicitAPI):
558
559
  expiry = self.safe_integer(market, 'expiry_at')
559
560
  optionType = self.safe_string(market, 'option_type')
560
561
  strikePrice = self.safe_string(market, 'strike_price')
562
+ takerFee = self.parse_number('0.0003')
563
+ makerFee = self.parse_number('-0.00005')
561
564
  if isOption:
562
565
  optionTypeSuffix = 'C' if (optionType == 'CALL') else 'P'
563
566
  symbol = symbol + '-' + strikePrice + '-' + optionTypeSuffix
567
+ makerFee = self.parse_number('0.0003')
564
568
  else:
565
569
  expiry = None
566
- takerFee = self.parse_number('0.0003')
567
- makerFee = self.parse_number('-0.00005')
568
570
  return self.safe_market_structure({
569
571
  'id': marketId,
570
572
  'symbol': symbol,
@@ -1262,7 +1264,7 @@ class paradex(Exchange, ImplicitAPI):
1262
1264
  'status': self.parse_order_status(status),
1263
1265
  'symbol': symbol,
1264
1266
  'type': self.parse_order_type(orderType),
1265
- 'timeInForce': self.parse_time_in_force(self.safe_string(order, 'instrunction')),
1267
+ 'timeInForce': self.parse_time_in_force(self.safe_string(order, 'instruction')),
1266
1268
  'postOnly': None,
1267
1269
  'reduceOnly': reduceOnly,
1268
1270
  'side': side,
@@ -2284,6 +2286,120 @@ class paradex(Exchange, ImplicitAPI):
2284
2286
  }
2285
2287
  return await self.privatePostAccountMarginMarket(self.extend(request, params))
2286
2288
 
2289
+ async def fetch_greeks(self, symbol: str, params={}) -> Greeks:
2290
+ """
2291
+ fetches an option contracts greeks, financial metrics used to measure the factors that affect the price of an options contract
2292
+
2293
+ https://docs.api.testnet.paradex.trade/#list-available-markets-summary
2294
+
2295
+ :param str symbol: unified symbol of the market to fetch greeks for
2296
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2297
+ :returns dict: a `greeks structure <https://docs.ccxt.com/#/?id=greeks-structure>`
2298
+ """
2299
+ await self.load_markets()
2300
+ market = self.market(symbol)
2301
+ request: dict = {
2302
+ 'market': market['id'],
2303
+ }
2304
+ response = await self.publicGetMarketsSummary(self.extend(request, params))
2305
+ #
2306
+ # {
2307
+ # "results": [
2308
+ # {
2309
+ # "symbol": "BTC-USD-114000-P",
2310
+ # "mark_price": "10835.66892602",
2311
+ # "mark_iv": "0.71781855",
2312
+ # "delta": "-0.98726024",
2313
+ # "greeks": {
2314
+ # "delta": "-0.9872602390817709",
2315
+ # "gamma": "0.000004560958862297231",
2316
+ # "vega": "227.11344863639806",
2317
+ # "rho": "-302.0617972461581",
2318
+ # "vanna": "0.06609830491614832",
2319
+ # "volga": "925.9501532805552"
2320
+ # },
2321
+ # "last_traded_price": "10551.5",
2322
+ # "bid": "10794.9",
2323
+ # "bid_iv": "0.05",
2324
+ # "ask": "10887.3",
2325
+ # "ask_iv": "0.8783283",
2326
+ # "last_iv": "0.05",
2327
+ # "volume_24h": "0",
2328
+ # "total_volume": "195240.72672261014",
2329
+ # "created_at": 1747644009995,
2330
+ # "underlying_price": "103164.79162649",
2331
+ # "open_interest": "0",
2332
+ # "funding_rate": "0.000004464241170536191",
2333
+ # "price_change_rate_24h": "0.074915",
2334
+ # "future_funding_rate": "0.0001"
2335
+ # }
2336
+ # ]
2337
+ # }
2338
+ #
2339
+ data = self.safe_list(response, 'results', [])
2340
+ greeks = self.safe_dict(data, 0, {})
2341
+ return self.parse_greeks(greeks, market)
2342
+
2343
+ def parse_greeks(self, greeks: dict, market: Market = None) -> Greeks:
2344
+ #
2345
+ # {
2346
+ # "symbol": "BTC-USD-114000-P",
2347
+ # "mark_price": "10835.66892602",
2348
+ # "mark_iv": "0.71781855",
2349
+ # "delta": "-0.98726024",
2350
+ # "greeks": {
2351
+ # "delta": "-0.9872602390817709",
2352
+ # "gamma": "0.000004560958862297231",
2353
+ # "vega": "227.11344863639806",
2354
+ # "rho": "-302.0617972461581",
2355
+ # "vanna": "0.06609830491614832",
2356
+ # "volga": "925.9501532805552"
2357
+ # },
2358
+ # "last_traded_price": "10551.5",
2359
+ # "bid": "10794.9",
2360
+ # "bid_iv": "0.05",
2361
+ # "ask": "10887.3",
2362
+ # "ask_iv": "0.8783283",
2363
+ # "last_iv": "0.05",
2364
+ # "volume_24h": "0",
2365
+ # "total_volume": "195240.72672261014",
2366
+ # "created_at": 1747644009995,
2367
+ # "underlying_price": "103164.79162649",
2368
+ # "open_interest": "0",
2369
+ # "funding_rate": "0.000004464241170536191",
2370
+ # "price_change_rate_24h": "0.074915",
2371
+ # "future_funding_rate": "0.0001"
2372
+ # }
2373
+ #
2374
+ marketId = self.safe_string(greeks, 'symbol')
2375
+ market = self.safe_market(marketId, market, None, 'option')
2376
+ symbol = market['symbol']
2377
+ timestamp = self.safe_integer(greeks, 'created_at')
2378
+ greeksData = self.safe_dict(greeks, 'greeks', {})
2379
+ return {
2380
+ 'symbol': symbol,
2381
+ 'timestamp': timestamp,
2382
+ 'datetime': self.iso8601(timestamp),
2383
+ 'delta': self.safe_number(greeksData, 'delta'),
2384
+ 'gamma': self.safe_number(greeksData, 'gamma'),
2385
+ 'theta': None,
2386
+ 'vega': self.safe_number(greeksData, 'vega'),
2387
+ 'rho': self.safe_number(greeksData, 'rho'),
2388
+ 'vanna': self.safe_number(greeksData, 'vanna'),
2389
+ 'volga': self.safe_number(greeksData, 'volga'),
2390
+ 'bidSize': None,
2391
+ 'askSize': None,
2392
+ 'bidImpliedVolatility': self.safe_number(greeks, 'bid_iv'),
2393
+ 'askImpliedVolatility': self.safe_number(greeks, 'ask_iv'),
2394
+ 'markImpliedVolatility': self.safe_number(greeks, 'mark_iv'),
2395
+ 'bidPrice': self.safe_number(greeks, 'bid'),
2396
+ 'askPrice': self.safe_number(greeks, 'ask'),
2397
+ 'markPrice': self.safe_number(greeks, 'mark_price'),
2398
+ 'lastPrice': self.safe_number(greeks, 'last_traded_price'),
2399
+ 'underlyingPrice': self.safe_number(greeks, 'underlying_price'),
2400
+ 'info': greeks,
2401
+ }
2402
+
2287
2403
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
2288
2404
  url = self.implode_hostname(self.urls['api'][self.version]) + '/' + self.implode_params(path, params)
2289
2405
  query = self.omit(params, self.extract_params(path))
ccxt/base/exchange.py CHANGED
@@ -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
 
@@ -1506,6 +1506,25 @@ class Exchange(object):
1506
1506
  return len(parts[1]) if len(parts) > 1 else 0
1507
1507
 
1508
1508
  def load_markets(self, reload=False, params={}):
1509
+ """
1510
+ Loads and prepares the markets for trading.
1511
+
1512
+ Args:
1513
+ reload (bool): If True, the markets will be reloaded from the exchange.
1514
+ params (dict): Additional exchange-specific parameters for the request.
1515
+
1516
+ Returns:
1517
+ dict: A dictionary of markets.
1518
+
1519
+ Raises:
1520
+ Exception: If the markets cannot be loaded or prepared.
1521
+
1522
+ Notes:
1523
+ It ensures that the markets are only loaded once, even if called multiple times.
1524
+ If the markets are already loaded and `reload` is False or not provided, it returns the existing markets.
1525
+ If a reload is in progress, it waits for completion before returning.
1526
+ If an error occurs during loading or preparation, an exception is raised.
1527
+ """
1509
1528
  if not reload:
1510
1529
  if self.markets:
1511
1530
  if not self.markets_by_id:
@@ -3008,7 +3027,7 @@ class Exchange(object):
3008
3027
  currency['networks'][key]['active'] = True
3009
3028
  elif deposit is not None and withdraw is not None:
3010
3029
  currency['networks'][key]['active'] = False
3011
- active = self.safe_bool(network, 'active')
3030
+ active = self.safe_bool(currency['networks'][key], 'active') # dict might have been updated on above lines, so access directly instead of `network` variable
3012
3031
  currencyActive = self.safe_bool(currency, 'active')
3013
3032
  if currencyActive is None or active:
3014
3033
  currency['active'] = active
ccxt/base/types.py CHANGED
@@ -308,6 +308,9 @@ class Greeks(TypedDict):
308
308
  theta: Num
309
309
  vega: Num
310
310
  rho: Num
311
+ vanna: Num
312
+ volga: Num
313
+ charm: Num
311
314
  bidSize: Num
312
315
  askSize: Num
313
316
  bidImpliedVolatility: Num
ccxt/bitget.py CHANGED
@@ -2071,8 +2071,7 @@ class bitget(Exchange, ImplicitAPI):
2071
2071
  chain = chains[j]
2072
2072
  networkId = self.safe_string(chain, 'chain')
2073
2073
  network = self.network_id_to_code(networkId, code)
2074
- if network is not None:
2075
- network = network.upper()
2074
+ network = network.upper()
2076
2075
  networks[network] = {
2077
2076
  'info': chain,
2078
2077
  'id': networkId,
ccxt/bitrue.py CHANGED
@@ -782,66 +782,48 @@ class bitrue(Exchange, ImplicitAPI):
782
782
  id = self.safe_string(currency, 'coin')
783
783
  name = self.safe_string(currency, 'coinFulName')
784
784
  code = self.safe_currency_code(id)
785
- deposit = None
786
- withdraw = None
787
- minWithdrawString = None
788
- maxWithdrawString = None
789
- minWithdrawFeeString = None
790
785
  networkDetails = self.safe_list(currency, 'chainDetail', [])
791
786
  networks: dict = {}
792
787
  for j in range(0, len(networkDetails)):
793
788
  entry = networkDetails[j]
794
789
  networkId = self.safe_string(entry, 'chain')
795
790
  network = self.network_id_to_code(networkId, code)
796
- enableDeposit = self.safe_bool(entry, 'enableDeposit')
797
- deposit = enableDeposit if (enableDeposit) else deposit
798
- enableWithdraw = self.safe_bool(entry, 'enableWithdraw')
799
- withdraw = enableWithdraw if (enableWithdraw) else withdraw
800
- networkWithdrawFeeString = self.safe_string(entry, 'withdrawFee')
801
- if networkWithdrawFeeString is not None:
802
- minWithdrawFeeString = networkWithdrawFeeString if (minWithdrawFeeString is None) else Precise.string_min(networkWithdrawFeeString, minWithdrawFeeString)
803
- networkMinWithdrawString = self.safe_string(entry, 'minWithdraw')
804
- if networkMinWithdrawString is not None:
805
- minWithdrawString = networkMinWithdrawString if (minWithdrawString is None) else Precise.string_min(networkMinWithdrawString, minWithdrawString)
806
- networkMaxWithdrawString = self.safe_string(entry, 'maxWithdraw')
807
- if networkMaxWithdrawString is not None:
808
- maxWithdrawString = networkMaxWithdrawString if (maxWithdrawString is None) else Precise.string_max(networkMaxWithdrawString, maxWithdrawString)
809
791
  networks[network] = {
810
792
  'info': entry,
811
793
  'id': networkId,
812
794
  'network': network,
813
- 'deposit': enableDeposit,
814
- 'withdraw': enableWithdraw,
815
- 'active': enableDeposit and enableWithdraw,
816
- 'fee': self.parse_number(networkWithdrawFeeString),
795
+ 'deposit': self.safe_bool(entry, 'enableDeposit'),
796
+ 'withdraw': self.safe_bool(entry, 'enableWithdraw'),
797
+ 'active': None,
798
+ 'fee': self.safe_number(entry, 'withdrawFee'),
817
799
  'precision': None,
818
800
  'limits': {
819
801
  'withdraw': {
820
- 'min': self.parse_number(networkMinWithdrawString),
821
- 'max': self.parse_number(networkMaxWithdrawString),
802
+ 'min': self.safe_number(entry, 'minWithdraw'),
803
+ 'max': self.safe_number(entry, 'maxWithdraw'),
822
804
  },
823
805
  },
824
806
  }
825
- result[code] = {
807
+ result[code] = self.safe_currency_structure({
826
808
  'id': id,
827
809
  'name': name,
828
810
  'code': code,
829
811
  'precision': None,
830
812
  'info': currency,
831
- 'active': deposit and withdraw,
832
- 'deposit': deposit,
833
- 'withdraw': withdraw,
813
+ 'active': None,
814
+ 'deposit': None,
815
+ 'withdraw': None,
834
816
  'networks': networks,
835
- 'fee': self.parse_number(minWithdrawFeeString),
817
+ 'fee': None,
836
818
  'fees': None,
837
819
  'type': 'crypto',
838
820
  'limits': {
839
821
  'withdraw': {
840
- 'min': self.parse_number(minWithdrawString),
841
- 'max': self.parse_number(maxWithdrawString),
822
+ 'min': None,
823
+ 'max': None,
842
824
  },
843
825
  },
844
- }
826
+ })
845
827
  return result
846
828
 
847
829
  def fetch_markets(self, params={}) -> List[Market]:
ccxt/bitso.py CHANGED
@@ -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,
ccxt/bitstamp.py CHANGED
@@ -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,