Изменение Order.Balance после того, как заявка получила OrderStates == Done

Изменение Order.Balance после того, как заявка получила OrderStates == Done
Atom
1/24/2011
Maxim


Михаил, добрый день.
Обращаюсь по привычке к Вам, так как не в курсе, поддерживает ли S# еще кто либо.
Если я ошибаюсь, поправьте меня.

Михаил, прошу помочь разобраться в следующем.
Ситуация:
1) Проверяю состояние заявки.
2) Если состояние заявки Active, отменяю асинхронно заявку.
3) Дожидаюсь события OrdersChanged, когда заявка станет Done.
4) Проверяю Balance, он равен Volume.
5) Проверяю в Квике состояние заявки, заявка оказывается полностью удовлетворена.
То-есть Balance должен был быть равен нулю в пункте 4.

Если между пунктом 3 и 4 сделать пауза в 1 секунду, то Balance будет равен нулю.


Из этого я могу предположить, что Balance может изменится после того, как заявка приобрела статус Done.
Хотя в мануале написано:
«Done - заявка более не активна на бирже, и по ней не может прийти ни одно изменение.»

Так ли это? Сталкивались ли Вы с этим?

Tags:


Thanks:


< 1 2 3 4  > >>
Mikhail Sukhov

Avatar
Date: 2/10/2011
Reply


Maxim
Михаил, добрый день.

Рассматривали ли Вы более подробно данную проблему?
Есть ли какой либо прогресс?


Да, я нашел закономерность. Выложу 3.0.1 в конце недели.
Thanks:

Maxim

Avatar
Date: 4/19/2011
Reply


Михаил, вечер добрый.

К сожалению сообщаю, что данная ошибка не устранена окончательно.
В процессе торгов появляются случаи, когда заявка имеет статус Done,
но значение разницы Volume - Balance больше нуля, но меньше,
чем реальный объем сделок прошедших в Квике по этой заявке.

С данной ситуацией я уже столкнулся в третий раз.

К сожалению не удается произвести данную ошибку на тестовом Квике.
Возможно связано с тем, что поведение тестового Квика и реального отличаются.


Прошу Вас обратить внимание на данную ошибку и еще раз проанализировать Ваш код.
Немного удручает, что программа продает или покупает не то количество бумаг, которое необходимо.
Со своей стороны постараюсь добиться повторяемости ошибки в тестовом Квике.
Thanks:

alexhat

Avatar
Date: 4/20/2011
Reply


Добрый день, Михаил.
Я обнаружил при работе (в боевом режиме с боевым квиком) аналогичную проблему. Зарегистрировался и нашел этот топик.

Ситуация такая (используется версия библиотеки 2.6.2 и асинхронный режим):
1. Зарегистрирован ордер на продажу (SBER-RTSST)
2. приходит сообщение об изменении ордера с новым статусом OrderStates.Done, при этом Balance = Volume
3. Спустя некоторый промежуток времени приходит сообщение о новой сделке по этому ордеру
4. Еще через некоторое время - сообщение об изменении ордера, где уже Balance = 0

В реальности алгоритмом выставляются подряд 2 ордера (по 2 разным инстументам) и при этом по второму ордеру этой "ошибки" нет - уже на втором шаге Balance = 0, но при этом после выставления заявки не приходит начальное сообщение NewOrders (сразу OrdersChanged - хотя здесь я не до конца уверен, м.б. это какая-то ошибка в моем коде).

Проблема очень критична, поскольку между пунктами 2 и 3 алгоритм успевает учесть этот ордер, т.к. уже не ждет по нему сделок.
Нужен какой-то work-around.


С уважением, Алексей.
Thanks:

Maxim

Avatar
Date: 4/20/2011
Reply


alexhat
используется версия библиотеки 2.6.2


В 3.0.1 частично эта проблема была решена.
Рекомендую обновить библиотеку, хоть проблема и не решена окончательно.
Thanks:

alexhat

Avatar
Date: 4/20/2011
Reply


Боюсь обновлятся, т.к. объем работы для перетестирования всего очень большой. Если других шансов нет, то конечно придется.

Но, как вы пишите, проблема в не была окончательно решена, поэтому я решил узнать, есть ли возможности обхода.
К.м.к, если есть возможность как-то получить точную информацию о том есть ли по ордеру в статусе Done еще не пришедшие сделки (или, например, окончательное общее число сделок на бирже) - то я смогу скорректировать приходящий статус ордера в своем алгоритме, анализируя количество еще непришедших сделок.
Thanks:

Mikhail Sukhov

Avatar
Date: 4/21/2011
Reply


Давайте проинспектируем проблему:

1. QuikTrader.IsAyncMode?
2. Такие заявки снимаются, перерегистрируются или только регистрируются?
3. Логи NewOrders OrdersChanged PreProcessDdeData.
Thanks:

alexhat

Avatar
Date: 4/21/2011
Reply


Добрый день, Михаил.

1. QuikTrader.IsAyncMode = true
2. Только регистрируются
3. Я обновился с 2.6.2 до 3.0.19 и сейчас ошибка не возникает (тут правда есть момент, что ошибка происходила пока я был в отпуске на весьма слабой машине у меня дома (т.е. в виндовой виртуальной машине, под VirtualBox), сейчас я на работе и здесь на родном виндовом сервере с производительностью проблем нет).
Если я снова увижу эту проблему на своем сервере, какой код вставить в обработчики сообщений NewOrders OrdersChanged PreProcessDdeData для логирования?
Thanks:

Mikhail Sukhov

Avatar
Date: 4/21/2011
Reply


alexhat
Если я снова увижу эту проблему на своем сервере, какой код вставить в обработчики сообщений NewOrders OrdersChanged PreProcessDdeData для логирования?


Чтобы можно было потом логи понять.
Thanks:

alexhat

Avatar
Date: 4/21/2011
Reply


Mikhail Sukhov
alexhat
Если я снова увижу эту проблему на своем сервере, какой код вставить в обработчики сообщений NewOrders OrdersChanged PreProcessDdeData для логирования?


Чтобы можно было потом логи понять.


Я новичек в этой теме (stock#), прошу простить. поскольку я не знаю что именно в этих логах нужно выводить, можно дать конкретный пример кода?
Thanks:

Mikhail Sukhov

Avatar
Date: 4/21/2011
Reply


alexhat
Я новичек в этой теме (stock#), прошу простить. поскольку я не знаю что именно в этих логах нужно выводить, можно дать конкретный пример кода?


Номер заявки, транзакции, объем, баланс, состояние... Может еще что-то попутно понадобиться, так сложно сказать. Вы начните, там и видно будет.
Thanks:
< 1 2 3 4  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy