/// <summary> /// Initializes a new instance of the <see cref="EquityExchangeModel"/> class. /// </summary> /// <param name="configexchangename">The configexchangename.</param> /// <param name="clock">The clock.</param> /// <param name="extendedmarkethours">if set to <c>true</c> [extendedmarkethours].</param> /// <exception cref="ArgumentException"> /// Configuration exchangeModel name cannot be empty. /// </exception> public EquityExchangeModel(string configexchangename, WorldClock clock, bool extendedmarkethours) { //Check configuration if (string.IsNullOrWhiteSpace(configexchangename)) { throw new ArgumentException("Configuration exchangeModel name cannot be empty."); } //Load config var config = Config.MarketHourConfig.FirstOrDefault(x => x.Exchanges.Contains(configexchangename)); if (config == null) { throw new ArgumentException($"Could not load configuration with name {configexchangename}"); } //Set information WorldClock = clock; TimeZone = (TimeZone)Enum.Parse(typeof(TimeZone), config.TimeZone); LocalMarketSessionDay = new LocalMarketSessionDay(configexchangename); LocalHoliday = new LocalHoliday(configexchangename, LocalMarketSessionDay); Name = configexchangename; ExtendedMarketHours = extendedmarkethours; }
/// <summary> /// Returns the local market session day instance and checks for holidays /// </summary> /// <param name="localtime"></param> /// <returns></returns> private LocalMarketSessionDay GetDaysSession(DateTime localtime) => LocalHoliday.IsHoliday(localtime.Date) ? LocalHoliday.GetHolidaySession(localtime.Date) : LocalMarketSessionDay;