Asyncio MOEX ISS API
Project description
Asyncio MOEX ISS API
Реализация на основе asyncio части запросов к MOEX Informational & Statistical Server.
Документация
Основные возможности
Реализовано несколько функций-запросов информации о торгуемых акциях и их исторических котировках, результаты которых напрямую конвертируются в pandas.DataFrame.
Работа функций базируется на универсальном клиенте, позволяющем осуществлять произвольные запросы к MOEX ISS, поэтому перечень доступных функций-запросов может быть легко расширен. При необходимости добавления функций воспользуйтесь Issues на GitHub с указанием ссылки на описание запроса:
Полный перечень возможных запросов к MOEX ISS
Официальное Руководство разработчика с дополнительной информацией
Почему asyncio?
На многие запросы MOEX ISS выдает данные порциями по 100 элементов, и для получения всей информации требуются дополнительные обращения к серверу для загрузки данных не с начальной позиции. Например, для скачивания котировок всех акций во всех режимах может потребоваться несколько десятков тысяч обращений к серверу.
Результаты маленького тестирования загрузки исторических котировок в режиме TQBR для 35 и 277 (всех торгуемых) акций с помощью синхронных запросов:
Вид запросов |
35 акций |
277 акций |
|---|---|---|
asyncio |
12.6 сек |
40.6 сек |
Синхронные |
210.4 сек |
1436.9 сек |
Ускорение |
16.7 раз |
35.4 раза |
Начало работы
Установка
$ 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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiomoex-1.2.0.tar.gz.
File metadata
- Download URL: aiomoex-1.2.0.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2e3264be8386e5cb7eabcaabb852e350ac35ab45d29a38af16fd54653d62c2f
|
|
| MD5 |
6478269786f74aa1eb129ad08933bd94
|
|
| BLAKE2b-256 |
32e3500394f467e45230a21598d03c8b155404a88e20d9436a6931fc478de37a
|
File details
Details for the file aiomoex-1.2.0-py3-none-any.whl.
File metadata
- Download URL: aiomoex-1.2.0-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14728d030c01619e71defbb80d9c203b95d8939329735110a036059b59f41ff1
|
|
| MD5 |
a9744a055f475bce311a7bd13b86e4ce
|
|
| BLAKE2b-256 |
135aeb3d961e77a95f016462897a4b4fc8651ea0492034f328c4d01d89c1a39e
|