/**
         * @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);
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }