Доброго дня всем.
Захотелось добыть тиковые исторические данные, желательно с направлением сделки и миллисекундным таймштампом.
Захотелось потому что апи которое я использую (транзак), тики дает скачать только за текущий день, и если накануне торговый терминал был выключен до конца сессии или вообще не запускался, на графиках образуются неприятные дырки. Можно в принципе было бы как то решить этот вопрос с помощью виндозного планировщика заданий, только надо, опять же, следить чтобы компьютер был включен в определенные моменты времени или вообще его не выключать, ну в общем надо постоянно надо быть озабоченным какой то хренью, что в принципе напрягает.
Знаю про вариант с финамом, но решил поискать альтернативы, и оба, есть оказывается несколько общедоступных источников, которые содержат историю, и не только тиковую, а в том числе и полный лог ордеров, аж за несколько лет. Это архивы данных в формате *qsh, этот формат использует скальперский привод Николая Морошкина Qscalp. Задачей стала автоматизация доставки данных на свою машину, расшифровка и создание формата данных который понимает моя торговая платформа. Спасибо кстати самому Николаю, он любезно прояснил несколько моментов, которые путем простого курения мануала *qsh понять было непросто.
На выходе получись примерно следующее:
То есть легко качаются данные за выбранный период по инструменту, извлекаюся из архивов, читаются и перезаписываюся в произвольной форме.
Форма на выходе не обязятельно текстовая, я текст использовал только на этапе отладки и проверок, себе пишу сразу в бинарный файл, который совместим с бд моей платформы.
На скрине видно, что средством записи исходного *qsh файла был апи смартком. Этот продукт немного знаком, несколько лет назад я пробовал его использовать, исплевался и забыл, поэтому в качестве предлагаемой истории вначале возникли законные сомнения. Поскольку есть альтернативный вариант получения истории по тем же инструментам, и это полный ордерлог с сайта Цериха, решил сделать проверочку. Скачиваю ордерлог, собираю стакан, исполняю ордера, получаю трейды. Сравниваю с тиками смарткома, и к моему удивлению, совпадает все до последнего знака. Таких проверок выполнил два десятка на наиболее ликвидных тикерах, единственный косяк у смарткома это дублирующаяся запись последнего трейда в конце каждой сессии, но это легко исправляется, так как записи содержат deal id.
Можно в принципе конечно и с файлами ордерлогов работать, на выходе будут те же трейды и еще с ценой лучшего бида и лучшего аска, но по времени это раза в два три дольше получается с учетом всех манипуляций с данными которых намного больше приходися скачивать.
Если у широкой публики есть интерес к теме, могу в принципе залить куда нибудь программу для свободного скачивания, надо только будет сделать коротенький readme, в принципе пользоваться ей довольно просто.
Ставите бесплатно терминал MT5 (доступен в Открытии и БКС) и экспортируете оттуда тики за любые даты и по любому символу в формат CSV за считанные минуты.
Дальше делаете с этими данными все, что хотите.
Выглядит это так:
Насчёт проще, это не совсем верно, при работе с программой которая на скрине в топике, требуется выполнить точно те же действия, что и в mt5, а именно ввести диапазон дат и название инструмента, ну и нажать кнопку ввод.
да, нужен реальный счет у брокера, разумеется.
Спасибо, что делитесь наработками.
Кстати, не вижу никаких проблем в том, что подобные труды оплачиваются. Естественно, без фанатизма. Но полную халяву народ не ценит, а безлимитной толпой ещё зачастую и идею убивает.
struct Record
{
datetime date_time;
float indicator = 0.0f;
float best_ask = 0.0f;
float best_bid = 0.0f;
float last_price = 0.0f;
std::int32_t volume = 0;
std::int32_t buy_volume = 0;
std::int32_t sell_volume = 0;
std::int32_t num_trades = 1;
}
Текстовый любой может быть..
Могу на сл. неделе вечером как нибудь в тлг @nor_vik