Example #1
0
        MarketSeries IDataSource.GetMarketSeries(string key, DateTime?startDate, DateTime?endDate)
        {
            string    symbolCode;
            TimeFrame timeFrame;

            MarketSeriesUtilities.DecodeKey(key, out symbolCode, out timeFrame);
            return(this.GetMarketSeries(symbolCode, timeFrame, startDate, endDate));
        }
Example #2
0
        public MarketSeries GetMarketSeries(string key, DateTime?startDate = null, DateTime?endDate = null)
        {
            if (dict.ContainsKey(key))
            {
                var result = dict[key];

                if (startDate.HasValue && result.OpenTime.Count > 0)
                {
                    var diff = result.OpenTime[0] - startDate.Value;

                    string    symbolCode;
                    TimeFrame timeFrame;
                    MarketSeriesUtilities.DecodeKey(key, out symbolCode, out timeFrame);
                    if (diff > timeFrame.TimeSpan)
                    {
                        // TODO: Try to reload with requested startDate
                        Console.WriteLine($"WARN GetMarketSeries({key}) first data item has open time of {result.OpenTime[0]} but requested start time is {startDate.Value}");
                    }
                    // TODO - same check with endDate
                }
                return(result);
            }

            if (IsHistorical)
            {
                foreach (var source in Sources)
                {
                    var series = source.GetMarketSeries(key, startDate, endDate);
                    if (series == null)
                    {
                        continue;
                    }
                    dict.Add(key, series);
                    return(series);
                }
            }
            else
            {
                var split = key.Split(';');
                // TODO: Return null if live data not available
                var series = (MarketSeries)this.Feed.GetMarketSeries(split[0], split[1]); // REVIEW Cast
                dict.Add(key, series);
                return(series);
            }

            //foreach (var source in historical ? historicalMarketSeries : Data.Dat)
            //{
            //    var data = source[symbol]?[timeFrame];
            //    if (data != null) { return data; }
            //}
            return(null);
        }