Денис Базарнов
Денис Базарнов личный блог
27 декабря 2019, 16:27

Анализ обезличенных сделок, рабочий прототип приложения.

Решил заморочиться над анализом обезличенных сделок.
Зачем ?
1) Меня интересует структура объема по конкретному инструменту. Не просто общий объем на покупку и продажу, а были ли очень крупные покупки или продажи, на количество акций, которое раз в 30-100 превышает среднее количество? А каково соотношение покупка/продажа таких крупных сделок? Например: по конкретному инструменту «цену» колбасит вверх/вниз на 1% но при этом видно, что кто-то аккуратно, с учетом большого объема заявок на продажу — только выкупает акции большими лотами. Какой вывод можно сделать, если увидеть подобную ситуацию ?
2) Меня интересует скорость изменения числа сделок по каждому инструменту.
3) Анализ поведения ботов. Приведу пример: если наблюдать за лентой сделок, то периодически встречается серия сделок с разницей во времени в доли секунды, с одинаковым числом акций (часто либо «1» либо «100») и либо вообще без разницы в цене, либо цена отличается на копейку. И таких сделок, одна за другой может «пролететь» по 50-100 за раз. Это вот зачем? Понятно, что скорей всего чей-то софт «старается», но почему именно так, а не одним лотом? И опять же — какая доля данного «выдающегося» поведения в минутном объеме по инструменту ?

Надеюсь мне удалось объяснить, для чего я решил заняться анализом. А реализовать свой прототип я решил в Excel-e :) Да, кто-то улыбнется. И да, можно было придумать что-то мудреное, в духе «я создал свой сервис, с использованием современного мультиплатформенного языка программирования и современных фреймворков, с использованием искусственного интеллекта на базе обученных нейронных сетей и разместил это все в облаке». Но, во-первых я не собираюсь Вам ничего продавать, а во-вторых я по своей сути — практик. Лично мне пофиг как будет реализовано решение, главное чтобы оно было рабочим. Поэтому excel с использованием visual basic. Вот так вот просто. И, чтобы окончательно вывести Вас из себя своими выходками простолюдина, добавлю, что свой проект я назвал «stuck», т.е. «прилипала» по русски. Вспомнил про рыбку, которая плавает рядом с акулами и доедает объедки.

Как это работает. В качестве торгового терминала я использую «альфа-директ». Он мне также не нравится как и Quick, но если сравнивать с жадным и неповоротливым терминалом от Interactive Brokers — то не все так печально. Что в квике, что в альфа-директе есть возможность не только показывать ленту сделок по всем инструментам из Вашего списка, но и выгружать все в excel и в текстовый файл. У альфа-директа все сделано максимально убого: выгрузка в текстовый файл происходит не постоянно, пока запущено окно, а «одноразово». Что касается выгрузки в excel — в окне альфы отражается только 200 строк последних по времени сделок и если появляется информация о новых сделках то терминал по прежнему отражает 200 строк, опять же показывая информацию о последних сделках. Также идет и выгрузка в excel — выгружается 200 строк, при появлении новой информации — эти же строки перезаписываются поверх старых. С точки зрения автоматизации загрузки данных — очччень неудобно. Как это реализовано у меня — когда запускается макрос, он в зависимости от указанного в настройках времени, например каждые 0.5 секунды — пробегается по загруженному из альфа-директ списку и ищет те заявки, которые еще не загрузил, ну и сортирует их дальше. Если поставить время еще меньше (0.1 секунды) — система будет работать, но на слабеньких компах начнутся проблемы с отрисовкой данных (пока работает макрос), если поставить время меньше (1 секунду), есть риск не успеть подгрузить данные, т.к. альфа-директ может их затеречь очередной порцией новых данных.

Что сделано сейчас. Чуть ниже приведены изображения листов файла во время работы.
Анализ обезличенных сделок, рабочий прототип приложения.


На текущий момент реализовано следующее:
1) данные из альфа-директа грузятся в excel в лист «IN». Кстати из Quicka данные также можно выгружать, я в свое время пробовал. На листе «SETTINGS» указывается соответствие колонок, например «Цена» отражается в первой колонке листа «IN», количество во второй ну и так далее.
Анализ обезличенных сделок, рабочий прототип приложения.
Анализ обезличенных сделок, рабочий прототип приложения.




2) при нажатии на кнопку «Старт» в вечном цикле запускает макрос, который каждые полсекунды «пробегается» по списку в листе «IN» и анализирует сделки. Что именно он делает:
2.1) Если он впервые встречает «Тикет»(инструмент, акцию), которая отсутствует в списке — он вносит ее в список и создает отдельный лист в книге для сохранения крупных сделок.
2.2) Если макрос только-только начал работать, то по первой сотне сделок по конкретному инструменту — макрос считаем только объем и среднее количество сделок. В настройках можно исправить число, поставить 1000 сделок к примеру, тогда среднее будет точнее.
2.3) После подсчета среднего количества одной сделки по каждому инструменту, макрос помимо подсчета из пункта 2.2 начинает искать большие сделки. Насколько большие — вы также можете указать в настройках (у меня стоит в 30 раз больше среднего количества). Как только попадается подобная сделка — она отражается в листе с именем тикета данного инструмента. Ну а дальше Вы смело можете рисовать красивые графики, проводить анализ и прочее.
3) Кнопкой «Стоп» можно остановить скрипт.
4) Кнопка «очистить данные» удаляет все листы с тикетами (но не листы STATUS, IN, SETTINGS и HELP) и чистит таблицу. Зачем это? Я делал так, как удобно мне — в конце каждого дня я файлик сохраняю под отдельным именем, потом беру этот же файлик, жму «очистить данные» — и вот у меня файл готов для работы в следующий торговый день.

Что хочу добавить в дальнейшем в первую очередь.
1) Соотношение крупных сделок по покупке и продаже по каждому инструменту в отдельности. Отражать это в общей таблице в листе STATUS
2) пока не придумал как, но хочу показывать изменение скорости числа сделок по каждому инструменту. Говоря по простому, я хочу замечать, что по какому-то инструменту начинается «крупный движняк» :)
3) Хочу видеть изменение объема на покупку/продажу по конкреному инструменту, причем как по всему объему сделок по данному инструменту так и по «большим» сделкам данного инструмента

Файл с макросом можно скачать вот здесь: https://github.com/BazDen/Stuck/blob/master/stuck.xlsm
Все открыто, Вы можете посмотреть на код макроса, исправить его или дописать под свои нужны. Да, бесплатно. С чего такая щедрость, возможно спросите Вы? Отвечаю: во-первых это прототип для проверки моих идей и не факт, что мой анализ приведет к открытию закономерности, которая позволит мне стабильно зарабатывать деньги, ну а если это все же случится — то зачем тогда продавать софт, который и так приносит деньги, правда? :) Тогда почему я все же написал этот пост и выложил свой прототип? Потому как ищу единомышленников, например тех у кого есть идеи, но в силу отсутствия базовой квалификации программиста — нет возможности их проверить. Мой адрес электронной почты есть в файлике, пишите, постараюсь ответить всем.

 

30 Комментариев
  • PSH
    27 декабря 2019, 16:52
    Эксель раком встанет от ленты за, например, месяц, да и бегать по нему будет мучительно, на мой взгляд. Для себя этот вопрос закрыл полноценным десктопным приложением на c#, данные лью в SQLite, уже несколько терабайт накопил. Думал перетащить все в PostgreSQL, но пока не горит, SQLite, конечно, убогонькой, но худо-бедно в монопольном режиме справляется
      • Тимоха
        18 августа 2020, 17:23
        Денис Базарнов, имхо в массив бы логичнее загнать данные, пошустрее будет. Ну коль на луа написал, то потребность отпадает.
        А так бы можно вообще через UserForm в ListBox показывать только те инструменты, по которым идет отклонение.
        Прикольная у тебя логика, тудой же пешком топаю, удачи!
      • БорZян Барашкин
        14 марта 2021, 22:22
        Денис Базарнов, а как насчёт айсберг заявок, которыми пользуется тот кто хочет «размазать» большой объем покупки/продажи?
  • ivanov petya
    12 января 2020, 16:36
    А разве нельзя считать сделки каждую секунду по условию, установив числовой фильтр??? Это же вроде не трудно закодить?? Можно высчитывать среднее значение для каждого инструмента.Например считаем сделки в секунду на интервале 30 последних секунд, если идёт превышение во сколько-то раз, то будет оповещение.
      • ivanov petya
        12 января 2020, 18:57
        Денис Базарнов, я имел ввиду пункты 2 и 3… Вы считаете просто средний размер сделки, а я предлагаю считать объёмы или кол-во сделок в каком-то промежутке(например последние 10 сек.)… То есть сделать привязку ко времени… Поэтому если ускорится скорость сделок или вырастут объёмы это вам просигнализирует посредством alert… На сколько это сложно написать-я не знаю)Плюс добавить в процентном отношении изменение актива, за сегодня, чтобы сразу прикинуть кол-во сделок и как ведёт себя актив
  • Ян
    13 января 2020, 22:24
    Денис, здравствуйте. Можете написать подробную инструкцию, что и откуда выгружать из quika& не могу разобраться. Спасибо
      • Weddy
        21 января 2020, 05:17
        Денис Базарнов, я в Открытии, там понятное дело альфа-директа нет, есть Квик. Но я не понял, как будет ли работать Ваш макрос с Квиком. Положим сделаю таблицу обезличенных сделок, через DDE можно сделать вывод на лсит в Excel. А дальше? Ваша макрос же как понимаю обращается за данными напрямую в альфа-директ, а не на лист экселя?
  • Игорь Демин
    24 апреля 2020, 17:52
    Денис, добрый день. Подскажите, где могу скачать файлик с макросом. Ссылка выше не работает. спасибо
  • Игорь Демин
    27 апреля 2020, 14:23
    Денис, добрый день. К сожалению, новым пользователям не дают сразу написать в личку. как-то по-другому получится?
  • Андрей Вандин
    09 июня 2020, 08:55
    Да все пришло большое спасибо

  • Денис, доброе время суток!
    По ссылке ничего нет. Не выручите? 
  • Блог просмотрен. Сайт ждем.
    Подскажите, а в таблице анализа ленты сделок, что является критерием формирования сигнала на сделку?
  • just_mv
    10 августа 2020, 19:02
    Денис Базарнов, добрый день. Интересно все, что связано с excel и трейдингом). Файл по ссылке, как уже писали выше форумчане, не работает(. Могли бы вы прислать на email? just.mv собака bk точка ru

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн