Skip to content

Commit af0741f

Browse files
committed
Update market-hours-database and create a unit test
1 parent f01700d commit af0741f

5 files changed

Lines changed: 74 additions & 178 deletions

File tree

Common/Securities/SecurityExchangeHours.cs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public HashSet<DateTime> BankHolidays
117117
/// </summary>
118118
public static SecurityExchangeHours AlwaysOpen(DateTimeZone timeZone)
119119
{
120-
var dayOfWeeks = Enum.GetValues(typeof(DayOfWeek)).OfType<DayOfWeek>();
120+
var dayOfWeeks = Enum.GetValues(typeof (DayOfWeek)).OfType<DayOfWeek>();
121121
return new SecurityExchangeHours(timeZone,
122122
Enumerable.Empty<DateTime>(),
123123
dayOfWeeks.Select(LocalMarketHours.OpenAllDay).ToDictionary(x => x.DayOfWeek),
@@ -282,7 +282,7 @@ public DateTime GetPreviousMarketOpen(DateTime localDateTime, bool extendedMarke
282282
for (int i = 0; i < 7; i++)
283283
{
284284
DateTime? potentialResult = null;
285-
foreach (var segment in marketHours.Segments.Reverse())
285+
foreach(var segment in marketHours.Segments.Reverse())
286286
{
287287
if ((time.Date + segment.Start <= localDateTime) &&
288288
(segment.State == MarketHoursState.Market || extendedMarketHours))
@@ -601,26 +601,16 @@ public LocalMarketHours GetMarketHours(DateTime localDateTime)
601601
// and add it before the segments previous to the lateOpenTime
602602
// Otherwise, just take the segments previous to the lateOpenTime
603603
List<MarketHoursSegment> segmentsLateOpen = null;
604-
var closeAllDay = false;
605604
if (hasLateOpen)
606605
{
607606
var index = 0;
608607
segmentsLateOpen = new List<MarketHoursSegment>();
609-
for (var i = 0; i < marketHoursSegments.Count; i++)
608+
for(var i = 0; i < marketHoursSegments.Count; i++)
610609
{
611610
var segment = marketHoursSegments[i];
612-
// If we're at the last segment and it ends before the late open time, the market is closed all day
613-
if (segment.End < lateOpenTime && i == marketHoursSegments.Count - 1)
614-
{
615-
closeAllDay = true;
616-
// Set index to the count to ensure TakeLast(0) later,
617-
// meaning no segments will be included after this point.
618-
index = marketHoursSegments.Count;
619-
break;
620-
}
621611
if (segment.Start <= lateOpenTime && lateOpenTime <= segment.End)
622612
{
623-
segmentsLateOpen.Add(new(segment.State, lateOpenTime, segment.End));
613+
segmentsLateOpen.Add(new (segment.State, lateOpenTime, segment.End));
624614
index = i + 1;
625615
break;
626616
}
@@ -637,8 +627,7 @@ public LocalMarketHours GetMarketHours(DateTime localDateTime)
637627

638628
// Since it could be the case we have a late open after an early close (the market resumes after the early close), we need to take
639629
// the segments before the early close and the segments after the late open and append them to obtain the expected market hours
640-
// unless market is closed all day
641-
if (segmentsEarlyClose != null && hasLateOpen && earlyCloseTime <= lateOpenTime && !closeAllDay)
630+
if (segmentsEarlyClose != null && hasLateOpen && earlyCloseTime <= lateOpenTime)
642631
{
643632
segmentsEarlyClose.AddRange(segmentsLateOpen);
644633
marketHoursSegments = segmentsEarlyClose;

0 commit comments

Comments
 (0)