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;
        }