コード例 #1
0
        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));
        }
コード例 #2
0
        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;
            }
        }