Beispiel #1
0
        /// <summary>
        /// 根据指数获得未停牌股票
        /// </summary>
        /// <param name="indexName">板块/指数组合</param>
        /// <param name="EndT"></param>
        /// <param name="CheckDays"></param>
        /// <param name="NextDay"></param>
        /// <param name="ExcludeSt"></param>
        /// <param name="MAFilter"></param>
        /// <param name="ExcludeSecList"></param>
        public static BaseDataTable GetMarketsStocks(MongoDataReader w, string indexName, DateTime EndT, Int64 CheckDays, bool NextDay, bool ExcludeSt, bool MAFilter, List <string> ExcludeSecList)
        {
            BaseDataTable ret = new BaseDataTable();

            string[] bkArr    = indexName.Split(';');
            string[] seclist  = new string[0]; //默认股票列表为空
            string[] secnames = new string[0]; //默认股票列表为空
            if (bkArr.Length > 1)              //板块或指数组合
            {
                return(ret);
            }
            else
            {
                if (!IsSecIndex(w, indexName, EndT, out seclist, out secnames)) //不是集合
                {
                    if (indexName.IndexOf(".") > 0)                             //如果是0000xx.xx类型
                    {
                        seclist = new string[1] {
                            indexName
                        };
                    }
                    else
                    {
                        return(ret);
                    }
                }
            }
            //ret.Result.AddColumnByArray<string>("Code", seclist);
            //ret.Result.AddColumnByArray<string>("Name", secnames);
            BaseDataTable dt = GetBaseData(w, seclist, EndT, Cycle.Day, PriceAdj.Beyond, new object[0] {
            });

            dt = dt.AvaliableData;
            BaseDataTable rdt = new BaseDataTable();

            rdt = new BaseDataTable(dt.GetTable().Clone());
            var Tarr = from dr in dt.ToFillableList <BaseDataItemClass>()
                       where dr.OnMarketDayCount >= CheckDays
                       select dr;

            rdt.FillByItems <BaseDataItemClass>(Tarr.ToArray <BaseDataItemClass>());
            ret = rdt;
            if (ExcludeSt)
            {
                var NoSTArr = from dr in rdt.ToFillableList <BaseDataItemClass>()
                              where dr.IsST == false
                              select dr;

                ret = new BaseDataTable(rdt.GetTable());
                ret.FillByItems <BaseDataItemClass>(NoSTArr.ToArray <BaseDataItemClass>());
            }
            return(ret);
        }