Блог им. Noizium

Алготрейдинг: обработка и анализ ленты => система на крупных принтах

Сразу оговорюсь — к сожалению все, что описано в посте проделано на данных с рынка CME, конкретно — для фьючерса пшеницы с декабрьским месяцем поставки. Но в целом ничего не мешает работать и с данными с любой биржи. Инструмент для анализа, обработки данных и построения торговой системы — MatLab. Не сильно распространенный среди русских алготрейдеров, но с огромным количеством функционала и возможностей. Расшифровывется на русский язык MatLab как матричная лаборатория: изначальная цель языка и среды программирования это работа с большими массивами данных разных типов. Касаемо трейдинга — также присутствует много ништяков, писать про все не очень хочется если интересно можно например посмотреть тут (не реклама, сайт не мой)) — нашел в сети). Но хочется отдельно отметить возможность подключаться напрямую из MatLab к примеру к терминалу Reuters, Bloomberg, к известным софтам для трейдинга типа XTrader, CQG, софт от Interactive brokers и др. Подключения можно использовать для различных целей — как для обработки данных, так и непосредственно торговли. Для HFT роботов слышал, что MatLab занимает заслуженное место, правда вся логика написанная в нем нуждается все равно в конвертации кода в Си если периодичность отсыла операций роботом ниже 1 секунды. Почему не писать сразу на Си? — В матлабе с их библиотеками и функциями все исследования и построения роботов разы делается проще и быстрее, да и присутствует авто конвертация кода из матлаб в си.

Итак, исходные данные: Soft Red Whinter Wheat Dec 2014. Проще говоря обычная пшеница, из муки которой потом пекут пироги. Данные взяты из IQFeed за полгода. Файл с данными в txt весит чуть более 100 мб, и содержит в себе полтора миллиона строк. Это данные ленты сделок с точностью до миллисекунд. Содержат в себе время, цену трейда, объем трейда, бест бид и бест аск на момент трейда + еще пара не сильно важных столбцов.

Анализируя данные от IQFeed не скажу, что они очень качественные. Проблема в том, что как я понял IQFeed склеивают свои тиковые данные и данные бест бид-аск полученные другим путем. Поэтому можно не редко встретить трейды по цене не соответствующей бест аск или бест бид на момент трейда. Выглядит это так:
Алготрейдинг: обработка и анализ ленты => система на крупных принтах
На рисунке тиковый график, агрегированный до миллисекунд средствами матлаб. Стрелками — не соответствие трейдов бест аску (красным) или бест биду (зеленым). Сами трейды черные кружочки. Но пока бесплатно такие данные нашел только у IQFeed, поэтому приходится довольствоваться этим. К слову сказать, импортировать в матлаб сырые тиковые данные за полгода (длиной в полтора миллиона строк) и сделать агрегацию до миллисекунд занимает пару минут. Конечно, при условии, что код для данных действий уже написан. Но и сам код достсточно прост, вся функция импорта и обработки заняла около 100 строк. Далее графическое представление данных.

Интерфейс управления созданный мною, выглядит оч просто
Алготрейдинг: обработка и анализ ленты => система на крупных принтах
Кнопка для выбора файлов, можно сразу грузить несколько файлов, все будут обработаны и представлены графически в одном окне. После обработки выдается чарт, что выше. Количество строк, что получилось после агрегации с точностью до миллисекунд около 570 тысяч. Еще одна интересная возможность при просмотре агрериванного графика:
Алготрейдинг: обработка и анализ ленты => система на крупных принтах
Объемы отрисованы гистограммой с типом stacked — когда все данные, что были агрегированны в один тик (в один бар) выделяются разным цветом. И довольно наглядно можно увидеть места, когда маркетом взяли крупную лимитку, которая содержала в себе много продавцов (именно продавцов с разных счетов). Чтобы понять немного теории: если 5 человек выставляют каждый по одному контракту лимит ордер на продажу на одной цене, а потом приходит покупатель и разом скупает все что они выставили — в ленте пробегает 5 зеленых тиков по 1 контракту с одинаковым временем выхода до миллисекунд. Между этими тиками данные об изменении бест бид и аск поступить не успевают (для справки). Яркий бар это пример, что там кто то скупил около 80 контрактов разом, а на противоположной стороне стояло довольно много мелких участников.

На этих барах построил простейшую стратегию. Ищем в агрегированной ленте такие вот бары(принты) с объемами более или равно 100 контрактов, и количеством тиков в них, к примеру, больше или равно 25. При появлении такого сигнала помогаем)) крупняку — покупаем (или продаем) по рынку вместе с ним. Держим до появления сигнала в другую сторону и переворачиваемся.
Параметры не оптимизировал, сразу вбил круглое число для объема и примерно поставил количество агрегированных тиков. Результаты стратегии можно представить в таком виде (чарт за пол года что есть данные):

Алготрейдинг: обработка и анализ ленты => система на крупных принтах
Первый график — цена фьючерса, второй это сигнал на покупку или продажу (0 — ждем сигнала, 1 — мы в покупке, -1 — в продаже). Сигнал 0 — есть только в начале, тк уже написал стратегия перевертыш. Далее два чарта типа бар, первый — объем принта, второй количество агрегированных тиков. Нижний чарт — изменения эквити. Комиссия в этом не учтена, она подсчитана в заголовке первого чарта, где также обозначены параметры стратегии. Комиссия за полный круг 1 контракта примерно 0,125 тика = около 6 usd. + там же уже учтено проскальзывание в среднем 0,5 тика (другими словами каждый второй трейд проскальзывает на пункт). Сумма всех этих расходов около 250 долларов, при итоговом результате +10000 usd за 27 трейдов.

И еще напоследок так вот выглядит сама функция построения торговой системы (буквально несколько строчек)) ), можно почитать комменты в ней чтоб понять что за что отвечает. Стопы и тейки пока не прикрутил, сделаю для след идеи их.
Алготрейдинг: обработка и анализ ленты => система на крупных принтах

Такой вот пример. Спасибо за внимание++))
698 | ★26
20 комментариев
Спасибо, интересно. Плюсанул бы да силы нет…
avatar
На финаме тиковые данные тоже есть
avatar
Счастливый Конец, Счастливые концы часов не наблюдают? :-)
Вестников, хочется узнать смогу ли я влезть куда-нибудь… просто мечтаю…
Спасибо, интересно.
avatar
Счастливый Конец, вся история по фортс…

ftp.moex.ru/pub/info/stats/history/F/

по годам… фьючи в файлах ft
avatar
1 надо смотреть среднюю сделку имхо комиссы не отобъются
2 когда купают стакан — расширяется спред… т.е тебе тупо не нальют по нужной цене…
avatar
Счастливый Конец, данных нет, но для примера гляньте этот пост smart-lab.ru/blog/144879.php
Там есть пример ордер лога.
avatar
Отличная статья, Александр!
Сам всегда хотел освоить всю силу и мощь MatLab. Но потом отказался из-за необходимости городить костыли. Ушел в чистый C#, но даже сейчас завидую возможностям MatLab, так как некоторые вещи с 0 писать очень тяжело.

Кстати сам недавно пришел к стрелочкам) Очень удобная вещь для синхронизации логов с графиками:
www.softalgotrade.com/allImages/%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0.png

А как вообще скорость работы с dll сгенерированными в Matlab? HFT вытягивает? А через что проторговываете?
avatar
SoftAlgoTrade, спасибо.
При написании HFT, что будет использовать библиотеки матлаб их генерить не нужно, они же созданы уже, просто к проекту добавятся они.
Про стрелочки не понял, если вы про 1 скрин — то там просто подрисовал их в снагите, чтоб быстро показать места.
avatar
Alexander Noizium,
Очень интересно как Вы интегрируете код написанный в MatLab с реальной системой проторговки стратегии. Или MatLab уже умеет стабильно коннектиться к Бирже?
Я думал, что код из Matlab экспортируется в dll на C++, а потом эти библиотеки уже прикрепляются к коду торгового робота и торгуются.

П.С. Мне показалось, что стрелочки MatLab сгенерировал) Я стрелочки использую для синхронизации логов. Например, выбрал лог и на графике сразу стрелочка указыаает, где и когда эта сделка была совершена. Так проще ориентироваться.
avatar
SoftAlgoTrade, думаю будет интересней и понятней посмотреть видео www.youtube.com/watch?v=e4bdKcFl4GA&index=3&list=LL-8zaqHmNBTV-3Pfa_K7LvA
avatar

Читайте на SMART-LAB:
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...
Фото
Биткоин попробует разыграть «треугольную карту»?
«Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию...
Фото
Индикатор Fractal: торговые сигналы и робот для OsEngine. Видео
В этом видео разбираем индикатор Fractal Билла Вильямса — один из самых известных инструментов в трейдинге. Покажем, как формируются фракталы,...
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

теги блога Alexander Noizium

....все тэги



UPDONW
Новый дизайн