← Zurück

как дождаться снятия заявки

Михаил, а как в асинхронном режиме реализовать такое

1.Снять заявку 2.дождаться результат снятия - успешно снята или знятие не прошло

мне нужно отправить запрос на снятие и в результати от успеха/ неуспеха снятия предпринимать те или иные действия

War dieses Thema hilfreich?

Thema teilen

Kommentare (12)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

OrdersChanged пока не придет State Done

Tauler
Tauler Autor

мутить блокировки с помощью ManualSetEvent?

Mikhail Sukhov
Mikhail Sukhov

Да, видимо придется как в примере SampleConsole раз у вас шаг за шагом... Надо бы глянуть на этот новый WF. Рекомендуете статью для начинающего?

Tauler
Tauler Autor

Да я как то так ,по мсдну разбирался. и по примерам. я пару статей по 3.5 прочитал, начинал с него. но думаю в этом плане 3.5 и 4 - разницы никакой нет.

Mikhail Sukhov
Mikhail Sukhov

Вы пишите, что там state режима нет. Так что есть.

Tauler
Tauler Autor

в смысле state режима? там есть Flowchart

Mikhail Sukhov
Mikhail Sukhov

Так а зачем тогда Вы while чиклы пишите? Торговые алгоритмы опираются на события. Думаю не спроста такие системы как ВетЛаб и Квант предоставляют именно событийную модель работы. Понятно, что внутри иет логика последовательная ввиде условий и циклов. Но отправная точна всегда событие: закончился бар, начался новый, цена превысила, заявка изменилась и т.д. Может все же идти по пути именно событий? Его до нас уже протоптали.

Tauler
Tauler Autor

Писал развернутый ответ - и тырнет крякнул.

Суть в том что все эти танцы с бубном лишь для того, чтобы сварганить инструмент, в ктором трейдер будет робота РИСОВАТЬ, а рисовать он может только в виде детерминированых блок-схем. трейдеру будет трудно рассказать, как пользовать события, почему вмсето того, чтобы на снятие заявки получить ответ - успешно или неспешн опрошло снятие, он должен слушать событие, да и мне - разработчику намного удобнее было бы написать

if(trader.CancelOrder(order)) { действия при успешном снятии

else { при неуспешном

чем отменять заявку, а потом в событии получть заявку, выснять что именно это за заявка, и какие действия были с ней в прошлом, и что делать в будущем..

так же намного удобнее проверять заявку

if( status.Done && PartiallyMatched) чем слушать событие.

а если заявок много, кторые надо проверять? тут уже в событийно модели начинаются неудобства :)

Вообще конечно, как мне кажется, много пользы прнес бы смешаный режим, т.к. выстаявлять заявки удобно в асинхронном - и там уже слушать событии, а вот снимать например лучше в синхроноом - там сразу ясно - снял или не снял.А так придется блокировки ставить пояле запроса на снятии, в событии снимать - ну вы сами понимаетет прелести ассинхронного программирования. :) Извините что так сумбурно :)

P.S. События жутко удобная вещь для написания всяческого рода индикаторов, тут они выше всяких похвал.

Mikhail Sukhov
Mikhail Sukhov

Напрашивается обертка над ITrader (по аналогии с SyncTrader). Может сами сделаете? У меня сейчас приоритеты другие.

Tauler
Tauler Autor

так GuaranteeCancelOrder вроде решение проблемы.А насчет обертки - буду думать. у меня счас приоритет арбитражер. :) Ежели обертку синхринизирвоаную намучу - дам вам знать - может сгодится в стокшарпе :)

Mikhail Sukhov
Mikhail Sukhov

Насколько я понял, у Вас таких мест уже несколько:

  1. Connected
  2. NewSecurities
  3. NewOrders
  4. NewTrades

Так что Вам по любому такое надо. Иначе код будете загромождать While Wait и т.д.

Tauler
Tauler Autor

Я сейчас отложил воркфлоу немножко,пишу арбитражера по человечески, на событиях. Но обязательно вернусть к этому вопросу.