/// <summary> /// Define an enumerable date range of tradeable dates - skip the holidays and weekends when securities in this algorithm don't trade. /// </summary> /// <param name="exchange">The security to get tradeable dates for</param> /// <param name="from">Start date</param> /// <param name="thru">End date</param> /// <returns>Enumerable date range</returns> public static IEnumerable<DateTime> EachTradeableDay(SecurityExchange exchange, DateTime from, DateTime thru) { for (var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1)) { if (exchange.DateIsOpen(day)) { yield return day; } } }