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