public static string GetQuoteDataVal(QuoteData data)
        {
            var sb = new StringBuilder();

            sb.Append(data.LastPx);
            sb.Append(Sperator);
            sb.Append(data.OpenPx);
            sb.Append(Sperator);
            sb.Append(data.HighPx);
            sb.Append(Sperator);
            sb.Append(data.LowPx);
            sb.Append(Sperator);
            sb.Append(data.PreClosePx);
            sb.Append(Sperator);
            sb.Append(data.HqDate);
            sb.Append(Sperator);
            sb.Append(data.HqTime);
            sb.Append(Sperator);
            sb.Append(data.PreSettlementPx);
            sb.Append(Sperator);
            sb.Append(data.PreOpenInterest);
            sb.Append(Sperator);
            sb.Append(data.UpLimitPx);
            sb.Append(Sperator);
            sb.Append(data.DownLimitPx);
            sb.Append(Sperator);
            sb.Append(data.AvgPx);
            sb.Append(Sperator);
            sb.Append(data.OpenInterest);
            sb.Append(Sperator);
            sb.Append(data.AddPos);
            sb.Append(Sperator);
            sb.Append(data.CurrHands);
            sb.Append(Sperator);
            sb.Append(data.BidPx1);
            sb.Append(Sperator);
            sb.Append(data.BidSize1);
            sb.Append(Sperator);
            sb.Append(data.AskPx1);
            sb.Append(Sperator);
            sb.Append(data.AskSize1);
            sb.Append(Sperator);
            sb.Append(data.TotalVolumeTrade);
            sb.Append(Sperator);
            sb.Append(data.TotalValueTrade);
            sb.Append(Sperator);
            sb.Append(data.SettlementPx);
            return(sb.ToString());
        }
        /// <summary>
        /// 设置最新价
        /// </summary>
        /// <param name="contractId"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static bool SetInnerCodeNowPx(Int64 contractId, QuoteData data)
        {
            try
            {
                string key = GetQuoteDataKey(contractId);
                var    val = GetQuoteDataVal(data);

                RedisManager.QuoteRedis.Set(key, val);
                return(true);
            }
            catch (Exception exp)
            {
                LogRecord.writeLogsingle("error", "SetInnerCodeNowPx:" + exp.ToString());
                return(false);
            }
        }
        public static QuoteData ToQuoteData(string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(null);
            }
            var arr = value.Split(Sperator);

            if (arr.Length < 22)
            {
                return(null);
            }

            var data = new QuoteData();

            data.LastPx           = arr[0].ToFloat();
            data.OpenPx           = arr[1].ToFloat();
            data.HighPx           = arr[2].ToFloat();
            data.LowPx            = arr[3].ToFloat();
            data.PreClosePx       = arr[4].ToFloat();
            data.HqDate           = arr[5].ToInt();
            data.HqTime           = arr[6].ToInt();
            data.PreSettlementPx  = arr[7].ToFloat();
            data.PreOpenInterest  = arr[8].ToLong();
            data.UpLimitPx        = arr[9].ToFloat();
            data.DownLimitPx      = arr[10].ToFloat();
            data.AvgPx            = arr[11].ToFloat();
            data.OpenInterest     = arr[12].ToLong();
            data.AddPos           = arr[13].ToLong();
            data.CurrHands        = arr[14].ToLong();
            data.BidPx1           = arr[15].ToFloat();
            data.BidSize1         = arr[16].ToInt();
            data.AskPx1           = arr[17].ToFloat();
            data.AskSize1         = arr[18].ToInt();
            data.TotalVolumeTrade = arr[19].ToLong();
            data.TotalValueTrade  = arr[20].ToFloat();
            data.SettlementPx     = arr[21].ToFloat();

            return(data);
        }
 /// <summary>
 /// 获取最新行情
 /// </summary>
 /// <param name="contractId"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 public static bool GetQuoteData(long contractId, out QuoteData data)
 {
     data = GetQuoteData(contractId);
     return(data != null);
 }