Серьезный трабл с ассинхронным режимом

Серьезный трабл с ассинхронным режимом
Atom
07.07.2010
Tauler


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

Это преамбула. (бага на версии 2.0.1, т.к. с 2.1 у меня известные вам траблы)

Амбула - т.к. режим асинхронный, когда уходит сигнал, успевает пройти запрос на снятие раз 15, прежде чем заявка снимется и поменяет статус на Canceled, у меня как только заявка становится Canceled или Matched срабатывает ветка в коде, кторая проверяет Volume-Blance и на эту разницу выкидывает вторую заявку (если Canceled), либо (если Matched) выкидывают вторую заявку на Volume первой.И у меня складывается ощущения, что в какой то момент сбивается или нарушается (не знаю как скзаать) процесс обновления полей в экземпляре заявки. Как эт овыглядит (в прилагаемом скрине, я далее для удобства буду давать только послдение 4 цифры номера заявки)

Сработал сигнал, выставилась заявка 6984, сигнал ушел, я отправляю trader.CancelOrder(order) до тех пор пока order.State != Canceled. как только Canceled, делаю order = null и дальше слушать сигнал.В логах так и написано - заявка стала Canceled, Balance = 2

Сигнал срабатывает второй раз, выставялю снвоа заявку order = new Order () .... (перменная та же самая), trader.RegisterOrder(order). Высталяется заявка (номер у нее 8248) Что происходит далее - на бирже заявка исполняется, но сигнал уходит. Робот честно пытается ее отменить до тех пор, пока статус у нее Active. как только статус заявки меняется на Исполнена(в квике), робот видит изменение статуса, но! в логах пишет мне что заявка Canceled, и Balance у нее 2. (то есть данные из заявки 6984). ну и соответсвенно не выкидаывает правую часть. и другая бага (наверно изза тгого, что уходит 10-15 запросов на снятие заявки до тех пора пока она станет Canceled - были случаи ,когда аявки часто тсавилис снимались, что например идут заявки 1,2,3,4,5,6 , они выставляются- снимают, но по логам заявка под номером например 4 вообще не снималась.То есть робот ее не снимал.Может быть это изза тго, что между первым запросом на снятие и реальным изменением ее статуса на Canceled на сервер уходит штук 15 транзакций на снятие?

скрин списка заявок - файл 07.07.png


Теги:


Спасибо:


<< < 2 3 4 
Tauler

Фотография
Дата: 08.07.2010
Ответить


В событии вы выбрасываете новый экземпляр заявки , или все время один и тот же? кторый сформировался на NewOrder?

On 8 июл, 13:31, Mikhail Sukhov <msou...@gmail.com> wrote:

Спасибо:

Mikhail Sukhov

Фотография
Дата: 08.07.2010
Ответить


Всегда один и тот же.

On 8 июл, 17:19, Tauler <vladimir_igo...@mail.ru> wrote:

Спасибо:

Tauler

Фотография
Дата: 08.07.2010
Ответить


Интерфес IClonable реализован?

On 8 июл, 17:35, Mikhail Sukhov <msou...@gmail.com> wrote:

Спасибо:

Mikhail Sukhov

Фотография
Дата: 08.07.2010
Ответить


Это для ReRegister. В перегруженом методе, где передается не новая заявка, а только новые цена и объем, сначала клонируется текущая заявка, а затем ей заполняются новые параметры.

On 8 июл, 17:44, Tauler <vladimir_igo...@mail.ru> wrote:

Спасибо:
<< < 2 3 4 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy