public void TestConvertDateTime() { var span = new TimeSpan(0, 12, 34, 56, 789); int time = 123456; int ms = 789; int hhmm_____ = 0; int ____ssf__ = 0; int _______ff = 0; var codec = new PbTickCodec(); codec.SetUpdateTime(span, out hhmm_____, out ____ssf__, out _______ff); Assert.AreEqual <int>(1234, hhmm_____); Assert.AreEqual <int>(567, ____ssf__); Assert.AreEqual <int>(89, _______ff); codec.SetUpdateTime(time, ms, out hhmm_____, out ____ssf__, out _______ff); Assert.AreEqual <int>(1234, hhmm_____); Assert.AreEqual <int>(567, ____ssf__); Assert.AreEqual <int>(89, _______ff); codec.GetUpdateTime(hhmm_____, ____ssf__, _______ff, out time, out ms); Assert.AreEqual <int>(123456, time); Assert.AreEqual <int>(789, ms); span = codec.GetUpdateTime(hhmm_____, ____ssf__, _______ff); Assert.AreEqual <int>(0, span.Days); Assert.AreEqual <int>(12, span.Hours); Assert.AreEqual <int>(34, span.Minutes); Assert.AreEqual <int>(56, span.Seconds); Assert.AreEqual <int>(789, span.Milliseconds); var date1 = 20141104; var date2 = 20141105; var tick = new PbTick(); codec.SetActionDay(tick, new DateTime(2014, 11, 4)); codec.SetTradingDay(tick, new DateTime(2014, 11, 5)); Assert.AreEqual <int>(date1, tick.ActionDay); Assert.AreEqual <int>(date2, tick.TradingDay); Assert.AreEqual <DateTime>(new DateTime(2014, 11, 4), codec.GetDateTime(tick.ActionDay)); Assert.AreEqual <DateTime>(new DateTime(2014, 11, 5), codec.GetDateTime(tick.TradingDay)); }
public void OutputSeries(out IDataSeries trades, out IDataSeries bids, out IDataSeries asks) { trades = new TickSeries(); bids = new TickSeries(); asks = new TickSeries(); PbTickCodec codec = new PbTickCodec(); int TradingDay = -1; int _lastTradeSize = 0; foreach (var s in Series) { if (TradingDay != s.TradingDay) { _lastTradeSize = 0; TradingDay = s.TradingDay; } var dateTime = codec.GetDateTime(s.ActionDay == 0 ? s.TradingDay : s.ActionDay).Add(codec.GetUpdateTime(s)); var tick = PbTick2DepthMarketDataNClass(codec, s); if (SubscribeExternData) { var trade = new TradeEx(dateTime, 0, _InstrumentId, tick.LastPrice, (int)tick.Volume); trade.Size -= _lastTradeSize; trade.DepthMarketData = tick; trades.Add(trade); } else { var trade = new Trade(dateTime, 0, _InstrumentId, tick.LastPrice, (int)tick.Volume); trade.Size -= _lastTradeSize; trades.Add(trade); } if (tick.Bids != null && tick.Bids.Length > 0) { var bid = new Bid(dateTime, 0, _InstrumentId, tick.Bids[0].Price, tick.Bids[0].Size); bids.Add(bid); } if (tick.Asks != null && tick.Asks.Length > 0) { var ask = new Ask(dateTime, 0, _InstrumentId, tick.Asks[0].Price, tick.Asks[0].Size); asks.Add(ask); } _lastTradeSize = (int)tick.Volume; } }