StockSharp взят с trunk rev 19463
При попытке тестирования стратегии на истории возникли слеюующие проблемы:
1) Не генерируются стаканы (есть только история сделок). Вот как регистрирую генератор:
Code
_trader = new EmulationTrader(new[] {security}, new[] {portfolio}) {
MarketTimeChangedInterval = TimeSpan.FromSeconds(1),
StorageRegistry = storageRegistry,
UseMarketDepth = true,
//UseMarketDepth = false,
};
_trader.RegisterMarketDepth(new TrendMarketDepthGenerator(security) {
GenerateDepthOnEachTrade = true,
Interval = TimeSpan.FromSeconds(1),
MaxSpreadStepCount = 10,
UseTradeVolume = true
});
_trader.Connect();
_trader.StartExport();
_trader.RegisterTrades(security);
_trader.RegisterMarketDepth(security);
_trader.RegisterSecurity(security);
Стаканов и Security.BestBid/Ask нет при любом UseMarketDepth, но при UseMarketDepth=true в ProcessDataError приходит огромное количество исключений вида ArgumentException("node")
2) Исполнение заявок.
- Самая первая заявка, посланная в эмулятор после старта, даже если она успешно исполняется, после завершения не возвращает информацию о трейдах (_order.GetTrades().Any()==false)
- Лимитные заявки по цене (LastTrade.Price + проскальзывание) исполняются всегда по самой худшей цене, а если проскальзывание небольшое, то исполняются не всегда (хотя это наверно нормально)
- Заявки order.Type = OrderTypes.Market исполняются так же как и лимитники, а если установить цену в 0, то вообще не исполняются.
- Неисполненная заявка некоторое время висит в эмуляторе в активном состоянии а затем автоматически отменяется (видимо на границе сессий в 18:45), причем выставление order.ExpiryDate = DateTime.MaxValue не помогает.
3) Неверный расчет PnL. Для RIU2 размер шага 5, стоимость шага 3.1. С такими параметрами при позиции в 5 контрактов и изменении цены примерно на 5000 пунктов, PnL изменился почти на 30000.
Если кто знает, на какой из последних версий стаканы/заявки работают корректно, просьба написать.