retrieves data on all markets for bybit https://bybit-exchange.github.io/docs/v5/market/instrument :param dict [params]: extra parameters specific to the exchange API endpoint :returns dict[]: an array of objects representing market data
(self, params={})
| 1860 | }) |
| 1861 | |
| 1862 | async def fetch_markets(self, params={}) -> List[Market]: |
| 1863 | """ |
| 1864 | retrieves data on all markets for bybit |
| 1865 | |
| 1866 | https://bybit-exchange.github.io/docs/v5/market/instrument |
| 1867 | |
| 1868 | :param dict [params]: extra parameters specific to the exchange API endpoint |
| 1869 | :returns dict[]: an array of objects representing market data |
| 1870 | """ |
| 1871 | if self.options['adjustForTimeDifference']: |
| 1872 | await self.load_time_difference() |
| 1873 | promisesUnresolved = [] |
| 1874 | types = None |
| 1875 | defaultTypes = ['spot', 'linear', 'inverse', 'option'] |
| 1876 | fetchMarketsOptions = self.safe_dict(self.options, 'fetchMarkets') |
| 1877 | if fetchMarketsOptions is not None: |
| 1878 | types = self.safe_list(fetchMarketsOptions, 'types', defaultTypes) |
| 1879 | else: |
| 1880 | # for backward-compatibility |
| 1881 | types = self.safe_list(self.options, 'fetchMarkets', defaultTypes) |
| 1882 | for i in range(0, len(types)): |
| 1883 | marketType = types[i] |
| 1884 | if marketType == 'spot': |
| 1885 | promisesUnresolved.append(self.fetch_spot_markets(params)) |
| 1886 | elif marketType == 'linear': |
| 1887 | promisesUnresolved.append(self.fetch_future_markets({'category': 'linear'})) |
| 1888 | elif marketType == 'inverse': |
| 1889 | promisesUnresolved.append(self.fetch_future_markets({'category': 'inverse'})) |
| 1890 | elif marketType == 'option': |
| 1891 | optionsCurrencies = self.safe_list(fetchMarketsOptions, 'options', ['BTC', 'ETH', 'SOL']) |
| 1892 | for j in range(0, len(optionsCurrencies)): |
| 1893 | currency = optionsCurrencies[j] |
| 1894 | promisesUnresolved.append(self.fetch_option_markets({'baseCoin': currency})) |
| 1895 | else: |
| 1896 | raise ExchangeError(self.id + ' fetchMarkets() self.options fetchMarkets "' + marketType + '" is not a supported market type') |
| 1897 | promises = await asyncio.gather(*promisesUnresolved) |
| 1898 | result = [] |
| 1899 | for i in range(0, len(promises)): |
| 1900 | parsedMarket = promises[i] |
| 1901 | result = self.array_concat(result, parsedMarket) |
| 1902 | # spotMarkets = self.safe_list(promises, 0, []) |
| 1903 | # linearMarkets = self.safe_list(promises, 1, []) |
| 1904 | # inverseMarkets = self.safe_list(promises, 2, []) |
| 1905 | # btcOptionMarkets = self.safe_list(promises, 3, []) |
| 1906 | # ethOptionMarkets = self.safe_list(promises, 4, []) |
| 1907 | # solOptionMarkets = self.safe_list(promises, 5, []) |
| 1908 | # futureMarkets = self.array_concat(linearMarkets, inverseMarkets) |
| 1909 | # optionMarkets = self.array_concat(btcOptionMarkets, ethOptionMarkets) |
| 1910 | # optionMarkets = self.array_concat(optionMarkets, solOptionMarkets) |
| 1911 | # derivativeMarkets = self.array_concat(futureMarkets, optionMarkets) |
| 1912 | # return self.array_concat(spotMarkets, derivativeMarkets) |
| 1913 | return result |
| 1914 | |
| 1915 | async def fetch_spot_markets(self, params) -> List[Market]: |
| 1916 | request = { |
nothing calls this directly
no test coverage detected