Блог им. brazen

Исторические данные FORTS. Тики.

Доброго дня всем.

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

Знаю про вариант с финамом, но решил поискать альтернативы, и оба, есть оказывается несколько общедоступных источников, которые содержат историю, и не только тиковую, а в том числе и полный лог ордеров, аж за несколько лет. Это архивы данных в формате *qsh, этот формат использует скальперский привод Николая Морошкина Qscalp. Задачей стала автоматизация доставки данных на свою машину, расшифровка и создание формата данных который понимает моя торговая платформа. Спасибо кстати самому Николаю, он любезно прояснил несколько моментов, которые путем простого курения мануала *qsh понять было непросто.

На выходе получись примерно следующее:

Исторические данные FORTS. Тики.

То есть легко качаются данные за выбранный период по инструменту, извлекаюся из архивов, читаются и перезаписываюся в произвольной форме.
Форма на выходе не обязятельно текстовая, я текст использовал только на этапе отладки и проверок, себе пишу сразу в бинарный файл, который совместим с бд моей платформы.

На скрине видно, что средством записи исходного *qsh файла был апи смартком. Этот продукт немного знаком, несколько лет назад я пробовал его использовать, исплевался и забыл, поэтому в качестве предлагаемой истории вначале возникли законные сомнения. Поскольку есть альтернативный вариант получения истории по тем же инструментам, и это полный ордерлог с сайта Цериха, решил сделать проверочку. Скачиваю ордерлог, собираю стакан, исполняю ордера, получаю трейды. Сравниваю с тиками смарткома, и к моему удивлению, совпадает все до последнего знака. Таких проверок выполнил два десятка на наиболее ликвидных тикерах, единственный косяк у смарткома это дублирующаяся запись последнего трейда в конце каждой сессии, но это легко исправляется, так как записи содержат deal id.

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

Если у широкой публики есть интерес к теме, могу в принципе залить куда нибудь программу для свободного скачивания, надо только будет сделать коротенький readme, в принципе пользоваться ей довольно просто.
★6
16 комментариев
Залей. Интерес в принципе есть.
avatar
Лучше из полного ордерлога сделки собирать. В тиках смарткома нет миллисекунд. 
avatar
Ну да, если далее можно использовать эти миллисекунды, то смысл есть. Если использовать ордерлог, можно и трейды агрегировать в так называемые «as expected deals». Я пользуюсь SierraChart, поэтому получение трейдов из  ордерлога реализовано. Другой ритейловой программы, которой можно скормить данные с миллисекундами, я не знаю. Возможно только WealthLab…
avatar
Получить тики можно НАМНОГО!!! проще. Писал здесь уже несколько раз.

Ставите бесплатно терминал MT5 (доступен в Открытии и БКС) и экспортируете оттуда тики за любые даты и по любому символу в формат CSV за считанные минуты.

Дальше делаете с этими данными все, что хотите.

Выглядит это так:


Добрый день Дмитрий. Про этот вариант я не знал, но он наверное подразумевает наличие реальных счетов у этих брокеров?

Насчёт проще, это не совсем верно, при работе с программой которая на скрине в топике, требуется выполнить точно те же действия, что и в mt5, а именно ввести диапазон дат и название инструмента, ну и нажать кнопку ввод.
avatar
Andrew Morozov, 
да, нужен реальный счет у брокера, разумеется.
Залей. Конечно Интересно
avatar
Добрый день,  Андрей. Тема мне лично весьма интересна и нужна, поделитесь плс методикой, если возможно.
avatar
Да, обязательно выложу на диск, надо добавить немного больше юзабилити, и сделать мануал. Через неделю примерно будет готово.
avatar
Ок, с меня — смартлабкоины :) Я давно мучался, где не очень дорого взять качественную историю, а ордерлог — так вообще мечта.
avatar
Я пока до этого уровня тестирования не дорос, но однозначно круто!
Спасибо, что делитесь наработками. 
Кстати, не вижу никаких проблем в том, что подобные труды оплачиваются. Естественно, без фанатизма. Но полную халяву народ не ценит, а безлимитной толпой ещё зачастую и идею убивает. 



avatar
Да, есть конечно некие опасения, что при массовом обращении к серверу с первоисточниками скорость его работы может упасть, но думаю не так уж много народу реально нуждается в этих данных. Массы в основном со смартфона торгуют
avatar
Andrew Morozov, Андрей, а не подскажете, есть-ли возможность сохранять текущий ордерлог из квика? С помощью каких-либо луа-аадоном может быть? Чтобы выкачать историю, а далее своими силами в онлайне поддерживать?
avatar
Sorry. Ордер лог это поток данных, который можно получить только при прямом подключении к биржевому шлюзу, либо по fast протоколу, либо по протоколу Plaza2. Причём стоит это отдельных денег, 8000 в месяц, вдвое дороже, чем основной логин. Хотя все относительно, прямой доступ к СМЕ стоит 144К в год. Долларов.
avatar
Приветствую! Андрей, мне очень интересна тема тиковых данных и сохранения их в бинарный формат. Можно пожалуйста ссылку на вашу программу и описание как ей пользоваться
Доброй ночи и Вам. Сорри, занят я в долгосрочном проекте с заказчиком из штатов, нет времени доделать эту штуку так, что бы ее легко было употреблять. Единственное что могу предложить, используйте как есть, а как именно могу объяснить устно минут за пять. Ну и бинарный формат вывода на сейчас выглядит так:

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
avatar

теги блога Andrew Morozov

....все тэги



UPDONW