ccxt 4.4.73__py2.py3-none-any.whl → 4.4.74__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 (55) hide show
  1. ccxt/__init__.py +1 -5
  2. ccxt/abstract/bitmart.py +2 -0
  3. ccxt/ace.py +3 -0
  4. ccxt/alpaca.py +3 -0
  5. ccxt/ascendex.py +6 -0
  6. ccxt/async_support/__init__.py +1 -5
  7. ccxt/async_support/ace.py +3 -0
  8. ccxt/async_support/alpaca.py +3 -0
  9. ccxt/async_support/ascendex.py +6 -0
  10. ccxt/async_support/base/exchange.py +1 -1
  11. ccxt/async_support/bequant.py +1 -0
  12. ccxt/async_support/binanceusdm.py +1 -1
  13. ccxt/async_support/bit2c.py +26 -0
  14. ccxt/async_support/bitbank.py +32 -0
  15. ccxt/async_support/bitbns.py +1 -1
  16. ccxt/async_support/bitflyer.py +1 -0
  17. ccxt/async_support/bithumb.py +34 -0
  18. ccxt/async_support/bitmart.py +70 -6
  19. ccxt/async_support/blofin.py +1 -1
  20. ccxt/async_support/bybit.py +10 -1
  21. ccxt/async_support/coinlist.py +81 -11
  22. ccxt/async_support/deribit.py +19 -0
  23. ccxt/async_support/gate.py +11 -7
  24. ccxt/async_support/hitbtc.py +7 -1
  25. ccxt/async_support/okx.py +4 -0
  26. ccxt/base/errors.py +0 -6
  27. ccxt/base/exchange.py +25 -7
  28. ccxt/bequant.py +1 -0
  29. ccxt/binanceusdm.py +1 -1
  30. ccxt/bit2c.py +26 -0
  31. ccxt/bitbank.py +32 -0
  32. ccxt/bitbns.py +1 -1
  33. ccxt/bitflyer.py +1 -0
  34. ccxt/bithumb.py +34 -0
  35. ccxt/bitmart.py +70 -6
  36. ccxt/blofin.py +1 -1
  37. ccxt/bybit.py +10 -1
  38. ccxt/coinlist.py +81 -11
  39. ccxt/deribit.py +19 -0
  40. ccxt/gate.py +11 -7
  41. ccxt/hitbtc.py +7 -1
  42. ccxt/okx.py +4 -0
  43. ccxt/pro/__init__.py +1 -5
  44. ccxt/pro/ascendex.py +1 -1
  45. ccxt/pro/bingx.py +9 -1
  46. ccxt/pro/bitget.py +9 -1
  47. ccxt/pro/bitmart.py +9 -1
  48. ccxt/pro/bitopro.py +5 -4
  49. {ccxt-4.4.73.dist-info → ccxt-4.4.74.dist-info}/METADATA +5 -5
  50. {ccxt-4.4.73.dist-info → ccxt-4.4.74.dist-info}/RECORD +53 -55
  51. ccxt/abstract/bitcoincom.py +0 -115
  52. ccxt/abstract/bitpanda.py +0 -23
  53. {ccxt-4.4.73.dist-info → ccxt-4.4.74.dist-info}/LICENSE.txt +0 -0
  54. {ccxt-4.4.73.dist-info → ccxt-4.4.74.dist-info}/WHEEL +0 -0
  55. {ccxt-4.4.73.dist-info → ccxt-4.4.74.dist-info}/top_level.txt +0 -0
@@ -66,7 +66,7 @@ class blofin(Exchange, ImplicitAPI):
66
66
  'fetchBorrowRateHistory': False,
67
67
  'fetchCanceledOrders': False,
68
68
  'fetchClosedOrder': False,
69
- 'fetchClosedOrders': False,
69
+ 'fetchClosedOrders': True,
70
70
  'fetchCrossBorrowRate': False,
71
71
  'fetchCrossBorrowRates': False,
72
72
  'fetchCurrencies': False,
@@ -2390,6 +2390,7 @@ class bybit(Exchange, ImplicitAPI):
2390
2390
  :returns dict: an array of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
2391
2391
  """
2392
2392
  await self.load_markets()
2393
+ code = self.safe_string_n(params, ['code', 'currency', 'baseCoin'])
2393
2394
  market = None
2394
2395
  parsedSymbols = None
2395
2396
  if symbols is not None:
@@ -2411,6 +2412,12 @@ class bybit(Exchange, ImplicitAPI):
2411
2412
  currentType = market['type']
2412
2413
  elif market['type'] != currentType:
2413
2414
  raise BadRequest(self.id + ' fetchTickers can only accept a list of symbols of the same type')
2415
+ if market['option']:
2416
+ if code is not None and code != market['base']:
2417
+ raise BadRequest(self.id + ' fetchTickers the base currency must be the same for all symbols, self endpoint only supports one base currency at a time. Read more about it here: https://bybit-exchange.github.io/docs/v5/market/tickers')
2418
+ if code is None:
2419
+ code = market['base']
2420
+ params = self.omit(params, ['code', 'currency'])
2414
2421
  parsedSymbols.append(market['symbol'])
2415
2422
  request: dict = {
2416
2423
  # 'symbol': market['id'],
@@ -2430,7 +2437,9 @@ class bybit(Exchange, ImplicitAPI):
2430
2437
  request['category'] = 'spot'
2431
2438
  elif type == 'option':
2432
2439
  request['category'] = 'option'
2433
- request['baseCoin'] = self.safe_string(params, 'baseCoin', 'BTC')
2440
+ if code is None:
2441
+ code = 'BTC'
2442
+ request['baseCoin'] = code
2434
2443
  elif type == 'swap' or type == 'future' or subType is not None:
2435
2444
  request['category'] = subType
2436
2445
  response = await self.publicGetV5MarketTickers(self.extend(request, params))
@@ -501,7 +501,7 @@ class coinlist(Exchange, ImplicitAPI):
501
501
  # {
502
502
  # "symbols": [
503
503
  # {
504
- # "symbol": "CQT-USDT",
504
+ # "symbol": "CQT-USDT", # spot
505
505
  # "base_currency": "CQT",
506
506
  # "is_trader_geofenced": False,
507
507
  # "list_time": "2021-06-15T00:00:00.000Z",
@@ -526,6 +526,62 @@ class coinlist(Exchange, ImplicitAPI):
526
526
  return self.parse_markets(markets)
527
527
 
528
528
  def parse_market(self, market: dict) -> Market:
529
+ # perp
530
+ # {
531
+ # "symbol":"BTC-PERP",
532
+ # "base_currency":"BTC",
533
+ # "is_trader_geofenced":false,
534
+ # "expiry_name":null,
535
+ # "expiry_time":null,
536
+ # "list_time":"2024-09-16T00:00:00.000Z",
537
+ # "type":"perp-swap",
538
+ # "series_code":"BTC",
539
+ # "long_name":"Bitcoin",
540
+ # "asset_class":"CRYPTO",
541
+ # "minimum_price_increment":"0.01",
542
+ # "minimum_size_increment":"0.0001",
543
+ # "quote_currency":"USDT",
544
+ # "multiplier":"1",
545
+ # "contract_frequency":"FGHJKMNQUVXZ",
546
+ # "index_code":".BTC-USDT",
547
+ # "price_band_threshold_market":"0.05",
548
+ # "price_band_threshold_limit":"0.25",
549
+ # "maintenance_initial_ratio":"0.500000000000000000",
550
+ # "liquidation_initial_ratio":"0.500000000000000000",
551
+ # "last_price":"75881.36000000",
552
+ # "fair_price":"76256.00000000",
553
+ # "index_price":"77609.90000000",
554
+ # "mark_price":"76237.75000000",
555
+ # "mark_price_dollarizer":"0.99950000",
556
+ # "funding_interval":{
557
+ # "hours":"8"
558
+ # },
559
+ # "funding_rate_index_code":".BTC-USDT-FR8H",
560
+ # "initial_margin_base":"0.200000000000000000",
561
+ # "initial_margin_per_contract":"0.160000000000000000",
562
+ # "position_limit":"5.0000"
563
+ # }
564
+ # spot
565
+ # {
566
+ # "symbol": "CQT-USDT", # spot
567
+ # "base_currency": "CQT",
568
+ # "is_trader_geofenced": False,
569
+ # "list_time": "2021-06-15T00:00:00.000Z",
570
+ # "type": "spot",
571
+ # "series_code": "CQT-USDT-SPOT",
572
+ # "long_name": "Covalent",
573
+ # "asset_class": "CRYPTO",
574
+ # "minimum_price_increment": "0.0001",
575
+ # "minimum_size_increment": "0.0001",
576
+ # "quote_currency": "USDT",
577
+ # "index_code": null,
578
+ # "price_band_threshold_market": "0.05",
579
+ # "price_band_threshold_limit": "0.25",
580
+ # "last_price": "0.12160000",
581
+ # "fair_price": "0.12300000",
582
+ # "index_price": null
583
+ # }
584
+ isSwap = self.safe_string(market, 'type') == 'perp-swap'
529
585
  id = self.safe_string(market, 'symbol')
530
586
  baseId = self.safe_string(market, 'base_currency')
531
587
  quoteId = self.safe_string(market, 'quote_currency')
@@ -534,26 +590,40 @@ class coinlist(Exchange, ImplicitAPI):
534
590
  amountPrecision = self.safe_string(market, 'minimum_size_increment')
535
591
  pricePrecision = self.safe_string(market, 'minimum_price_increment')
536
592
  created = self.safe_string(market, 'list_time')
593
+ settledId = None
594
+ settled = None
595
+ linear = None
596
+ inverse = None
597
+ contractSize = None
598
+ symbol = base + '/' + quote
599
+ if isSwap:
600
+ contractSize = self.parse_number('1')
601
+ linear = True
602
+ inverse = False
603
+ settledId = quoteId
604
+ settled = quote
605
+ symbol = symbol + ':' + quote
606
+ type = 'swap' if isSwap else 'spot'
537
607
  return {
538
608
  'id': id,
539
- 'symbol': base + '/' + quote,
609
+ 'symbol': symbol,
540
610
  'base': base,
541
611
  'quote': quote,
542
- 'settle': None,
612
+ 'settle': settled,
543
613
  'baseId': baseId,
544
614
  'quoteId': quoteId,
545
- 'settleId': None,
546
- 'type': 'spot',
547
- 'spot': True,
615
+ 'settleId': settledId,
616
+ 'type': type,
617
+ 'spot': not isSwap,
548
618
  'margin': False,
549
- 'swap': False,
619
+ 'swap': isSwap,
550
620
  'future': False,
551
621
  'option': False,
552
622
  'active': True,
553
- 'contract': False,
554
- 'linear': None,
555
- 'inverse': None,
556
- 'contractSize': None,
623
+ 'contract': isSwap,
624
+ 'linear': linear,
625
+ 'inverse': inverse,
626
+ 'contractSize': contractSize,
557
627
  'expiry': None,
558
628
  'expiryDatetime': None,
559
629
  'strike': None,
@@ -1321,13 +1321,32 @@ class deribit(Exchange, ImplicitAPI):
1321
1321
  await self.load_markets()
1322
1322
  symbols = self.market_symbols(symbols)
1323
1323
  code = self.safe_string_2(params, 'code', 'currency')
1324
+ type = None
1324
1325
  params = self.omit(params, ['code'])
1326
+ if symbols is not None:
1327
+ for i in range(0, len(symbols)):
1328
+ market = self.market(symbols[i])
1329
+ if code is not None and code != market['base']:
1330
+ raise BadRequest(self.id + ' fetchTickers the base currency must be the same for all symbols, self endpoint only supports one base currency at a time. Read more about it here: https://docs.deribit.com/#public-get_book_summary_by_currency')
1331
+ if code is None:
1332
+ code = market['base']
1333
+ type = market['type']
1325
1334
  if code is None:
1326
1335
  raise ArgumentsRequired(self.id + ' fetchTickers requires a currency/code(eg: BTC/ETH/USDT) parameter to fetch tickers for')
1327
1336
  currency = self.currency(code)
1328
1337
  request: dict = {
1329
1338
  'currency': currency['id'],
1330
1339
  }
1340
+ if type is not None:
1341
+ requestType = None
1342
+ if type == 'spot':
1343
+ requestType = 'spot'
1344
+ elif type == 'future' or (type == 'contract'):
1345
+ requestType = 'future'
1346
+ elif type == 'option':
1347
+ requestType = 'option'
1348
+ if requestType is not None:
1349
+ request['kind'] = requestType
1331
1350
  response = await self.publicGetGetBookSummaryByCurrency(self.extend(request, params))
1332
1351
  #
1333
1352
  # {
@@ -1485,6 +1485,10 @@ class gate(Exchange, ImplicitAPI):
1485
1485
  takerPercent = self.safe_string(market, 'taker_fee_rate')
1486
1486
  makerPercent = self.safe_string(market, 'maker_fee_rate', takerPercent)
1487
1487
  isLinear = quote == settle
1488
+ contractSize = self.safe_string(market, 'quanto_multiplier')
1489
+ # exception only for one market: https://api.gateio.ws/api/v4/futures/btc/contracts
1490
+ if contractSize == '0':
1491
+ contractSize = '1' # 1 USD in WEB: https://i.imgur.com/MBBUI04.png
1488
1492
  return {
1489
1493
  'id': id,
1490
1494
  'symbol': symbol,
@@ -1506,7 +1510,7 @@ class gate(Exchange, ImplicitAPI):
1506
1510
  'inverse': not isLinear,
1507
1511
  'taker': self.parse_number(Precise.string_div(takerPercent, '100')), # Fee is in %, so divide by 100
1508
1512
  'maker': self.parse_number(Precise.string_div(makerPercent, '100')),
1509
- 'contractSize': self.safe_number(market, 'quanto_multiplier'),
1513
+ 'contractSize': self.parse_number(contractSize),
1510
1514
  'expiry': expiry,
1511
1515
  'expiryDatetime': self.iso8601(expiry),
1512
1516
  'strike': None,
@@ -1819,9 +1823,9 @@ class gate(Exchange, ImplicitAPI):
1819
1823
  partFirst = self.safe_string(parts, 0)
1820
1824
  # if there's an underscore then the second part is always the chain name(except the _OLD suffix)
1821
1825
  currencyName = currencyId if currencyId.endswith('_OLD') else partFirst
1822
- withdrawEnabled = not self.safe_bool(entry, 'withdraw_disabled')
1823
- depositEnabled = not self.safe_bool(entry, 'deposit_disabled')
1824
- tradeDisabled = not self.safe_bool(entry, 'trade_disabled')
1826
+ withdrawDisabled = self.safe_bool(entry, 'withdraw_disabled', False)
1827
+ depositDisabled = self.safe_bool(entry, 'deposit_disabled', False)
1828
+ tradeDisabled = self.safe_bool(entry, 'trade_disabled', False)
1825
1829
  precision = self.parse_number('0.0001') # temporary safe default, because no value provided from API
1826
1830
  code = self.safe_currency_code(currencyName)
1827
1831
  # check leveraged tokens(e.g. BTC3S, ETH5L)
@@ -1849,8 +1853,8 @@ class gate(Exchange, ImplicitAPI):
1849
1853
  },
1850
1854
  },
1851
1855
  'active': not tradeDisabled,
1852
- 'deposit': depositEnabled,
1853
- 'withdraw': withdrawEnabled,
1856
+ 'deposit': not depositDisabled,
1857
+ 'withdraw': not withdrawDisabled,
1854
1858
  'fee': None,
1855
1859
  'precision': precision,
1856
1860
  }
@@ -6366,7 +6370,7 @@ class gate(Exchange, ImplicitAPI):
6366
6370
  queryString = self.urlencode(query)
6367
6371
  # https://github.com/ccxt/ccxt/issues/25570
6368
6372
  if queryString.find('currencies=') >= 0 and queryString.find('%2C') >= 0:
6369
- queryString = queryString.replace('%2', ',')
6373
+ queryString = queryString.replace('%2C', ',')
6370
6374
  url += '?' + queryString
6371
6375
  if method == 'PATCH':
6372
6376
  body = self.json(query)
@@ -44,7 +44,7 @@ class hitbtc(Exchange, ImplicitAPI):
44
44
  'margin': True,
45
45
  'swap': True,
46
46
  'future': False,
47
- 'option': None,
47
+ 'option': False,
48
48
  'addMargin': True,
49
49
  'cancelAllOrders': True,
50
50
  'cancelOrder': True,
@@ -76,6 +76,7 @@ class hitbtc(Exchange, ImplicitAPI):
76
76
  'fetchFundingRate': True,
77
77
  'fetchFundingRateHistory': True,
78
78
  'fetchFundingRates': True,
79
+ 'fetchGreeks': False,
79
80
  'fetchIndexOHLCV': True,
80
81
  'fetchIsolatedBorrowRate': False,
81
82
  'fetchIsolatedBorrowRates': False,
@@ -88,6 +89,7 @@ class hitbtc(Exchange, ImplicitAPI):
88
89
  'fetchMarkets': True,
89
90
  'fetchMarkOHLCV': True,
90
91
  'fetchMyLiquidations': False,
92
+ 'fetchMySettlementHistory': False,
91
93
  'fetchMyTrades': True,
92
94
  'fetchOHLCV': True,
93
95
  'fetchOpenInterest': True,
@@ -95,6 +97,8 @@ class hitbtc(Exchange, ImplicitAPI):
95
97
  'fetchOpenInterests': True,
96
98
  'fetchOpenOrder': True,
97
99
  'fetchOpenOrders': True,
100
+ 'fetchOption': False,
101
+ 'fetchOptionChain': False,
98
102
  'fetchOrder': True,
99
103
  'fetchOrderBook': True,
100
104
  'fetchOrderBooks': True,
@@ -103,12 +107,14 @@ class hitbtc(Exchange, ImplicitAPI):
103
107
  'fetchPosition': True,
104
108
  'fetchPositions': True,
105
109
  'fetchPremiumIndexOHLCV': True,
110
+ 'fetchSettlementHistory': False,
106
111
  'fetchTicker': True,
107
112
  'fetchTickers': True,
108
113
  'fetchTrades': True,
109
114
  'fetchTradingFee': True,
110
115
  'fetchTradingFees': True,
111
116
  'fetchTransactions': 'emulated',
117
+ 'fetchVolatilityHistory': False,
112
118
  'fetchWithdrawals': True,
113
119
  'reduceMargin': True,
114
120
  'sandbox': True,
ccxt/async_support/okx.py CHANGED
@@ -1294,6 +1294,7 @@ class okx(Exchange, ImplicitAPI):
1294
1294
  },
1295
1295
  'fetchOHLCV': {
1296
1296
  'limit': 300,
1297
+ 'historical': 100,
1297
1298
  },
1298
1299
  },
1299
1300
  'spot': {
@@ -2385,6 +2386,8 @@ class okx(Exchange, ImplicitAPI):
2385
2386
  timezone = self.safe_string(options, 'timezone', 'UTC')
2386
2387
  if limit is None:
2387
2388
  limit = 100 # default 100, max 100
2389
+ else:
2390
+ limit = min(limit, 300) # max 100
2388
2391
  duration = self.parse_timeframe(timeframe)
2389
2392
  bar = self.safe_string(self.timeframes, timeframe, timeframe)
2390
2393
  if (timezone == 'UTC') and (duration >= 21600): # if utc and timeframe >= 6h
@@ -2402,6 +2405,7 @@ class okx(Exchange, ImplicitAPI):
2402
2405
  historyBorder = now - ((1440 - 1) * durationInMilliseconds)
2403
2406
  if since < historyBorder:
2404
2407
  defaultType = 'HistoryCandles'
2408
+ limit = min(limit, 100) # max 100 for historical endpoint
2405
2409
  startTime = max(since - 1, 0)
2406
2410
  request['before'] = startTime
2407
2411
  request['after'] = self.sum(since, durationInMilliseconds * limit)
ccxt/base/errors.py CHANGED
@@ -1,9 +1,3 @@
1
- # ----------------------------------------------------------------------------
2
-
3
- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
- # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
- # EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
-
7
1
  error_hierarchy = {
8
2
  'BaseError': {
9
3
  'ExchangeError': {
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.73'
7
+ __version__ = '4.4.74'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -6472,18 +6472,36 @@ class Exchange(object):
6472
6472
  return result
6473
6473
 
6474
6474
  def remove_repeated_elements_from_array(self, input, fallbackToTimestamp: bool = True):
6475
- uniqueResult = {}
6475
+ uniqueDic = {}
6476
+ uniqueResult = []
6476
6477
  for i in range(0, len(input)):
6477
6478
  entry = input[i]
6478
6479
  uniqValue = self.safe_string_n(entry, ['id', 'timestamp', 0]) if fallbackToTimestamp else self.safe_string(entry, 'id')
6479
- if uniqValue is not None and not (uniqValue in uniqueResult):
6480
- uniqueResult[uniqValue] = entry
6481
- values = list(uniqueResult.values())
6482
- valuesLength = len(values)
6480
+ if uniqValue is not None and not (uniqValue in uniqueDic):
6481
+ uniqueDic[uniqValue] = 1
6482
+ uniqueResult.append(entry)
6483
+ valuesLength = len(uniqueResult)
6483
6484
  if valuesLength > 0:
6484
- return values
6485
+ return uniqueResult
6485
6486
  return input
6486
6487
 
6488
+ def remove_repeated_trades_from_array(self, input):
6489
+ uniqueResult = {}
6490
+ for i in range(0, len(input)):
6491
+ entry = input[i]
6492
+ id = self.safe_string(entry, 'id')
6493
+ if id is None:
6494
+ price = self.safe_string(entry, 'price')
6495
+ amount = self.safe_string(entry, 'amount')
6496
+ timestamp = self.safe_string(entry, 'timestamp')
6497
+ side = self.safe_string(entry, 'side')
6498
+ # unique trade identifier
6499
+ id = 't_' + str(timestamp) + '_' + side + '_' + price + '_' + amount
6500
+ if id is not None and not (id in uniqueResult):
6501
+ uniqueResult[id] = entry
6502
+ values = list(uniqueResult.values())
6503
+ return values
6504
+
6487
6505
  def handle_until_option(self, key: str, request, params, multiplier=1):
6488
6506
  until = self.safe_integer_2(params, 'until', 'till')
6489
6507
  if until is not None:
ccxt/bequant.py CHANGED
@@ -19,6 +19,7 @@ class bequant(hitbtc, ImplicitAPI):
19
19
  'urls': {
20
20
  'logo': 'https://github.com/user-attachments/assets/0583ef1f-29fe-4b7c-8189-63565a0e2867',
21
21
  'api': {
22
+ # v3
22
23
  'public': 'https://api.bequant.io/api/3',
23
24
  'private': 'https://api.bequant.io/api/3',
24
25
  },
ccxt/binanceusdm.py CHANGED
@@ -36,7 +36,7 @@ class binanceusdm(binance, ImplicitAPI):
36
36
  'fetchMarkets': ['linear'],
37
37
  'defaultSubType': 'linear',
38
38
  # https://www.binance.com/en/support/faq/360033162192
39
- # tier amount, maintenance margin, initial margin
39
+ # tier amount, maintenance margin, initial margin,
40
40
  'leverageBrackets': None,
41
41
  'marginTypes': {},
42
42
  'marginModes': {},
ccxt/bit2c.py CHANGED
@@ -36,36 +36,61 @@ class bit2c(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': False,
40
43
  'cancelOrder': True,
41
44
  'closeAllPositions': False,
42
45
  'closePosition': False,
43
46
  'createOrder': True,
47
+ 'createOrderWithTakeProfitAndStopLoss': False,
48
+ 'createOrderWithTakeProfitAndStopLossWs': False,
44
49
  'createReduceOnlyOrder': False,
45
50
  'fetchBalance': True,
51
+ 'fetchBorrowInterest': False,
52
+ 'fetchBorrowRate': False,
46
53
  'fetchBorrowRateHistories': False,
47
54
  'fetchBorrowRateHistory': False,
55
+ 'fetchBorrowRates': False,
56
+ 'fetchBorrowRatesPerSymbol': False,
48
57
  'fetchCrossBorrowRate': False,
49
58
  'fetchCrossBorrowRates': False,
50
59
  'fetchDepositAddress': True,
51
60
  'fetchDepositAddresses': False,
52
61
  'fetchDepositAddressesByNetwork': False,
53
62
  'fetchFundingHistory': False,
63
+ 'fetchFundingInterval': False,
64
+ 'fetchFundingIntervals': False,
54
65
  'fetchFundingRate': False,
55
66
  'fetchFundingRateHistory': False,
56
67
  'fetchFundingRates': False,
68
+ 'fetchGreeks': False,
57
69
  'fetchIndexOHLCV': False,
58
70
  'fetchIsolatedBorrowRate': False,
59
71
  'fetchIsolatedBorrowRates': False,
72
+ 'fetchIsolatedPositions': False,
60
73
  'fetchLeverage': False,
74
+ 'fetchLeverages': False,
61
75
  'fetchLeverageTiers': False,
76
+ 'fetchLiquidations': False,
77
+ 'fetchLongShortRatio': False,
78
+ 'fetchLongShortRatioHistory': False,
79
+ 'fetchMarginAdjustmentHistory': False,
62
80
  'fetchMarginMode': False,
81
+ 'fetchMarginModes': False,
82
+ 'fetchMarketLeverageTiers': False,
63
83
  'fetchMarkOHLCV': False,
84
+ 'fetchMarkPrices': False,
85
+ 'fetchMyLiquidations': False,
86
+ 'fetchMySettlementHistory': False,
64
87
  'fetchMyTrades': True,
65
88
  'fetchOpenInterest': False,
66
89
  'fetchOpenInterestHistory': False,
67
90
  'fetchOpenInterests': False,
68
91
  'fetchOpenOrders': True,
92
+ 'fetchOption': False,
93
+ 'fetchOptionChain': False,
69
94
  'fetchOrder': True,
70
95
  'fetchOrderBook': True,
71
96
  'fetchPosition': False,
@@ -84,6 +109,7 @@ class bit2c(Exchange, ImplicitAPI):
84
109
  'fetchTransfer': False,
85
110
  'fetchTransfers': False,
86
111
  'fetchUnderlyingAssets': False,
112
+ 'fetchVolatilityHistory': False,
87
113
  'reduceMargin': False,
88
114
  'repayCrossMargin': False,
89
115
  'repayIsolatedMargin': False,
ccxt/bitbank.py CHANGED
@@ -34,35 +34,62 @@ class bitbank(Exchange, ImplicitAPI):
34
34
  'future': False,
35
35
  'option': False,
36
36
  'addMargin': False,
37
+ 'borrowCrossMargin': False,
38
+ 'borrowIsolatedMargin': False,
39
+ 'borrowMargin': False,
37
40
  'cancelAllOrders': False,
38
41
  'cancelOrder': True,
39
42
  'closeAllPositions': False,
40
43
  'closePosition': False,
41
44
  'createOrder': True,
45
+ 'createOrderWithTakeProfitAndStopLoss': False,
46
+ 'createOrderWithTakeProfitAndStopLossWs': False,
42
47
  'createReduceOnlyOrder': False,
43
48
  'fetchBalance': True,
49
+ 'fetchBorrowInterest': False,
50
+ 'fetchBorrowRate': False,
44
51
  'fetchBorrowRateHistories': False,
45
52
  'fetchBorrowRateHistory': False,
53
+ 'fetchBorrowRates': False,
54
+ 'fetchBorrowRatesPerSymbol': False,
46
55
  'fetchCrossBorrowRate': False,
47
56
  'fetchCrossBorrowRates': False,
48
57
  'fetchDepositAddress': True,
49
58
  'fetchDepositAddresses': False,
50
59
  'fetchDepositAddressesByNetwork': False,
51
60
  'fetchFundingHistory': False,
61
+ 'fetchFundingInterval': False,
62
+ 'fetchFundingIntervals': False,
52
63
  'fetchFundingRate': False,
53
64
  'fetchFundingRateHistory': False,
54
65
  'fetchFundingRates': False,
66
+ 'fetchGreeks': False,
55
67
  'fetchIndexOHLCV': False,
56
68
  'fetchIsolatedBorrowRate': False,
57
69
  'fetchIsolatedBorrowRates': False,
70
+ 'fetchIsolatedPositions': False,
58
71
  'fetchLeverage': False,
72
+ 'fetchLeverages': False,
59
73
  'fetchLeverageTiers': False,
74
+ 'fetchLiquidations': False,
75
+ 'fetchLongShortRatio': False,
76
+ 'fetchLongShortRatioHistory': False,
77
+ 'fetchMarginAdjustmentHistory': False,
60
78
  'fetchMarginMode': False,
79
+ 'fetchMarginModes': False,
80
+ 'fetchMarketLeverageTiers': False,
61
81
  'fetchMarkOHLCV': False,
82
+ 'fetchMarkPrices': False,
83
+ 'fetchMyLiquidations': False,
84
+ 'fetchMySettlementHistory': False,
62
85
  'fetchMyTrades': True,
63
86
  'fetchOHLCV': True,
87
+ 'fetchOpenInterest': False,
64
88
  'fetchOpenInterestHistory': False,
89
+ 'fetchOpenInterests': False,
65
90
  'fetchOpenOrders': True,
91
+ 'fetchOption': False,
92
+ 'fetchOptionChain': False,
66
93
  'fetchOrder': True,
67
94
  'fetchOrderBook': True,
68
95
  'fetchPosition': False,
@@ -73,14 +100,19 @@ class bitbank(Exchange, ImplicitAPI):
73
100
  'fetchPositionsHistory': False,
74
101
  'fetchPositionsRisk': False,
75
102
  'fetchPremiumIndexOHLCV': False,
103
+ 'fetchSettlementHistory': False,
76
104
  'fetchTicker': True,
77
105
  'fetchTrades': True,
78
106
  'fetchTradingFee': False,
79
107
  'fetchTradingFees': True,
80
108
  'fetchTransfer': False,
81
109
  'fetchTransfers': False,
110
+ 'fetchVolatilityHistory': False,
82
111
  'reduceMargin': False,
112
+ 'repayCrossMargin': False,
113
+ 'repayIsolatedMargin': False,
83
114
  'setLeverage': False,
115
+ 'setMargin': False,
84
116
  'setMarginMode': False,
85
117
  'setPositionMode': False,
86
118
  'transfer': False,
ccxt/bitbns.py CHANGED
@@ -315,7 +315,7 @@ class bitbns(Exchange, ImplicitAPI):
315
315
  'swap': False,
316
316
  'future': False,
317
317
  'option': False,
318
- 'active': None,
318
+ 'active': self.safe_bool(market, 'active'),
319
319
  'contract': False,
320
320
  'linear': None,
321
321
  'inverse': None,
ccxt/bitflyer.py CHANGED
@@ -250,6 +250,7 @@ class bitflyer(Exchange, ImplicitAPI):
250
250
  # {"product_code": "BCH_BTC", "market_type": "Spot"},
251
251
  # # forex swap
252
252
  # {"product_code": "FX_BTC_JPY", "market_type": "FX"},
253
+ #
253
254
  # # future
254
255
  # {
255
256
  # "product_code": "BTCJPY11FEB2022",