public static void WriteCsv(IEnumerable <PbTick> list, string output)
        {
            if (list == null)
            {
                return;
            }

            var Codec = new PbTickCodec();

            // 将差分数据生成界面数据
            IEnumerable <PbTickView> _list = Codec.Data2View(Codec.Restore(list), false);

            // 保存
            using (TextWriter stream = new StreamWriter(output))
            {
                var t = new PbTickView();
                stream.WriteLine(PbTickView.ToCsvHeader());

                foreach (var l in _list)
                {
                    stream.WriteLine(l);
                }
                stream.Close();
            }
        }
Example #2
0
        public PbTickView Int2Double(PbTick tick, bool descending)
        {
            if (tick == null)
            {
                return(null);
            }

            var view = new PbTickView();

            // 利用此机会设置TickSize
            if (Codec == null)
            {
                Codec = new PbTickCodec();
            }
            view.Config         = Int2Double(tick.Config);
            Codec.Config        = tick.Config;
            view.Turnover       = Codec.GetTurnover(tick);
            view.AveragePrice   = Codec.GetAveragePrice(tick);
            view.LastPrice      = Codec.TickToPrice(tick.LastPrice);
            view.AskPrice1      = Codec.TickToPrice(tick.AskPrice1);
            view.Volume         = tick.Volume;
            view.OpenInterest   = tick.OpenInterest;
            view.TradingDay     = tick.TradingDay;
            view.ActionDay      = tick.ActionDay;
            view.Time_HHmm      = tick.Time_HHmm;
            view.Time_____ssf__ = tick.Time_____ssf__;
            view.Time________ff = tick.Time________ff;
            view.Bar            = Int2Double(tick.Bar);
            view.Static         = Int2Double(tick.Static);
            view.Split          = Int2Double(tick.Split);
            view.LocalTime_Msec = tick.LocalTime_Msec;
            view.DepthList      = Int2Double(tick.DepthList, descending);
            view.LoadQuote(descending);
            return(view);
        }
Example #3
0
        public PbTick Double2Int(PbTickView tick, bool descending)
        {
            if (tick == null)
            {
                return(null);
            }

            var field = new PbTick();

            // 利用此机会设置TickSize
            if (Codec == null)
            {
                Codec = new PbTickCodec();
            }
            field.Config = Double2Int(tick.Config);

            Codec.Config = field.Config;

            Codec.SetTurnover(field, tick.Turnover);
            Codec.SetAveragePrice(field, tick.AveragePrice);

            field.LastPrice = Codec.PriceToTick(tick.LastPrice);
            field.AskPrice1 = Codec.PriceToTick(tick.AskPrice1);

            field.Volume       = tick.Volume;
            field.OpenInterest = tick.OpenInterest;

            field.TradingDay     = tick.TradingDay;
            field.ActionDay      = tick.ActionDay;
            field.Time_HHmm      = tick.Time_HHmm;
            field.Time_____ssf__ = tick.Time_____ssf__;
            field.Time________ff = tick.Time________ff;

            field.Bar            = Double2Int(tick.Bar);
            field.Static         = Double2Int(tick.Static);
            field.Split          = Double2Int(tick.Split);
            field.LocalTime_Msec = tick.LocalTime_Msec;
            field.DepthList      = Double2Int(tick.DepthList, descending);

            return(field);
        }
Example #4
0
        public static void WriteCsv(IEnumerable<PbTick> list, string output)
        {
            if (list == null)
                return;

            PbTickCodec Codec = new PbTickCodec();

            // 将差分数据生成界面数据
            IEnumerable<PbTickView> _list = Codec.Data2View(Codec.Restore(list), false);

            // 保存
            using (TextWriter stream = new StreamWriter(output))
            {
                PbTickView t = new PbTickView();
                stream.WriteLine(t.ToCsvHeader());

                foreach (var l in _list)
                {
                    stream.WriteLine(l);
                }
                stream.Close();
            }
        }
Example #5
0
 public TimeSpan GetUpdateTime(PbTickView tickView)
 {
     return(GetUpdateTime(tickView.Time_HHmm, tickView.Time_____ssf__, tickView.Time________ff, 0));
 }
Example #6
0
 public void GetUpdateTime(PbTickView tickView, out int time, out int ms)
 {
     GetUpdateTime(tickView.Time_HHmm, tickView.Time_____ssf__, tickView.Time________ff, out time, out ms);
 }
        public PbTickView Int2Double(PbTick tick, bool descending)
        {
            if (tick == null)
                return null;

            var view = new PbTickView();

            // 利用此机会设置TickSize
            if (Codec == null) {
                Codec = new PbTickCodec();
            }
            view.Config = Int2Double(tick.Config);

            Codec.Config = tick.Config;

            view.Turnover = Codec.GetTurnover(tick);
            view.AveragePrice = Codec.GetAveragePrice(tick);

            view.LastPrice = Codec.TickToPrice(tick.LastPrice);
            view.AskPrice1 = Codec.TickToPrice(tick.AskPrice1);

            view.Volume = tick.Volume;
            view.OpenInterest = tick.OpenInterest;

            view.TradingDay = tick.TradingDay;
            view.ActionDay = tick.ActionDay;
            view.Time_HHmm = tick.Time_HHmm;
            view.Time_____ssf__ = tick.Time_____ssf__;
            view.Time________ff = tick.Time________ff;

            view.Bar = Int2Double(tick.Bar);
            view.Static = Int2Double(tick.Static);
            view.Split = Int2Double(tick.Split);
            view.LocalTime_Msec = tick.LocalTime_Msec;
            view.DepthList = Int2Double(tick.DepthList, descending);
            view.LoadQuote(descending);
            return view;
        }
Example #8
0
 public TimeSpan GetUpdateTime(PbTickView tickView)
 {
     return GetUpdateTime(tickView.Time_HHmm, tickView.Time_____ssf__, tickView.Time________ff, 0);
 }
Example #9
0
 public void GetUpdateTime(PbTickView tickView, out int time, out int ms)
 {
     GetUpdateTime(tickView.Time_HHmm, tickView.Time_____ssf__, tickView.Time________ff, out time, out ms);
 }
        private DepthMarketDataNClass PbTick2DepthMarketDataNClass(PbTickCodec codec, PbTickView tickView)
        {
            DepthMarketDataNClass marketData = new DepthMarketDataNClass();
            codec.GetUpdateTime(tickView, out marketData.UpdateTime, out marketData.UpdateMillisec);

            marketData.TradingDay = tickView.TradingDay;
            marketData.ActionDay = tickView.ActionDay;
            marketData.LastPrice = tickView.LastPrice;
            marketData.Volume = tickView.Volume;
            if (SubscribeExternData)
            {
                marketData.Turnover = tickView.Turnover;
                marketData.OpenInterest = tickView.OpenInterest;
                marketData.AveragePrice = tickView.AveragePrice;
                if (tickView.Bar != null)
                {
                    marketData.OpenPrice = tickView.Bar.Open;
                    marketData.HighestPrice = tickView.Bar.High;
                    marketData.LowestPrice = tickView.Bar.Low;
                    marketData.ClosePrice = tickView.Bar.Close;
                }
                if (tickView.Static != null)
                {
                    marketData.LowerLimitPrice = tickView.Static.LowerLimitPrice;
                    marketData.UpperLimitPrice = tickView.Static.UpperLimitPrice;
                    marketData.SettlementPrice = tickView.Static.SettlementPrice;
                    marketData.Symbol = tickView.Static.Symbol;
                    if (!string.IsNullOrWhiteSpace(tickView.Static.Exchange))
                    {
                        marketData.Exchange = Enum<ExchangeType>.Parse(tickView.Static.Exchange);
                    }
                    marketData.PreClosePrice = tickView.Static.PreClosePrice;
                    marketData.PreSettlementPrice = tickView.Static.PreSettlementPrice;
                    marketData.PreOpenInterest = tickView.Static.PreOpenInterest;
                }
            }

            int count = tickView.DepthList == null ? 0 : tickView.DepthList.Count;
            if (count > 0)
            {
                int AskPos = DepthListHelper.FindAsk1Position(tickView.DepthList, tickView.AskPrice1);
                int BidPos = AskPos - 1;
                int BidCount = BidPos + 1;
                int AskCount = count - AskPos;

                marketData.Bids = new DepthField[0];
                marketData.Asks = new DepthField[0];

                if(SubscribeBid)
                {
                    if(BidCount>0)
                    {
                        marketData.Bids = new DepthField[BidCount];
                        int j = 0;
                        for (int i = BidPos; i >= 0; --i)
                        {
                            marketData.Bids[j] = new DepthField()
                            {
                                Price = tickView.DepthList[i].Price,
                                Size = tickView.DepthList[i].Size,
                                Count = tickView.DepthList[i].Count,
                            };
                            ++j;
                        }
                    }
                }
                if (SubscribeAsk)
                {
                    if (AskCount > 0)
                    {
                        marketData.Asks = new DepthField[AskCount];

                        int j = 0;
                        for (int i = AskPos; i < count; ++i)
                        {
                            marketData.Asks[j] = new DepthField()
                            {
                                Price = tickView.DepthList[i].Price,
                                Size = tickView.DepthList[i].Size,
                                Count = tickView.DepthList[i].Count,
                            };
                            ++j;
                        }
                    }
                }
            }
            return marketData;
        }
        public PbTick Double2Int(PbTickView tick, bool descending)
        {
            if (tick == null)
                return null;

            PbTick field = new PbTick();

            // 利用此机会设置TickSize
            if (Codec == null)
            {
                Codec = new PbTickCodec();
            }
            field.Config = Double2Int(tick.Config);

            Codec.Config = field.Config;

            Codec.SetTurnover(field, tick.Turnover);
            Codec.SetAveragePrice(field, tick.AveragePrice);

            field.LastPrice = Codec.PriceToTick(tick.LastPrice);
            field.AskPrice1 = Codec.PriceToTick(tick.AskPrice1);

            field.Volume = tick.Volume;
            field.OpenInterest = tick.OpenInterest;

            field.TradingDay = tick.TradingDay;
            field.ActionDay = tick.ActionDay;
            field.Time_HHmm = tick.Time_HHmm;
            field.Time_____ssf__ = tick.Time_____ssf__;
            field.Time________ff = tick.Time________ff;

            field.Bar = Double2Int(tick.Bar);
            field.Static = Double2Int(tick.Static);
            field.Split = Double2Int(tick.Split);
            field.LocalTime_Msec = tick.LocalTime_Msec;
            field.DepthList = Double2Int(tick.DepthList, descending);

            return field;
        }
Example #12
0
 private static string getTime(PbTickView pbTickView)
 {
     return String.Format("{0}:{1}:{2}.{3}", 
         (pbTickView.Time_HHmm/100).ToString("D2"),
         (pbTickView.Time_HHmm%100).ToString("D2"),
         (pbTickView.Time_____ssf__ / 10).ToString("D2"),
         ((pbTickView.Time_____ssf__ % 10) * 100 + pbTickView.Time________ff).ToString("D3")
         );
 }