Пример #1
0
        private (DateTime, double, double) GetEndDate(DateTime startDate, ParRateElf parRateInfo)
        {
            DateTime endDate = default(DateTime); //# 到期的實際日期
            double   days    = 0;                 //# 從交易日至到期日總天數
            double   daysAct = 0;                 //# 總天數 / Actual

            //# 表示驗證用, 會改寫days及daysAct
            if (parRateInfo.FakeDays > 0)
            {
                days    = parRateInfo.FakeDays;
                daysAct = days / ACTUAL;
                endDate = m_tradeDateAx.AdjustTradeDate(startDate.AddDays(parRateInfo.FakeDays));
            }
            else
            {
                #region 取到期日
                if (parRateInfo.Unit == EnumTenorUnit.Day)
                {
                    if (parRateInfo.Tenor == 1 || parRateInfo.Tenor == 2) //# O/N, T/N
                    {
                        endDate = m_tradeDateAx.AddTradeDate(startDate, parRateInfo.Tenor);
                    }
                    else
                    {
                        endDate = m_tradeDateAx.AdjustTradeDate(startDate.AddDays(parRateInfo.Tenor));
                    }
                }
                if (parRateInfo.Unit == EnumTenorUnit.Month)
                {
                    endDate = m_tradeDateAx.AdjustTradeDate(startDate.AddMonths(parRateInfo.Tenor));
                }
                if (parRateInfo.Unit == EnumTenorUnit.Year)
                {
                    endDate = m_tradeDateAx.AdjustTradeDate(startDate.AddYears(parRateInfo.Tenor));
                }
                #endregion 取到期日
                days    = (endDate - this.TradeDate).TotalDays;
                daysAct = days / ACTUAL;
            }
            return(endDate, days, daysAct);
        }