public static void UseBarBacktest(this IDataSimulator simulator, Instrument instrument, BarSeries inputBars, params long[] barSizes) { var framework = ((DataSimulator)simulator).GetFramework(); framework.EventManager.Dispatcher.SimulatorStop += DispatcherSimulatorStop; var dm = framework.DataManager; if (simulator.DateTime1 == DateTime.MinValue) { simulator.DateTime1 = inputBars.First.OpenDateTime; simulator.DateTime2 = inputBars.Last.CloseDateTime; } var list = new List <BarSeries>(); foreach (var size in barSizes) { if (BarInSimulator(simulator, instrument, size)) { continue; } if (size == inputBars.First.Size) { list.Add(inputBars); } else { var bars = GetTimeBars(dm, instrument, size, simulator.DateTime1, simulator.DateTime2); if (bars.Count == 0) { bars = inputBars.TimeCompress(instrument, size); } list.Add(bars); } } if (list.Count == 0) { return; } simulator.Series.AddRange(list); simulator.SubscribeBar = false; simulator.SubscribeBarSlice = false; simulator.SubscribeAsk = false; simulator.SubscribeBid = false; simulator.SubscribeTrade = false; simulator.SubscribeQuote = false; simulator.SubscribeLevelII = false; }