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.
Если кто знает, на какой из последних версий стаканы/заявки работают корректно, просьба написать.
Kommentare (5)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Это самая ценная информация. Стек трейс.
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 пока не могу, код в переходном состоянии. Как смогу, напишу.
Перетестировал на сегодняшнем транке.