Несовпадение статуса заявок в квике и таблице Orders


Несовпадение статуса заявок в квике и таблице Orders
Atom
30.12.2010


Заявку видно в стакане как активную, хотя в таблице Orders у неё State Done , Status NotDone

Теги:


Спасибо:


< 1 2 
Lafert

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


Ошибка происходит, если снять заявку(возможно еше не зарегистрированную).
После этого приходит событие OrderChanged и при нем ордер с указанными state и status.

На тестовых торгах на мамбе такая ошибка не возникла (ошибка возникла на украинской бирже на реальных торгах).

Ошибка возникает не каждый раз (раз в 5 минут при постоянном выставлении и снятиии заявок)
Спасибо:

Lafert

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


Номера транзакций уникальны
Спасибо:

MCTuTeJ|19951995

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


кстати сталкивался с похожей проблемой - при частом переставлении заявок иногда заявка не имеет статуса, но отправляется и в квике видеа.
Спасибо:

Lafert

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


Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?
Спасибо:

Lafert

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


На тестовой МАМБе завесить заявки не удалось. Сначала с задержкой накапливаются, затем снимаются. Я бы обратился на УкрБиржу, но не вижу, что возвращает QuikApi.
Спасибо:

Mikhail Sukhov

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


Lafert Перейти
Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?


Ок, протестирую. А какой режим был у QuikTrader.IsAsyncMode?
Спасибо:

Lafert

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


true
Спасибо:

Lafert

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


Пока решили эту проблему вычиткой состояний из CustomTable
Спасибо:

Mikhail Sukhov

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


Lafert Перейти
Сделал простейший опыт.
несколько раз вцикле выставляю заявку и тут же снимаю. Через некоторое время проверяю статус у тех заявок, которые остались висеть в таблице заявок.
State=Done, Status=NotValidated, isMatches()=false, isCanceled()=true;
Заявки в таблице видны с состоянием "Активна". Как определить, что эта заявка не удалилась?


Сделал тест (демо Квик 5.18.0.239):

Код
var qt = new QuikTrader { IsAsyncMode = true };
qt.Connect();

var sec = new Security
{
    Code = "RIH1",
    Class = "SPBFUT",
};

var pf = new Portfolio
{
    Name = "SPBFUT00538",
};

for (var i = 0; i < count; i++)
{
    var order = new Order
    {
        Volume = 1,
        Portfolio = pf,
        Security = sec,
        Price = 185000,
    };

    qt.RegisterOrder(order);
    qt.CancelOrder(order);

    orderList.Add(order);
}

Console.ReadLine();


Если count равен 10, то после ожидания в Console.ReadLine все заявки в orderList имеют State == Active. Тоесть, все заявки на снятие не прошли, что является стандартным поведением в асинхронном режиме.

Если count == 100, то первые 12 заявок Active, остальные Failed.

Оба варианта соответствуют данным в Квик. Прогоните такой же тест у себя. Заодно, проверьте, может у нас версии Квик чем-то отличаются.
Спасибо:
< 1 2 

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

loading
clippy