Metadata-Version: 2.1
Name: aiomoex
Version: 1.0.0
Summary: Asyncio MOEX ISS API
Home-page: https://wlm1ke.github.io/aiomoex/
Author: Mikhail Korotkov aka WLMike
Author-email: wlmike@gmail.com
License: http://unlicense.org
Project-URL: Source, https://github.com/WLM1ke/aiomoex
Keywords: asyncio moex iss
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Other Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: Public Domain
Classifier: Natural Language :: Russian
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: aiohttp

# Asyncio MOEX ISS API 

[![Build Status](https://travis-ci.org/WLM1ke/aiomoex.svg?branch=master)](https://travis-ci.org/WLM1ke/aiomoex)
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/363c10e1d85b404882326cf62b78f25c)](https://www.codacy.com/app/wlmike/aiomoex?utm_source=github.com&utm_medium=referral&utm_content=WLM1ke/aiomoex&utm_campaign=Badge_Coverage)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/363c10e1d85b404882326cf62b78f25c)](https://www.codacy.com/app/wlmike/aiomoex?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=WLM1ke/aiomoex&amp;utm_campaign=Badge_Grade)

Реализация на основе asyncio части  запросов к [MOEX Informational & Statistical Server](https://www.moex.com/a2193)

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

Работа функций базируется на универсальном клиенте, позволяющем осуществлять произвольные запросы к MOEX ISS, поэтому
перечень доступных функций-запросов может быть легко расширен. При необходимости добавления функций воспользуйтесь
[Issues](https://github.com/WLM1ke/aiomoex/issues>) на GitHub с указанием ссылки на описание запроса:
- Полный перечень [запросов](https://iss.moex.com/iss/reference/) запросов к MOEX ISS
- Официальное [Руководство разработчика](https://fs.moex.com/files/6523) с дополнительной информацией

## Начало работы
### Установка 
```
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 - [описание запроса](https://iss.moex.com/iss/reference/32)
```
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
```



