Asyncio MOEX ISS API
Project description
Asyncio MOEX ISS API
Реализация на основе asyncio части запросов к MOEX Informational & Statistical Server
Основные возможности
Реализовано несколько функций-запросов информации о торгуемых акциях и их исторических котировках, результаты которых напрямую конвертируются в pandas.DataFrame.
Работа функций базируется на универсальном клиенте, позволяющем осуществлять произвольные запросы к MOEX ISS, поэтому перечень доступных функций-запросов может быть легко расширен. При необходимости добавления функций воспользуйтесь Issues на GitHub с указанием ссылки на описание запроса:
- Полный перечень запросов запросов к MOEX ISS
- Официальное Руководство разработчика с дополнительной информацией
Начало работы
Установка
pip install aiomoex
Пример использования реализованных запросов
История котировок SNGSP в режиме TQBR
import asyncio
import aiomoex
import pandas as pd
async def main():
async with aiomoex.ISSClientSession():
data = await aiomoex.get_board_history('SNGSP')
df = pd.DataFrame(data)
df.set_index('TRADEDATE', inplace=True)
print(df.head(), '\n')
print(df.tail(), '\n')
df.info()
asyncio.run(main())
CLOSE VOLUME
TRADEDATE
2014-06-09 27.48 12674200
2014-06-10 27.55 14035900
2014-06-11 28.15 27208800
2014-06-16 28.27 68059900
2014-06-17 28.20 22101600
CLOSE VOLUME
TRADEDATE
2018-11-16 37.860 9660800
2018-11-19 37.315 28765600
2018-11-20 36.790 19853500
2018-11-21 36.930 14583000
2018-11-22 37.480 9656600
<class 'pandas.core.frame.DataFrame'>
Index: 1125 entries, 2014-06-09 to 2018-11-22
Data columns (total 2 columns):
CLOSE 1125 non-null float64
VOLUME 1125 non-null int64
dtypes: float64(1), int64(1)
memory usage: 26.4+ KB
Пример реализации запроса с помощью клиента
Перечень акций, торгующихся в режиме TQBR - описание запроса
import asyncio
import aiomoex
import pandas as pd
async def main():
request_url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json'
arguments = {'securities.columns': 'SECID,REGNUMBER,LOTSIZE,SHORTNAME'}
iss = aiomoex.ISSClient(request_url, arguments)
iss.start_session()
data = await iss.get()
df = pd.DataFrame(data['securities'])
df.set_index('SECID', inplace=True)
print(df.head(), '\n')
print(df.tail(), '\n')
df.info()
await iss.close_session()
asyncio.run(main())
LOTSIZE REGNUMBER SHORTNAME
SECID
ABRD 10 1-02-12500-A АбрауДюрсо
AFKS 100 1-05-01669-A Система ао
AFLT 10 1-01-00010-A Аэрофлот
AGRO 1 None AGRO-гдр
AKRN 1 1-03-00207-A Акрон
LOTSIZE REGNUMBER SHORTNAME
SECID
YRSBP 100 2-01-50099-A ТНСэнЯр-п
ZILL 1 1-02-00036-A ЗИЛ ао
ZMZN 10 1-01-00230-A ЗМЗ-ао
ZMZNP 100 2-01-00230-A ЗМЗ-ап
ZVEZ 1000 1-01-00169-D ЗВЕЗДА ао
<class 'pandas.core.frame.DataFrame'>
Index: 277 entries, ABRD to ZVEZ
Data columns (total 3 columns):
LOTSIZE 277 non-null int64
REGNUMBER 268 non-null object
SHORTNAME 277 non-null object
dtypes: int64(1), object(2)
memory usage: 8.7+ KB
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.