finsight / QUIKSharp

QUIK# (QUIK Sharp) is the QUIK Lua interface ported to .NET.
Other
230 stars 134 forks source link

Дубли в ответе при размещении или отмене заявки #346

Open ildarskii opened 1 year ago

ildarskii commented 1 year ago

Уважаемые знатоки, подскажите, пожалуйста, что нужно модифицировать в коде Q#, чтобы избежать двойных ответов при запросе размещения заявки или отмены?

Запрос на размещение заявки делаю с помощью Orders.CreateOrder (order) после этого приходит два ответа в событие OnOrder (order) со следующими значениями полей 1) order.TransId=0, order.State=Active 2) order.TransId=12193041, order.State=Active

При запросе отмены заявки, которую делаю с помощью Orders.KillOrder (order) после этого приходит два ответа в событие OnOrder (order) со следующими значениями полей 1) order.State=Active 2) order.State=Canceled

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

Как сделать так, чтобы не приходили ответы из пунктов 1 в примерах выше?

В качестве дилетантского предположения, кажется, что нужно в функции QuikService.Send(request, timeout) удалить строку EnvelopeQueue.Add(request); Но боюсь, что могу в корне сломать логику работы Q#, поэтому нужен совет.

Pr0phet1c commented 1 year ago

Уважаемые знатоки, подскажите, пожалуйста, что нужно модифицировать в коде Q#, чтобы избежать двойных ответов при запросе размещения заявки или отмены?

Скорее всего никак. Несколько колбеков на одну транзакцию это не результат работы кода Q#, а фича Квика, о которой много лет назад разработчики говорили. Q# лишь транслирует Вам то, что выдал Квик.