Не изменяется Balance при совершении сделок.


Не изменяется Balance при совершении сделок.
Atom Reply
2/13/2011


Добрый день.

В пятницу при работе программы столкнулся с ниже описанными проблемами.
Найти аналогичные случае на форуме не получилось. Поэтому создаю новый пост,
который возможно пригодится кому нибудь в будущем. Не особо надеюсь, что
получится понять причину ошибок, так как до пятничного случая все работало
как надо, а следовательно будет трудно добится повторяемости ошибки и ее локализации.
Использую на данный момент S# версии 2.5.1 Возможно в новой версии такой ошибки уже и нет.

Описание ошибки:
1) Создавалсь в S# заявка
2) Заявка выставлялась в Квик
3) Эта заявка в течении 6 секунд полностью удовлетворялась в Квике.
4) По истечению этих 6 секунд состояние заявки в S# было State=Done, но при этом Balance был равен Volume.
Так же странно что время Time завки было равно «0001-01-01 00:00:00.0000000»
5) Помимо этого, есть подозрения, что не по всем заявкам пришло событие OrdersChanged.

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

Если будет новая информация по данной ошибке, напишу в этот пост.

Возможно кто либо сталкивался с такой ситуацией?
Если да, буду рад почитать комментарии.


Tags:


Thanks:




5 Answers
Den

Avatar
Date: 2/25/2011
Reply


Maxim Go to
Добрый день.

В пятницу при работе программы столкнулся с ниже описанными проблемами.
Найти аналогичные случае на форуме не получилось. Поэтому создаю новый пост,
который возможно пригодится кому нибудь в будущем. Не особо надеюсь, что
получится понять причину ошибок, так как до пятничного случая все работало
как надо, а следовательно будет трудно добится повторяемости ошибки и ее локализации.
Использую на данный момент S# версии 2.5.1 Возможно в новой версии такой ошибки уже и нет.

Описание ошибки:
1) Создавалсь в S# заявка
2) Заявка выставлялась в Квик
3) Эта заявка в течении 6 секунд полностью удовлетворялась в Квике.
4) По истечению этих 6 секунд состояние заявки в S# было State=Done, но при этом Balance был равен Volume.
Так же странно что время Time завки было равно «0001-01-01 00:00:00.0000000»
5) Помимо этого, есть подозрения, что не по всем заявкам пришло событие OrdersChanged.

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

Если будет новая информация по данной ошибке, напишу в этот пост.

Возможно кто либо сталкивался с такой ситуацией?
Если да, буду рад почитать комментарии.




У меня на версии S#2.6.2 + Квик 5.17 такой глюк:

выставляю заявку на фьюч с ценой заведомо неисполнимой в данный момент):
Volume = 1,
ExecutionCondition = OrderExecutionConditions.CancelBalance


Затем проверяю условие order.IsFilledEmpty() - возвращает true, но при этом заявка остается висеть в Квике активной,
хотя должна сняться.

Экспортирую только таблицу инструментов и деривативов.

Возможно это связанно с ошибкой, описанной автором темы...
Thanks:

Mikhail Sukhov

Avatar
Date: 2/25/2011
Reply


Den Go to
но при этом заявка остается висеть в Квике активной,
хотя должна сняться.


А почему должна сняться?
Thanks:

Den

Avatar
Date: 2/25/2011
Reply


Mikhail Sukhov Go to
Den Go to
но при этом заявка остается висеть в Квике активной,
хотя должна сняться.


А почему должна сняться?


Ну она же выставлена с условием OrderExecutionConditions.CancelBalance.
Поскольку заявка кидается глубоко в рынок, то она сразу не исполняется => по условию остаток (т.е. весь Volume)
должен сняться. Или я не правильно его понял?

Если я подобную заявку выставляю в Квике руками с уловием "Снять остаток" она сразу снимается...
Thanks:

Den

Avatar
Date: 2/25/2011
Reply


Den Go to
Mikhail Sukhov Go to
Den Go to
но при этом заявка остается висеть в Квике активной,
хотя должна сняться.


А почему должна сняться?


Ну она же выставлена с условием OrderExecutionConditions.CancelBalance.
Поскольку заявка кидается глубоко в рынок, то она сразу не исполняется => по условию остаток (т.е. весь Volume)
должен сняться. Или я не правильно его понял?

Если я подобную заявку выставляю в Квике руками с уловием "Снять остаток" она сразу снимается...


Я разобрался где ошибка в S# путем распечатки TransactionBuilder'a. Почему-то не передается это условие вообще.

ACCOUNT=ххххх; CLIENT_CODE=ххххх; TRANS_ID=38282260; CLASSCODE=SPBFUT; SECCODE=RTS-3.11; QUANTITY=10; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=192025;

Если добавить такой код

this.Trader.FormatTransaction += builder =>
builder.SetExecutionCondition(OrderExecutionConditions.CancelBalance);


то все работает:


ACCOUNT=ххххх; CLIENT_CODE=ххххх; TRANS_ID=37836414; CLASSCODE=SPBFUT; SECCODE=RTS-3.11; QUANTITY=10; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=192140; EXECUTION_CONDITION=KILL_BALANCE;
Thanks:

Mikhail Sukhov

Avatar
Date: 2/25/2011
Reply


Den Go to

Я разобрался где ошибка в S# путем распечатки TransactionBuilder'a. Почему-то не передается это условие вообще.

ACCOUNT=ххххх; CLIENT_CODE=ххххх; TRANS_ID=38282260; CLASSCODE=SPBFUT; SECCODE=RTS-3.11; QUANTITY=10; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=192025;

Если добавить такой код

this.Trader.FormatTransaction += builder =>
builder.SetExecutionCondition(OrderExecutionConditions.CancelBalance);


то все работает:


ACCOUNT=ххххх; CLIENT_CODE=ххххх; TRANS_ID=37836414; CLASSCODE=SPBFUT; SECCODE=RTS-3.11; QUANTITY=10; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=192140; EXECUTION_CONDITION=KILL_BALANCE;


Не поверил, залез в код, смотрю, есть строчка:

Code
if (order.Security.Type != SecurityTypes.Future)
    builder.SetExecutionCondition(order.ExecutionCondition);


Понимаю, что без комментариев тут не обойтись (а раз на условии нет комментария или ссылки, значит это писалось очень давно, сейчас везде сноска). Начал искать, нашел вот это http://www.quik.ru/forum/import/54311/54311/. Видимо, потому и сам так написал... Переделаю.
Thanks: Den


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

loading
clippy