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

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


Добрый день.

В пятницу при работе программы столкнулся с ниже описанными проблемами. Найти аналогичные случае на форуме не получилось. Поэтому создаю новый пост, который возможно пригодится кому нибудь в будущем. Не особо надеюсь, что получится понять причину ошибок, так как до пятничного случая все работало как надо, а следовательно будет трудно добится повторяемости ошибки и ее локализации. Использую на данный момент 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.

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

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

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


Теги:


Спасибо:


Den

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


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

В пятницу при работе программы столкнулся с ниже описанными проблемами. Найти аналогичные случае на форуме не получилось. Поэтому создаю новый пост, который возможно пригодится кому нибудь в будущем. Не особо надеюсь, что получится понять причину ошибок, так как до пятничного случая все работало как надо, а следовательно будет трудно добится повторяемости ошибки и ее локализации. Использую на данный момент 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, но при этом заявка остается висеть в Квике активной, хотя должна сняться.

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

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

Спасибо:

Mikhail Sukhov

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


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

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

Спасибо:

Den

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


Mikhail Sukhov:

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

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

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

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

Спасибо:

Den

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


Den:

Mikhail Sukhov:

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

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

Ну она же выставлена с условием 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;

Спасибо:

Mikhail Sukhov

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


Den: Я разобрался где ошибка в 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;

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

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

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

Спасибо: Den


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

loading
clippy