Exemplo n.º 1
0
        /// <summary>
        /// 缓存WR分布值
        /// </summary>
        private static void CacheTechnicalIndex_WR()
        {
            var lstWR = MongoDBHelper.AsQueryable <WRResult>().ToList();;

            //指标明细
            IndexDetailDTO dtoWR = new IndexDetailDTO();

            dtoWR.Code         = ConstDefine.Cst_WR;
            dtoWR.Name         = ConstDefine.Cst_WR;
            dtoWR.ParamsValues = GetInputParams(ConstDefine.Cst_WR);
            dtoWR.IsDefault    = true;

            //取分布值
            double[] arrayIndexValues = null;
            arrayIndexValues = lstWR.Select(m => m.WR).OrderBy(m => m).ToArray();
            //设置最大值、最小值、分布值
            SetMaxMinArrValue(dtoWR, arrayIndexValues);

            //删除原有的
            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:'" + ConstDefine.Cst_WR + "'}");
            //插入WR技术指标指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(new List <IndexDetailDTO>()
            {
                dtoWR
            });
        }
Exemplo n.º 2
0
        /// <summary>
        /// 缓存MA分布值
        /// </summary>
        private static void CacheTechnicalIndex_MA()
        {
            var lstMA = MongoDBHelper.AsQueryable <MAResult>().ToList();

            IndexDetailDTO dtoMA = new IndexDetailDTO();

            dtoMA.Code         = ConstDefine.Cst_MA;
            dtoMA.Name         = ConstDefine.Cst_MA;
            dtoMA.ParamsValues = GetInputParams(ConstDefine.Cst_MA);
            dtoMA.IsDefault    = true;

            //取分布值
            var arrayIndexValues = lstMA.Select(m => m.MA).OrderBy(m => m).ToArray();

            //设置最大值、最小值、分布值
            SetMaxMinArrValue(dtoMA, arrayIndexValues);

            //删除原有的
            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:'" + ConstDefine.Cst_MA + "'}");
            //插入行情指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(new List <IndexDetailDTO>()
            {
                dtoMA
            });
        }
Exemplo n.º 3
0
        /// <summary>
        /// 缓存RSI分布值
        /// </summary>
        private static void CacheTechnicalIndex_RSI()
        {
            var lstRSI = MongoDBHelper.AsQueryable <RSIResult>().ToList();;

            //指标明细
            List <IndexDetailDTO> lstDto = new List <IndexDetailDTO>();
            IndexDetailDTO        dtoRSI = new IndexDetailDTO();

            lstDto.Add(dtoRSI);

            dtoRSI.Code         = ConstDefine.Cst_RSI;
            dtoRSI.Name         = ConstDefine.Cst_RSI;
            dtoRSI.ParamsValues = GetInputParams(ConstDefine.Cst_RSI);
            dtoRSI.IsDefault    = true;

            //取分布值
            double[] arrayIndexValues = lstRSI.Select(m => m.RSI).OrderBy(m => m).ToArray();
            //设置最大值、最小值、分布值
            SetMaxMinArrValue(dtoRSI, arrayIndexValues);

            Dictionary <string, string> dicCodeName = new Dictionary <string, string>();

            dicCodeName[ConstDefine.Cst_RSI_GoldX]  = ConstDefine.Cst_RSI_GoldX_Name;
            dicCodeName[ConstDefine.Cst_RSI_BlackX] = ConstDefine.Cst_RSI_BlackX_Name;
            foreach (string indexCode in dicCodeName.Keys)
            {
                IndexDetailDTO dto = new IndexDetailDTO();
                lstDto.Add(dto);

                dto.Code         = indexCode;
                dto.Name         = dicCodeName[indexCode];
                dto.ParamsValues = GetInputParams(ConstDefine.Cst_RSI);
                dto.IsDefault    = true;
            }

            //删除原有的
            List <string> lstIndexCode = new List <string>();

            lstIndexCode.Add(ConstDefine.Cst_RSI);
            lstIndexCode.AddRange(dicCodeName.Keys);
            string codes = string.Join("','", lstIndexCode);

            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:{$in:['" + codes + "']}}");

            //插入MACD技术指标指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(lstDto);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 设置最大值、最小值、分布值
        /// </summary>
        private static void SetMaxMinArrValue(IndexDetailDTO dto, double[] arrayIndexValues, bool isFinanceIndex = false)
        {
            if (arrayIndexValues == null || arrayIndexValues.Length <= 0)
            {
                return;
            }

            //财务指标如果超过100只股票,舍弃前后5个股票
            if (isFinanceIndex && arrayIndexValues.Length > 100)
            {
                arrayIndexValues = arrayIndexValues.Skip(5).Take(arrayIndexValues.Length - 10).ToArray();
            }

            arrayIndexValues[0] = Floor(arrayIndexValues[0], 2);    //退一法
            int arrMaxIndex = arrayIndexValues.Length - 1;

            arrayIndexValues[arrMaxIndex] = Ceiling(arrayIndexValues[arrMaxIndex], 2);  //进一法

            dto.MinValue = arrayIndexValues[0];
            dto.MaxValue = arrayIndexValues[arrayIndexValues.Length - 1];
            dto.Value    = arrayIndexValues;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 缓存板块指标的明细
        /// </summary>
        public static void CachePlateIndex()
        {
            LogHelper.Info("总运行", "开始:生成板块指标明细");

            //取得财务指标编号、名称
            var lstIndexLite = from dto in MongoDBHelper.AsQueryable <IndexTreeDTO>()
                               where dto.TypeCode == ConstDefine.CstCode_PlateIndex
                               select new IndexLiteDTO()
            {
                Code = dto.Code,
                Name = dto.Name
            };

            //指标明细
            List <IndexDetailDTO> lstDto = new List <IndexDetailDTO>();

            //遍历指标编号,生成选股条件信息
            foreach (IndexLiteDTO indexLite in lstIndexLite)
            {
                IndexDetailDTO dto = new IndexDetailDTO();
                lstDto.Add(dto);

                dto.Code      = indexLite.Code;
                dto.Name      = indexLite.Name;
                dto.IsDefault = true;
            }

            //删除原有的
            string[] lstCode = lstDto.Select(m => m.Code).ToArray();
            string   codes   = string.Join("','", lstCode);

            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:{$in:['" + codes + "']}}");
            //插入板块指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(lstDto);

            LogHelper.Info("总运行", "结束:生成板块指标明细");
        }
Exemplo n.º 6
0
        /// <summary>
        /// 缓存DMI分布值
        /// </summary>
        private static void CacheTechnicalIndex_DMI()
        {
            var lstDMI = MongoDBHelper.AsQueryable <DMIResult>().ToList();;

            //指标明细
            List <IndexDetailDTO> lstDto  = new List <IndexDetailDTO>();
            List <SelectOption>   lstLeft = GetLeftSelectOption(ConstDefine.Cst_DMI);

            foreach (SelectOption option in lstLeft)
            {
                IndexDetailDTO dtoBOLL = new IndexDetailDTO();
                lstDto.Add(dtoBOLL);

                dtoBOLL.Code         = ConstDefine.Cst_DMI;
                dtoBOLL.Name         = ConstDefine.Cst_DMI;
                dtoBOLL.ParamsValues = GetInputParams(ConstDefine.Cst_DMI);

                dtoBOLL.SelectTerm        = option.SelectItem;
                dtoBOLL.SelectTermDisplay = option.SelectItem;
                dtoBOLL.SelectTermList    = lstLeft;

                //取分布值
                double[] arrayIndexValues = null;
                switch (option.SelectItem)
                {
                case ConstDefine.Cst_DMI_PDI:
                    dtoBOLL.IsDefault = true;
                    arrayIndexValues  = lstDMI.Select(m => m.PDI).OrderBy(m => m).ToArray();
                    break;

                case ConstDefine.Cst_DMI_MDI:
                    arrayIndexValues = lstDMI.Select(m => m.MDI).OrderBy(m => m).ToArray();
                    break;

                case ConstDefine.Cst_DMI_ADX:
                    arrayIndexValues = lstDMI.Where(m => m.ADX.HasValue).Select(m => m.ADX.Value).OrderBy(m => m).ToArray();
                    break;
                }
                //设置最大值、最小值、分布值
                SetMaxMinArrValue(dtoBOLL, arrayIndexValues);
            }

            Dictionary <string, string> dicCodeName = new Dictionary <string, string>();

            dicCodeName[ConstDefine.Cst_DMI_GoldX]  = ConstDefine.Cst_DMI_GoldX_Name;
            dicCodeName[ConstDefine.Cst_DMI_BlackX] = ConstDefine.Cst_DMI_BlackX_Name;
            foreach (string indexCode in dicCodeName.Keys)
            {
                IndexDetailDTO dto = new IndexDetailDTO();
                lstDto.Add(dto);

                dto.Code         = indexCode;
                dto.Name         = dicCodeName[indexCode];
                dto.ParamsValues = GetInputParams(ConstDefine.Cst_DMI);
                dto.IsDefault    = true;
            }

            //删除原有的
            List <string> lstIndexCode = new List <string>();

            lstIndexCode.Add(ConstDefine.Cst_DMI);
            lstIndexCode.AddRange(dicCodeName.Keys);
            string codes = string.Join("','", lstIndexCode);

            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:{$in:['" + codes + "']}}");

            //插入MACD技术指标指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(lstDto);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 缓存KDJ分布值
        /// </summary>
        private static void CacheTechnicalIndex_KDJ()
        {
            var lstKDJ = MongoDBHelper.AsQueryable <KDJResult>().ToList();;

            //指标明细
            List <IndexDetailDTO> lstDto  = new List <IndexDetailDTO>();
            List <SelectOption>   lstLeft = GetLeftSelectOption(ConstDefine.Cst_KDJ);

            foreach (SelectOption option in lstLeft)
            {
                IndexDetailDTO dtoKDJ = new IndexDetailDTO();
                lstDto.Add(dtoKDJ);

                dtoKDJ.Code         = ConstDefine.Cst_KDJ;
                dtoKDJ.Name         = ConstDefine.Cst_KDJ;
                dtoKDJ.ParamsValues = GetInputParams(ConstDefine.Cst_KDJ);

                dtoKDJ.SelectTerm        = option.SelectItem;
                dtoKDJ.SelectTermDisplay = option.SelectItem;
                dtoKDJ.SelectTermList    = lstLeft;

                //取分布值
                double[] arrayIndexValues = null;
                switch (option.SelectItem)
                {
                case ConstDefine.Cst_KDJ_K:
                    dtoKDJ.IsDefault = true;
                    arrayIndexValues = lstKDJ.Select(m => m.K).OrderBy(m => m).ToArray();
                    break;

                case ConstDefine.Cst_KDJ_D:
                    arrayIndexValues = lstKDJ.Select(m => m.D).OrderBy(m => m).ToArray();
                    break;

                case ConstDefine.Cst_KDJ_J:
                    arrayIndexValues = lstKDJ.Select(m => m.J).OrderBy(m => m).ToArray();
                    break;
                }

                //设置最大值、最小值、分布值
                SetMaxMinArrValue(dtoKDJ, arrayIndexValues);
            }

            Dictionary <string, string> dicCodeName = new Dictionary <string, string>();

            dicCodeName[ConstDefine.Cst_KDJ_GoldX]      = ConstDefine.Cst_KDJ_GoldX_Name;
            dicCodeName[ConstDefine.Cst_KDJ_BlackX]     = ConstDefine.Cst_KDJ_BlackX_Name;
            dicCodeName[ConstDefine.Cst_KDJ_LowGoldX]   = ConstDefine.Cst_KDJ_LowGoldX_Name;
            dicCodeName[ConstDefine.Cst_KDJ_TopDepart]  = ConstDefine.Cst_KDJ_TopDepart_Name;
            dicCodeName[ConstDefine.Cst_KDJ_DownDepart] = ConstDefine.Cst_KDJ_DownDepart_Name;
            dicCodeName[ConstDefine.Cst_KDJ_Oversold]   = ConstDefine.Cst_KDJ_Oversold_Name;
            dicCodeName[ConstDefine.Cst_KDJ_Overbought] = ConstDefine.Cst_KDJ_Overbought_Name;
            foreach (string indexCode in dicCodeName.Keys)
            {
                IndexDetailDTO dto = new IndexDetailDTO();
                lstDto.Add(dto);

                dto.Code         = indexCode;
                dto.Name         = dicCodeName[indexCode];
                dto.ParamsValues = GetInputParams(ConstDefine.Cst_KDJ);
                dto.IsDefault    = true;
            }

            //删除原有的
            List <string> lstIndexCode = new List <string>();

            lstIndexCode.Add(ConstDefine.Cst_KDJ);
            lstIndexCode.AddRange(dicCodeName.Keys);
            string codes = string.Join("','", lstIndexCode);

            MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:{$in:['" + codes + "']}}");

            //插入MACD技术指标指标的明细
            MongoDBHelper.InsertManyAsync <IndexDetailDTO>(lstDto);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 缓存行情指标的明细
        /// </summary>
        public static void CacheDataByTimeIndex()
        {
            LogHelper.Info("总运行", "开始:生成行情指标明细");

            //取得财务指标编号、名称
            var lstIndexLite = from dto in MongoDBHelper.AsQueryable <IndexTreeDTO>()
                               where dto.TypeCode == ConstDefine.CstCode_MarketIndex
                               select new IndexLiteDTO()
            {
                Code = dto.Code,
                Name = dto.Name
            };

            //遍历指标编号,生成选股条件信息
            foreach (IndexLiteDTO indexLite in lstIndexLite)
            {
                //取指定指标的所有指标股票信息
                var lstDataByTimeIndex = MongoDBHelper.AsQueryable <DataByTimeIndexInfo>().Where(m => m.IndexCode == indexLite.Code).ToList();
                if (lstDataByTimeIndex.Count == 0)
                {
                    continue;
                }

                //按交易日分组
                var groupByTradingDateIndex = (from index in lstDataByTimeIndex
                                               group index by index.TradingDate into g
                                               orderby g.Key descending
                                               select new
                {
                    TradingDate = g.Key,
                    TradingDateName = g.First().TradingDateName,
                    groupList = g
                }).Take(5);

                //交易日分组列表
                var lstSelectTerm = from groupIndex in groupByTradingDateIndex
                                    orderby groupIndex.TradingDate descending
                                    select new SelectOption()
                {
                    SelectItem    = TransferHelper.DateTimeToString(groupIndex.TradingDate),
                    SelectDisplay = groupIndex.TradingDateName
                };
                List <SelectOption> selectTermList = lstSelectTerm.ToList();

                //指标明细
                List <IndexDetailDTO> lstDto = new List <IndexDetailDTO>();
                //按交易日遍历
                foreach (var groupByEndDate in groupByTradingDateIndex)
                {
                    IndexDetailDTO dto = new IndexDetailDTO();
                    lstDto.Add(dto);

                    dto.Code              = indexLite.Code;
                    dto.Name              = indexLite.Name;
                    dto.SelectTerm        = TransferHelper.DateTimeToString(groupByEndDate.TradingDate);
                    dto.SelectTermDisplay = groupByEndDate.TradingDateName;
                    dto.SelectTermList    = selectTermList;

                    //取分布值
                    var arrayIndexValues = groupByEndDate.groupList.Select(m => m.IndexValue).OrderBy(m => m).ToArray();
                    //设置最大值、最小值、分布值
                    SetMaxMinArrValue(dto, arrayIndexValues);
                }

                //设置默认选项(第一个)
                if (lstDto.Count > 0)
                {
                    lstDto[0].IsDefault = true;
                }

                //删除原有的
                MongoDBHelper.DeleteMany <IndexDetailDTO>("{Code:'" + indexLite.Code + "'}");
                //插入行情指标的明细
                MongoDBHelper.InsertManyAsync <IndexDetailDTO>(lstDto);
            }

            LogHelper.Info("总运行", "结束:生成行情指标明细");
        }