rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | Позиции. Зачем они в алготрейдинге и OsEngine?

Сегодня будем разбираться, зачем в терминалах для алго нужна такая абстракция, как «Позиция» или Position. У нас была техническая статья по этой теме, но вопросы продолжают поступать… И надо концептуально ещё раз объяснить.

Позиции. Зачем они в алготрейдинге и OsEngine?

1. OsEngine – идейный наследник Wealth-Lab.

И пока они были на плаву, было СИЛЬНО проще объяснить, как устроен наш слой создания роботов и зачем там позиции… (UPD. Да что там! У нас просто не было инструкций, люди приходили из велза и начинали молча делать роботов правильно!)

Механика управления позициями, способы их открытия и способы их закрытия пришли в OsEngine из Wealth Lab. Не целиком, но почти, и на данный момент слой увеличен раз в пять. И Wealth lab – прекрасный терминал для Алго! Когда-то этот терминал был очень популярен в России и имел приятный на тот момент интерфейс.

Если посмотреть на скрипт в Wealth-Lab, то можно обнаружить много общего с тем, что в скриптах OsEngine:

Позиции. Зачем они в алготрейдинге и OsEngine?

  1. Язык – СиШарп.
  2. Похожий синтаксис объявления параметра.
  3. Параметры сразу создаются под оптимизацию! Чтобы два раза со стула не вставать.
  4. Отложенный метод закрытия позиции через продажу, когда цена опуститься ниже. SellAtStop. Есть такие же и на открытие позиции.
  5. Запрос к позициям! Да, Wealth Lab тоже в рамках робота ведёт свои позиции, по которым потом строит статистику и прочее. В данном случае все открытые позиции бросаются в метод закрытия позиции по стопу. Их может быть и одна и несколько.
  6. BuyAtMarket. Метод открытия позиции по рынку. И если вглядеться в условия, здесь у нас открываются целых ТРИ позиции по одному условию, но в разное время. НЕ ТРИ ОРДЕРА! А ТРИ ПОЗИЦИИ! И потом три позиции же и закрываются по стопу.
  7. ShortAtMarket. У нас это SellAtMarket. Тоже самое.

Я Wealth Lab очень любил. Но при этом Wealth Lab был «немного» платный, в отличии от OsEngine, и сложилась у нас вот такая обратная корреляция:

Позиции. Зачем они в алготрейдинге и OsEngine? 

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

 
* UPD. Для продвинутых пользователей существует возможность торговать на прямую через коннекторы и про это будет серия постов в своё время. Но база — это позиции.

2. Основной единицей осуществления торгового менеджмента во многих терминалах для Алго (с тестерами, журналами и оптимизаторами) является ПОЗИЦИЯ.

Для роботов в алготрейдинге это необходимо т.к. у позиции есть:

  1. Точка входа, даже если она состоит из нескольких ордеров.
  2. Точка выхода, даже если она состоит из нескольких ордеров.
  3. По ним удобно составлять статистику по Позициям, понимать, какая точка входа твоего алгоритма прибыльна, а какая убыточна.

С точки зрения сбора статистики в тестере это жизненная необходимость. Т.к. именно так можно понять прибыльность отдельных точек входа и отдельных точек выхода.

3. Учиться надо управлять позициями, а не ордерами.

Потому-что по позиции получается делать срез статистики по разным инструментам разным стратегиям, разным типам входов и выходов параллельно и настолько часто, насколько это возможно. Было 10 позиций за день или за минуту, по каждой у нас будет отдельная статистика:

Позиции. Зачем они в алготрейдинге и OsEngine?

При этом, если позиции отдельно не вести и просто использовать ордера, статистику получится собирать не точно и не всегда. На срочном рынке, если Вы сами не знаете своих позиций и торгуете на разных инструментах разные стратегии, за Вас прибыль будет считаться биржей во время клирингов. Будете видеть общий прирост/убыток по счёту пару раз в день:

Позиции. Зачем они в алготрейдинге и OsEngine? 

Понятное дело, такой вариант для сбора статистики торговли и алготрейдинга ни в коем случае не подходит. А вот для долгосрочных инвесторов – в самый раз.

 

4. ПОЗИЦИЯ и её точки входа/выхода тебя заставляют мыслить системно.

Вот твой робот зафиксировал какую-то ситуацию на рынке. Возьмём самое простое. Пробой канала боллинджера:

Позиции. Зачем они в алготрейдинге и OsEngine? 

Это точное событие, которое нельзя никак иначе интерпретировать. Есть индикатор, у него есть границы, пробили канал – вошли в позицию! У робота такой исходный код.

Бессистемное мышление может заставить тебя подумать, что если позиция в итоге убыточна, то тебе надо дополнительно усредниться, упирамидиться, отодвинуть стоп, закрыть руками. Что угодно. Это то, чему люди обучаются, торгуя руками в QUIK десятилетиями!

К сожалению, в алготрейдинге так нельзя.

СЛУЧИЛОСЬ СОБЫТИЕ ВХОДА В ПОЗИЦИЮ, НУЖНО ЧТОБЫ РОБОТ ВОШЁЛ рядом с этим событием. Потом по другому событию СЛУЧИЛСЯ ВЫХОД ИЗ ПОЗИЦИИ. Так мы сможем собрать статистический материал, и никак иначе.

Да. Ты можешь оптимизировать ширину канала в тестере или оптимизаторе, подобрать тайм-фрейм, сделать кросс-тесты. Что угодно! Но нельзя во время торгов, когда робот запущен в бою, делать вид, что позиции не существует, и точки входа нет, или её можно «додумать», как тебе хочется. Нельзя оставлять без внимания статистику, которую без позиций не собрать.

Стратегия BollingerTrailing на акциях сбербанка. И статистика позиций по ней в журнале:

Позиции. Зачем они в алготрейдинге и OsEngine?

Если нужно размазать точку входа, то мы должны определиться, что это будут за сигналы. Например, в публичной сборке есть робот AlligatorTrendAverage, который входит и потом может ещё несколько раз «разбавить» позицию. Итого получается, что у позиции может быть несколько ордеров:

Позиции. Зачем они в алготрейдинге и OsEngine? 

При этом журнал будет собирать статистику по каждой позиции отдельно:

Позиции. Зачем они в алготрейдинге и OsEngine?

5. Бывают редкие случаи, когда кажется, что позиции не нужны.

Например, такие типы роботов:

  1. Сеточники. Роботы, которые входят не по сигналам, а по расстоянию. И в целом, собирать статистику с них якобы не надо, ибо сигналы равноценны, тогда достаточно смотреть на статистику один раз в день на бирже.
  2. Различные типы индексных арбитражей для работы с шириной спреда между инструментами и группами инструментов. У таких роботов тоже есть кнопка «включить, когда ширина спреда здесь», «разгрузить, когда ширина спреда здесь». И здесь спред может раз в неделю условно менять своё состояние с «пора покупать» на «пора продавать».

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

Например, сеточник доступен для клиентов АЛОР из нашего сообщества, можно почитать об этом здесь:  https://smart-lab.ru/company/os_engine/blog/993984.php

Про индексные арбитражи в нашем гайде написано больше 50 статей. Понятное дело, что тоже всё делается. 

Удачных алгоритмов!

Комментарии открыты для друзей!

Позиции. Зачем они в алготрейдинге и OsEngine?

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

Позиции. Зачем они в алготрейдинге и OsEngine?

  • обсудить на форуме:
  • OsEngine
★2

теги блога Алексей Ван <o-s-a.net>

....все тэги



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