Tinkoff / invest-python

Tinkoff Invest Python gRPC client
https://tinkoff.github.io/invest-python/
Apache License 2.0
301 stars 87 forks source link

PostStopOrder FAILED_PRECONDITION 90001 #231

Closed artemtyupov closed 1 year ago

artemtyupov commented 1 year ago

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

Имеется торговый робот. Алгоритм бота следующий:

  1. Выставление лимитной заявки на покупку
  2. Если заявка прошла (пришла в trades_stream) 2.1. Выставляется стоп лосс заявка 2.2. Выставляется тейк профит заявка

Вроде все работает, НО если за пару секунд выставляется сразу много заявок(от 5 в секунду), то стоп заявки перестают выставляться с ошибкой PostStopOrder FAILED_PRECONDITION 90001 Судя по описанию ошибки, нужно какое-то подтверждение. У себя проверил, вроде нигде никаких галочек на подтверждение в настройках не стоит. Просьба подсказать, как обойти эти ошибку. Заранее спасибо.

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

for i in range(10):
    await main_client.stop_orders.post_stop_order(
                                figi=figi,
                                quantity=lots,
                                price=price,
                                stop_price = stop_price,
                                direction=direction,
                                account_id=saccount_id,
                                expiration_type = StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL,
                                stop_order_type=StopOrderType.STOP_ORDER_TYPE_STOP_LOSS)

Tinkoff Invest Version

0.2.0-beta57

Python Version

3.11

OS

Windows

Логи

<10:00:47.449190> <36049538156> Выставлен ордер на покупку TGKBP по цене 0.01358р в количестве 1 лотов
<10:00:48.875058> <36049544005> Выставлен ордер на покупку RNFT по цене 122.4р в количестве 18 лотов
<10:00:50.207035> <36049544005> Ордер на покупкуRNFT сработал по цене 122.4р в количестве 18 лотов
<10:00:50.384668> <3ae2a386-0e80-4847-b006-c85f3f5a9561> Выставлен стоп RNFT по цене 122.0р в количестве 18 лотов
<10:00:50.550153> <8f6e084f-300b-4398-98e9-a5134955d8ca> Выставлен тейк RNFT по цене 123.3р в количестве 18 лотов
<10:00:55.933342> <36049538156> Ордер на покупкуTGKBP сработал по цене 0.01358р в количестве 1 лотов
<10:00:56.096139> <ccc7b8f8-5613-4d86-8191-eff5b6872445> Выставлен стоп TGKBP по цене 0.01353р в количестве 1 лотов
<10:00:56.217676> <607a1378-b802-4ac5-9a4c-8faadb4de2da> Выставлен тейк TGKBP по цене 0.01369р в количестве 1 лотов
<10:01:14.548192> <36049619065> Выставлен ордер на покупку ROLO по цене 0.7617р в количестве 3 лотов
<10:01:15.725793> <36049619065> Ордер на покупку ROLO сработал по цене 0.7617р в количестве 3 лотов
<10:01:15.805442> <676489a4-63c2-46f8-8932-e83e43ef71d6> Выставлен стоп ROLO по цене 0.7597р в количестве 3 лотов
--------- Попытка выставить stop заявку(take profit)
64647bbc159ccfff6bb06f35110a07d5 PostStopOrder FAILED_PRECONDITION 90001
64647bbd084281ca982858e85b004295 PostStopOrder FAILED_PRECONDITION 90001
64647bbf0104e938471e57fc40deb483 PostStopOrder FAILED_PRECONDITION 90001
64647bc03065d4c687e77b3b48bfc43e PostStopOrder FAILED_PRECONDITION 90001
64647bc14f7866a9b9a919d6d9b14a85 PostStopOrder FAILED_PRECONDITION 90001
64647bc251f42221d94edb31069a6569 PostStopOrder FAILED_PRECONDITION 90001
64647bc395faf0e4e9da89b6a9696461 PostStopOrder FAILED_PRECONDITION 90001
64647bc42b3374e46b2db0e11eec97bb PostStopOrder FAILED_PRECONDITION 90001
64647bc51ee29e1a7895f78c50aea34c PostStopOrder FAILED_PRECONDITION 90001
64647bc626f0ff7a026279c2bb9610a9 PostStopOrder FAILED_PRECONDITION 90001
64647bc7fc440613c7cf45d277f34d19 PostStopOrder FAILED_PRECONDITION 90001
64647bc83b17128404a04f71088dea0b PostStopOrder FAILED_PRECONDITION 90001
64647bc9140b278c0b387f21d3a53e54 PostStopOrder FAILED_PRECONDITION 90001
64647bcaa117bee2d2ae27db357eacf8 PostStopOrder FAILED_PRECONDITION 90001
64647bcb54febaaa96f9c012ad32a1bc PostStopOrder FAILED_PRECONDITION 90001
AlexanderVolkovTCS commented 1 year ago

Добрый день 1) Есть ограничение на количество выставляемых ордеров в минуту, это 50: https://tinkoff.github.io/investAPI/limits/

2) Также в API есть запрет на выставление ордеров свыше 6,000,000р (требуется подтверждение по СМС)