예제 #1
0
        /// <summary>
        /// Categorized stock performance by each day of one week
        /// </summary>
        /// <param name="log">logger for output results</param>
        public void AnalyzeEachDayOfOneWeek(ICustomLog log)
        {
            StockWeekData mondaydata    = new StockWeekData();
            StockWeekData tuesdaydata   = new StockWeekData();
            StockWeekData wednesdaydata = new StockWeekData();
            StockWeekData thursdaydata  = new StockWeekData();
            StockWeekData fridaydata    = new StockWeekData();

            foreach (WeeklyResult res in Results_.Values)
            {
                IStockData sdMonday    = res.GetStockData(DayOfWeek.Monday);
                IStockData sdTuesday   = res.GetStockData(DayOfWeek.Tuesday);
                IStockData sdWednesday = res.GetStockData(DayOfWeek.Wednesday);
                IStockData sdThursday  = res.GetStockData(DayOfWeek.Thursday);
                IStockData sdFriday    = res.GetStockData(DayOfWeek.Friday);

                mondaydata.AddStockData(sdMonday);
                tuesdaydata.AddStockData(sdTuesday);
                wednesdaydata.AddStockData(sdWednesday);
                thursdaydata.AddStockData(sdThursday);
                fridaydata.AddStockData(sdFriday);
            }

            log.LogInfo("Monday up percent: " + mondaydata.CalcUpPercent().ToString("F03")
                        + ", Days = " + mondaydata.TotalDays);
            log.LogInfo("Tuesday up percent: " + tuesdaydata.CalcUpPercent().ToString("F03")
                        + ", Days = " + tuesdaydata.TotalDays);
            log.LogInfo("Wednesday up percent: " + wednesdaydata.CalcUpPercent().ToString("F03")
                        + ", Days = " + wednesdaydata.TotalDays);
            log.LogInfo("Thursday up percent: " + thursdaydata.CalcUpPercent().ToString("F03")
                        + ", Days = " + thursdaydata.TotalDays);
            log.LogInfo("Friday up percent: " + fridaydata.CalcUpPercent().ToString("F03")
                        + ", Days = " + fridaydata.TotalDays);
        }
예제 #2
0
        public void JudgeShape(ICustomLog log)
        {
            int tTypeCount     = 0;
            int revTTypeCount  = 0;
            int crossTypeCount = 0;

            foreach (KeyValuePair <DateTime, IStockData> entry in DailyStocks_)
            {
                if (ShapeJudger.IsCross(entry.Value))
                {
                    crossTypeCount++;
                }

                if (ShapeJudger.IsT(entry.Value))
                {
                    tTypeCount++;
                }

                if (ShapeJudger.IsReverseT(entry.Value))
                {
                    revTTypeCount++;
                }
            }

            log.LogInfo("Total Count = " + DailyStocks_.Count
                        + ", Cross = " + crossTypeCount
                        + ", T = " + tTypeCount
                        + ", Rev T = " + revTTypeCount);
        }
예제 #3
0
        /// <summary>
        /// Categorize the stock data
        /// </summary>
        /// <param name="log">logger for output results</param>
        public void CalcResult(ICustomLog log)
        {
            int notCalcWeeks = 0;
            Dictionary <string, int> templateNumbers = new Dictionary <string, int>();

            foreach (WeeklyResult res in Results_.Values)
            {
                string s = res.CalcUpTemplate();

                if (string.IsNullOrEmpty(s))
                {
                    notCalcWeeks++;
                    continue;
                }

                if (templateNumbers.ContainsKey(s))
                {
                    templateNumbers[s] = templateNumbers[s] + 1;
                }
                else
                {
                    templateNumbers.Add(s, 1);
                }
            }

            var keys  = templateNumbers.Keys;
            var query = keys.OrderBy(x => x);

            foreach (string item in query)
            {
                log.LogInfo(item + ": " + templateNumbers[item]);
            }

            log.LogInfo("Complete. Total weeks = " + Results_.Count
                        + ", categorized types = " + templateNumbers.Count
                        + ", error weeks = " + notCalcWeeks);
        }
예제 #4
0
        public void Check(ICustomLog log)
        {
            DateTime startDate = MinDate;

            while (startDate < MaxDate)
            {
                if ((GetStock(startDate) == null) && !Holidays.IsWeekend(startDate))
                {
                    log.LogInfo("Date: " + startDate.ToLongDateString() + ", has no stock data.");
                }
                startDate = startDate.AddDays(1);
            }

            JudgeShape(log);
        }
예제 #5
0
        public void Check(ICustomLog log)
        {
            DateTime startDate = MinDate;
            while (startDate < MaxDate)
            {
                if ((GetStock(startDate) == null) && !Holidays.IsWeekend(startDate))
                {
                    log.LogInfo("Date: " + startDate.ToLongDateString() + ", has no stock data.");
                }
                startDate = startDate.AddDays(1);
            }

            JudgeShape(log);
        }
예제 #6
0
        public void JudgeShape(ICustomLog log)
        {
            int tTypeCount = 0;
            int revTTypeCount = 0;
            int crossTypeCount = 0;
            foreach (KeyValuePair<DateTime, IStockData> entry in DailyStocks_)
            {
                if (ShapeJudger.IsCross(entry.Value))
                {
                    crossTypeCount++;
                }

                if (ShapeJudger.IsT(entry.Value))
                {
                    tTypeCount++;
                }

                if (ShapeJudger.IsReverseT(entry.Value))
                {
                    revTTypeCount++;
                }
            }

            log.LogInfo("Total Count = " + DailyStocks_.Count
                + ", Cross = " + crossTypeCount
                + ", T = " + tTypeCount
                + ", Rev T = " + revTTypeCount);
        }
예제 #7
0
        /// <summary>
        /// Categorized stock performance by each day of one week
        /// </summary>
        /// <param name="log">logger for output results</param>
        public void AnalyzeEachDayOfOneWeek(ICustomLog log)
        {
            StockWeekData mondaydata = new StockWeekData();
            StockWeekData tuesdaydata = new StockWeekData();
            StockWeekData wednesdaydata = new StockWeekData();
            StockWeekData thursdaydata = new StockWeekData();
            StockWeekData fridaydata = new StockWeekData();

            foreach (WeeklyResult res in Results_.Values)
            {
                IStockData sdMonday = res.GetStockData(DayOfWeek.Monday);
                IStockData sdTuesday = res.GetStockData(DayOfWeek.Tuesday);
                IStockData sdWednesday = res.GetStockData(DayOfWeek.Wednesday);
                IStockData sdThursday = res.GetStockData(DayOfWeek.Thursday);
                IStockData sdFriday = res.GetStockData(DayOfWeek.Friday);

                mondaydata.AddStockData(sdMonday);
                tuesdaydata.AddStockData(sdTuesday);
                wednesdaydata.AddStockData(sdWednesday);
                thursdaydata.AddStockData(sdThursday);
                fridaydata.AddStockData(sdFriday);
            }

            log.LogInfo("Monday up percent: " + mondaydata.CalcUpPercent().ToString("F03")
                + ", Days = " + mondaydata.TotalDays);
            log.LogInfo("Tuesday up percent: " + tuesdaydata.CalcUpPercent().ToString("F03")
                + ", Days = " + tuesdaydata.TotalDays);
            log.LogInfo("Wednesday up percent: " + wednesdaydata.CalcUpPercent().ToString("F03")
                + ", Days = " + wednesdaydata.TotalDays);
            log.LogInfo("Thursday up percent: " + thursdaydata.CalcUpPercent().ToString("F03")
                + ", Days = " + thursdaydata.TotalDays);
            log.LogInfo("Friday up percent: " + fridaydata.CalcUpPercent().ToString("F03")
                + ", Days = " + fridaydata.TotalDays);
        }
예제 #8
0
        /// <summary>
        /// Categorize the stock data
        /// </summary>
        /// <param name="log">logger for output results</param>
        public void CalcResult(ICustomLog log)
        {
            int notCalcWeeks = 0;
            Dictionary<string, int> templateNumbers = new Dictionary<string, int>();
            foreach (WeeklyResult res in Results_.Values)
            {
                string s = res.CalcUpTemplate();

                if (string.IsNullOrEmpty(s))
                {
                    notCalcWeeks++;
                    continue;
                }

                if (templateNumbers.ContainsKey(s))
                {
                    templateNumbers[s] = templateNumbers[s] + 1;
                }
                else
                {
                    templateNumbers.Add(s, 1);
                }
            }

            var keys = templateNumbers.Keys;
            var query = keys.OrderBy(x => x);

            foreach (string item in query)
            {
                log.LogInfo(item + ": " + templateNumbers[item]);
            }

            log.LogInfo("Complete. Total weeks = " + Results_.Count
                + ", categorized types = " + templateNumbers.Count
                + ", error weeks = " + notCalcWeeks);
        }