Исторические данные продукта Netflow2 доступны с 2007 года по следующим десяти акциям:
SBER, GAZP, LKOH, GMKN, MGNT, ROSN, VTBR, ALRS, SBERP, AFLT
Данные обновляются ежедневно в 18:30-18:35. В тестовой версии продукта данные идут с двухнедельной задержкой
Доступны два метода получения данных:
Получить данные по всем десяти бумагам за определенную дату: http://iss.moex.com/iss/analyticalproducts/netflow2/securities.csv?date=2014-06-06
Получить данные по одной бумаге за определенный период: http://iss.moex.com/iss/analyticalproducts/netflow2/securities/SBER.csv?from=2018-01-01&till=2019-09-01
Данные доступны в форматах csv, json и xml. В одном запросе может быть получено не более 1000 строк. Т.е. за один запрос можно получить 3 полных года истории (~760 строк) по одной бумаге. Чтобы получить исторические данные за 12 лет необходимо совершить минимум 4 запроса.
Пример получения данных за определенную дату
import pandas as pd
url = 'http://iss.moex.com/iss/analyticalproducts/netflow2/securities.csv?date=2019-08-20'
pd.read_csv(url, ';', skiprows = 2)
Пример получения данных с 2007 года по одной бумаге
#ограничение на количество строк в одном запросе - 1000
ticker = 'SBER'
A = pd.DataFrame()
for year in range(2007,2020, 3):
url = 'http://iss.moex.com/iss/analyticalproducts/netflow2/securities/' + ticker + '.csv' \
'?from=' + str(year) + '-01-01&till=' + str(year + 3) + '-01-01'
print(url)
A = A.append(pd.read_csv(url, ';', skiprows = 2), ignore_index = True)
A.head()
A.tail()
Пример получения цен и объема торгов (OHLCV - свечки) по выбранной бумаге
#ограничение на количество строк в одном запросе - 500
#interval=24 - 1 день, interval=60 - 1 час, interval=10 - 10 мин
ticker = 'SBER'
Y = pd.DataFrame()
for i in range(2007,2020):
url = 'https://iss.moex.com/iss/engines/stock/markets/shares/securities/' + ticker + '/candles.csv' \
'?interval=24&from='+str(i)+'-01-01&till='+str(i)+'-12-31'
print(url)
Y = Y.append(pd.read_csv(url, ';', skiprows = 2), ignore_index = True)
#value - объем торгов в рублях, volume - объем торгов в шт. бумаг,
#begin - дата и время начала свечи, end - дата и время окончания свечи
Y.tail()