Ошибка: котирование порождает несколько выполненных заявок


Ошибка: котирование порождает несколько выполненных заявок
Atom
11/10/2011


Проблема проявляется даже стандартном примере SampleHistoryTesting. Для обнаружения в OnProcess достаточно добавить
Code
if (Math.Abs(PositionManager.Position) > Volume)
  throw new Exception("Неверное состояние - поза превышает рабочий объем.");

и после получения эксепшена посмотреть Trader.Orders - последние две заявки будут исполненными, а перед ними будет несколько отмененных с примерно тем же временем.

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

Tags:


Thanks:


1 2 3  > >>
Alexander

Avatar
Date: 11/10/2011
Reply


1) Какая версия S#?
2) PositionManager.Position может обновиться чуть позднее
3) Добавьте логгер для стратегии (FileLogListener, к примеру) и скиньте сюда.
Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Code
10:45:00.000 |            | MQS             | Стратегия запущена.
10:45:06.890 |            | MQS             | Регистрация новой заявки на Sell с ценой 115795 и объемом 1.
10:45:06.890 |            | MQS             | Заявка 2789119 на Sell отправлена с ценой 115795 объемом 1.
10:45:10.627 | Warning    | MQS             | Заявка 2789119 не имеет состояния.
... 9 повторов удалено ...
10:46:08.830 | Warning    | MQS             | Заявка 2789119 не имеет состояния.
10:46:11.110 |            | MQS             | Цена текущей 115795 и лучшей 116000.
10:46:11.110 |            | MQS             | Лучший бид 115770 и лучший аск 116000.
10:46:11.110 |            | MQS             | Котирование заявки 2789119 на Sell с ценой 115795 объемом 1.
10:46:11.110 |            | MQS             | Отмена заявки 2789119.
10:46:13.860 |            | MQS             | Отмена заявки 2789119 прошло успешно.
10:46:13.860 |            | MQS             | Регистрация новой заявки на Sell с ценой 116000 и объемом 1.
10:46:13.860 |            | MQS             | Заявка 2789120 на Sell отправлена с ценой 116000 объемом 1.
10:46:15.097 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
... 96 повторов удалено ...
11:10:40.650 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
11:10:40.660 |            | SS              | Новая Sell сделка 1 по цене 116500 на 1 заявки 2789119.
11:10:53.837 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
... 22 повтора удалено ...
11:12:12.430 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
11:12:12.440 |            | MQS             | Новая Sell сделка 1 по цене 116500 на 1 заявки 2789119.
11:12:30.447 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
... 23 повтора удалено ...
11:14:59.027 | Warning    | MQS             | Заявка 2789120 не имеет состояния.
11:15:00.243 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:15:00.243 |            | MQS             | Стратегия останавливается.
11:15:00.243 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:15:00.243 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:15:00.243 |            | MQS             | Стратегия остановлена.
Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Для сравнения, тот же пример из версии 3.2.1
Code
SS 02.06.2009 10:45:00.000 [MQS] Стратегия запущена.
SS 02.06.2009 10:45:06.890 [MQS] Регистрация новой заявки на Sell с ценой 115795 и объемом 1.
SS 02.06.2009 10:45:06.890 [MQS] Заявка 1385140 на Sell отправлена с ценой 115795 объемом 1.
SS 02.06.2009 10:45:06.900 [MQS] Новая Limit заявка 1385140 на Sell с номером 1.
SS 02.06.2009 10:45:06.900 Новая Limit заявка 1385140 на Sell с номером 1.
SS 02.06.2009 10:45:26.423 [MQS] Цена текущей 115795 и лучшей 115800.
SS 02.06.2009 10:45:26.423 [MQS] Лучший бид 115770 и лучший аск 115800.
SS 02.06.2009 10:45:26.423 [MQS] Котирование заявки 1385140 на Sell с ценой 115795 объемом 1.
SS 02.06.2009 10:45:26.423 [MQS] Отмена заявки 1385140.
SS 02.06.2009 10:45:26.433 [MQS] Отмена заявки 1385140 прошло успешно.
SS 02.06.2009 10:45:26.433 [MQS] Регистрация новой заявки на Sell с ценой 115800 и объемом 1.
SS 02.06.2009 10:45:26.433 [MQS] Заявка 1385141 на Sell отправлена с ценой 115800 объемом 1.
SS 02.06.2009 10:45:32.220 [MQS] Новая Limit заявка 1385141 на Sell с номером 2.
SS 02.06.2009 10:45:32.220 Новая Limit заявка 1385141 на Sell с номером 2.
SS 02.06.2009 10:45:36.403 Новая Sell сделка 1 на 1 заявки 1385141.
SS 02.06.2009 10:45:36.403 [MQS] Новая Sell сделка 1 на 1 заявки 1385141.
SS 02.06.2009 10:45:36.403 [MQS] Позиция изменилась на -1.
SS 02.06.2009 10:45:36.403 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
SS 02.06.2009 10:45:36.403 [MQS] Стратегия останавливается.
SS 02.06.2009 10:45:36.403 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
SS 02.06.2009 10:45:36.403 [MQS] Заканчиваем котирование с неисполненным объемом равный 0.
SS 02.06.2009 10:45:36.403 [MQS] Стратегия остановлена.
Thanks:

Alexander

Avatar
Date: 11/11/2011
Reply


Это немного не тот лог, который я ожидал увидеть.
у нас в класс Strategy добавлен дополнительный логгер, его вывести необходимо.

Который по событию Log срабатывает.

И да, на вопрос о номере версии ответ я не вижу :)
Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Да, версия вчерашняя, ревизия 11491.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/11/2011
Reply


Camill Go to
Ошибка плавающая, возникает иногда на первой же заявке, а иногда несколько первых заявок проходят нормально.


Посмотрели и код. Увидели следующие. Когда пример разрабатывался, дочерние стратегии блокировали исполнение родительской (OnProcess не вызывался). Теперь он вызывается не зависимо от наличия дочерних стратегий (в данном случае котирования). Я думаю, тут ситуация такая, что котирование в один момент времени создается в нескольких экземплярах.

Еще такой момент. В последней версии S# матчинг происходит в отдельном потоке. Это тоже определенный фактор для остановки стратегии котирования.

Вывод - надо пример переделывать под событийную модель. Попробуете?
Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Alexander Mukhanchikov Go to

у нас в класс Strategy добавлен дополнительный логгер, его вывести необходимо.

Который по событию Log срабатывает.


Это именно то, что выдается по событию Strategy.Log основной стратегии.


Вот пример того, что выдает непосредственно стратегия котирования (обратите внимание на два сообщения "Новая Sell сделка"):
Code
11:20:00.000 |            | MQS             | Стратегия запущена.
11:20:15.147 |            | MQS             | Регистрация новой заявки на Sell с ценой 115795 и объемом 1.
11:20:15.147 |            | MQS             | Заявка 5239420 на Sell отправлена с ценой 115795 объемом 1.
11:20:32.567 | Warning    | MQS             | Заявка 5239420 не имеет состояния.
11:20:35.990 |            | MQS             | Цена текущей 115795 и лучшей 115570.
11:20:35.990 |            | MQS             | Лучший бид 115505 и лучший аск 115570.
11:20:35.990 |            | MQS             | Котирование заявки 5239420 на Sell с ценой 115795 объемом 1.
11:20:35.990 |            | MQS             | Отмена заявки 5239420.
11:20:37.160 |            | MQS             | Отмена заявки 5239420 прошло успешно.
11:20:37.160 |            | MQS             | Регистрация новой заявки на Sell с ценой 115570 и объемом 1.
11:20:37.160 |            | MQS             | Заявка 5239421 на Sell отправлена с ценой 115570 объемом 1.
11:20:39.160 | Warning    | MQS             | Заявка 5239421 не имеет состояния.
11:21:00.490 |            | MQS             | Цена текущей 115570 и лучшей 115620.
11:21:00.490 |            | MQS             | Лучший бид 115560 и лучший аск 115620.
11:21:00.490 |            | MQS             | Котирование заявки 5239421 на Sell с ценой 115570 объемом 1.
11:21:00.490 |            | MQS             | Отмена заявки 5239421.
11:21:00.500 |            | MQS             | Отмена заявки 5239421 прошло успешно.
11:21:20.583 |            | MQS             | Регистрация новой заявки на Sell с ценой 115620 и объемом 1.
11:21:20.583 |            | MQS             | Заявка 5239422 на Sell отправлена с ценой 115620 объемом 1.
11:21:20.583 |            | MQS             | Котируемая заявка 5239422 исполнилась.
11:21:20.583 |            | MQS             | Регистрация новой заявки на Sell с ценой 115800 и объемом 1.
11:21:20.583 |            | MQS             | Заявка 5239423 на Sell отправлена с ценой 115800 объемом 1.
11:21:22.397 | Warning    | MQS             | Заявка 5239423 не имеет состояния.
11:21:22.397 |            | MQS             | Новая Sell сделка 12 по цене 115620 на 1 заявки 5239422.
11:21:28.007 | Warning    | MQS             | Заявка 5239423 не имеет состояния.
11:21:28.007 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:21:28.007 |            | MQS             | Позиция изменилась на -1.
11:21:28.007 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:21:28.007 |            | MQS             | Стратегия останавливается.
11:21:28.007 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
11:21:28.007 |            | MQS             | Стратегия остановлена.
11:21:28.007 |            | MQS             | Новая Sell сделка 13 по цене 115800 на 1 заявки 5239423.

Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Mikhail Sukhov Go to
Вывод - надо пример переделывать под событийную модель. Попробуете?


У меня свой проект, в котором используется событийная модель, там то же самое.
Сейчас ее лог сделаю.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/11/2011
Reply


Camill Go to
Mikhail Sukhov Go to
Вывод - надо пример переделывать под событийную модель. Попробуете?


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


Вы уверены, что параллельно не запущены несколько котирований? Меняйте им имена, чтобы их можно было различать.
Thanks:

Camill

Avatar
Date: 11/11/2011
Reply


Mikhail Sukhov Go to
Вы уверены, что параллельно не запущены несколько котирований?

Специально цеплял логирование на конкретную стратегию котирования - результат чуть выше.
Так что уверен.
Thanks:
1 2 3  > >>

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

loading
clippy