def prices( tickers: tuple[str, ...], last_date: pd.Timestamp, price_type: col.PriceType = col.CLOSE, ) -> pd.DataFrame: """Дневные цены закрытия для указанных тикеров до указанной даты включительно. Пропуски заполнены предыдущими значениями. :param tickers: Тикеры, для которых нужна информация. :param last_date: Последняя дата цен закрытия. :param price_type: Тип цены — по умолчанию цена закрытия. :return: Цены закрытия. """ quotes_list = not_div.quotes(tickers) df = pd.concat( [df[price_type] for df in quotes_list], axis=1, ) df = df.loc[:last_date] df.columns = tickers return df.replace(to_replace=[np.nan, 0], method="ffill")
def dividends_validation(ticker: str) -> pd.DataFrame: """Проверяет корректности данных о дивидендах для тикера. Запускает принудительное обновление, сравнивает основные данные по дивидендам с альтернативными источниками и распечатывает результаты. """ bootstrap.BUS.handle_event(events.UpdateDivCommand(ticker)) df_local = div.dividends(ticker) df_local.columns = ["LOCAL"] div_ex = div.div_ext(ticker) df_comp = _compare(div_ex.iloc[:, -1:], df_local) df_comp = pd.concat( [div_ex.iloc[:, :-1], df_comp], axis=1, ) first_quote = not_div.quotes((ticker, ))[0].index[0] df_comp = df_comp.loc[first_quote:] comp_str = f"\nСравнение интернет источников с локальными данными - {ticker}\n\n{df_comp}" LOGGER.info(comp_str) # noqa: WPS421 return df_comp
def all_prices(tickers: tuple[str, ...], price_type: col.PriceType = col.CLOSE) -> pd.DataFrame: """Все цены определенного типа для набора тикеров.""" quotes_list = not_div.quotes(tickers) return pd.concat( [df[price_type] for df in quotes_list], axis=1, )
def turnovers(tickers: tuple[str, ...], last_date: pd.Timestamp) -> pd.DataFrame: """Дневные обороты для указанных тикеров до указанной даты включительно. Пропуски заполнены нулевыми значениями. :param tickers: Тикеры, для которых нужна информация. :param last_date: Последняя дата оборотов. :return: Обороты. """ quotes_list = not_div.quotes(tickers) df = pd.concat( [df[col.TURNOVER] for df in quotes_list], axis=1, ) df = df.loc[:last_date] df.columns = tickers return df.fillna(0, axis=0)