コード例 #1
0
        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)
            };
        }
コード例 #2
0
        private void CalculateHighAndLowLimitPriceForLowAlertInfo(AlertInfo stdLowAlertInfo,
                                                                  decimal maxStickerQuote, decimal minStickerQuote)
        {
            var maxStdResult = StdDevResults.Max(s => s.StdDev);
            var maxStdItem   = StdDevResults.Where(s => s.StdDev == maxStdResult).FirstOrDefault();
            var maxPrice     = maxStdItem.StdDev * maxStdItem.ZScore + maxStdItem.Mean;
            //maxPrice = Math.Max(maxPrice.Value, maxStickerQuote);

            var minStdResult = StdDevResults.Min(s => s.StdDev);
            var minStdItem   = StdDevResults.Where(s => s.StdDev == minStdResult).FirstOrDefault();
            var minPrice     = minStdItem.StdDev * minStdItem.ZScore + minStdItem.Mean;
            //minPrice = Math.Min(minPrice.Value, minStickerQuote);

            var priceResultRange   = maxPrice.Value - minPrice.Value;
            var lowLimitPriceRange = priceResultRange * (stdLowAlertInfo.ExceptedLowPercentage / 100);

            stdLowAlertInfo.LowLimit  = minPrice.Value;
            stdLowAlertInfo.HighLimit = lowLimitPriceRange + minPrice.Value;
        }