invest-openapi icon indicating copy to clipboard operation
invest-openapi copied to clipboard

Метод для получения информации по номеру заявки

Open NikitaMelnikov opened this issue 5 years ago • 16 comments

Новый метод /orders/?orderId={ORDER}, в котором можно получить статус заявки

NikitaMelnikov avatar Nov 06 '19 07:11 NikitaMelnikov

Более подходящий для REST будет /orders/{orderId} (или /orders/:orderId, кто к какой записи привык)

finico avatar Jan 10 '20 21:01 finico

Это работает? На шарпе написал следующий код, валится с ошибками:

public async Task<Models.Order> OrderIdAsync(string id)
        {
            var idParam = HttpUtility.UrlEncode(id);
            var path = $"{Endpoints.Orders}?orderId={idParam}";
            var response = await Connection.SendGetRequestAsync<Models.Order>(path).ConfigureAwait(false);
            return response?.Payload;
        }

В чем может быть дело, что я не так понимаю?

v-crys avatar Apr 24 '20 19:04 v-crys

@v-crys задача еще не сделана

NikitaMelnikov avatar Apr 29 '20 06:04 NikitaMelnikov

@NikitaMelnikov есть ли примерные сроки?

mlshvdv avatar Jun 25 '20 17:06 mlshvdv

Пока что нет

NikitaMelnikov avatar Jun 29 '20 06:06 NikitaMelnikov

Я крайне удивлен, что такого базового метода нет

Jokero avatar Feb 23 '21 17:02 Jokero

Тем временем, уже больше года тикету 😐

tolk-vm avatar Mar 03 '21 10:03 tolk-vm

Стоит ли удивляться, если другие базовые вещи (выдача дневных свечей через rest) до сих пор не починили? Тоже уже скоро год исполнится..

kitMP avatar Mar 03 '21 11:03 kitMP

Я думаю, это всё "когда-то" будет в версии OpenAPI v2. Практически все тикеты заканчиваются тем, что "в v2 учтём". А когда будет v2, и будет ли, уже больше года можно только гадать (

tolk-vm avatar Mar 03 '21 11:03 tolk-vm

@NikitaMelnikov , есть ли смысл ждать данный метод в OpenAPI v1 ?

aiptasia avatar Mar 18 '21 06:03 aiptasia

@s-golikov Добрый день, в v1 - нет.

AlexanderVolkovTCS avatar Mar 18 '21 07:03 AlexanderVolkovTCS

@AlexanderVolkovTCS , спасибо. Появилась ли информация о примерных сроках выхода APIv2? Без возможности проверки статуса ордера написать хоть сколько-нибудь работающего бота не представляется возможным.

aiptasia avatar Mar 22 '21 21:03 aiptasia

@AlexanderVolkovTCS , спасибо. Появилась ли информация о примерных сроках выхода APIv2? Без возможности проверки статуса ордера написать хоть сколько-нибудь работающего бота не представляется возможным.

Рассказываю о своём супер-способе) После создания заявок известен orderId для каждой заявки. Значит:

  1. Собираю список заявок, которые ещё не исполнились;
  2. Также собираю список FIGI от этих заявок;
  3. Нахожу datetime_min (дата-время самой ранней неисполнившейся заявки минус 1 минута);
  4. Нахожу datetime_max (дата-время самой поздней неисполнившейся заявки плюс 1 минута);
  5. Если есть неисполнившиеся заявки, то формирую запрос к "/operations"; а) Если в списке FIGI только одна уникальная штука, значит, указываю его при обращении к "/operations". б) Также указываю datetime_min и datetime_max. Так минимизируется объём ответа от API.
  6. Получаю список и нахожу соответствие между orderId и operation.id;
  7. Проставляю статусы заявкам в своём списке.

Эта проверка запускается примерно каждые 30 сек.

Часто бывает так, что лимитная заявка исполняется сразу. Поэтому опрашиваю "/operations" через 10 секунд после создания заявки с указанием конкретного FIGI и datetime_min—datetime_max. Работает)

polkila avatar Mar 22 '21 22:03 polkila

@s-golikov Работаем, но к сожалению сроки не называем

@polkila для большого количества выставленных торговых поручений алгоритм оптимальный!

AlexanderVolkovTCS avatar Mar 23 '21 15:03 AlexanderVolkovTCS

@polkila , спасибо за подробное описание! В этом алгоритме для меня слабым местом является необходимость обращения к endpoint'у /operations. Судя по тому, как работают терминал и мобильное приложение, в инфраструктуре TCS активно используются очереди, ну и как следствие имеем eventual consistency. Видимо именно очереди там являются узким местом, и в данном случае после выполнения заявки нет гарантированного временного интервала, в течение которого исполненная заявка отразится в операциях.

На данный момент я полагаюсь только на endpoint /orders, у меня одна горутина раз в секунду опрашивает этот endpoint, другая выставляет лимитную заявку и ждет, когда она исчезнет из списка активных ордеров. В таком случае моя проблема заключается в том, что я не могу снять заявку вручную - программа будет считать, что заявка исполнилась, и не могу написать нормальный алгоритм отмены заявки, т.к. опять же, нет гарантии, что заявка будет именно отменена, а не исполнена. И даже если я добавлю к этому параллельное отслеживание marketdata, все равно гарантий корректного определения статуса нет.

Использовать большие таймауты тоже нет возможности, т.к. я прорабатываю скорее скальперские стратегии, нежели свинг.

aiptasia avatar Mar 23 '21 18:03 aiptasia

@polkila , спасибо за подробное описание! В этом алгоритме для меня слабым местом является необходимость обращения к endpoint'у /operations. Судя по тому, как работают терминал и мобильное приложение, в инфраструктуре TCS активно используются очереди, ну и как следствие имеем eventual consistency. Видимо именно очереди там являются узким местом, и в данном случае после выполнения заявки нет гарантированного временного интервала, в течение которого исполненная заявка отразится в операциях.

На данный момент я полагаюсь только на endpoint /orders, у меня одна горутина раз в секунду опрашивает этот endpoint, другая выставляет лимитную заявку и ждет, когда она исчезнет из списка активных ордеров. В таком случае моя проблема заключается в том, что я не могу снять заявку вручную - программа будет считать, что заявка исполнилась, и не могу написать нормальный алгоритм отмены заявки, т.к. опять же, нет гарантии, что заявка будет именно отменена, а не исполнена. И даже если я добавлю к этому параллельное отслеживание marketdata, все равно гарантий корректного определения статуса нет.

Использовать большие таймауты тоже нет возможности, т.к. я прорабатываю скорее скальперские стратегии, нежели свинг.

Согласен со всем перечисленным. Ну, ждём! Пока что свинг)

polkila avatar Mar 23 '21 19:03 polkila