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


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


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

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

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

Теги:


Спасибо:


1 2 3  > >>
Alexander

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


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

Camill

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


Код
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             | Стратегия остановлена.
Спасибо:

Camill

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


Для сравнения, тот же пример из версии 3.2.1
Код
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] Стратегия остановлена.
Спасибо:

Alexander

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


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

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

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

Camill

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


Да, версия вчерашняя, ревизия 11491.
Спасибо:

Mikhail Sukhov

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


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


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

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

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

Camill

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


Alexander Mukhanchikov Перейти

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

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


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


Вот пример того, что выдает непосредственно стратегия котирования (обратите внимание на два сообщения "Новая Sell сделка"):
Код
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.

Спасибо:

Camill

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


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


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

Mikhail Sukhov

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


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


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


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

Camill

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


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

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

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

loading
clippy