private static TimeSpan getTimespan(DataFrequencyType freqType_, int freqNum_) { TimeSpan ret = TimeSpan.MaxValue; switch (freqType_) { case DataFrequencyType.D: ret = new TimeSpan(days: freqNum_, hours: 0, minutes: 0, seconds: 0); break; case DataFrequencyType.M: ret = new TimeSpan(hours: 0, minutes: freqNum_, seconds: 0); break; case DataFrequencyType.H: ret = new TimeSpan(hours: freqNum_, minutes: 0, seconds: 0); break; } return ret; }
public static string GetDataAsXml(StaticFuture sf_, DateTime startDate_, DateTime endDate_, TZ timezone_, int freqNum_, DataFrequencyType freqType_) { Constructs.ConstructGen<double> con = null; if (estimateReturnRowCount(startDate_, endDate_, freqNum_, freqType_) > _maxReturnRowCount) return XmlStringForGenericTableErrorMessage(string.Format("Call would exceed max row return row count of {0}", _maxReturnRowCount)); using (var db = new DBHelper()) { con = GetHistData(sf_, startDate_, endDate_, timezone_, freqNum_, freqType_, db); } if (con == null) return null; return con.Dates.Select(x => new { Date = x.ToString("dd-MMM-yyyy HH:mm"), Price = con.GetValue(x, 0) }).ToGenericTableXml(); }
private static Constructs.ConstructGen<double> GetHistData(StaticFuture sf_, DateTime startDate_, DateTime endDate_, TZ timezone_, int freqNum_, DataFrequencyType freqType_, DBHelper db_) { var retriever = DataRetrievers.RetrieverBase.GetRetriever(timezone_, freqType_, startDate_, endDate_); var rawData = retriever.GetData(db_, sf_); if (rawData == null || rawData.Dates == null || rawData.Dates.Count == 0) return null; SLog.log.Debug(string.Format("RawDataCount from Database: {0}", rawData.Dates.Count.ToString())); var timespan = getTimespan(freqType_, freqNum_); var filled = rawData.GetSubsetOnTimespan(startDate_, timespan); SLog.log.Debug(string.Format("After fillout, datacount is: {0}", filled.Dates.Count.ToString())); if (filled.NeedsToSortKeys()) filled.SortKeys(); return filled; }
private static int estimateReturnRowCount(DateTime startDate_, DateTime endDate_, int freqNum_, DataFrequencyType freqType_) { var timespan = endDate_ - startDate_; int estimatedRowCount = 0; switch (freqType_) { case DataFrequencyType.D: estimatedRowCount = Convert.ToInt32(timespan.TotalDays / (double)freqNum_); break; case DataFrequencyType.H: estimatedRowCount = Convert.ToInt32(timespan.TotalHours / (double)freqNum_); break; case DataFrequencyType.M: estimatedRowCount = Convert.ToInt32(timespan.TotalMinutes / (double)freqNum_); break; } return estimatedRowCount; }
public static RetrieverBase GetRetriever(TZ tz_, DataFrequencyType freqType_, DateTime startDate_, DateTime endDate_) { RetrieverBase ret = null; switch (freqType_) { case DataFrequencyType.D: ret = new DailyRetriever(startDate_, endDate_, tz_); break; case DataFrequencyType.H: case DataFrequencyType.M: ret = new AllRetriever(startDate_, endDate_, tz_); break; } return ret; }