← Назад

Как узнать отменились ли все заявки?

Я вызываю SmartTrader.CancelOrders. Только после того как я получу подтверждение что все мои заявки отменены я хочу слать новые заявки. Как же мне узнать момент когда все заявки отменились? Не получается найти соответствующее событие. А ведь возможна ситуация что команда CancelOrders закончится не успешно. А события о успешном завершении CancelOrders я не вижу в API. Как же быть?

Комментарии (9)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

Nikolay90: Я вызываю SmartTrader.CancelOrders. Только после того как я получу подтверждение что все мои заявки отменены я хочу слать новые заявки. Как же мне узнать момент когда все заявки отменились? Не получается найти соответствующее событие. А ведь возможна ситуация что команда CancelOrders закончится не успешно. А события о успешном завершении CancelOrders я не вижу в API. Как же быть?

А никак. Нет такого события даже у биржи. Не говоря про СмартКом и наш коннектор. Если хотите узнавать гарантированно, то и метод нужно писать с гарантированной отменой.

Nikolay90
Nikolay90 Автор

Михаил Сухов: А никак. Нет такого события даже у биржи. Не говоря про СмартКом и наш коннектор. А вот тут я с вами не могу согласиться. Как это нет? Вот в мануале по Смарткому http://www.itinvest.ru/editorfiles/File/smartcom/SmartCOM_2_2_install_guide.pdf есть событие OrderCancelSucceeded. А у биржи на каждую транзакцию приходит ответ, приняла биржа эту транзакцию или нет. Вопрос остается актуальным, как в stocksharp узнать получила ли биржа мою транзакцию об отмене всех моих заявок?

Mikhail Sukhov
Mikhail Sukhov

Nikolay90: есть событие OrderCancelSucceeded.

В английском языке Order - означает единственно число. А Orders (или OrderGroup) - множественное.

Nikolay90
Nikolay90 Автор

Михаил Сухов:

Nikolay90: есть событие OrderCancelSucceeded.

В английском языке Order - означает единственно число. А Orders (или OrderGroup) - множественное. Это я в курсе. Вы имеете в виду, что в stocksharp есть событие для успешной отмены одной заявки? Т.е. есть возможность отследить отменилась ли конкретная заявка или нет? Я видел метод IsCanceled у Order, но никак не пойму когда и у какого ордера его вызывать. Может при отправке заявки складывать отправленные заявки в контейнер и по какому-то событию проходиться по нему и выяснять отменилась она или нет?

Mikhail Sukhov
Mikhail Sukhov

Nikolay90: Вы имеете в виду, что в stocksharp есть событие для успешной отмены одной заявки?

Да, изучайте примеры и документацию.

Nikolay90
Nikolay90 Автор

Михаил, подскажите, пожалуйста, какое событие вызывается при успешной отмене заявки. У меня никак не получается это выяснить из документации. Я еще начинающий.

yar1k0v
yar1k0v

Привет. Вот событие => {


 OrderChanged += changed =>
 {
    if (changed.Status == OrderStatus.Cancelled)
    {
       /* Заявка Cancelled. */
    }
 };

}

Вот код для поиска активных заявок => {


public IEnumerable<Order> GetActiveOrders()
     {
         return (from orders in Trader.Orders
                 where (orders.State == OrderStates.Active)
                 select orders).ToList();
     }

}

П.С.

Пользуюсь только поиском активных заявок.

Nikolay90
Nikolay90
Nikolay90 Автор

Спасибо, yar1k0v.

FlashPlayer
FlashPlayer

ну или через маркет-руул: Order.WhenCancelled().D0(()=>).Apply(this)