StockSharp взят с trunk rev 19463
При попытке тестирования стратегии на истории возникли слеюующие проблемы:
- Не генерируются стаканы (есть только история сделок). Вот как регистрирую генератор:
_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")
- Исполнение заявок.
- Самая первая заявка, посланная в эмулятор после старта, даже если она успешно исполняется, после завершения не возвращает информацию о трейдах (_order.GetTrades().Any()==false)
- Лимитные заявки по цене (LastTrade.Price + проскальзывание) исполняются всегда по самой худшей цене, а если проскальзывание небольшое, то исполняются не всегда (хотя это наверно нормально)
- Заявки order.Type = OrderTypes.Market исполняются так же как и лимитники, а если установить цену в 0, то вообще не исполняются.
- Неисполненная заявка некоторое время висит в эмуляторе в активном состоянии а затем автоматически отменяется (видимо на границе сессий в 18:45), причем выставление order.ExpiryDate = DateTime.MaxValue не помогает.
- Неверный расчет PnL. Для RIU2 размер шага 5, стоимость шага 3.1. С такими параметрами при позиции в 5 контрактов и изменении цены примерно на 5000 пунктов, PnL изменился почти на 30000.
Если кто знает, на какой из последних версий стаканы/заявки работают корректно, просьба написать.
Comments (5)
Login or Create account, Log in or register to leave a comment
Это самая ценная информация. Стек трейс.
ProcessDataError: System.ArgumentException: node at StockSharp.Algo.Testing.MarketEmulator.#=qsDZKrWdiDpmLBDPZ$6rbRA==(#=q3udKpCOalDAG9i_Fiaji7GyIRzsiGf0m_bQcxngCAvhnp31RRWCAfTLkvbAzkIqH #=qgEJD6KXip0EN0NL2tPleyA==) at #=q3udKpCOalDAG9i_Fiaji7GyIRzsiGf0m_bQcxngCAvhnp31RRWCAfTLkvbAzkIqH.Emulate(MarketEmulator #=qLJs1r8OnbZIsuPt7wHYPBA==) at StockSharp.Algo.Testing.MarketEmulator.Emulate(Message msg)
Проблема с последней версией на codeplex ушла?
Проблема с генерацией стаканов ушла. Если использовать UseMarketDepth=true, то вроде тестирование работает нормально. PnL тоже на первый взгляд считается корректно. Протестировать остальные перечисленные в первом посте проблемы + протестировать работу с UseMarketDepth=false пока не могу, код в переходном состоянии. Как смогу, напишу.
Перетестировал на сегодняшнем транке.