public static DateTime FirstTradingDateOfTheMonth(this WealthScript obj, DateTime date) { date = Convert.ToDateTime(date.Month + "/1/" + date.Year); // First day of the month date = obj.TradingDateOnOrAfter(date); // Trading date on or after the first day of the month return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.FirstTradingDateOfTheMonth(currentDate); */ public static DateTime FirstTradingDateOfTheWeek(this WealthScript obj, DateTime date) { date = date.AddDays(-(int)date.DayOfWeek); // Sunday of the week date = obj.NextTradingDate(date); // Next trading date return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.FirstTradingDateOfTheWeek(currentDate); */ public static DateTime FirstTradingDateOfTheYear(this WealthScript obj, DateTime date) { date = Convert.ToDateTime("1/1/" + (date.Year)); // First day of the year date = obj.TradingDateOnOrAfter(date); // Trading day on or after the first day of the year return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.FirstTradingDateOfTheYear(currentDate); */ public static DateTime LastTradingDayOfTheMonth(this WealthScript obj, DateTime date) { date = Convert.ToDateTime(date.AddMonths(1)); // Day of the next month date = obj.FirstTradingDateOfTheMonth(date); // First trading date the next month date = obj.PreviousTradingDate(date); // Previous trading day return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.LastTradingDayOfTheMonth(currentDate); */ public static DateTime LastTradingDateOfTheWeek(this WealthScript obj, DateTime date) { date = date.AddDays(7 - (int)date.DayOfWeek); // Saturday of the week date = obj.PreviousTradingDate(date); // Previous trading date return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.LastTradingDateOfTheWeek(currentDate); */ public static DateTime LastTradingDayOfTheYear(this WealthScript obj, DateTime date) { date = Convert.ToDateTime("12/31/" + (date.Year)); // Last day of the next year date = obj.TradingDateOnOrBefore(date); // Previous trading date return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.LastTradingDayOfTheYear(currentDate); */ public static DateTime NextTradingDate(this WealthScript obj, DateTime date) { bool tradingDay = false; // Set this to false initially while(tradingDay == false) { // As long as it is not a trading day date = date.AddDays(1); // add one day tradingDay = TradingDay(obj, date); // Check to see if it is a trading day } return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.NextTradingDate(currentDate); */ public static DateTime PreviousTradingDate(this WealthScript obj, DateTime date) { bool tradingDay = false; // Set this to false initially while(tradingDay == false) { // As long as it is not a trading day date = date.AddDays(-1); // subtract one day tradingDay = TradingDay(obj, date); // Check to see if it is a trading day } return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.PreviousTradingDate(currentDate); */ public static DateTime TradingDateOnOrAfter(this WealthScript obj, DateTime date) { // Returns the first trading day which is on or after the date if(!obj.TradingDay(date)) // It is not a trading day, date = obj.NextTradingDate(date); // get the next trading date return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.TradingDateOnOrAfter(currentDate); */ public static DateTime TradingDateOnOrBefore (this WealthScript obj, DateTime date) { // Returns the first trading day which is on or after the date if(!obj.TradingDay(date)) // It is not a trading date, date = obj.PreviousTradingDate(date); // get the previous trading date return date; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); DateTime newDate = this.TradingDateOnOrBefore(currentDate); */ public static bool TradingDay (this WealthScript obj, DateTime date) { bool tradingDay = !obj.Bars.MarketInfo.Holidays.Contains(date); // The day is not in the list of holidays if(tradingDay // It is a trading day && (date.DayOfWeek == DayOfWeek.Saturday // and it is a Saturday || date.DayOfWeek == DayOfWeek.Sunday)) // or a Sunday tradingDay = false; // It is not a trading day return tradingDay; } /* Wealth-Lab code example DateTime currentDate = Convert.ToDateTime("1/1/2000"); Bool tradingDay = this.TradingDay(currentDate); */