コード例 #1
0
        /// <summary>
        /// 更新全局的行情数据
        /// </summary>
        private void upDateMarketData(MarketInfo dataFrom, MyMarketInfo dateTo)
        {
            dateTo.code         = dataFrom.code;
            dateTo.exchangeCode = dataFrom.exchangeCode;
            //最高价
            if (!String.IsNullOrEmpty(dataFrom.high))
            {
                dateTo.high = dataFrom.high;
            }
            //收盘价
            if (!String.IsNullOrEmpty(dataFrom.close))
            {
                //收盘价为空的时候,放最新价
                dateTo.close = dataFrom.close;
            }

            //开盘价
            if (!String.IsNullOrEmpty(dataFrom.open))
            {
                dateTo.open = dataFrom.open;
            }
            //最低价
            if (!String.IsNullOrEmpty(dataFrom.low))
            {
                dateTo.low = dataFrom.low;
            }
            //成交量
            if (!String.IsNullOrEmpty(dataFrom.filledNum) || dataFrom.filledNum != "0")
            {
                dateTo.filledNum = dataFrom.filledNum;
            }
            //持仓量
            if (!String.IsNullOrEmpty(dataFrom.holdNum))
            {
                dateTo.holdNum = dataFrom.holdNum;
            }
            //昨结算
            if (!String.IsNullOrEmpty(dataFrom.oldClose) && !"0".Equals(dataFrom.oldClose))
            {
                dateTo.oldClose = dataFrom.oldClose;
            }
            //现量
            if (!String.IsNullOrEmpty(dataFrom.currNumber) || dataFrom.currNumber != "0")
            {
                dateTo.currNumber = dataFrom.currNumber;
            }
            //最新价
            if (!String.IsNullOrEmpty(dataFrom.currPrice))
            {
                dateTo.currPrice = dataFrom.currPrice;
            }
            //更新时间
            if (!String.IsNullOrEmpty(dataFrom.time))
            {
                dateTo.time = dataFrom.time;
            }
            //行情类型
            if (!String.IsNullOrEmpty(dataFrom.type))
            {
                dateTo.type = dataFrom.type;
            }
            if (DaFutures.Equals(this.marketType))
            {
                if (!string.IsNullOrEmpty(dataFrom.buyPrice) && !string.IsNullOrEmpty(dataFrom.buyNumber))
                {
                    //买量1
                    dateTo.buyNumber = dataFrom.buyNumber;
                    //买量2
                    dateTo.buyNumber2 = dataFrom.buyNumber2;
                    //买量3
                    dateTo.buyNumber3 = dataFrom.buyNumber3;
                    //买量4
                    dateTo.buyNumber4 = dataFrom.buyNumber4;
                    //买量5
                    dateTo.buyNumber5 = dataFrom.buyNumber5;
                    //买价1
                    dateTo.buyPrice = dataFrom.buyPrice;
                    //买价2
                    dateTo.buyPrice2 = dataFrom.buyPrice2;
                    //买价3
                    dateTo.buyPrice3 = dataFrom.buyPrice3;
                    //买价4
                    dateTo.buyPrice4 = dataFrom.buyPrice4;
                    //买价5
                    dateTo.buyPrice5 = dataFrom.buyPrice5;
                }

                //隐藏买量
                dateTo.hideBuyNumber = dataFrom.hideBuyNumber;
                //隐藏买价
                dateTo.hideBuyPrice = dataFrom.hideBuyPrice;

                if (!string.IsNullOrEmpty(dataFrom.salePrice) && !string.IsNullOrEmpty(dataFrom.saleNumber))
                {
                    //卖量1
                    dateTo.saleNumber = dataFrom.saleNumber;
                    //卖量2
                    dateTo.saleNumber2 = dataFrom.saleNumber2;
                    //卖量3
                    dateTo.saleNumber3 = dataFrom.saleNumber3;
                    //卖量4
                    dateTo.saleNumber4 = dataFrom.saleNumber4;
                    //卖量5
                    dateTo.saleNumber5 = dataFrom.saleNumber5;
                    //卖价1
                    dateTo.salePrice = dataFrom.salePrice;
                    //卖价2
                    dateTo.salePrice2 = dataFrom.salePrice2;
                    //卖价3
                    dateTo.salePrice3 = dataFrom.salePrice3;
                    //卖价4
                    dateTo.salePrice4 = dataFrom.salePrice4;
                    //卖价5
                    dateTo.salePrice5 = dataFrom.salePrice5;
                }

                //隐藏卖量
                dateTo.hideSaleNumber = dataFrom.hideSaleNumber;
                //隐藏卖价
                dateTo.hideSalePrice = dataFrom.hideSalePrice;
            }
        }
コード例 #2
0
        /// <summary>
        /// 执行行情接受线程
        /// </summary>
        public void ExecuteMarketThread()
        {
            string       key        = "";
            string       value      = "";
            MarketInfo   marketInfo = null;
            MyMarketInfo mm         = null;
            var          ser        = new ObjectSerializer();
            HashOperator operators  = new HashOperator();

            while (isSave)
            {
                try
                {
                    marketInfo = marketBlockingCollection.Take();
                    if (marketInfo.tradeFlag == "D" || marketInfo.tradeFlag == "X" || marketInfo.tradeFlag == "P")
                    {
                        //港股这种行情的成交价,成交量不要往列表里面刷
                        marketInfo.currPrice  = "";
                        marketInfo.filledNum  = "";
                        marketInfo.currNumber = "";
                    }
                    //合并隐藏价格
                    //if (!string.IsNullOrEmpty(marketInfo.hideBuyPrice) || !string.IsNullOrEmpty(marketInfo.hideSalePrice))
                    //{
                    //    if (!string.IsNullOrEmpty(marketInfo.hideBuyPrice))
                    //    {
                    //        marketInfo.type = "B";
                    //    }
                    //    if (!string.IsNullOrEmpty(marketInfo.hideSalePrice))
                    //    {
                    //        marketInfo.type = "O";
                    //    }
                    //    if (!string.IsNullOrEmpty(marketInfo.hideBuyPrice) && !string.IsNullOrEmpty(marketInfo.hideSalePrice))
                    //    {
                    //        marketInfo.type = "Z";
                    //    }
                    //    marketInfo.mergeHidePrice("");
                    //}
                    //value = Encoding.UTF8.GetString(ser.Serialize(marketInfo));
                    //operators.Set<byte[]>("test", "key1", ser.Serialize(marketInfo));

                    if (DaFutures.Equals(this.marketType))
                    {
                        //直达期货
                        key = "00," + marketInfo.code;
                    }
                    else if (DaStock.Equals(this.marketType))
                    {
                        //直达股票
                        key = "10," + marketInfo.code;
                        //Console.WriteLine(marketInfo.exchangeCode);
                        if ("US".Equals(marketInfo.exchangeCode))
                        {
                            marketInfo.exchangeCode = "NASD";
                        }
                    }

                    value = Redis.GetValueFromHash(LastPrice, key);
                    mm    = new MyMarketInfo();
                    if (!string.IsNullOrEmpty(value))
                    {
                        mm = (MyMarketInfo)JsonToObject(value, mm);
                    }

                    upDateMarketData(marketInfo, mm);
                    value = ObjectToJson(mm);
                    Redis.SetEntryInHash(LastPrice, key, value);
                }
                catch (Exception ex)
                {
                    marketErrorLoger.log(LogLevel.SYSTEMERROR, ex.ToString());
                }
            }
        }