/// <summary> /// Вычисление фактического взвешенного торгового времени (по алгоритму Liquid.Pro) /// между двумя датами по расписанию ФОРТС на 19.09.2017. /// </summary> /// <param name="end">конечная дата</param> /// <param name="beg">начальная дата</param> /// <param name="daysinEndYear">количество дней в году, который указан в поздней из двух дат</param> public static double GetDtLiquidProRtsTradingTime(DateTime end, DateTime beg, out double daysInEndYear) { daysInEndYear = LiquidProTimeModelRepository.GetDaysInYear(end.Year); if (end == beg) { return(0); // Совпадающие даты всегда имеют нулевое расстояние } else if (end < beg) { return(-GetDtLiquidProRtsTradingTime(beg, end, out daysInEndYear)); // При "неправильном" порядке дат делаю рекурсивный вызов } double dT = LiquidProTimeModelRepository.GetYearPartBetween(beg, end); return(dT); }
/// <summary> /// Получить полное количество торговых дней в году с учетом их весов. /// (Результат кешируется в статической коллекции для ускорения последующих обращений) /// </summary> /// <param name="year">год, который нас интересует</param> /// <returns>полное количество торговых дней в году с учетом их весов</returns> public static double GetLiquidProRtsTradingDaysInYear(int year) { double daysInYear = LiquidProTimeModelRepository.GetDaysInYear(year); return(daysInYear); }