Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про портфель на бирже. Это Ваш «кошелёк», на котором хранятся деньги (активы) и позиции по акциям и деривативам. В вёб-терминале это выглядит как-то так:
В процессе ведения торговой деятельности на финансовом рынке пользователь так или иначе приобретает права на активы, не важно какие, будь то акции, облигации, опционы, криптовалютные пары или любые другие.
Вследствие этого возникает необходимость хранить всю эту информацию в определенном месте. В OsEngine этим целям служит класс Portfolio, представляющий собой реализацию такой абстрактной сущности, как брокерский счет на классических биржах или же кошелек на криптовалютных биржах.
Внутри терминала OsEngine данная сущность хранится в классе Portfolio.
На ГитХаб данный класс хранится по адресу: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/Portfolio.cs
В самом проекте он здесь:
Number – публичное поле строкового типа. Содержит номер счета, получаемый из торговой системы.
ValueBegin – публичное поле типа decimal. Хранит значение в деньгах, которое было на момент начала торговой сессии.
ValueCurrent – публичное поле типа decimal. Хранит значение в деньгах, находящееся на счете на текущий момент времени.
ValueBlocked – публичное поле типа decimal. Хранит значение в деньгах, заблокированное биржей под обеспечение.
Profit – публичное поле типа decimal. Содержит результат торговли в виде прибыли или убытка, полученные в рамках текущей торговой сессии.
GetPositionOnBoard – общедоступный метод. Возвращает список всех биржевых позиций, принадлежащих клиенту на текущий момент времени.
SetNewPosition – общедоступный метод. Принимает данные с торговой площадки и обновляет список биржевых позиций.
ClearPositionOnBoard – общедоступный метод. Очищает список биржевых позиций, хранимых в терминале.
Внутри портфеля хранятся позиции по нему. Называются они PositionOnBoard. В них содержатся позиции, а в некоторых случаях и активы.
На ГитХаб данный класс хранится по адресу: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/PositionOnBoard.cs
В проекте этот класс находится здесь:
Описание членов класса:
ValueBegin – публичное поле типа decimal. Хранит количество актива, находящееся на счете в момент начала торговой сессии. Если биржа работает круглосуточно, началом сессии считается начало суток.
ValueCurrent – публичное поле типа decimal. Хранит количество актива, находящееся на счете в текущий момент времени.
ValueBlocked – публичное поле типа decimal. Хранит количество актива, заблокированного биржей в качестве обеспечения.
SecurityNameCode – общедоступное поле строкового типа. Содержит наименование актива.
PortfolioName – общедоступное поле строкового типа. Содержит идентификатор портфеля, которому принадлежит эта биржевая позиция.
Давайте набросаем картинку, как может выглядеть портфель и какие данные у него можно запросить. У нас есть Квик, есть 4570 рублей на счету и 1 купленный контракт по NGN4:
То же самое в виде картинки. У текущего портфеля глобально есть название, внутри текущие рублёвые активы и массив с позициями на бирже:
Отличается от портфеля в Квик тем, что все активы и позиции хранятся в массиве PositionOnBoard:
Соответственно, при создании робота нужно это учитывать.
Во время выставления заявок Вам может занадобиться рассчитывать размер сделки в зависимости от Ваших текущих активов. Обычное дело.
В проекте OsEngine есть замечательный пример, в котором реализован расчёт объёмов разными способами, включая обращение к портфелю и позициям по портфелю. Находится он здесь:
Основная статья про этот пример находится здесь: https://smart-lab.ru/company/os_engine/blog/1036776.php
А нам интересен метод GetVolume:
Внутри него рассчитывается объём для входа в позицию. Нам интересен вариант расчёта объёма от размера депозита:
Удачных алгоритмов!
Комментарии открыты для друзей!
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