Skip to main content

Asyncio MOEX ISS API

Project description

Asyncio MOEX ISS API

Реализация на основе asyncio части запросов к MOEX Informational & Statistical Server.

Документация

https://wlm1ke.github.io/aiomoex/

Основные возможности

Реализовано несколько функций-запросов информации о торгуемых акциях и их исторических котировках, результаты которых напрямую конвертируются в pandas.DataFrame.

Работа функций базируется на универсальном клиенте, позволяющем осуществлять произвольные запросы к MOEX ISS, поэтому перечень доступных функций-запросов может быть легко расширен. При необходимости добавления функций воспользуйтесь Issues на GitHub с указанием ссылки на описание запроса:

Почему 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 aiohttp

import aiomoex
import pandas as pd


async def main():
    async with aiohttp.ClientSession() as session:
        data = await aiomoex.get_board_history(session, 'SNGSP')
        df = pd.DataFrame(data)
        df.set_index('TRADEDATE', inplace=True)
        print(df.head(), '\n')
        print(df.tail(), '\n')
        df.info()


asyncio.run(main())
           BOARDID  CLOSE    VOLUME         VALUE
TRADEDATE
2014-06-09    TQBR  27.48  12674200  3.484352e+08
2014-06-10    TQBR  27.55  14035900  3.856417e+08
2014-06-11    TQBR  28.15  27208800  7.602146e+08
2014-06-16    TQBR  28.27  68059900  1.913160e+09
2014-06-17    TQBR  28.20  22101600  6.292844e+08

           BOARDID   CLOSE    VOLUME         VALUE
TRADEDATE
2020-09-01    TQBR  37.245  15671200  5.824013e+08
2020-09-02    TQBR  37.535  34659700  1.296441e+09
2020-09-03    TQBR  36.955  28177000  1.049745e+09
2020-09-04    TQBR  36.915  21908000  8.076767e+08
2020-09-07    TQBR  37.200  13334400  4.955280e+08

<class 'pandas.core.frame.DataFrame'>
Index: 1573 entries, 2014-06-09 to 2020-09-07
Data columns (total 4 columns):
 #   Column   Non-Null Count  Dtype
---  ------   --------------  -----
 0   BOARDID  1573 non-null   object
 1   CLOSE    1573 non-null   float64
 2   VOLUME   1573 non-null   int64
 3   VALUE    1573 non-null   float64
dtypes: float64(2), int64(1), object(1)
memory usage: 61.4+ KB

Пример реализации запроса с помощью клиента

Перечень акций, торгующихся в режиме TQBR (описание запроса):

import asyncio

import aiohttp

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")}

    async with aiohttp.ClientSession() as session:
        iss = aiomoex.ISSClient(session, request_url, arguments)
        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()


asyncio.run(main())
          REGNUMBER  LOTSIZE   SHORTNAME
SECID
ABRD   1-02-12500-A       10  АбрауДюрсо
AFKS   1-05-01669-A      100  Система ао
AFLT   1-01-00010-A       10    Аэрофлот
AGRO           None        1    AGRO-гдр
AKRN   1-03-00207-A        1       Акрон

          REGNUMBER  LOTSIZE   SHORTNAME
SECID
YNDX           None        1  Yandex clA
YRSB   1-01-50099-A       10     ТНСэнЯр
YRSBP  2-01-50099-A       10   ТНСэнЯр-п
ZILL   1-02-00036-A        1      ЗИЛ ао
ZVEZ   1-01-00169-D     1000   ЗВЕЗДА ао

<class 'pandas.core.frame.DataFrame'>
Index: 260 entries, ABRD to ZVEZ
Data columns (total 3 columns):
 #   Column     Non-Null Count  Dtype
---  ------     --------------  -----
 0   REGNUMBER  248 non-null    object
 1   LOTSIZE    260 non-null    int64
 2   SHORTNAME  260 non-null    object
dtypes: int64(1), object(2)
memory usage: 8.1+ KB

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiomoex-2.1.2.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

aiomoex-2.1.2-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file aiomoex-2.1.2.tar.gz.

File metadata

  • Download URL: aiomoex-2.1.2.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for aiomoex-2.1.2.tar.gz
Algorithm Hash digest
SHA256 56b251104ba2bfeed2a457d4091db6cf4168615f01dcf0be21d9ade836bedb86
MD5 fd57c513437913c286b5f2df9ef549d3
BLAKE2b-256 cf388efc752b9a3a50ed7160535e94bacdc44d0ba37518e32b3c744772f8bf28

See more details on using hashes here.

File details

Details for the file aiomoex-2.1.2-py3-none-any.whl.

File metadata

  • Download URL: aiomoex-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for aiomoex-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9e8430d571ef5401cf78207576efe8f082e18dad2c6c1cf2420027dc74ad6afe
MD5 951f158ab04b7b529480fe11f6611fd3
BLAKE2b-256 e179cdfcebb588e77ceb9681452762b6cf20fc780589410d16b45fb4aed7894f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page