Когда еще только начал заниматься алготрейдингом, возник вопрос удобного доступа к историческим данным котировкам. Дело в том, что csv файлы могут содержать пропуски данных, а мне необходимо было получать котировки за конкретные дни года. Поэтому мне было не удобно грузить csv файл в общий массив и затем искать в нем отрезки данных. Второй проблемой было то, что минутный график (не говоря уже о тиковом) занимает много места, когда речь идет о более 20 шт. валютных пар. Конечно это уже не такая проблема, как первая, так как сейчас большая память на SSD или HHD не проблема. Но с другой стороны, хранить все >20 валютных пар уже в памяти компьютера тоже не лучший вариант, лучше было бы грузить данные по кускам.
Поэтому я решил убить всех зайцев тем, чтобы написать специальную библиотеку для удобного хранения и использования котировок.
- Так как мой интерес был именно минутный график, было решено хранить фиксированное количество минут для каждого дня (даже если есть пропуски цен). В одном дне 1440 минут, следовательно каждый дневной фрагмент исторических данных содержит 1440 баров.
- Каждый дневной фрагмент было решено обозвать «подфайлом» и хранить все подфайлы в одном файле. Дело в том, что множество файлов тормозят систему, поэтому записывать каждый фрагмент как отдельный файл — не лучшее решение. В то же время сильно усложнять хранение фрагментов не хотелось, да и не было смысла. Обычная операция для «хранилища» котировок — добавление новых данных или чтение старых, при этом перезапись или добавление нового подфайла в глубоком слое исторических данных может потребоваться редко. Поэтому оптимальное решение будет записывать дневные фрагменты исторических данных по порядку в один общий файл и хранить ссылки на подфайлы в конце файла.
(
Читать дальше )