private void CalculateFiveBasicValues()
        {
            var sixtyEightLowLimit      = StdDevResults.Where(t => t.ZScore <= (Decimal)(-1.0) && t.ZScore > (Decimal)(-2.0)).OrderByDescending(t => t.ZScore).FirstOrDefault();
            var sixtyEightLowLimitPrice = sixtyEightLowLimit.StdDev * sixtyEightLowLimit.ZScore + sixtyEightLowLimit.Mean;

            var sixtyEightHighLimit      = StdDevResults.Where(t => t.ZScore <= (Decimal)1.0 && t.ZScore > (Decimal)(0)).OrderByDescending(t => t.ZScore).FirstOrDefault();
            var sixtyEightHighLimitPrice = sixtyEightHighLimit.StdDev * sixtyEightHighLimit.ZScore + sixtyEightHighLimit.Mean;

            var ninetyLowLimit      = StdDevResults.Where(t => t.ZScore > (Decimal)(-2.0) && t.ZScore < (Decimal)(-1.0)).OrderBy(t => t.ZScore).FirstOrDefault();
            var ninetyLowLimitPrice = ninetyLowLimit.StdDev * ninetyLowLimit.ZScore + ninetyLowLimit.Mean;

            var ninetyHighLimit          = StdDevResults.Where(t => t.ZScore <= (Decimal)2.0 && t.ZScore > (Decimal)1.0).OrderByDescending(t => t.ZScore).FirstOrDefault();
            var ninetynineHighLimitPrice = HistoricalQuotes.Max(q => q.Close);

            var mean      = StdDevResults.Where(t => t.ZScore <(Decimal)(0) && t.ZScore>(Decimal)(-1)).OrderByDescending(t => t.ZScore).FirstOrDefault();
            var meanPrice = mean.StdDev * mean.ZScore + mean.Mean;

            var List = new List <decimal> {
                sixtyEightLowLimitPrice.Value,
                sixtyEightHighLimitPrice.Value,
                meanPrice.Value,
                ninetynineHighLimitPrice,
                ninetyLowLimitPrice.Value
            };
            var sorted = List.OrderBy(t => t).ToList();

            FiveBasicNumber = new FiveBasicNumberValue
            {
                NinetyLow      = sorted[0],
                SixtyEightLow  = sorted[1],
                Mean           = sorted[2],
                SixtyEightHigh = sorted[3],
                NinetyNineHigh = sorted[4] * ((decimal)1.1)
            };
        }
        private void CaculateLowLimitResult(AlertInfo stdLowAlertInfo)
        {
            var maxStickerQuote = HistoricalQuotes.Max(s => s.High);
            var minStickerQuote = HistoricalQuotes.Min(s => s.Low);
            var currentPrice    = HistoricalQuotes.OrderByDescending(q => q.Date).FirstOrDefault();

            CalculateHighAndLowLimitPriceForLowAlertInfo(stdLowAlertInfo, maxStickerQuote, minStickerQuote);
            if (currentPrice?.Close <= stdLowAlertInfo.HighLimit)
            {
                ToAlertToBuy = true;
            }
        }
        private void CalculateSuggestionPrices(AlertInfo stdHighAlertInfo, AlertInfo stdLowAlertInfo)
        {
            var maxStickerQuote = HistoricalQuotes.Max(s => s.High);
            var minStickerQuote = HistoricalQuotes.Min(s => s.Low);

            CalculateHighAndLowLimitPriceForLowAlertInfo(stdLowAlertInfo,
                                                         maxStickerQuote, minStickerQuote);
            CalculateHighAndLowLimitPriceForHighRangeAlertInfo(stdHighAlertInfo,
                                                               maxStickerQuote, maxStickerQuote);
            if (stdHighAlertInfo.HighLimit > stdLowAlertInfo.HighLimit)
            {
                MakeSuggestions(stdHighAlertInfo, stdLowAlertInfo);
            }
            else
            {
                MakeSuggestions(stdLowAlertInfo, stdHighAlertInfo);
            }
        }