Skip to content

[Bug] Пропадает операция в методе get_operations_by_cursor #171

Open
Ipsilon91 opened this issue Jan 1, 2023 · 6 comments
Assignees
Labels
bug Something isn't working

Comments

@Ipsilon91
Copy link

Что случилось?

Если запрашиваю список операций через метод get_operations_by_cursor с конечной датой после 5 декабря 2022 г. по брокерскому счёту, то пропадает операция продажи 65 акций OZON 25.02.2022. Если брать конечную дату 05.12.2022 или раньше, то эта операция появляется. Сам API эту операцию выдаёт во всех случаях (проверено через Swagger tinkoff.github.io/investAPI/swagger-ui).

Воспроизведение

# Get dates in datetime format
def operations(from_, to, broker_account_id):
    with Client(TOKEN) as client:
        def get_request(cursor=""):
            return GetOperationsByCursorRequest(
                account_id=broker_account_id,
                from_=from_,
                to=to,
                cursor=cursor,
                limit=100,
                without_commissions=False,
                without_trades=False,
                without_overnights=False
            )

        operations = []
        operations_with_system_info = client.operations.get_operations_by_cursor(get_request())
        operations += operations_with_system_info.items
        while operations_with_system_info.has_next:
            request = get_request(cursor=operations_with_system_info.next_cursor)
            operations_with_system_info = client.operations.get_operations_by_cursor(request)
            operations += operations_with_system_info.items

    operations.reverse()

    return operations

Tinkoff Invest Version

0.2.0-beta44

Python Version

3.8

OS

Windows

Логи

No response

@Ipsilon91 Ipsilon91 added the bug Something isn't working label Jan 1, 2023
@Ipsilon91
Copy link
Author

Проверил у другого человека, у него тоже операция продажи пропала, но облигаций ЯТЭК выпуск 2 (figi BBG00ZZNPB92). Сама операция продажи была 28.09.2021 и если выставлять в списке операций конечную дату позже 21.11.2022, то она не отражается. Опять же API её показывает и раньше таких проблем не было.

@irusland
Copy link
Contributor

Здравствуйте! К сожалению, я не смог воспроизвести ситуацию. Подскажите, правильно ли я понимаю, что если просто запросить сделки (без курсора) вернется весь набор сделок? А если получать аналогично курсором - то пропадает последняя?

@irusland irusland self-assigned this Jan 14, 2023
@Ipsilon91
Copy link
Author

С вашей подачи я поэкспериментировал ещё. Для get_operations вроде все операции есть, если для get_operations_by_cursor выставить limit=1000, то тоже все (всего операций на этом счёте 900 с чем-то). А вот если менять периоды запроса или limit так, чтобы все операции дробились на куски, и потом собирались у меня, то некоторые операции теряются. Не только та операция продажи OZON, про которую изначально я писал, а другие тоже. Похоже на стыке блоков операций теряется одна. Ещё раз проверил просто через swagger вручную подставляя номер cursor, там все операции есть.

@Ipsilon91
Copy link
Author

Я посчитал сколько пропадает операций. Если в get_operations_by_cursor выставляю limit=1000 по счёту выдаёт 997 операций, если limit=100, то 994 операции, если limit=50, то 992 операции, если limit=10, то 991 операцию. Даты начала и конца периода при этом одинаковые.

@IlyaBlokh
Copy link

Баг всё ещё есть, очень мешает работать

@Ipsilon91
Copy link
Author

Вроде перестали пропадать, вы что-то поправили или это случайность какая-то?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants