public override DataSeries AddDataSeries(Instrument instrument, byte type, BarType barType = BarType.Time, long barSize = 60)
        {
            if (type == DataObjectType.Bar)
            {
                return(GetBarDataSeriesInCache(instrument, barType, barSize, true));
            }

            var series = this.byType[type][instrument.Id];

            if (series == null)
            {
                string name = DataSeriesNameHelper.GetName(instrument, type);
                series = GetDataSeries(name);
                if (series == null)
                {
                    series = CreateDataSeries(name);
                    this.dataFile.Write(name, series);
                }
                this.byType[type][instrument.Id] = series;
            }
            return(series);
        }
        public override List <DataSeries> GetDataSeriesList(Instrument instrument = null, string pattern = null)
        {
            var keys = this.dataFile.Keys.Values.Where(k => k.TypeId == ObjectType.DataSeries && (instrument == null || DataSeriesNameHelper.GetSymbol(k.Name) == instrument.Symbol) && (pattern == null || k.Name.Contains(pattern)));

            return(keys.Select(k => GetDataSeries(k.Name)).ToList());
        }
Exemple #3
0
        private void Subscribe(Instrument instrument, DateTime dateTime1, DateTime dateTime2)
        {
            Console.WriteLine($"{DateTime.Now} DataSimulator::Subscribe {instrument.Symbol}");
            var list = new List <DataSeries>();

            if (SubscribeTrade)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Trade, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeBid)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Bid, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeAsk)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Ask, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeQuote)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Quote, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeBar)
            {
                var dataSeriesList = this.framework.DataManager.GetDataSeriesList(instrument, "Bar");
                foreach (DataSeries series in dataSeriesList)
                {
                    if (BarFilter.Count != 0)
                    {
                        BarType barType;
                        long    barSize;
                        DataSeriesNameHelper.TryGetBarTypeSize(series, out barType, out barSize);
                        if (!BarFilter.Contains(barType, barSize))
                        {
                            continue;
                        }
                    }
                    list.Add(series);
                }
            }
            if (SubscribeLevelII)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Level2, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeFundamental)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.Fundamental, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }
            if (SubscribeNews)
            {
                var series = this.framework.DataManager.GetDataSeries(instrument, DataObjectType.News, BarType.Time, 60);
                if (series != null)
                {
                    list.Add(series);
                }
            }

            foreach (var s in list)
            {
                this.emitters.Add(CreateDataSeriesEmitter(s, dateTime1, dateTime2));
            }
        }