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) }; }
public SecondCalculator(List <Quote> historicalQuotes, List <StdDevResult> stdDevResults) { HistoricalQuotes = historicalQuotes; StdDevResults = stdDevResults; BuyingSuggestion = new Suggestion(); SellingSuggestion = new Suggestion(); HoldOrSellSuggestion = new Suggestion(); FiveBasicNumber = new FiveBasicNumberValue(); }