У меня вопрос, почему лимитная заявка, которая частично исполнена(например из 100 лотов взялось 50), не может быть закрыта?
Из API приходит такая ошибка:
639195280bb74a3a4faf12155315610b CancelOrder INVALID_ARGUMENT 30059 (<StatusCode.INVALID_ARGUMENT: (3, 'invalid argument')>, '30059', Metadata(tracking_id='639195280bb74a3a4faf12155315610b', ratelimit_limit='100, 100;w=60', ratelimit_remaining=99, ratelimit_reset=32, message='cancel order error: The order has been partially or fully executed.'))
Судя по описанию ошибки, сказано, что нельзя закрыть лимитную заявку, так как она частично или полностью исполнена. При этом в документации Tinkof API про это не сказано ни слова, да и в самом териминале можно отменять частично исполненные заявки. Просьба разъяснить этот момент, так как он является очень важным, для торговых роботов по лимитным заявкам.
Общая идея такая, что заявка должна сниматься по истечению таймера в 10 секунд, не важно частично она исполнена или нет. Если исполнена полностью, понятное дело, что она не будет сниматься.
Воспроизведение
1. Создание AsyncClient
2. Выставление лимитной заявки через await client.orders.post_order()
3. Запуск таймера на 10с
4. Получение состояния ордера каждые 0.5с с помощью await client.orders.get_order_state()
5. Если какая-то часть заявки исполнилась, то выставляется заявка в обратную сторону на то кол-во лотов, что исполнилось.
6. По прошедствию 10 секунд, если запрашиваемое количество лотов != исполненное количество лотов, то выполняется await client.orders.cancel_order()
7. В случае если заявка была частично исполнена, то приходит ошибка.
Что случилось?
У меня вопрос, почему лимитная заявка, которая частично исполнена(например из 100 лотов взялось 50), не может быть закрыта?
Из API приходит такая ошибка:
639195280bb74a3a4faf12155315610b CancelOrder INVALID_ARGUMENT 30059 (<StatusCode.INVALID_ARGUMENT: (3, 'invalid argument')>, '30059', Metadata(tracking_id='639195280bb74a3a4faf12155315610b', ratelimit_limit='100, 100;w=60', ratelimit_remaining=99, ratelimit_reset=32, message='cancel order error: The order has been partially or fully executed.'))
Судя по описанию ошибки, сказано, что нельзя закрыть лимитную заявку, так как она частично или полностью исполнена. При этом в документации Tinkof API про это не сказано ни слова, да и в самом териминале можно отменять частично исполненные заявки. Просьба разъяснить этот момент, так как он является очень важным, для торговых роботов по лимитным заявкам.
Общая идея такая, что заявка должна сниматься по истечению таймера в 10 секунд, не важно частично она исполнена или нет. Если исполнена полностью, понятное дело, что она не будет сниматься.
Воспроизведение
Tinkoff Invest Version
0.2.0-beta43
Python Version
3.10
OS
Windows
Логи
No response