Metadata-Version: 2.1
Name: apimoex
Version: 1.4.0
Summary: MOEX ISS API
Author-email: Mikhail Korotkov aka WLMike <wlmike@gmail.com>
License: http://unlicense.org
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: requests>=2.31.0
Description-Content-Type: text/x-rst

MOEX ISS API
============

Реализация части запросов к `MOEX Informational & Statistical Server <https://www.moex.com/a2193>`_.

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

https://wlm1ke.github.io/apimoex/

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

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

Работа функций базируется на универсальном клиенте, позволяющем осуществлять произвольные запросы к MOEX ISS, поэтому
перечень доступных функций-запросов может быть легко расширен. При необходимости добавления функций воспользуйтесь
`Issues <https://github.com/WLM1ke/apimoex/issues>`_ на GitHub с указанием ссылки на описание запроса:

* Полный перечень возможных `запросов <https://iss.moex.com/iss/reference/>`_ к MOEX ISS
* Официальное `Руководство разработчика <https://fs.moex.com/files/6523>`_ с дополнительной информацией

Начало работы
=============

Установка
---------

.. code-block:: Bash

   $ pip install apimoex

Пример использования реализованных запросов
-------------------------------------------

История котировок `SNGSP в режиме TQBR <https://www.moex.com/ru/issue.aspx?board=TQBR&code=SNGSP>`_:

.. code-block:: python

   import requests

   import apimoex
   import pandas as pd

   with requests.Session() as session:
       data = apimoex.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()

.. code-block::

               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
    2019-09-04    TQBR  38.060  243010500  9.348435e+09
    2019-09-05    TQBR  36.140  129366600  4.704949e+09
    2019-09-06    TQBR  35.475   62389000  2.201887e+09
    2019-09-09    TQBR  34.570   54331300  1.905837e+09
    2019-09-10    TQBR  35.250   45966000  1.605849e+09

    <class 'pandas.core.frame.DataFrame'>
    Index: 1326 entries, 2014-06-09 to 2019-09-10
    Data columns (total 4 columns):
    BOARDID    1326 non-null object
    CLOSE      1326 non-null float64
    VOLUME     1326 non-null int64
    VALUE      1326 non-null float64
    dtypes: float64(2), int64(1), object(1)
    memory usage: 51.8+ KB

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

Перечень акций, торгующихся в режиме TQBR (`описание запроса <https://iss.moex.com/iss/reference/32>`_):

.. code-block:: python

   import requests

   import apimoex
   import pandas as pd


   request_url = ('https://iss.moex.com/iss/engines/stock/'
                  'markets/shares/boards/TQBR/securities.json')
   arguments = {'securities.columns': ('SECID,'
                                       'REGNUMBER,'
                                       'LOTSIZE,'
                                       'SHORTNAME')}
   with requests.Session() as session:
       iss = apimoex.ISSClient(session, request_url, arguments)
       data = iss.get()
       df = pd.DataFrame(data['securities'])
       df.set_index('SECID', inplace=True)
       print(df.head(), '\n')
       print(df.tail(), '\n')
       df.info()

.. code-block::

              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: 264 entries, ABRD to ZVEZ
    Data columns (total 3 columns):
    REGNUMBER    255 non-null object
    LOTSIZE      264 non-null int64
    SHORTNAME    264 non-null object
    dtypes: int64(1), object(2)
    memory usage: 8.2+ KB
