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

Установка

$ pip install apimoex

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

История котировок SNGSP в режиме TQBR:

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()
           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 (описание запроса):

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()
          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