Итак, передо мной, уверен, как и перед многими, встал вопрос поиска исторической информации с Мосбиржи. Немного зная python, я написал вот такой парсер:
import requests
import datetime
import pathlib
SECIDs = ["GAZP", "BANEP", "LKOH"]
DISK = "E"
for SECID in SECIDs:
from_date = "2020-05-04"
to_date = "2005-01-03"
while str(to_date) != from_date:
to_date = str(to_date)
to_date = to_date.split('-')
a = datetime.date(int(to_date[0]), int(to_date[1]), int(to_date[2]))
b = datetime.timedelta(days=140)
to_date = a + b
pathlib.Path("{}:/{}/{}".format(DISK, "Database_MOEX", SECID)).mkdir(parents=True, exist_ok=True)
filename = SECID + "_" + str(to_date) + ".csv"
with requests.get("http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/tqbr/securities/{}.csv?date={}".format(SECID, to_date)) as response:
with open("{}:/Database_MOEX/{}/{}".format(DISK, SECID, filename), 'wb') as f:
for chunk in response.iter_content():
f.write(chunk)
Для начала пройдемся по его плюсам и минусам. Самый главный минус, что этот парсер качает только определенный период, который уникален для каждой акции, судя по всему для увеличения этого периода надо кинуть бирже на лапу:), и то что информация предоставляется за день, теперь перейдем к плюсам: можно выкачивать историю за определенный период для нескольких инструментов сразу (их количество ограничивается лишь количеством инструментов на мосбиржи), есть возможность назначать диск для сохранения информации, быстрота выгрузки данных.
Итак, перейдем к использованию:
1) Добавьте тикеры интересующих вас акций в список
(SECIDs) как показано в примере
2) Выбирите диск
(DISK) для сохранения выкаченной информации
3) Запишите даты
(«ГГГГ-ММ-ДД») в
from_date (До какой даты качать) и
to_date (С какой даты качать).
Обе даты должны быть понедельниками, иначе код заработает не правильно
4) Запустить парсер
P.s. Буду рад вашим отзывам и поправкам:)
P.s.s. Еще больше буду рад если вы поделитесь способами выгрузки исторической информации и/или поделитесь ею со мной, можно в лс:)
P.s.s.s. Да, я знаю что я наглый)
Деньги — наглых.
Форум — никого.
Что если понедельник выходной?
А так + и звездочка
fs.moex.com/files/6523
Вообщем, получается скачивать кучу файлов с одинаковыми датами.
В ручном режиме вроде работает
https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/EQNE/securities/gazp?from=2010-01-01&till=2010-01-20
Емельянов Иван, в коде нужно в строчке с адресом to_date заменить на str(to_date)
Посмотрел, что он не строчку вставлял в адрес, а численное значение даты
Можно с задержкой или End of Date.
В ней акции подгружать можно, но срочные рынки, увы, никак.
Емельянов Иван, вот получше
только качайте данные частями (если вся история минуток нужна, например), долгие соединения сервер обрывает.
import pandas_datareader.data as web
f = web.DataReader('SBER', 'moex', start='2020-01-01', end='2020-01-31')
Причем, вместо 'SBER' можно подставить ['SBER', «LKOH»....]
Где скачать минутки?
То же самое только чуть технологичее вроде как делает либа от Михаила
есть же f строки. мало того, что они читабельнее, так еще и чуточку быстрее