Некоторые типы алгоритмов должны уметь получить доступ к биржевому портфелю и контролировать не только свои позиции, но и позицию на бирже.
В этой статье будем разбираться с тем, как это делается.
Подробнее о том, что такое портфель и биржевая позиция: https://smart-lab.ru/company/os_engine/blog/1043474.php
В классе BotTabSimple это находится здесь:
Portfolio. Запрос портфеля на бирже.
Пример обращения к портфелю из события завершения свечи у робота:
- Берём из источника портфель, к которому он подключен, и сохраняем в переменную myPortfolio.
- Берём доступные средства по портфелю. Доступно не везде!
- Берём блокированные средства по портфелю. Это те средства, которые заблокированы под выставленные заявки и т.д. Доступно не везде!
- Берём открытые по портфелю позиции. Это могут быть как открытые данным источником позиции, так и все остальные, включая другие бумаги.
Запрос PositionOnBoard метода.
Чтобы запросить только позиции в портфеле по биржевому инструменту, который торгуется данным источником, можно воспользоваться свойством BotTabSimple – PositionsOnBoard.
Пример:
- Берём из источника позиции только по инструменту, который подключен к торгам в этом источнике. Позиций может быть несколько по одному инструменту и на бирже! Это может быть Лонг и Шорт одновременно, если биржа такое позволяет. В таком случае свойство PositionOnBoard вернёт две позиции, и на конце у них в названии будет либо SHORT, либо LONG.
- Если позиции на бирже по инструменту есть, считаем какие именно.
- Объявляем переменную для общей позиции по инструменту.
- Объявляем переменную для лонгов по инструменту.
- Объявляем переменную для шортов по инструменту.
- Если позиция на бирже явно помечена как ЛОНГ, добавляем в соответствующую переменную.
- Если позиция на бирже явно помечена как ШОРТ, добавляем в соответствующую переменную.
- Если позиция на бирже явно никак не помечена в какую-то сторону, добавляем в соответствующую переменную.
Пример доступа к портфелю из публичных роботов в OsEngine.
Во время выставления заявок Вам может занадобиться рассчитывать размер сделки в зависимости от Ваших текущих активов. Обычное дело.
В проекте OsEngine есть замечательный пример, в котором реализован расчёт объёмов разными способами, включая обращение к портфелю и позициям по портфелю. Находится он здесь:
Основная статья про этот пример находится здесь: https://smart-lab.ru/company/os_engine/blog/1036776.php
А нам интересен метод GetVolume:
Внутри него рассчитывается объём для входа в позицию. Нам интересен вариант расчёта объёма от размера депозита:
- Здесь мы запрашиваем портфель у класса BotTabSimple. Это обычный простой источник для торговли в OsEngine. Самый распространённый. Будем дальше по Гайду очень много про него говорить.
- Если пользователь выбрал портфель типа Prime, то запрашиваем размер активов прямо у портфеля. Это вариант с Квик, когда сам портфель знает о своих активах, и они одни на весь портфель.
- Если пользователь назначил иное название для активов (например, USDT, или бывает RUB или EUR), то идём искать их в массив PositionOnBoard. Это вариант для Криптобирж и Тинькова.
Удачных алгоритмов!
Комментарии открыты для друзей!
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