예제 #1
0
        private static void DoMainBackTest()
        {
            var eventBus = new QueuedEventBus();
            var dataSource = CsvDataSource.CreateFromFiles("Data\\Min1", new[] { Symbols.Sber, Symbols.Vtbr });
            var marketData = new ComposedMarketData(dataSource.Bars);
            var bars = new HistoricDataHandler(eventBus, marketData);
            var strategy = new BuyAndHoldStrategy(eventBus, bars);
            var executionHandler = new SimulatedExecutionHandler(eventBus, bars);
            var portfolio = new NaivePortfolio(eventBus, bars, 10000m);
            var backTest = new BackTest(eventBus, bars, strategy, portfolio, executionHandler);

            backTest.SimulateTrading();
        }
        public void ComposedMarketDataLoadedFromStringsIsValid()
        {
            var dataSource = CsvDataSource.CreateFormStrings(Mother.UnsortedRowsCsvData);
            var mdata = new ComposedMarketData(dataSource.Bars);

            Assert.IsNotNull(mdata.Bars);
            Assert.IsTrue(mdata.RowKeys.Count > 0);
            Assert.IsTrue(mdata.Symbols.Count == 2);
            Assert.Contains(Symbols.Sber, mdata.Symbols.ToList());
            Assert.Contains(Symbols.Vtbr, mdata.Symbols.ToList());

            var sberBars = mdata.Bars[Symbols.Sber];

            foreach (var bar in sberBars.Values)
            {
                Console.WriteLine(bar);
            }
        }
        public void ComposedMarketDataLoadedFromStringsHasValidRowKeys()
        {
            var dataSource = CsvDataSource.CreateFormStrings(Mother.UnsortedRowsCsvData);
            var mdata = new ComposedMarketData(dataSource.Bars);
            var rowKeys = mdata.RowKeys;

            foreach (var dateTime in rowKeys)
            {
                Console.WriteLine("key={0}", dateTime);
            }

            DateTime? prev = null;
            foreach (var dateTime in rowKeys)
            {
                if (prev == null)
                {
                    prev = dateTime;
                    continue;
                }

                Assert.IsTrue(prev <= dateTime);
            }
        }