Биржевой портфель и позиции на бирже. Класс Portfolio и PositionOnBoard. Примитивы в OsEngine #8

30.07.2024 palmax

Биржевой портфель и позиции на бирже. Класс Portfolio и PositionOnBoard. Примитивы в OsEngine #8

Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.

Сегодня поговорим про портфель на бирже. Это Ваш «кошелёк», на котором хранятся деньги (активы) и позиции по акциям и деривативам. В вёб-терминале это выглядит как-то так:

1. Что такое портфель на бирже?

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

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

 

2. Класс Portfolio в OsEngine.

Внутри терминала 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 – общедоступный метод. Очищает список биржевых позиций, хранимых в терминале.

 

3. Класс PositionOnBoard.

Внутри портфеля хранятся позиции по нему. Называются они PositionOnBoard. В них содержатся позиции, а в некоторых случаях и активы.

На ГитХаб данный класс хранится по адресу: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/PositionOnBoard.cs

В проекте этот класс находится здесь:

 

Описание членов класса:

ValueBegin – публичное поле типа decimal. Хранит количество актива, находящееся на счете в момент начала торговой сессии. Если биржа работает круглосуточно, началом сессии считается начало суток.

ValueCurrent – публичное поле типа decimal. Хранит количество актива, находящееся на счете в текущий момент времени.

ValueBlocked – публичное поле типа decimal. Хранит количество актива, заблокированного биржей в качестве обеспечения.

SecurityNameCode – общедоступное поле строкового типа. Содержит наименование актива.

PortfolioName – общедоступное поле строкового типа. Содержит идентификатор портфеля, которому принадлежит эта биржевая позиция.

 

4. Портфель на примере Quik.

Давайте набросаем картинку, как может выглядеть портфель и какие данные у него можно запросить. У нас есть Квик, есть 4570 рублей на счету и 1 купленный контракт по NGN4:

 

  1. Номер или название портфеля. Поскольку их бывает несколько, обычно его надо знать, чтобы к нему обратиться.
  2. Текущие активы рублёвые по счёту.
  3. Позиция по портфелю. PositionOnBoard. В данном случае это NGN4.

То же самое в виде картинки. У текущего портфеля глобально есть название, внутри текущие рублёвые активы и массив с позициями на бирже:

 

5. Портфель в крипте.

Отличается от портфеля в Квик тем, что все активы и позиции хранятся в массиве PositionOnBoard:

 

Соответственно, при создании робота нужно это учитывать.

 

6. Обращение к портфелю. Пример.

Во время выставления заявок Вам может занадобиться рассчитывать размер сделки в зависимости от Ваших текущих активов. Обычное дело.

В проекте OsEngine есть замечательный пример, в котором реализован расчёт объёмов разными способами, включая обращение к портфелю и позициям по портфелю. Находится он здесь:

 

Основная статья про этот пример находится здесь: https://smart-lab.ru/company/os_engine/blog/1036776.php

А нам интересен метод GetVolume:

 

Внутри него рассчитывается объём для входа в позицию. Нам интересен вариант расчёта объёма от размера депозита:

 

  1. Здесь мы запрашиваем портфель у класса BotTabSimple. Это обычный, простой источник для торговли в OsEngine. Самый распространённый. Будем дальше по гайду очень много про него говорить.
  2. Если пользователь выбрал портфель типа Prime, то запрашиваем размер активов прямо у портфеля. Это вариант с Квик, когда сам портфель знает о своих активах и они одни на весь портфель.
  3. Если пользователь назначил иное название для активов (например, USDT, или бывает RUB или EUR), то идём искать их в массив PositionOnBoard. Это вариант для Криптобирж и Тинькова.

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

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

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка 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

30.07.2024 palmax

Биржевой портфель и позиции на бирже. Класс Portfolio и PositionOnBoard. Примитивы в OsEngine #8

Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.

Сегодня поговорим про портфель на бирже. Это Ваш «кошелёк», на котором хранятся деньги (активы) и позиции по акциям и деривативам. В вёб-терминале это выглядит как-то так:

1. Что такое портфель на бирже?

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

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

 

2. Класс Portfolio в OsEngine.

Внутри терминала 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 – общедоступный метод. Очищает список биржевых позиций, хранимых в терминале.

 

3. Класс PositionOnBoard.

Внутри портфеля хранятся позиции по нему. Называются они PositionOnBoard. В них содержатся позиции, а в некоторых случаях и активы.

На ГитХаб данный класс хранится по адресу: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/PositionOnBoard.cs

В проекте этот класс находится здесь:

 

Описание членов класса:

ValueBegin – публичное поле типа decimal. Хранит количество актива, находящееся на счете в момент начала торговой сессии. Если биржа работает круглосуточно, началом сессии считается начало суток.

ValueCurrent – публичное поле типа decimal. Хранит количество актива, находящееся на счете в текущий момент времени.

ValueBlocked – публичное поле типа decimal. Хранит количество актива, заблокированного биржей в качестве обеспечения.

SecurityNameCode – общедоступное поле строкового типа. Содержит наименование актива.

PortfolioName – общедоступное поле строкового типа. Содержит идентификатор портфеля, которому принадлежит эта биржевая позиция.

 

4. Портфель на примере Quik.

Давайте набросаем картинку, как может выглядеть портфель и какие данные у него можно запросить. У нас есть Квик, есть 4570 рублей на счету и 1 купленный контракт по NGN4:

 

  1. Номер или название портфеля. Поскольку их бывает несколько, обычно его надо знать, чтобы к нему обратиться.
  2. Текущие активы рублёвые по счёту.
  3. Позиция по портфелю. PositionOnBoard. В данном случае это NGN4.

То же самое в виде картинки. У текущего портфеля глобально есть название, внутри текущие рублёвые активы и массив с позициями на бирже:

 

5. Портфель в крипте.

Отличается от портфеля в Квик тем, что все активы и позиции хранятся в массиве PositionOnBoard:

 

Соответственно, при создании робота нужно это учитывать.

 

6. Обращение к портфелю. Пример.

Во время выставления заявок Вам может занадобиться рассчитывать размер сделки в зависимости от Ваших текущих активов. Обычное дело.

В проекте OsEngine есть замечательный пример, в котором реализован расчёт объёмов разными способами, включая обращение к портфелю и позициям по портфелю. Находится он здесь:

 

Основная статья про этот пример находится здесь: https://smart-lab.ru/company/os_engine/blog/1036776.php

А нам интересен метод GetVolume:

 

Внутри него рассчитывается объём для входа в позицию. Нам интересен вариант расчёта объёма от размера депозита:

 

  1. Здесь мы запрашиваем портфель у класса BotTabSimple. Это обычный, простой источник для торговли в OsEngine. Самый распространённый. Будем дальше по гайду очень много про него говорить.
  2. Если пользователь выбрал портфель типа Prime, то запрашиваем размер активов прямо у портфеля. Это вариант с Квик, когда сам портфель знает о своих активах и они одни на весь портфель.
  3. Если пользователь назначил иное название для активов (например, USDT, или бывает RUB или EUR), то идём искать их в массив PositionOnBoard. Это вариант для Криптобирж и Тинькова.

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

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

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка 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