Я думаю, что что-то упустил. Я хочу определить дату самого последнего дня, начинающегося за N дней до текущего дня, когда финансовый рынок открыт. Я произвольно ограничил продолжительность экзамена 5 днями. Обратите внимание, что самый последний день кандидата может быть сегодня (N = 0).
У меня есть код, который работает с использованием пакета timeDate, но мой код неуклюжий. Должен быть более простой способ, но я не смог его найти. Предложения?
FindRecentTradeDay <- function(strt_srch_lag, max_days)
{
# Find the most recent trading day starting the search backwards
# from current day lagged by 'strt_srch_lag' days (integer days)
# e.g., if strt_srch_lag == 0, start the search today. Search
# backward is limited to 'max_days' (integer) backward from start.
# Uses the package 'timeDate'. Returns a class date object.
my_holidays <- as.Date(timeDate::holidayNYSE(year =
getRmetricsOptions("currentYear")))
for(i in strt_srch_lag:(max_days + strt_srch_lag))
{
a_day <- as.Date(Sys.Date() - i)
if(!any(my_holidays == a_day) & !timeDate::isWeekend(a_day)) break
}
if(i >= max_days + strt_srch_lag)
stop("Error in FindRecentTradeDay! Not found!")
return(a_day)