17 using System.Collections.Generic;
20 using Newtonsoft.Json;
36 private readonly
bool _forceExchangeAlwaysOpen =
Config.
GetBool(
"force-exchange-always-open");
52 if (_alwaysOpenMarketHoursDatabase ==
null)
54 _alwaysOpenMarketHoursDatabase =
new AlwaysOpenMarketHoursDatabaseImpl();
57 return _alwaysOpenMarketHoursDatabase;
74 : base(exchangeHours,
FromDataFolder, (entry, other) => entry.Update(other))
159 dataTimeZone = dataTimeZone ?? exchangeHours.
TimeZone;
161 var entry =
new Entry(dataTimeZone, exchangeHours);
199 if (!
TryGetEntry(market, symbol, securityType, out entry))
202 Log.
Error($
"MarketHoursDatabase.GetExchangeHours(): {Messages.MarketHoursDatabase.ExchangeHoursNotFound(key, Entries.Keys)}");
213 throw new ArgumentException(exception);
245 if (_forceExchangeAlwaysOpen)
251 return Entries.TryGetValue(symbolKey, out entry)
253 ||
Entries.TryGetValue(symbolKey.CreateCommonKey(), out entry)
298 internal void Update(
Entry other)
305 class AlwaysOpenMarketHoursDatabaseImpl : MarketHoursDatabase
309 DateTimeZone dataTimeZone;
310 DateTimeZone exchangeTimeZone;
311 if (
TryGetEntry(market, symbol, securityType, out entry))
313 dataTimeZone = entry.DataTimeZone;
314 exchangeTimeZone = entry.ExchangeHours.TimeZone;
318 dataTimeZone = exchangeTimeZone = TimeZones.Utc;
321 entry =
new Entry(dataTimeZone, SecurityExchangeHours.AlwaysOpen(exchangeTimeZone));
325 public AlwaysOpenMarketHoursDatabaseImpl()