Coder Social home page Coder Social logo

Comments (16)

finico avatar finico commented on August 16, 2024 9

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

from invest-openapi.

NikitaMelnikov avatar NikitaMelnikov commented on August 16, 2024 1

Пока что нет

from invest-openapi.

polkila avatar polkila commented on August 16, 2024 1

@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.
Работает)

from invest-openapi.

v-crys avatar v-crys commented on August 16, 2024

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

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;
        }

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

from invest-openapi.

NikitaMelnikov avatar NikitaMelnikov commented on August 16, 2024

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

from invest-openapi.

mlshvdv avatar mlshvdv commented on August 16, 2024

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

from invest-openapi.

Jokero avatar Jokero commented on August 16, 2024

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

from invest-openapi.

unserialize avatar unserialize commented on August 16, 2024

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

from invest-openapi.

kitMP avatar kitMP commented on August 16, 2024

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

from invest-openapi.

unserialize avatar unserialize commented on August 16, 2024

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

from invest-openapi.

aiptasia avatar aiptasia commented on August 16, 2024

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

from invest-openapi.

AlexanderVolkovTCS avatar AlexanderVolkovTCS commented on August 16, 2024

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

from invest-openapi.

aiptasia avatar aiptasia commented on August 16, 2024

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

from invest-openapi.

AlexanderVolkovTCS avatar AlexanderVolkovTCS commented on August 16, 2024

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

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

from invest-openapi.

aiptasia avatar aiptasia commented on August 16, 2024

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

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

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

from invest-openapi.

polkila avatar polkila commented on August 16, 2024

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

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

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

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

from invest-openapi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.