Алготорговля в 2019
Чет подустал. Америка с россией торговать крайне неудобно. Рабочий день с 9.30 до 12 ночи. Причем никаких праздников совсем. И отпусков. Поехал в отпуск — берешь планшет и ноутбук. Счас хорошо — везде есть интернет. Надо понимать, что рабочий сервер так же требует внимания и администрирования.
За год высыпалось 27 технических проблем, всякие подвисания, вылетания, дисконекты, внезапные лишние позы. Из них эпические — на NYSE поменяли название тикера — пока заметил и разбирался -1500$; IB потребовало заполнить анкету и отключило торговлю, пока разбирался и заполнял анкету -2000$. В IB поменяли api и тслабовский коннектор стал еле работать. Счас вроде починили.
По тслабу обращался в техподдержку 15раз. много багов было по IB, например тслаб просто внезапно вис пару раз в неделю, но все исправили. На багах связки тслаб+IB проеплось где то 5000$ (веду записи и учет). Счас более-менее работает и годно для торговли.
Решил заморочиться над анализом обезличенных сделок.
Зачем ?
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 секунду), есть риск не успеть подгрузить данные, т.к. альфа-директ может их затеречь очередной порцией новых данных.