public static DateTime ToGMTFromTZ(this DateTime date_, DisplayTimeZone zone_) { return TimeZoneHelper.ConvertDateTime(date_, zone_.GetTZInfo(), TimeZoneInfo.Utc); }
public static DateTime ToTZfromLocal(this DateTime date_, DisplayTimeZone zone_) { return TimeZoneHelper.ConvertDateTime(date_, TimeZoneInfo.Local, zone_.GetTZInfo()); }
public static DateTime FromTZToLocal(this DateTime date_, DisplayTimeZone zone_) { return TimeZoneHelper.ConvertDateTime(date_, zone_.GetTZInfo(), TimeZoneInfo.Local); }
public static bool IsIntoNextTradingDay(this DateTime date_, DisplayTimeZone zone_) { var marketClose = zone_.GetMarketCloseHour(); return date_.Hour >= marketClose; }
public HolidayCalendarAttribute(string code_, DisplayTimeZone displayTimezone_) { Code = code_; DisplayTimezone = displayTimezone_; }
public LiveRelativeDateMonitor(RDDateIndex[] dateIndexes_,DisplayTimeZone zone_) { m_dateIndexes = dateIndexes_; m_zone = zone_; GenerateValue(); }
public static LiveRelativeDateMonitor GetMonitor(RDDateIndex[] dates_, DisplayTimeZone zone_) { return _cache.ContainsKey(dates_[0].Date) ? _cache[dates_[0].Date] : _cache[dates_[0].Date] = new LiveRelativeDateMonitor(dates_,zone_); }
private static async Task getFromCarbon(IEnumerable<string> possibleIdentifiers_, IDictionary<RelativeDate, Line> values_, RDDateIndex[] dateIndexes_, DisplayTimeZone zone_, DayField valueField_, DayField volumeField_, CarbonClient cc_) { var startDate = dateIndexes_.Select(x => x.Date).Min().AddDays(-3d); var endDate = dateIndexes_.Select(x => x.Date).Max().AddDays(1d); var result = await cc_.GetTimeSeriesAsync(possibleIdentifiers_, "intra", startDate, endDate); if (result == null) { Logger.Info( string.Format("Could not get results back from carbon for tickers=[{0}], with startdate={1} and enddate={2}", string.Join(",", possibleIdentifiers_), startDate.ToString("dd-MMM-yyyy"), endDate.ToString("dd-MMM-yyyy")), typeof (CarbonHelper)); return; } foreach (var id in possibleIdentifiers_) { var set = result.FirstOrDefault(x => x.Identifier.Equals(id)); if (set == null) continue; foreach (var row in set.Series) { // need to have timestamp and price in order to be a value row... if ( !row.ContainsKey(CarbonFields.TimeStamp) || !row.ContainsKey(CarbonFields.CloseAsk) || !row.ContainsKey(CarbonFields.CloseBid)) continue; var tsGMTstr = row.GetString(CarbonFields.TimeStamp); DateTime tsGMT; if (!DateTime.TryParseExact(tsGMTstr, "yyyyMMdd HHmmss.fff", CultureInfo.InvariantCulture,DateTimeStyles.None, out tsGMT)) continue; // convert gmt to the timezone that we're interested in var tsTZ = tsGMT.ToTZfromGMT(zone_); // create a relative date object so we can check if we need this line var rd = new RelativeDate(dateIndexes_, tsTZ, zone_); if (rd.Index == RelativeDate.INVALID_INDEX) continue; var closeBid = row.GetDouble(CarbonFields.CloseBid); var closeAsk = row.GetDouble(CarbonFields.CloseAsk); if (!closeBid.HasValue || !closeAsk.HasValue || closeBid.Value.IsZero() || closeAsk.Value.IsZero()) continue; var closeMid = (closeBid.Value + closeAsk.Value)/2d; if (!values_.ContainsKey(rd)) values_[rd] = new Line { GMTDateTime = tsGMT.ToString(Line.MongoDateFormat) }; double volume = 0d; if (row.ContainsKey(CarbonFields.Volume)) { var vol = row.GetDouble(CarbonFields.Volume); volume = vol ?? 0d; } values_[rd].SetValue(valueField_, closeMid); values_[rd].SetValue(volumeField_, volume); } // if one of the tickers returned values for the given start/end date, then we don't need to consider the next one break; } }