Пример #1
0
        /// <summary>
        /// 根据商品代码获取行情熔断比例与当前熔断比例比较是否可以启动熔断
        /// 如果当前比较小于或者等于行情比例则不启动熔断
        /// </summary>
        /// <param name="triggeringScale">触发比例</param>
        /// <param name="code">商品代码</param>
        /// <returns></returns>
        public bool CompareHQScaleIsFuse(decimal triggeringScale, string code)
        {
            triggeringScale = triggeringScale / 100;
            //VTFutData data = RealtimeMarketService.GetStaticRealtimeServiceNotEvent.GetFutData(code);
            FutData data = RealtimeMarketService.GetStaticRealtimeServiceNotEvent.GetFutData(code);

            if (triggeringScale <= (decimal)data.ChgPct)
            {
                return(false);
            }
            return(true);
        }
Пример #2
0
        /// <summary>
        /// 股指期货行情转换成自定义行情实体
        /// </summary>
        /// <param name="hqData">自定义实体</param>
        /// <returns></returns>
        public MarketDataLevel FutDataDataConvertMarketDataLevel(FutData hqData)
        {
            MarketDataLevel level = new MarketDataLevel();

            level.Code = hqData.CodeKey;
            level.Name = hqData.Stockno;

            #region 买价
            level.BuyFirstPrice  = (decimal)hqData.Buyprice1;
            level.BuySecondPrice = (decimal)hqData.Buyprice2;
            level.BuyThirdPrice  = (decimal)hqData.Buyprice3;
            level.BuyFourthPrice = (decimal)hqData.Buyprice4;
            level.BuyFivePrice   = (decimal)hqData.Buyprice5;
            #endregion

            #region 买量
            level.BuyFirstVolume  = (decimal)hqData.Buyvol1;
            level.BuySecondVolume = (decimal)hqData.Buyvol2;
            level.BuyThirdVolume  = (decimal)hqData.Buyvol3;
            level.BuyFourthVolume = (decimal)hqData.Buyvol4;
            level.BuyFiveVolume   = (decimal)hqData.Buyvol5;
            #endregion

            #region 卖价
            level.SellFirstPrice  = (decimal)hqData.Sellprice1;
            level.SellSecondPrice = (decimal)hqData.Sellprice2;
            level.SellThirdPrice  = (decimal)hqData.Sellprice3;
            level.SellFourthPrice = (decimal)hqData.Sellprice4;
            level.SellFivePrice   = (decimal)hqData.Sellprice5;
            #endregion

            #region 卖量
            level.SellFirstVolume  = (decimal)hqData.Sellvol1;
            level.SellSecondVolume = (decimal)hqData.Sellvol2;
            level.SellThirdVolume  = (decimal)hqData.Sellvol3;
            level.SellFourthVolume = (decimal)hqData.Sellvol4;
            level.SellFiveVolume   = (decimal)hqData.Sellvol5;
            #endregion

            level.LastPrice         = decimal.Parse(hqData.Lasttrade.ToString());
            level.LastVolume        = decimal.Parse(hqData.LastVolume.ToString());
            level.LowerPrice        = decimal.Parse(hqData.LowerLimitPrice.ToString());
            level.UpPrice           = decimal.Parse(hqData.UpperLimitPrice.ToString());
            level.YesterPrice       = decimal.Parse(hqData.Yclose.ToString());
            level.MarketRefreshTime = Convert.ToDateTime(hqData.Time);
            return(level);
        }
Пример #3
0
        /// <summary>
        /// 【是否产生熔断】根据商品获取行情最后交易价与昨日收盘价和触发比例判断是否启动熔断
        /// 最后交易价大于等于昨日收盘价*(1+熔断比例)或者小于等于昨日收盘价*(1-熔断比例)则启动熔断
        /// </summary>
        /// <param name="code">代码</param>
        /// <param name="triggerScale">比例</param>
        /// <returns></returns>
        public bool IsStartFuse(string code, decimal triggerScale)
        {
            //VTFutData data = RealtimeMarketService.GetRealtimeMark().GetFutData(code);
            FutData data   = RealtimeMarketService.GetStaticRealtimeServiceNotEvent.GetFutData(code);
            var     price  = (decimal)data.Lasttrade;
            var     yclose = (decimal)data.Yclose;

            if (price >= yclose * (1.00m + triggerScale))
            {
                return(true);
            }
            if (price <= yclose * (1.00m - triggerScale))
            {
                return(true);
            }
            return(false);
        }
Пример #4
0
        /// <summary>
        ///根据期货合约代码获取当前代码行情
        /// </summary>
        /// <param name="contractCode">合约代码</param>
        /// <returns></returns>
        public static FutData GetRealTimeFutureDataByContractCode(string contractCode)
        {
            //撮合中心代码不能为空
            if (string.IsNullOrEmpty(contractCode))
            {
                return(null);
            }
            IRealtimeMarketService realTimeService = GetRealtimeMark();

            //撮合中心实体不能为空
            if (realTimeService == null)
            {
                return(null);
            }
            FutData vtFutData = realTimeService.GetFutData(contractCode);

            return(vtFutData);
        }
Пример #5
0
        /// <summary>
        /// Title:根据代码和代码所属类型获取最后成交价(最新成交价)
        /// Create by:李健华
        /// Create Date:2009-11-08
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public MarketDataLevel GetLastPriceByCode(string code, int breedClassType, out string errMsg)
        {
            MarketDataLevel result = null;

            errMsg = "";
            try
            {
                switch ((Types.BreedClassTypeEnum)breedClassType)
                {
                case Types.BreedClassTypeEnum.Stock:
                    HqExData data = GetRealMarketService().GetStockHqData(code);
                    if (data == null || data.HqData == null)
                    {
                        errMsg = "GT-0023:无法获取当前现货代码相关行情";
                        return(result);
                    }
                    // HqExData exData = data;
                    //float lastPrice = exData.HqData.Lasttrade;
                    //result = (decimal)lastPrice;
                    result = HqExDataConvertMarketDataLevel(data);
                    break;

                case Types.BreedClassTypeEnum.CommodityFuture:
                    //add by 董鹏 2010-01-26
                    MerFutData cfdata = GetRealMarketService().GetMercantileFutData(code);
                    if (cfdata == null)
                    {
                        errMsg = "GT-0023:无法获取当前商品期货代码相关行情";
                        return(result);
                    }
                    //MerFutData cforgData = cfdata;
                    //double cflastPrice = cforgData.Lasttrade;
                    //result = (decimal)cflastPrice;
                    result = MerFutDataConvertMarketDataLevel(cfdata);
                    break;

                case Types.BreedClassTypeEnum.StockIndexFuture:
                    FutData qhdata = GetRealMarketService().GetFutData(code);
                    if (qhdata == null)
                    {
                        errMsg = "GT-0023:无法获取当前股指期货代码相关行情";
                        return(result);
                    }
                    //FutData orgData = qhdata;
                    //double qhlastPrice = orgData.Lasttrade;
                    //result = (decimal)qhlastPrice;
                    result = FutDataDataConvertMarketDataLevel(qhdata);
                    break;

                case Types.BreedClassTypeEnum.HKStock:
                    HKStock hkdata = GetRealMarketService().GetHKStockData(code);
                    if (hkdata == null)
                    {
                        errMsg = "GT-0023:无法获取当前港股代码相关行情";
                        return(result);
                    }
                    //double hkLastPrice = hkdata.Lasttrade;
                    //result = (decimal)hkLastPrice;
                    result = HKStockDataConvertMarketDataLevel(hkdata);
                    break;

                default:
                    errMsg = "GT-0023:无此代码所属类型的行情";
                    break;
                }
            }
            catch (Exception ex)
            {
                errMsg = ex.Message;
                LogHelper.WriteError("GT-0023:根据代码和代码所属类型获取最后成交价(最新成交价)异常", ex);
            }

            return(result);
        }
 private void RefreshQHView(FutData futData)
 {
     propertyGrid1.SelectedObject = futData;
 }