示例#1
0
        int IComparable.CompareTo(object obj)
        {
            MarketData y = (MarketData)obj;

            return(DateTime.ParseExact(UpdateTime, "yyyyMMdd HH:mm:ss", null).AddMilliseconds(UpdateMillisec).CompareTo(DateTime.ParseExact(y.UpdateTime, "yyyyMMdd HH:mm:ss", null).AddMilliseconds(y.UpdateMillisec)));
        }
示例#2
0
        void Quote_OnRtnDepthMarketData(MarketData pMarketData)
        {
            var t = DicTick.GetOrAdd(pMarketData.InstrumentID, new MarketData());

            foreach (FieldInfo fi in typeof(MarketData).GetFields())
            {
                fi.SetValue(t, fi.GetValue(pMarketData));
            }

            if (_OnRtnTick != null)
            {
                _OnRtnTick(this, new TickEventArgs
                {
                    Tick = t,
                });
            }
        }
示例#3
0
		void Quote_OnRtnDepthMarketData(MarketData pMarketData)
		{
			if (string.IsNullOrEmpty(pMarketData.InstrumentID) || string.IsNullOrEmpty(pMarketData.UpdateTime)
				|| pMarketData.LastPrice > pMarketData.UpperLimitPrice)
			{
				return;
			}

			//处理actionday==NULL{以下处理无效:大商所夜盘中的actionday==tradingday}
			//if (pMarketData.UpdateTime.Length == 8) //只有时间
			//{
			//	//首tick取机器日期,否则取上tick日期
			//	string aDay = string.IsNullOrEmpty(t.UpdateTime) ? DateTime.Today.ToString("yyyyMMdd") : t.UpdateTime.Split(' ')[0];

			//	pMarketData.UpdateTime = aDay + " " + pMarketData.UpdateTime;
			//	//时间更小->第2天
			//	if (String.Compare(pMarketData.UpdateTime, t.UpdateTime, StringComparison.Ordinal) < 0) 
			//	{
			//		pMarketData.UpdateTime = DateTime.ParseExact(aDay, "yyyyMMdd", null).AddDays(1).ToString("yyyyMMdd") + pMarketData.UpdateTime.Split(' ')[1];
			//	}
			//}
			//修正数据:涨跌板
			if (pMarketData.AskPrice > pMarketData.UpperLimitPrice)
			{
				pMarketData.AskPrice = pMarketData.LastPrice;
			}
			if (pMarketData.BidPrice > pMarketData.UpperLimitPrice)
			{
				pMarketData.BidPrice = pMarketData.LastPrice;
			}
			DicTick.AddOrUpdate(pMarketData.InstrumentID, pMarketData, (k, v) =>
			{
				if (pMarketData.UpdateTime == v.UpdateTime && v.UpdateMillisec < 990)  //某些交易所(如郑商所)相同秒数的ms均为0
				{
					pMarketData.UpdateMillisec = v.UpdateMillisec + 10;
				}
				return pMarketData;
			});

			if (_OnRtnTick != null)
			{
				MarketData t = new MarketData();
				foreach (FieldInfo fi in typeof(MarketData).GetFields())
				{
					fi.SetValue(t, fi.GetValue(pMarketData));
				}
				new Thread(() => _OnRtnTick(this, new TickEventArgs
				{
					Tick = t,
				})).Start();
			}
		}