Здравствуйте! Загрузил 4.1.7. Очень хотелось тестирование на свечках поиспытывать. И натолкнулся на следующую проблемку. Свечки, приходящие при тестировании не соответствуют действительности. Стал экспериментировать, выводя свечи на график. Вывел один день 2012.01.03 на график, через гидру двумя способами с постройкой свечек из сделок и без постройки, графика получились одинаковыми. А вот график, который я строю при тестировании на свечах от них отличается. А количество свечей 10 минуток(на них экспериментировал) за весь 2012год при тестировании, приходит больше чем в гидре создается, хоть с постройкой свечек из сделок хоть без постройки. Может, кто то уже тестировал на свечках, проблем не возникало? Ошибиться то вроде негде...
Код получения графика.
Код
       private void Test_Click(object sender, RoutedEventArgs e)
        {
            var timeFrame = TimeSpan.FromMinutes(10);
            // хранилище, через которое будет производиться доступ к тиковой и котировочной базе
            var storageRegistry = new StorageRegistry();
            // изменяем путь, используемый по умолчанию
            ((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = PathStorage;
            // используем алфавитное хранилище
            ((LocalMarketDataDrive)storageRegistry.DefaultDrive).UseAlphabeticPath = true;
            var startTime = new DateTime(2012, 1, 1);
            var stopTime = new DateTime(2012, 1, 3);
            // задаем шаг ProgressBar
            var progressStep = ((stopTime - startTime).Ticks / 100).To<TimeSpan>();
                // создаем тестовый инструмент, на котором будет производится тестирование
                var security = SelectedSecurity;
                // тестовый портфель
                var portfolio = new Portfolio { Name = "test account" };
                // создаем шлюз для эмуляции
                // инициализируем настройки (инструмент в истории обновляется раз в секунду)
                var trader = new EmulationTrader(new[] { security },new[] { portfolio })
                {
                    MarketTimeChangedInterval = timeFrame,
                    StorageRegistry = storageRegistry,
                    // использовать свечки
                    UseCandlesTimeFrame = timeFrame,
                };
                trader.Connect();
                trader.StartExport();
                var candleManager = new CandleManager(trader);
                var series = new CandleSeries(typeof(TimeFrameCandle), security, timeFrame);
                InitChart();
                candleManager.Processing += DrawCandles;
                candleManager.Start(series);
                var nextTime = startTime + progressStep;
                // и подписываемся на событие изменения времени, чтобы обновить ProgressBar
                trader.MarketTimeChanged += d =>
                {
                    if (trader.CurrentTime >= nextTime || trader.CurrentTime >= stopTime)
                    {
                        nextTime += progressStep;
                        this.GuiAsync(() => ProgressBar.Value++);
                    }
                };
                trader.StateChanged += (oldState, newState) =>
                {
                    if (trader.State == EmulationStates.Stopped)
                    {
                        this.GuiAsync(() =>
                        {
                            if (trader.IsFinished)
                            {
                                ProgressBar.Value = ProgressBar.Maximum;
                                MessageBox.Show("Закончено за " + (DateTime.Now - _startEmulationTime));
                            }
                            else
                                MessageBox.Show("Отменено");
                        });
                    }
                    
                };
            trader.Start(startTime, stopTime);
            _startEmulationTime = DateTime.Now;
        }
        private void DrawCandles(CandleSeries series, Candle candle)
        {
            if (candle.State == CandleStates.Finished)
            {
                this.GuiAsync(
                    () => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
                        {
                            {_candlesElem, candle},
                        }));
            }
        }