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)); }
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); }