Closed Rashid567 closed 1 year ago
и можно ли вообще полагаться на FIGI?
@nonamegithub, Спасибо!
Ещё один вопрос: position_uid это внешний ключ на Asset.uid?
на Asset.uid?
Не боюсь показаться недалеким, но я не понял зачем он вообще нужен, даже прочитав документацию. Уверен, что и из команды разработчиков вряд ли кто сможет внятно объяснить его предназначение.
а
position_uid это внешний ключ
на position_uid из методов bonds, currencies, etfs, futures, shares, options из InstrumentsService
@nonamegithub, покопавшись в данных и связях сложилась следующая картина:
Здесь Asset начинает играть ключевую роль, если требуется агрегация операций по активу (акции / облигации и т.д.).
Не покидают меня ощущения, что position_uid ведет на скрытый параметр Asset-а или на скрытый объект, который соотносится с Asset-ом связью 1 к 1.
Выяснил, почему FIGI нужно избегать использовать (вместо него использовать instrument_uid), но не везде это получится сделать.
Почему следуют избегать: У инструмента могут поменять FIGI (происходит это редко). В этом случае старый инструмент удаляется/скрывается от пользователей, и создается новый. Так же создается связь между старым и новым инструментом с type = figi_changed.
Пример изменения FIGI: Акции обыкновенные Совкомфлота
Где придётся использовать FIGI:
И появились новые вопросы:
1) Зачем применять тип quotation там, где он не нужен? Пример: issue_size_plan в AssetBond
2) Зачем нужно было связывать купоны и дивиденды с инструментами, а не с активами? И что с ними произойдёт при смене инструмента?
figi TCSS0A105M91 = это инструмент RU000A105M91_PSAU figi TCS00A105M91 = это инструмент RU000A105M91_TQCB
Оба инструмента относятся к одной и той же позиции. Это нормальная ситуация, когда вы одну и ту же позицию можете изменять разными торговыми инструментами (например, биржевой и внебиржевой)
По второму вопросу действительно иерархия такая: Asset (актив) -> Position(позиция) -> Instrument (инструмент) Связь 1 к N, у актива может быть несколько позиций, а позицию можно изменять несколькими инструментами.
Здесь Asset начинает играть ключевую роль, если требуется агрегация операций по активу (акции / облигации и т.д.).
верно
Где придётся использовать FIGI:
Получение купонов Получение дивидендов
в эти методы будет добавлен instrument_uid в 1.7
Зачем применять тип quotation там, где он не нужен? Пример: issue_size_plan в AssetBond
Сделано так исходя из внутреннего представления параметра как числа с плавающей точкой, вероятно на случай, если параметр не будет целым.
Зачем нужно было связывать купоны и дивиденды с инструментами, а не с активами? И что с ними произойдёт при смене инструмента?
Legacy брокера. Планируется добавить параметр _positionuid после доработки внутренних сервисов.
Не боюсь показаться недалеким, но я не понял зачем он вообще нужен, даже прочитав документацию. Уверен, что и из команды разработчиков вряд ли кто сможет внятно объяснить его предназначение.
Оказался в состоянии когнитивного диссонанса, ознакомившись с ответом специалиста, и соотнеся его с информацией, полученной мною ранее, из документации. По факту оказалось, что я, как и прежде, в порядке, а причиной явилось переписывание разработчиками "втихую" раздела investAPI-main\src\docs\faq_identification.md документации. Я не против, на самом деле: пусть таким способом, но будем вносить ясность во все "темные" моменты документации InvestAPI.
@AlexanderVolkovTCS, @nonamegithub Спасибо за разъяснения!
ту же позицию можете изменять разными торговыми инструментами
@AlexanderVolkovTCS - слово "изменять" постоянно режет слух в вышеупомянутом контексте. Может есть смысл использовать слово "представлять", если Вы конечно не против? Например: "...позиция может быть представлена различными торговыми инструментами..."
переписывание разработчиками "втихую"
Это я и переписал) Не думаю, что каждое обновление документации нужно как-то дополнительно анонсировать.
слово "изменять" постоянно режет слух в вышеупомянутом контексте
@nonamegithub да в том то и дело, что слово "представление" тоже не совсем корректно. Позиция в терминах Тинькофф Инвестиций - актив, которым вы владеете, позиция имеет только количественную оценку. Например, у вас в позициях акции сбера в количестве 2х штук. GetPositions() возвращает список ваших позиций.
А инструмент - это способ купить/продать позицию в указанном режиме торгов. Инструмент уже имеет котировки. Инструментов может быть несколько. Ордера могут выставляться только по инструментам.
Можно использовать термин "увеличить/уменьшить позицию"
mshukilovich неплохо мысли выражает по русски, в отличие от SRadyukov. Пусть подключается к процессу.
Добрый день!
GetOperationsByCursorRequest мне вернул данные по двум связанным операциям:
Opr №1 - 'Покупка 20 облигаций Синара - Транспортные Машины выпуск 3'
id = '33877822245' position_uid = '1213388c-113f-4889-b74f-02a27a66f3ce' date = datetime.datetime(2022, 12, 16, 8, 8, 8, tzinfo=zoneinfo.ZoneInfo(key='Etc/UTC')) figi = 'TCSS0A105M91' instrument_uid = '34eb0ecc-e03f-46a6-8e78-4094a58efe7d'
Opr №2 - 'Комиссия брокера' - 'Синара - Транспортные Машины выпуск 3'
id = '3574444564' parent_operation_id = '33877822245' position_uid = '1213388c-113f-4889-b74f-02a27a66f3ce' date = datetime.datetime(2022, 12, 16, 13, 8, 46, 197000, tzinfo=zoneinfo.ZoneInfo(key='Etc/UTC')) figi = 'TCS00A105M91' instrument_uid = 'f508293e-50e2-4593-a2ed-2a1338ef4323'
У них отличаются figi (на один символ), но совпадают position_uid.
Как с этим быть и можно ли вообще полагаться на FIGI?