/** * @param manager the time series manager * @param strategies a list of strategies * @return the best strategy (among the provided ones) according to the criterion */ public IStrategy ChooseBest(TimeSeriesManager manager, List <IStrategy> strategies) { IStrategy bestStrategy = strategies[0]; decimal bestCriterionValue = Calculate(manager.TimeSeries, manager.Run(bestStrategy)); for (int i = 1; i < strategies.Count; i++) { IStrategy currentStrategy = strategies[i]; decimal currentCriterionValue = Calculate(manager.TimeSeries, manager.Run(currentStrategy)); if (BetterThan(currentCriterionValue, bestCriterionValue)) { bestStrategy = currentStrategy; bestCriterionValue = currentCriterionValue; } } return(bestStrategy); }
public void testStrategies() { PeriodicalGrowthRateIndicator gri = new PeriodicalGrowthRateIndicator(this.closePrice, 5); // Rules IRule buyingRule = new CrossedUpIndicatorRule(gri, Decimals.ZERO); IRule sellingRule = new CrossedDownIndicatorRule(gri, Decimals.ZERO); IStrategy strategy = new BaseStrategy(buyingRule, sellingRule); // Check trades int result = seriesManager.Run(strategy).GetTradeCount(); int expResult = 3; Assert.AreEqual(expResult, result); }
public void runOnWholeSeries() { ITimeSeries series = new MockTimeSeries(20, 40, 60, 10, 30, 50, 0, 20, 40); manager.SetTimeSeries(series); var allTrades = manager.Run(strategy).Trades; Assert.AreEqual(2, allTrades.Count()); }