Как добыть свечи по всем акциям Мосбиржи

32e5b60d2292dda1215759d815d35c26.jpg

В конце прошлого года я писал о том, как с помощью Algopack можно вытащить справочную информацию о всех акциях Мосбиржи. Приводил пример моего первого скрипта на python, использующего библиотеку moexalgo для Algopack и обозначил планы дописать его с целью добычи всех исторических данных.

Программа для скачивания исторических данных с Мосбиржи

Пришло время и хочу поделиться с Вами своей первой полноценной, правда еще консольной, программой, с помощью которой можно скачать все исторические данные (свечки OHLCV) с различными таймфреймами (1 мин, 10, 60, день) по всем акциям Мосбиржи, легально и с использованием официальной библиотеки биржи.

Программа также написана на Python и скомпилирована инсталлятором PyInstaller, должна запуститься на любом компьютере с windows, скачать ее можно с github.

Текущая статистика программы по добываемым данным: сохраняет 996 файлов исторических данных с 114,6 миллионами записей (свечек), общий объем сохраненных данных составляет 9.15 Гб. Для получения этой статистики дописал отдельный скрипт, который можно просто положить рядом с файлом программы и запускать, когда появится интерес. Скачать можно там же на гитхабе.

ALGOPACK

Программа использует официальную библиотеку moexalgo для работы с Algopack. Что интересного выяснилось?

  1. Негативный момент. Уже после сборки программы во время тестирования Алгопак при цикличном обращении к нему стал неожиданно отдавать ошибку, стал разбираться — ошибка касается акции «VEON-RX». Представитель мосбиржи в телеграмме обещал «косяк» этот поправить. Но, к сожалению, спустя 2 недели ситуация не изменилась. Пришлось сделать обработчик ошибок. Мало ли по какой-то еще акции будут подобные фичи.

  2. Положительный момент. На официальной странице библиотеки ALGOPACK Мосбиржи отмечено, что по Super Candles история предоставляется с 2020 года. Однако, как выяснилось, по факту такого ограничения нет, даты начала данных рознятся по всем акциям и начинаются с 2011 года. Например по Сберу минутки доступны с 2011–12–15 10:00:00 и сейчас скачивается 1,8 млн записей в объеме 160 мБ

Как работать с программой

Программа проста в использовании. При первом запуске программы Вам будет предложено указать основные параметры, от которых будет зависеть дальнейшая работа программы.

Сканирование и формирование списка акций

В самом начале будут просканированы все доступные для скачивания акции мосбиржи, а также проанализированы самые ранние даты, начиная с которых доступны исторические данные. Это займет 1–2 минуты. 

В результате в корне программы будет создана папка «historical_data» в которой будет находиться 3 файла:  

logfile.txt Лог файл. Содержит отчет — полезную и самую важную информацию о работе программы. Просматривать желательно после окончания программы, т.к. она постоянно обращается к этому файлу. В логах фиксируется полная информация по всем акциям (количество скачанных свечек, период, размер файла) и др.

list_tools.txt Файл содержит полную справочную информацию по всем акциям Мосбиржи. Файл только для ознакомления и никак не влияет на работу программы. Расшифровку названий всех колонок можно посмотреть здесь.

list_tools_listlevel.txt Самый важный файл, он содержит список всех акции с указанием уровня листинга (сортировка по этому параметру) и первых дат, которые на момент запуска фактически доступны для скачивания с Мосбиржи. Добыча данных будет происходить по данным этого файла, поэтому его никогда не удаляйте!

Правка списка акций и дат

Вы можете ничего не менять и скачать вообще все доступные данные по всем акциям. Также Вы можете из файла 'list_tools_listlevel.txt' удалить строки с ненужными акциями. Вы можете в этом файле в колонке FIRST_DATE изменить даты начала получения исторических данных по каждой акции в отдельности. Отредактируйте при необходимости этот файл. В дальнейшем программа будет ориентироваться именно на этот файл.

Установка таймфреймов

Далее пограмма сделает запрос о необходимых Вам таймфреймах. Программой можно скачать исторические данные с различным таймфреймом: по 1 минутке, по 10 минут, по 60 минут и дневки. 

069660aba355d785a5e94639eb5c68c4.png

Вам необходимо будет указать конкретный таймфрейм или выбрать все варианты. Ваш ответ будет помещен в лог файл. При всех дальнейших запусках программы скачивание данных и их обновление будет производиться согласно Ваших первоначальных установок.

Добыча исторических данных

После заданных Вами параметров при первом запуске программы начинается процесс скачивания данных. Если Вы выбрали все таймфреймы, то скачивание происходит циклом — сначала дневные свечи по всем акциям, затем часовые, 10 минутные и минутные.

6846bbb2638bb88ddeae6a4e24dc7e2a.png

Информация в терминале будет постоянно обновляться. Время работы программы может в значительной степени отличаться от объема скачиваемых данных и составлять от нескольким минут до нескольких часов (10 и более). Если Ваш компьютер уйдет в «сон», то приложение просто выключится, поэтому если Вы хотите скачать все данные за один раз, то необходимо отменить возможность компьютера переходить в спящий режим. Если произошел какой-то сбой или Вы сами выключили работу программы, то при следующем запуске начнется автоматическая докачка данных.

Обновление исторических данных

Для обновления исторических данных просто запустите программу. Можно это делать с любой периодичностью. При повторном запуске программа сообщит, что папка 'historical_data' уже существует и ранее Вы запускали программу. В новом сеансе программа будет просто докачивать все, что ранее Вы не успели скачать, а также будут скачаны все вновь появившиеся исторические данные.

Изменение настроек программы

Если Вас не устраивают первоначальные настройки, сделанные при первом запуске программы и Вы хотите изменить их — просто удалите папку 'historical_data' или измените ее название, например на 'historical_data_old'. Вновь запущенная программа снова запросит все параметры, как при первом запуске.

В ближайшее время я планирую от консольного вида программы перейти к полноценному графическому интерфейсу, а также расширить спектр получаемой информацией.

Это будет темой для следующей публикации, следите за новостями здесь или на Алготрейдинг на Python. Продолжение следует…

Видео по теме:

© Habrahabr.ru