async def find_securities( session: aiohttp.ClientSession, string: str, columns: Optional[Iterable[str]] = ("secid", "regnumber"), ) -> client.Table: """Найти инструменты по части Кода, Названию, ISIN, Идентификатору Эмитента, Номеру гос.регистрации. Один из вариантов использования - по регистрационному номеру узнать предыдущие тикеры эмитента, и с помощью нескольких запросов об истории котировок собрать длинную историю с использованием всех предыдущих тикеров. Описание запроса - https://iss.moex.com/iss/reference/5 :param session: Сессия http соединения. :param string: Часть Кода, Названия, ISIN, Идентификатора Эмитента, Номера гос.регистрации. :param columns: Кортеж столбцов, которые нужно загрузить - по умолчанию тикер и номер государственно регистрации. Если пустой или None, то загружаются все столбцы. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame. """ url = request_helpers.make_url(ending=SECURITIES) table = SECURITIES query = request_helpers.make_query(question=string, table=table, columns=columns) return await request_helpers.get_short_data(session, url, table, query)
async def get_board_candle_borders( session: aiohttp.ClientSession, security: str, board: str = DEFAULT_BOARD, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить таблицу интервалов доступных дат для указанного режиме торгов. Описание запроса - https://iss.moex.com/iss/reference/48 :param session: Сессия http соединения. :param security: Тикер ценной бумагию :param board: Режим торгов - по умолчанию основной режим торгов T+2. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame """ url = request_helpers.make_url( engine=engine, market=market, board=board, security=security, ending=CANDLE_BORDERS, ) table = "borders" return await request_helpers.get_short_data(session, url, table)
async def get_board_dates( session: aiohttp.ClientSession, board: str = DEFAULT_BOARD, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить интервал дат, доступных в истории для рынка по заданному режиму торгов. Описание запроса - https://iss.moex.com/iss/reference/26 :param session: Сессия http соединения. :param board: Режим торгов - по умолчанию основной режим торгов T+2. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список из одного элемента - словаря с ключами 'from' и 'till'. """ url = request_helpers.make_url( history=True, engine=engine, market=market, board=board, ending="dates", ) table = "dates" return await request_helpers.get_short_data(session, url, table)
async def get_board_history( session: aiohttp.ClientSession, security: str, start: Optional[str] = None, end: Optional[str] = None, columns: Optional[Iterable[str]] = ("BOARDID", "TRADEDATE", "CLOSE", "VOLUME", "VALUE"), board: str = DEFAULT_BOARD, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить историю торгов для указанной бумаги в указанном режиме торгов за указанный интервал дат. Описание запроса - https://iss.moex.com/iss/reference/65 :param session: Сессия http соединения. :param security: Тикер ценной бумаги. :param start: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены с начала истории. :param end: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены до конца истории. :param columns: Кортеж столбцов, которые нужно загрузить - по умолчанию режим торгов, дата торгов, цена закрытия и объем в штуках и стоимости. Если пустой или None, то загружаются все столбцы. :param board: Режим торгов - по умолчанию основной режим торгов T+2. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame. """ url = request_helpers.make_url( history=True, engine=engine, market=market, board=board, security=security, ) table = "history" query = request_helpers.make_query(start=start, end=end, table=table, columns=columns) return await request_helpers.get_long_data(session, url, table, query)
async def get_board_candles( session: aiohttp.ClientSession, security: str, interval: int = 24, start: Optional[str] = None, end: Optional[str] = None, board: str = DEFAULT_BOARD, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить свечи в формате HLOCV указанного инструмента в указанном режиме торгов за интервал дат. Описание запроса - https://iss.moex.com/iss/reference/46 :param session: Сессия http соединения. :param security: Тикер ценной бумаги. :param interval: Размер свечки - целое число 1 (1 минута), 10 (10 минут), 60 (1 час), 24 (1 день), 7 (1 неделя), 31 (1 месяц) или 4 (1 квартал). По умолчанию дневные данные. :param start: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены с начала истории. :param end: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены до конца истории. :param board: Режим торгов - по умолчанию основной режим торгов T+2. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame. """ url = request_helpers.make_url( engine=engine, market=market, board=board, security=security, ending=CANDLES, ) table = CANDLES query = request_helpers.make_query(interval=interval, start=start, end=end) return await request_helpers.get_long_data(session, url, table, query)
async def get_market_candles( session: aiohttp.ClientSession, security: str, interval: int = 24, start: Optional[str] = None, end: Optional[str] = None, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить свечи в формате HLOCV указанного инструмента на рынке для основного режима торгов. Если торговля идет в нескольких основных режимах, то на один интервал времени может быть выдано несколько свечек - по свечке на каждый режим. Предположительно такая ситуация может произойти для свечек длиннее 1 дня. Описание запроса - https://iss.moex.com/iss/reference/155 :param session: Сессия http соединения. :param security: Тикер ценной бумаги. :param interval: Размер свечки - целое число 1 (1 минута), 10 (10 минут), 60 (1 час), 24 (1 день), 7 (1 неделя), 31 (1 месяц) или 4 (1 квартал). По умолчанию дневные данные. :param start: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены с начала истории. :param end: Дата вида ГГГГ-ММ-ДД. При отсутствии данные будут загружены до конца истории. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame. """ url = request_helpers.make_url(engine=engine, market=market, security=security, ending=CANDLES) table = CANDLES query = request_helpers.make_query(interval=interval, start=start, end=end) return await request_helpers.get_long_data(session, url, table, query)
async def get_reference(session: aiohttp.ClientSession, placeholder: str = "boards") -> client.Table: """Получить перечень доступных значений плейсхолдера в адресе запроса. Например в описание запроса https://iss.moex.com/iss/reference/32 присутствует следующий адрес /iss/engines/[engine]/markets/[market]/boards/[board]/securities с плейсхолдерами engines, markets и boards. Описание запроса - https://iss.moex.com/iss/reference/28 :param session: Сессия http соединения. :param placeholder: Наименование плейсхолдера в адресе запроса: engines, markets, boards, boardgroups, durations, securitytypes, securitygroups, securitycollections. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame. """ url = request_helpers.make_url(ending="index") return await request_helpers.get_short_data(session, url, placeholder)
async def get_board_securities( session: aiohttp.ClientSession, table: str = SECURITIES, columns: Optional[Iterable[str]] = ("SECID", "REGNUMBER", "LOTSIZE", "SHORTNAME"), board: str = DEFAULT_BOARD, market: str = DEFAULT_MARKET, engine: str = DEFAULT_ENGINE, ) -> client.Table: """Получить таблицу инструментов по режиму торгов со вспомогательной информацией. Описание запроса - https://iss.moex.com/iss/reference/32 :param session: Сессия http соединения. :param table: Таблица с данными, которую нужно вернуть: securities - справочник торгуемых ценных бумаг, marketdata - данные с результатами торгов текущего дня. :param columns: Кортеж столбцов, которые нужно загрузить - по умолчанию тикер, номер государственно регистрации, размер лота и краткое название. Если пустой или None, то загружаются все столбцы. :param board: Режим торгов - по умолчанию основной режим торгов T+2. :param market: Рынок - по умолчанию акции. :param engine: Движок - по умолчанию акции. :return: Список словарей, которые напрямую конвертируется в pandas.DataFrame """ url = request_helpers.make_url(engine=engine, market=market, board=board, ending=SECURITIES) query = request_helpers.make_query(table=table, columns=columns) return await request_helpers.get_short_data(session, url, table, query)