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


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


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