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))); }
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, }); } }
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(); } }