Систематически не происходит обновление статуса заявки

Систематически не происходит обновление статуса заявки
Atom
8/23/2011
Ortn


Столкнулся с проблемой, когда заявка в stocksharp висит со статусом None, хотя реально она уже была исполнена (видно в SmartX), происходит не с каждой заявкой, но с очень многими. Как можно отследить причину подобного явления? Версия SmartCom последняя (пробовал переустановить - не помогло). Версия S# 3.2.5


Tags:


Thanks:


1 2  >
Ortn

Avatar
Date: 8/23/2011
Reply


Логика работы программы такая

  1. Создаю SmartTrader
  2. Подписываюсь на получение сделок (NewTrades) и делаю connect
  3. Когда приходит новая сделка в той же нитке создаю Order (если он не был создан или старый Order отработал), или если есть активный ордер я его двигаю. Двигаю я его следующим образом: а) Беру старый Order (в коде называется order) б) Вызываю order = _trader.ReRegisterOrder(order, updatedprice, order.Balance); в) При этом старый order я нигде не сохраняю, а пишу поверх новый.

Т.к. я торгую на ФОРТС и количество контрактов в Order не меняется, то должен сработать moveorder (который поддерживается на бирже) верно? У меня такое ощущение что именно при перемещении Order происходит такая проблема. Завтра попробую проверить, но если то, как я это сейчас делаю в принципе не правильно, скажите мне об этом. Благодарю за потраченное время!

p.s. У подвисшей заявки есть в extensioninfo smartid, по которому я вижу, что заявка была уже давно исполнена, но при этом status == None, как так?

Thanks:

Mikhail Sukhov

Avatar
Date: 8/24/2011
Reply


Ortn: Столкнулся с проблемой, когда заявка в stocksharp висит со статусом None, хотя реально она уже была исполнена (видно в SmartX), происходит не с каждой заявкой, но с очень многими. Как можно отследить причину подобного явления? Версия SmartCom последняя (пробовал переустановить - не помогло). Версия S# 3.2.5

http://stocksharp.com/doc/html/535227b6-0338-44c9-9a9b-9baf9bab10b4.htm

Thanks: Ortn

Mikhail Sukhov

Avatar
Date: 8/24/2011
Reply


Ortn: в) При этом старый order я нигде не сохраняю, а пишу поверх новый.

Может быть еще и в этом причина, но лучше отследите события через SmartComWrapper

Thanks:

Ortn

Avatar
Date: 8/24/2011
Reply


Mikhail Sukhov:

Ortn: в) При этом старый order я нигде не сохраняю, а пишу поверх новый.

Может быть еще и в этом причина, но лучше отследите события через SmartComWrapper

Спасибо, попробую и отпишусь о результатах.

Thanks:

Ortn

Avatar
Date: 8/24/2011
Reply


В общем, ситуация такая:

У моего Order (который я сохраняю) следующие поля:

Balance 1 Latency {00:00:00} Id 0 State None

В ExtensionInfo одна запись:

"OrderSmartId" "711872**" (номер заявки)

НО! В самом trader (если смотреть в Order.trader) в массиве orders значится следующий Order

Balance 0 Latency {00:00:00.1796921} State Done Status Accepted

В ExtensionInfo следующая запись:

"OrderSmartId" "711872**" (номер тот же)

Как такое могло произойти?

Thanks:

Alexander

Avatar
Date: 8/24/2011
Reply


Так Order исполнился, поля изменились...

Thanks:

Ortn

Avatar
Date: 8/24/2011
Reply


Alexander: Так Order исполнился, поля изменились...

Вы не поняли. У меня в один момент времени есть два ордера с одним id и различными статусами(!), при этом то который хранится в trader правильный (тк показывает, что заявка исполнена и это действительно так) а у другого статус неверный.

p.s. Прикрутил апдейт подвисших заявок на основе orders в trader, посмотрим может так заработает

Thanks:

Alexander

Avatar
Date: 8/24/2011
Reply


Ortn:

Alexander: Так Order исполнился, поля изменились...

Вы не поняли. У меня в один момент времени есть два ордера с одним id и различными статусами(!), при этом то который хранится в trader правильный (тк показывает, что заявка исполнена и это действительно так) а у другого статус неверный.

Я понял. Очевидно значит что вы не так сохраняете Order. Напишите как сохраняете, как копируете.

Thanks: Ortn

Ortn

Avatar
Date: 8/24/2011
Reply


Alexander:

Ortn:

Alexander: Так Order исполнился, поля изменились...

Вы не поняли. У меня в один момент времени есть два ордера с одним id и различными статусами(!), при этом то который хранится в trader правильный (тк показывает, что заявка исполнена и это действительно так) а у другого статус неверный.

Я понял. Очевидно значит что вы не так сохраняете Order. Напишите как сохраняете, как копируете.

Я уже выше написал, но могу написать максимально подробно, если это поможет.

У меня создается только одна заявка (пока тестирую автоматическое оптимальное исполнение больших заявок).

Т.е. в классе робота есть одно поле

Order activeorder;

Создается она так:


activeorder = new Order
                {
                    Type = OrderTypes.Limit,
                    Portfolio = _portfolio,
                    Price = sell,
                    Security = _security,
                    Volume = _size,
                    Direction = OrderDirections.Sell,
                };
_trader.RegisterOrder(activeorder);

Затем когда у меня в _trader происходит событие NewTrades и я решаю что заявку надо передвинуть я делаю следующее:


// блокирую нитку
mut.WaitOne();
if ((activeOrder.State == OrderStates.Active || activeOrder.State == OrderStates.None) && (activeorder.Balance > 0))
    activeorder = _trader.ReRegisterOrder(activeorder , sell, activeorder .Balance);
mut.ReleaseMutex();

Так вот в некоторых случаях activeorder висит со статусом None и Balance = 1 хотя заявка уже была исполнена. И это происходит не всегда (примерно в 30% случаях)

зы по OrdersChanged приходит обновление Balance == 0 по заявке но в той заявке, которая сохраняется у меня (activeorder) ничего не меняется (в некоторых случаях)

Thanks:

Mikhail Sukhov

Avatar
Date: 8/24/2011
Reply


Ortn: Так вот в некоторых случаях activeorder висит со статусом None и Balance = 1 хотя заявка уже была исполнена. И это происходит не всегда (примерно в 30% случаях)

А что SmartComWrapper говорит в этом случае? Он данные какие-то шлет? Вы должны четко понимать, что если СмартКом ничего не присылает, значит S# и не будет ничего обновлять.

И да, перезапись старого ордера плохой стиль кодирования. Ведет к багам. Не удивлюсь, если в этом причина и вы смотрите не ту заявку.

Thanks:
1 2  >

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

loading
clippy