Tinkoff / investAPI

399 stars 136 forks source link

Для операции продажи валюты не возвращается figi из GetOperations #12

Closed roman-struchev closed 2 years ago

roman-struchev commented 2 years ago

Добрый день, При вызове /tinkoff.public.invest.api.contract.v1.OperationsService/GetOperations для операции покупки/продажи валюты не возвращается figi (https://tinkoff.github.io/investAPI/operations/#operation).

Пример операции продажи валюты без figi из grpc

{
      "id": "22106217647",
      "parentOperationId": "",
      "currency": "RUB",
      "payment": {
        "currency": "RUB",
        "units": "285243",
        "nano": 750000000
      },
      "price": {
        "currency": "RUB",
        "units": "86",
        "nano": 437500000
      },
      "state": "OPERATION_STATE_EXECUTED",
      "quantity": "3300",
      "quantityRest": "0",
      "figi": "",
      "instrumentType": "",
      "date": "2021-08-09T09:04:34Z",
      "type": "\u041F\u0440\u043E\u0434\u0430\u0436\u0430 \u0426\u0411"
    }

Эта же операция c figi из openapi (https://api-invest.tinkoff.ru/openapi/operations)

{
    "operationType": "Sell",
    "date": "2021-08-09T12:04:34+03:00",
    "isMarginCall": false,
    "instrumentType": "Currency",
    "figi": "BBG0013HJJ31",
    "quantity": 3300,
    "quantityExecuted": 3300,
    "price": 86.4375,
    "payment": 285243.75,
    "currency": "RUB",
    "commission": {
        "currency": "RUB",
        "value": -142.62
    },
    "trades": [
        {
            "tradeId": "365792138",
            "date": "2021-08-09T12:04:34.398+03:00",
            "quantity": 3300,
            "price": 86.4375
        }
    ],
    "status": "Done",
    "id": "22106217647"
}

По другим типам инструментов проблемы не замечал

alexanderkmd commented 2 years ago

Аналогичная ситуация для некоторых видов дивидендных и прочих операций, например: tracking Id ee785e2f9e0980a70afafee08930631f

{
  "operations": [
    {
      "id": "-1",
      "parentOperationId": "",
      "currency": "USD",
      "payment": {
        "currency": "USD",
        "units": "2",
        "nano": 100000000
      },
      "price": {
        "currency": "USD",
        "units": "0",
        "nano": 0
      },
      "state": "OPERATION_STATE_EXECUTED",
      "quantity": "0",
      "quantityRest": "0",
      "figi": "",
      "instrumentType": "",
      "date": "2021-10-28T03:00:00Z",
      "type": "\u0412\u044B\u043F\u043B\u0430\u0442\u0430 \u0434\u0438\u0432\u0438\u0434\u0435\u043D\u0434\u043E\u0432"
    }
  ]
}

В этом примере - пустой Figi и тип инструмента, хотя это дивиденд по акциям. Точно отметил такое поведение на GEMC, MDMG, но не исключаю и другие тикеры.

Другая операция для примера, по trackingId: 1969ae2b5832ed7859077349d9e537da

irishrover commented 2 years ago

А еще нет аналога поля типа операции

"operationType": "Sell",

Как тогда понять, что это за операция?

alexanderkmd commented 2 years ago

А еще нет аналога поля типа операции

"operationType": "Sell",

Как тогда понять, что это за операция?

Теперь оно называется type и представлено в русской кодировке.

На данный момент знаю: 'Покупка ЦБ' 'Продажа ЦБ' 'Завод денежных средств' 'Вывод денежных средств' 'Удержание налога по дивидендам' 'Удержание комиссии за операцию' 'Выплата купонов' 'Выплата дивидендов' 'Частичное погашение облигаций' 'Полное погашение облигаций' 'Удержание налога' 'Доход по сделке РЕПО овернайт' 'accruing_varmargin' 'Удержание комиссии за непокрытую позицию'

PanAnjey commented 2 years ago

Кодировка то русская - но формулировки - не русские.... Завод денежных средств - это очевидно должно быть "Пополнение брокерского счета"? Хорошо бы конечно иметь большой завод по производству денежных средств, но увы...

PanAnjey commented 2 years ago

accruing_varmargin - а этот тип явно не в русской кодировке writing_off_varmargin - да и этот тоже. Может лучше тип операции сделать числовым кодом? Какая-то общая логика должна быть... статус операции - кодом отдается...

serejhaaa commented 2 years ago

Прокидывание figi для разных типов операций починили. Для удобства сделали enum для типов операций, описание в контракте: https://tinkoff.github.io/investAPI/operations#operationtype