Сегодня будем разбираться, зачем в терминалах для алго нужна такая абстракция, как «Позиция» или Position. У нас была техническая статья по этой теме, но вопросы продолжают поступать… И надо концептуально ещё раз объяснить.
И пока они были на плаву, было СИЛЬНО проще объяснить, как устроен наш слой создания роботов и зачем там позиции… (UPD. Да что там! У нас просто не было инструкций, люди приходили из велза и начинали молча делать роботов правильно!)
Механика управления позициями, способы их открытия и способы их закрытия пришли в OsEngine из Wealth Lab. Не целиком, но почти, и на данный момент слой увеличен раз в пять. И Wealth lab – прекрасный терминал для Алго! Когда-то этот терминал был очень популярен в России и имел приятный на тот момент интерфейс.
Если посмотреть на скрипт в Wealth-Lab, то можно обнаружить много общего с тем, что в скриптах OsEngine:
Я Wealth Lab очень любил. Но при этом Wealth Lab был «немного» платный, в отличии от OsEngine, и сложилась у нас вот такая обратная корреляция:
Но позиции (Position) и возможность открывать и закрывать ордера только через создание позиций и их закрытие остались. И поделать с этим ничего нельзя и не надо, т.к. у большинства платформа для алготрейдинга это в наличии и является базой.
* UPD. Для продвинутых пользователей существует возможность торговать на прямую через коннекторы и про это будет серия постов в своё время. Но база — это позиции.
Для роботов в алготрейдинге это необходимо т.к. у позиции есть:
С точки зрения сбора статистики в тестере это жизненная необходимость. Т.к. именно так можно понять прибыльность отдельных точек входа и отдельных точек выхода.
Потому-что по позиции получается делать срез статистики по разным инструментам разным стратегиям, разным типам входов и выходов параллельно и настолько часто, насколько это возможно. Было 10 позиций за день или за минуту, по каждой у нас будет отдельная статистика:
При этом, если позиции отдельно не вести и просто использовать ордера, статистику получится собирать не точно и не всегда. На срочном рынке, если Вы сами не знаете своих позиций и торгуете на разных инструментах разные стратегии, за Вас прибыль будет считаться биржей во время клирингов. Будете видеть общий прирост/убыток по счёту пару раз в день:
Понятное дело, такой вариант для сбора статистики торговли и алготрейдинга ни в коем случае не подходит. А вот для долгосрочных инвесторов – в самый раз.
Вот твой робот зафиксировал какую-то ситуацию на рынке. Возьмём самое простое. Пробой канала боллинджера:
Это точное событие, которое нельзя никак иначе интерпретировать. Есть индикатор, у него есть границы, пробили канал – вошли в позицию! У робота такой исходный код.
Бессистемное мышление может заставить тебя подумать, что если позиция в итоге убыточна, то тебе надо дополнительно усредниться, упирамидиться, отодвинуть стоп, закрыть руками. Что угодно. Это то, чему люди обучаются, торгуя руками в QUIK десятилетиями!
К сожалению, в алготрейдинге так нельзя.
СЛУЧИЛОСЬ СОБЫТИЕ ВХОДА В ПОЗИЦИЮ, НУЖНО ЧТОБЫ РОБОТ ВОШЁЛ рядом с этим событием. Потом по другому событию СЛУЧИЛСЯ ВЫХОД ИЗ ПОЗИЦИИ. Так мы сможем собрать статистический материал, и никак иначе.
Да. Ты можешь оптимизировать ширину канала в тестере или оптимизаторе, подобрать тайм-фрейм, сделать кросс-тесты. Что угодно! Но нельзя во время торгов, когда робот запущен в бою, делать вид, что позиции не существует, и точки входа нет, или её можно «додумать», как тебе хочется. Нельзя оставлять без внимания статистику, которую без позиций не собрать.
Стратегия BollingerTrailing на акциях сбербанка. И статистика позиций по ней в журнале:
Если нужно размазать точку входа, то мы должны определиться, что это будут за сигналы. Например, в публичной сборке есть робот AlligatorTrendAverage, который входит и потом может ещё несколько раз «разбавить» позицию. Итого получается, что у позиции может быть несколько ордеров:
При этом журнал будет собирать статистику по каждой позиции отдельно:
Например, такие типы роботов:
Для алготрейдеров, делающих такие типы алгоритмов, у которых сигналы растянуты во времени, будет тяжело понять смысл использования позиций, но реализовать и сеточник, и индексные арбитражи тоже в OsEngine можно, хотя вероятно это в данном случае не очень удобно.
Например, сеточник доступен для клиентов АЛОР из нашего сообщества, можно почитать об этом здесь: https://smart-lab.ru/company/os_engine/blog/993984.php
Про индексные арбитражи в нашем гайде написано больше 50 статей. Понятное дело, что тоже всё делается.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php