示例#1
0
        public static List <DateSelectItem> ToDaySelectItemList(List <SelectItem> selItems, List <DateRange> dateRangeList)
        {
            List <DateSelectItem> retList  = new List <DateSelectItem>();
            List <int>            dateList = Utils.TraverTimeDay(dateRangeList);

            dateList.Reverse();
            foreach (int date in dateList)
            {
                if (!Utils.IsTradeDay(date))
                {
                    continue;
                }
                DateSelectItem item = new DateSelectItem();
                item.date_ = date;
                var rawitems = SelectResult.OfDate(date, selItems, true);
                Dictionary <String, int> uniqueItemDict = new Dictionary <String, int>();
                item.selItems_ = new List <SelectItem>();
                foreach (var ritem in rawitems)
                {
                    if (!uniqueItemDict.ContainsKey(ritem.code_))
                    {
                        item.selItems_.Add(ritem);
                        uniqueItemDict[ritem.code_] = 0;
                    }
                }

                item.goodSampleSelItems_ = GetGoodSampleSelectItems(item.selItems_);
                retList.Add(item);
            }
            return(retList);
        }
示例#2
0
        public static HistoryData GetHistoryData(List <DateSelectItem> dateItems,
                                                 int iStartIndex, int nCount, RunMode runMode)
        {
            List <SelectItem> allItems = new List <SelectItem>();

            for (int i = 0; i < nCount; i++)
            {
                if (iStartIndex + i >= dateItems.Count)
                {
                    break;
                }
                DateSelectItem dayData = dateItems[iStartIndex + i];
                allItems.AddRange(dayData.selItems_);
            }
            HistoryData data = new HistoryData();

            data.backBonusValue_ = GetBackBonus(allItems);
            for (int i = 0; i < allItems.Count; ++i)
            {
                SelectItem item  = allItems[i];
                var        bonus = item.getColumnVal("bonus");
                if (bonus == "")
                {
                    continue;
                }
                data.nHoldStockDays_ += Utils.ToType <int>(item.getColumnVal("tradespan"));
                float bonusValue = Utils.GetBonusValue(bonus);
                data.allBonusValue_ += bonusValue;
            }

            allItems.Clear();
            for (int i = 0; i < nCount; i++)
            {
                if (iStartIndex + i >= dateItems.Count)
                {
                    break;
                }
                DateSelectItem dayData = dateItems[iStartIndex + i];
                allItems.AddRange(dayData.goodSampleSelItems_);
            }
            data.gbackBonusValue_ = GetBackBonus(allItems);
            for (int i = 0; i < allItems.Count; ++i)
            {
                SelectItem item   = allItems[i];
                var        bonus  = item.getColumnVal("bonus");
                var        strNsh = item.getColumnVal("nsh");
                if (bonus == "" || strNsh == "")
                {
                    continue;
                }
                data.nGoodSampleHoldStockDays_ += Utils.ToType <int>(item.getColumnVal("tradespan"));
                float bonusValue = Utils.GetBonusValue(bonus);
                data.allGoodSampleBonusValue_ += bonusValue;
                float nsh = Utils.GetBonusValue(strNsh);
                if (nsh > 0.5)
                {
                    data.nPlusCount_++;
                }
                else if (nsh < -1.5)
                {
                    data.nMinusCount_++;
                    if (nsh < -0.095)
                    {
                        data.nDeadCount_++;
                    }
                }
                else if (bonusValue < 0.2)
                {
                    data.nPartialMinusCount_++;
                }
            }


            data.nDayCount_ = iStartIndex + nCount - 1 >= dateItems.Count ?
                              dateItems.Count - iStartIndex : nCount;
            int date0 = dateItems[iStartIndex].date_;
            int date1 = dateItems[iStartIndex + data.nDayCount_ - 1].date_;

            data.startDate_ = Math.Min(date0, date1);
            data.endDate_   = Math.Max(date0, date1);
            for (int i = 0; i < nCount; i++)
            {
                if (iStartIndex + i >= dateItems.Count)
                {
                    break;
                }
                DateSelectItem dayData = dateItems[iStartIndex + i];
                foreach (var selItem in dayData.selItems_)
                {
                    var bonus = selItem.getColumnVal("bonus");
                    if (bonus == "")
                    {
                        continue;
                    }
                    float bounusValue = Utils.GetBonusValue(bonus);
                    var   envBonus    = selItem.getColumnVal("envbonus");
                    if (envBonus != "")
                    {
                        float envBonusValue = Utils.GetBonusValue(envBonus);
                        if (envBonusValue < 0)
                        {
                            ++data.nAntiEnvCheckCount_;
                            if (bounusValue > 0)
                            {
                                ++data.nAntiEnvCount_;
                            }
                        }
                    }
                }
                data.nGoodSampleSelectCount_ += dayData.goodSampleSelItems_.Count;
                data.nAllSampleSelectCount_  += dayData.selItems_.Count;
                data.nDayMaxSelectCount_      = Math.Max(data.nDayMaxSelectCount_, dayData.selItems_.Count);
                foreach (var selItem in dayData.goodSampleSelItems_)
                {
                    var bonus = selItem.getColumnVal("bonus");
                    if (bonus == "")
                    {
                        continue;
                    }
                    float bounusValue = Utils.GetBonusValue(bonus);
                    if (bounusValue > 0)
                    {
                        ++data.nSelectSucCount_;
                    }
                }
                if (runMode == RunMode.RM_Asset)
                {
                    var buyItem = dayData.getBuyItem();
                    if (buyItem != null)
                    {
                        var bonus = buyItem.getColumnVal("bonus");
                        if (bonus != "")
                        {
                            float bounusValue = Utils.GetBonusValue(bonus);
                            if (bounusValue > 0)
                            {
                                data.nTradeSucCount_++;
                            }
                            data.tradeBonusValue_ += bounusValue;
                        }
                        ++data.nTradeCount_;
                    }

                    float dayAllBonusValue = 0;
                    foreach (var item in dayData.selItems_)
                    {
                        var bonus = item.getColumnVal("bonus");
                        if (bonus != "")
                        {
                            float bonusValue = Utils.GetBonusValue(bonus);
                            dayAllBonusValue += bonusValue;
                        }
                    }
                    if (dayAllBonusValue > 0)
                    {
                        data.nTradeAllSucCount_++;
                    }
                }
                else
                {
                    if (dayData.selItems_.Count > 0)
                    {
                        float dayAllBonusValue = 0;
                        foreach (var item in dayData.goodSampleSelItems_)
                        {
                            var bonus = item.getColumnVal("bonus");
                            if (bonus != "")
                            {
                                float bonusValue = Utils.GetBonusValue(bonus);
                                dayAllBonusValue += bonusValue;
                            }
                        }
                        if (dayAllBonusValue > 0)
                        {
                            data.nTradeSucCount_++;
                            data.nTradeAllSucCount_++;
                        }
                        data.tradeBonusValue_ += dayAllBonusValue / dayData.goodSampleSelItems_.Count;
                        if (dayData.goodSampleSelItems_.Count > 0)
                        {
                            data.nTradeCount_++;
                        }
                    }
                }
            }
            data.refrestStatistics();
            return(data);
        }