public TradeRecommendationManager()
 {
     bollingerSetting = new BollingerBandSetting()
     {
         Period           = 20,
         UpperStdDevLimit = 2,
         LowerStdDevLimit = 1.5m
     };
 }
        // TODO: Fix type inconsistencies with double
        private TradeRecommendation CalculateBollingerBand(IReadOnlyList <YahooFinanceApi.Candle> candles, BollingerBandSetting setting)
        {
            TradeRecommendation recommendation = new TradeRecommendation();

            var list = candles.OrderByDescending(c => c.DateTime).Take(setting.Period);

            // determine bands
            decimal stdDev = (decimal)CalculateStandardDeviation(list.Select(c => c.Close));

            // Populate Output
            //recommendation.MostRecentTradingSession = list.First();
            recommendation.PurchaseRecommendation = (list.First().Low - stdDev * setting.LowerStdDevLimit);
            recommendation.SellRecommendation     = (list.First().High + stdDev * setting.UpperStdDevLimit);

            if (list.First().Close < (decimal)recommendation.PurchaseRecommendation)
            {
                recommendation.TradeAction            = Enums.TradeAction.Buy;
                recommendation.TradeActionDescription = recommendation.TradeAction.GetDescription();
            }
            else if (list.First().Close > (decimal)recommendation.SellRecommendation)
            {
                recommendation.TradeAction            = Enums.TradeAction.Sell;
                recommendation.TradeActionDescription = recommendation.TradeAction.GetDescription();
            }
            else
            {
                recommendation.TradeAction            = Enums.TradeAction.Hold;
                recommendation.TradeActionDescription = recommendation.TradeAction.GetDescription();
            }

            recommendation.percentReturnPotential = (recommendation.SellRecommendation - recommendation.PurchaseRecommendation) / recommendation.PurchaseRecommendation * 100;

            return(recommendation);
        }