Запустил исторический тест. Решил по логам проверить, все ли в порядке.
Обнаружил, следующую проблему: лимитированная заявка на покупку выставляется по цене 141850, а исполняется по 141770. При этом я вижу, что моя стратегия не обновляла заявку.
Вот выдержка из лога:
2012.10.30 10:10:32.851| |MQS_RIZ2@RTS_test account|Стратегия запущена. [0,324]. Позиция при старте 0.
2012.10.30 10:10:32.851| |EmulationTrader|RegisterOrder: 58453309/0 Покупка Цена=141850 Объем=1 Сост=None Бал=1
2012.10.30 10:10:32.851| |EmulationTrader|New order: 58453309/324 Покупка Цена=141850 Объем=1 Сост=Active Бал=1
2012.10.30 10:10:33.128| |EmulationTrader|Order changed: 58453309/324 Покупка Цена=141850 Объем=1 Сост=Done Бал=0
2012.10.30 10:10:33.128| |MVWAPS_RIZ2@RTS_test account|Новая позиция: test account-RIZ2@RTS=0.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Новая позиция: test account-RIZ2@RTS=1.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Заявка 58453309 больше не активна.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Стратегия останавливается. [0,324]. Позиция при старте 1.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Ожидание снятия всех активных заявок.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Стратегия остановлена. [0,324]. Позиция при старте 1.
2012.10.30 10:10:33.128| |MVWAPS_RIZ2@RTS_test account|Новая Buy сделка 324 по цене 141770 на 1 заявки 58453309.
2012.10.30 10:10:33.128| |MQS_RIZ2@RTS_test account|Новая Buy сделка 324 по цене 141770 на 1 заявки 58453309.
2012.10.30 10:10:33.561| |MQS_RIZ2@RTS_test account|Стратегия запущена. [0,325]. Позиция при старте 0.
MQS - это не стандартная стратегия котирования S#, а моя собственная, похожая. Выставляется заявка примерно так:
ActiveOrder = this.CreateOrder(Direction, StartPrice, Volume);
ActiveOrder.ShrinkPrice();
ActiveOrder.Security = Security;
while (!Trader.IsConnected) Trader.Reconnect();
base.RegisterOrder(ActiveOrder);
ActiveOrder.WhenMatched()
.Do(Finish)
.Apply(this);
Цена закрытия (141770) ниже обоих границ спреда и цен последних сделок:
MarketTime;DepthTime;BestBid;BestAsk;LastTradeTime;LastTrade
30.10.2012 10:10:31,097;30.10.2012 10:10:31,079;141850;141860;30.10.2012 10:10:30,930;141850
30.10.2012 10:10:31,714;30.10.2012 10:10:31,641;141850;141860;30.10.2012 10:10:31,097;141850
30.10.2012 10:10:31,754;30.10.2012 10:10:31,715;141850;141860;30.10.2012 10:10:31,714;141850
30.10.2012 10:10:31,839;30.10.2012 10:10:31,761;141860;141870;30.10.2012 10:10:31,754;141860
30.10.2012 10:10:31,849;30.10.2012 10:10:31,761;141860;141870;30.10.2012 10:10:31,839;141860
30.10.2012 10:10:31,863;30.10.2012 10:10:31,761;141860;141870;30.10.2012 10:10:31,849;141860
30.10.2012 10:10:32,142;30.10.2012 10:10:32,077;141850;141870;30.10.2012 10:10:31,863;141860
30.10.2012 10:10:32,631;30.10.2012 10:10:32,532;141860;141870;30.10.2012 10:10:32,142;141870
30.10.2012 10:10:32,658;30.10.2012 10:10:32,532;141860;141870;30.10.2012 10:10:32,631;141870
30.10.2012 10:10:32,851;30.10.2012 10:10:32,810;141860;141870;30.10.2012 10:10:32,658;141870
30.10.2012 10:10:33,561;30.10.2012 10:10:33,480;141860;141870;30.10.2012 10:10:32,851;141870
30.10.2012 10:10:33,621;30.10.2012 10:10:33,566;141860;141870;30.10.2012 10:10:33,561;141870
30.10.2012 10:10:33,720;30.10.2012 10:10:33,668;141870;141880;30.10.2012 10:10:33,621;141870
30.10.2012 10:10:33,967;30.10.2012 10:10:33,937;141860;141870;30.10.2012 10:10:33,720;141870
30.10.2012 10:10:34,780;30.10.2012 10:10:34,741;141870;141880;30.10.2012 10:10:33,967;141870
Вот выдержка из report.xls:
Номер сделки Номер транзакции Время Цена Цена заявки Объем Направление Номер заявки Проскальзывание Проскальзывание (котирование) Комментарий Прибыль в рублях Прибыль в пунктах Прибыль в рублях (суммарная) Прибыль в пунктах (суммарная) Позиция Номер заявки Номер транзакции Направление Зарегистрирована Изменена Продолжительность Цена Цена (усредн.) Статус Состояние Баланс Объем Тип Проскальзывание Задержка регистрации Задержка отмены Комментарий
324 58453309 30.10.2012 10:10:33 141770 141850 1 Покупка 324 0 -80 MQS_RIZ2@RTS_test account 55,8 90 2653,6 4280 0 324 58453309 Покупка 30.10.2012 10:10:32 30.10.2012 10:10:33 00:00:00 141850 141770 Не активна Исполнена 0 1 Лимитная -80 00:00:00 00:00:00 MQS_RIZ2@RTS_test account
Версия из транка (20514).
Комментарии (14)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Инструмент, дата в истории, код воспроизводящий проблему.
RIZ2@RTS
Сделка №4178 из report.xls Дата сделки: 30.10.2012 10:10:35 Цена сделки: 142120 Цена заявки: 141870 Направление: Продажа
Цена сделки выглядит очень странной, на фоне сохраненных сделок:
И стаканов:
Для воспроизведения достаточно вот этих двух файлов:
Program.cs
DemoStrategy.cs
Time;Code;Price;Volume 30.10.2012 10:10:34,780;RIZ2@RTS;141870;5 30.10.2012 10:10:34,840;RIZ2@RTS;141870;4 30.10.2012 10:10:34,840;RIZ2@RTS;141870;1 30.10.2012 10:10:34,927;RIZ2@RTS;141870;3 30.10.2012 10:10:34,927;RIZ2@RTS;141870;2 30.10.2012 10:10:34,935;RIZ2@RTS;141870;3 30.10.2012 10:10:35,259;RIZ2@RTS;141870;1 30.10.2012 10:10:36,786;RIZ2@RTS;141860;1 30.10.2012 10:10:36,864;RIZ2@RTS;141860;1 30.10.2012 10:10:36,864;RIZ2@RTS;141860;2 30.10.2012 10:10:36,952;RIZ2@RTS;141860;1 30.10.2012 10:10:36,952;RIZ2@RTS;141860;1 30.10.2012 10:10:37,041;RIZ2@RTS;141860;1
Воспроизвел, будет фикс.
Выложил на КодеПлекс.
Добрый день! Пришлите пожалуйста ссылку на версию с этим фиксом. А то я вижу последний update на coldplex - StockSharp 4.1.5 Oct 28, 2012 by mika_soukhov
Смотрите в исходниках, в папке References. Тут
Та же самая проблема: при тестирование на истории выставляется лимитированная заявка, но она исполняется по невероятной цене , которой даже нет в истории, с проскальзыванием -1340
Номер сделки Номер транзакции Время Цена Цена заявки Объем Направление Номер заявки Проскальзывание Проскальзывание (котирование) Позиция 1257 194837 31.10.2012 20:32:32 141970 141970 1 Покупка 1350 0 0 0 1258 194838 31.10.2012 20:32:41 142030 142030 1 Покупка 1351 0 0 1 1259 194839 31.10.2012 20:32:59 142140 142140 1 Покупка 1352 0 0 2 1260 194840 31.10.2012 20:33:47 142800 142130 2 Продажа 1353 0 -1340 0 1261 194841 31.10.2012 20:35:37 142800 142010 1 Продажа 1354 0 -790 -1 1262 194842 31.10.2012 20:35:46 142080 142080 1 Покупка 1355 0 0 0
2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Заявка Sell цена 142130 количество 2 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Новая Sell сделка 1260 по цене 142800 на 2 заявки 194840. 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Новая позиция: test account-RIZ2@RTS=0. 2012.10.31 20:33:47.000| |SS_RIZ2@RTS_test account|Заявка 194840 больше не активна.
4.1.5 версия проблема как нить решена?
Проблема исправлена. Всем спасибо!
У меня проблема не решилась, как было так и осталось, скачен был файл stocksharp-20984.zip и заменены файлы в Reference, что то не так?
Решение-то пересобрали после обновления dll-ек? Возможно, файлы библиотеки берутся по другому пути?
Я обычно обновляю S#, копируя новое содержимое References прямо в папку bin/Debug, рядом с роботом. После пересборки решения подхватываются обновленные файлы.
нет, все пересобрал, dll поменялись, проблема осталась(
http://stocksharp.codeplex.com/releases/view/97689 в этой версии такая же проблема
Прикрепите файлы данных со сделками и стаканами и тестовую стратегию на которой можно воспроизвести ошибку. Укажите ID проблемной сделки.
хорошо попробую