public void PrevMonth() { string month = ""; monthNumber--; if (monthNumber < 1) { if (cycleThroughMonth) { if (monthNumber < 1) { monthNumber = 12; } else { monthNumber = 1; } } } if (monthNumber < 1) { monthNumber = 1; } month = CalendarUtils.GetMonthFull(monthNumber); monthInput.text = month; print("PrevMonth: " + monthNumber); }
public void RefreshCalendar() { ClearCalendar(); monthDigit = CalendarUtils.GetMonthDigit(month, true); daysInMonth = GetDaysInMonth(int.Parse(year), int.Parse(monthDigit)); // Debug.Log( "RefreshCalendar - monthDigit: " + monthDigit + ", year: " + year + " , daysInMonth: " + daysInMonth ); UpdateCalendar(); }
public ActionResult GetCalendar(string resNo) { BlueGreenContext bgcontext = new BlueGreenContext(); var reservation = bgcontext.GetActiveReservation(resNo, ResortService.RESERVATION_TYPE_FUTURE); var bytes = CalendarUtils.GenerateEvent(reservation); return(this.File(bytes, "text/calendar", "BlueGreenVacations.ics")); }
public void GetGoodFriday() { Assert.AreEqual("2000-04-21", CalendarHelper.GetGoodFriday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-04-13", CalendarHelper.GetGoodFriday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-03-29", CalendarHelper.GetGoodFriday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-04-18", CalendarHelper.GetGoodFriday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-04-09", CalendarHelper.GetGoodFriday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-03-25", CalendarHelper.GetGoodFriday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-04-14", CalendarHelper.GetGoodFriday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-04-06", CalendarHelper.GetGoodFriday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-03-21", CalendarHelper.GetGoodFriday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-04-10", CalendarHelper.GetGoodFriday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-04-02", CalendarHelper.GetGoodFriday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-04-22", CalendarHelper.GetGoodFriday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-04-06", CalendarHelper.GetGoodFriday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-03-29", CalendarHelper.GetGoodFriday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-04-18", CalendarHelper.GetGoodFriday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-04-03", CalendarHelper.GetGoodFriday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-03-25", CalendarHelper.GetGoodFriday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-04-14", CalendarHelper.GetGoodFriday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-03-30", CalendarHelper.GetGoodFriday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-04-19", CalendarHelper.GetGoodFriday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-04-10", CalendarHelper.GetGoodFriday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-04-02", CalendarHelper.GetGoodFriday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-04-15", CalendarHelper.GetGoodFriday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-04-07", CalendarHelper.GetGoodFriday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-03-29", CalendarHelper.GetGoodFriday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-04-18", CalendarHelper.GetGoodFriday(2025).ToString("yyyy-MM-dd")); Assert.AreEqual("2000-04-21", CalendarUtils.GetGoodFriday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-04-13", CalendarUtils.GetGoodFriday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-03-29", CalendarUtils.GetGoodFriday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-04-18", CalendarUtils.GetGoodFriday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-04-09", CalendarUtils.GetGoodFriday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-03-25", CalendarUtils.GetGoodFriday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-04-14", CalendarUtils.GetGoodFriday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-04-06", CalendarUtils.GetGoodFriday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-03-21", CalendarUtils.GetGoodFriday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-04-10", CalendarUtils.GetGoodFriday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-04-02", CalendarUtils.GetGoodFriday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-04-22", CalendarUtils.GetGoodFriday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-04-06", CalendarUtils.GetGoodFriday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-03-29", CalendarUtils.GetGoodFriday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-04-18", CalendarUtils.GetGoodFriday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-04-03", CalendarUtils.GetGoodFriday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-03-25", CalendarUtils.GetGoodFriday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-04-14", CalendarUtils.GetGoodFriday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-03-30", CalendarUtils.GetGoodFriday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-04-19", CalendarUtils.GetGoodFriday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-04-10", CalendarUtils.GetGoodFriday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-04-02", CalendarUtils.GetGoodFriday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-04-15", CalendarUtils.GetGoodFriday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-04-07", CalendarUtils.GetGoodFriday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-03-29", CalendarUtils.GetGoodFriday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-04-18", CalendarUtils.GetGoodFriday(2025).ToString("yyyy-MM-dd")); }
public void GetWhitSunday() { Assert.AreEqual("2000-06-11", CalendarHelper.GetWhitSunday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-06-03", CalendarHelper.GetWhitSunday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-05-19", CalendarHelper.GetWhitSunday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-06-08", CalendarHelper.GetWhitSunday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-05-30", CalendarHelper.GetWhitSunday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-05-15", CalendarHelper.GetWhitSunday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-06-04", CalendarHelper.GetWhitSunday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-05-27", CalendarHelper.GetWhitSunday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-05-11", CalendarHelper.GetWhitSunday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-05-31", CalendarHelper.GetWhitSunday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-05-23", CalendarHelper.GetWhitSunday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-06-12", CalendarHelper.GetWhitSunday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-05-27", CalendarHelper.GetWhitSunday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-05-19", CalendarHelper.GetWhitSunday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-06-08", CalendarHelper.GetWhitSunday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-05-24", CalendarHelper.GetWhitSunday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-05-15", CalendarHelper.GetWhitSunday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-06-04", CalendarHelper.GetWhitSunday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-05-20", CalendarHelper.GetWhitSunday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-06-09", CalendarHelper.GetWhitSunday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-05-31", CalendarHelper.GetWhitSunday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-05-23", CalendarHelper.GetWhitSunday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-06-05", CalendarHelper.GetWhitSunday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-05-28", CalendarHelper.GetWhitSunday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-05-19", CalendarHelper.GetWhitSunday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-06-08", CalendarHelper.GetWhitSunday(2025).ToString("yyyy-MM-dd")); Assert.AreEqual("2000-06-11", CalendarUtils.GetWhitSunday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-06-03", CalendarUtils.GetWhitSunday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-05-19", CalendarUtils.GetWhitSunday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-06-08", CalendarUtils.GetWhitSunday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-05-30", CalendarUtils.GetWhitSunday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-05-15", CalendarUtils.GetWhitSunday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-06-04", CalendarUtils.GetWhitSunday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-05-27", CalendarUtils.GetWhitSunday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-05-11", CalendarUtils.GetWhitSunday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-05-31", CalendarUtils.GetWhitSunday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-05-23", CalendarUtils.GetWhitSunday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-06-12", CalendarUtils.GetWhitSunday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-05-27", CalendarUtils.GetWhitSunday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-05-19", CalendarUtils.GetWhitSunday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-06-08", CalendarUtils.GetWhitSunday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-05-24", CalendarUtils.GetWhitSunday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-05-15", CalendarUtils.GetWhitSunday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-06-04", CalendarUtils.GetWhitSunday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-05-20", CalendarUtils.GetWhitSunday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-06-09", CalendarUtils.GetWhitSunday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-05-31", CalendarUtils.GetWhitSunday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-05-23", CalendarUtils.GetWhitSunday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-06-05", CalendarUtils.GetWhitSunday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-05-28", CalendarUtils.GetWhitSunday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-05-19", CalendarUtils.GetWhitSunday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-06-08", CalendarUtils.GetWhitSunday(2025).ToString("yyyy-MM-dd")); }
private void UpdateCalendar() { Debug.WriteLine("Start UpdateCalendar()"); var rowNum = CalendarUtils.CalcRowSize(_year, _month); var calendarDateRowHeight = (Height * 0.8) / rowNum; var rowCollections = new RowDefinitionCollection(); rowCollections.Add(calendarGrid.RowDefinitions[0]); for (var i = 0; i < rowNum; i++) { rowCollections.Add(new RowDefinition { Height = calendarDateRowHeight }); } calendarGrid.RowDefinitions = rowCollections; var prevMonthDay = CalendarUtils.CalcPrevMonthDays(_year, _month); Debug.WriteLine("既存のカレンダー削除"); calendarGrid.Children.Clear(); Debug.WriteLine("カレンダー作成"); InitCalendarHeader(); for (var i = 0; i < rowNum; i++) { for (var j = 1; j <= 7; j++) { var idx = (i * 7) + j; var dateTime = CalendarUtils.CalcDate(_year, _month, prevMonthDay, idx); var cell = new Cell(dateTime.Year, dateTime.Month, dateTime.Day) { Index = idx - 1 }; if (dateTime.Year == _year && dateTime.Month == _month) { cell.BackgroundColor = Color.White; } else { cell.BackgroundColor = Color.Gray; } Debug.WriteLine("{0}-{1}-{2}", dateTime.Year, dateTime.Month, dateTime.Day); calendarGrid.Children.Add(cell, j - 1, i + 1); } } var pickerDateTime = new DateTime(_year, _month, 1); thisMonth.Text = $"{pickerDateTime.Year}年{pickerDateTime.Month}月"; Debug.WriteLine("End UpdateCalendar()"); }
public void GetPalmSunday() { Assert.AreEqual("2000-04-16", CalendarHelper.GetPalmSunday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-04-08", CalendarHelper.GetPalmSunday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-03-24", CalendarHelper.GetPalmSunday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-04-13", CalendarHelper.GetPalmSunday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-04-04", CalendarHelper.GetPalmSunday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-03-20", CalendarHelper.GetPalmSunday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-04-09", CalendarHelper.GetPalmSunday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-04-01", CalendarHelper.GetPalmSunday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-03-16", CalendarHelper.GetPalmSunday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-04-05", CalendarHelper.GetPalmSunday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-03-28", CalendarHelper.GetPalmSunday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-04-17", CalendarHelper.GetPalmSunday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-04-01", CalendarHelper.GetPalmSunday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-03-24", CalendarHelper.GetPalmSunday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-04-13", CalendarHelper.GetPalmSunday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-03-29", CalendarHelper.GetPalmSunday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-03-20", CalendarHelper.GetPalmSunday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-04-09", CalendarHelper.GetPalmSunday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-03-25", CalendarHelper.GetPalmSunday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-04-14", CalendarHelper.GetPalmSunday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-04-05", CalendarHelper.GetPalmSunday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-03-28", CalendarHelper.GetPalmSunday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-04-10", CalendarHelper.GetPalmSunday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-04-02", CalendarHelper.GetPalmSunday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-03-24", CalendarHelper.GetPalmSunday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-04-13", CalendarHelper.GetPalmSunday(2025).ToString("yyyy-MM-dd")); Assert.AreEqual("2000-04-16", CalendarUtils.GetPalmSunday(2000).ToString("yyyy-MM-dd")); Assert.AreEqual("2001-04-08", CalendarUtils.GetPalmSunday(2001).ToString("yyyy-MM-dd")); Assert.AreEqual("2002-03-24", CalendarUtils.GetPalmSunday(2002).ToString("yyyy-MM-dd")); Assert.AreEqual("2003-04-13", CalendarUtils.GetPalmSunday(2003).ToString("yyyy-MM-dd")); Assert.AreEqual("2004-04-04", CalendarUtils.GetPalmSunday(2004).ToString("yyyy-MM-dd")); Assert.AreEqual("2005-03-20", CalendarUtils.GetPalmSunday(2005).ToString("yyyy-MM-dd")); Assert.AreEqual("2006-04-09", CalendarUtils.GetPalmSunday(2006).ToString("yyyy-MM-dd")); Assert.AreEqual("2007-04-01", CalendarUtils.GetPalmSunday(2007).ToString("yyyy-MM-dd")); Assert.AreEqual("2008-03-16", CalendarUtils.GetPalmSunday(2008).ToString("yyyy-MM-dd")); Assert.AreEqual("2009-04-05", CalendarUtils.GetPalmSunday(2009).ToString("yyyy-MM-dd")); Assert.AreEqual("2010-03-28", CalendarUtils.GetPalmSunday(2010).ToString("yyyy-MM-dd")); Assert.AreEqual("2011-04-17", CalendarUtils.GetPalmSunday(2011).ToString("yyyy-MM-dd")); Assert.AreEqual("2012-04-01", CalendarUtils.GetPalmSunday(2012).ToString("yyyy-MM-dd")); Assert.AreEqual("2013-03-24", CalendarUtils.GetPalmSunday(2013).ToString("yyyy-MM-dd")); Assert.AreEqual("2014-04-13", CalendarUtils.GetPalmSunday(2014).ToString("yyyy-MM-dd")); Assert.AreEqual("2015-03-29", CalendarUtils.GetPalmSunday(2015).ToString("yyyy-MM-dd")); Assert.AreEqual("2016-03-20", CalendarUtils.GetPalmSunday(2016).ToString("yyyy-MM-dd")); Assert.AreEqual("2017-04-09", CalendarUtils.GetPalmSunday(2017).ToString("yyyy-MM-dd")); Assert.AreEqual("2018-03-25", CalendarUtils.GetPalmSunday(2018).ToString("yyyy-MM-dd")); Assert.AreEqual("2019-04-14", CalendarUtils.GetPalmSunday(2019).ToString("yyyy-MM-dd")); Assert.AreEqual("2020-04-05", CalendarUtils.GetPalmSunday(2020).ToString("yyyy-MM-dd")); Assert.AreEqual("2021-03-28", CalendarUtils.GetPalmSunday(2021).ToString("yyyy-MM-dd")); Assert.AreEqual("2022-04-10", CalendarUtils.GetPalmSunday(2022).ToString("yyyy-MM-dd")); Assert.AreEqual("2023-04-02", CalendarUtils.GetPalmSunday(2023).ToString("yyyy-MM-dd")); Assert.AreEqual("2024-03-24", CalendarUtils.GetPalmSunday(2024).ToString("yyyy-MM-dd")); Assert.AreEqual("2025-04-13", CalendarUtils.GetPalmSunday(2025).ToString("yyyy-MM-dd")); }
static void Main() { var calendarUtils = new CalendarUtils(); var startDate = new DateTime(1901, 1, 1); var endDate = new DateTime(2000, 12, 31); var sundayOnFirstOfMonth = calendarUtils.GetSundaysThatAreOnTheFirstDayOfMonth(startDate, endDate); Console.WriteLine($"Number of Sundays on the first of the month during the 20th century: {sundayOnFirstOfMonth.Count}"); Console.ReadKey(); }
/// <summary> /// 根据日线创建周线 /// </summary> /// <param name="begin"></param> /// <param name="end"></param> /// <returns></returns> public KLine CreateWeek(DateTime begin, DateTime end) { KLine weekKLine = new KLine(this.Code, TimeUnit.week); DateTime d = CalendarUtils.GetWeek(begin, DayOfWeek.Friday); while (d <= end) { KLineItem weekItem = new KLineItem(); DateTime t = d; KLineItem t1 = this.GetNearest(t, false); if (t1 == null) { d = d.AddDays(7); continue; } weekItem.SetValue <double>("close", t1.CLOSE); t1 = this.GetNearest(t.AddDays(-4), true, 0); if (t1 == null) { d = d.AddDays(7); continue; } weekItem.SetValue <double>("close", t1.OPEN); int index = this.IndexOf(t1); double high = 0; double low = 0; while (index < this.Count && this[index].Date <= d) { if (high == 0 || high < this[index].HIGH) { high = this[index].HIGH; } if (low > this[index].LOW) { low = this[index].LOW; } index += 1; } if (low == 0 || high == 0) { d = d.AddDays(7); continue; } weekItem.SetValue <double>("high", high); weekItem.SetValue <double>("low", low); weekItem.SetValue <DateTime>("time", d); weekItem.SetValue <String>("code", Code); weekKLine.Add(weekItem); d = d.AddDays(7); } return(weekKLine); }
static void Main(string[] args) { var startDate = new DateTime(Convert.ToInt32(args[1]), Convert.ToInt32(args[0]), 01); var endDate = startDate.AddDays(DateTime.DaysInMonth(startDate.Year, startDate.Month)).AddDays(-1); var calendarUtils = new CalendarUtils(_holidayTerms, _ascTerms); var service = calendarUtils.CreateService(ApplicationName); var days = calendarUtils.GenerateDays(startDate, endDate, service); calendarUtils.GenerateCalendar(startDate, days, Color.LimeGreen, Color.BurlyWood); }
private void button1_Click(object sender, EventArgs e) { pictureBox1.Visible = true; char[] charSeparators = new char[] { ',' }; button1.Enabled = false; var startDate = new DateTime(Convert.ToInt32(txtYear.Text), Convert.ToInt32(txtMonth.Text), 01); var endDate = startDate.AddDays(DateTime.DaysInMonth(startDate.Year, startDate.Month)).AddDays(-1); var holidayTerms = txtHolidayTerms.Text.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries).ToList(); var ascTerms = txtAscTerms.Text.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries).ToList(); var calendarUtils = new CalendarUtils(holidayTerms, ascTerms); var service = calendarUtils.CreateService(_applicationName); var days = calendarUtils.GenerateDays(startDate, endDate, service); calendarUtils.GenerateCalendar(startDate, days, _holidayColour, _ascColour); button1.Enabled = true; pictureBox1.Visible = false; }
public void SetFormat() { if (labelDisplay == LabelDisplay.UsFormat) { string year = dateTime.Year.ToString(); string day = dateTime.Day.ToString(); day = CalendarUtils.GetDayDigit(day, addZero); string month = dateTime.ToString("MM"); // 03 // if( addZero && month.Length == 1 ) month = "0" + day; month = CalendarUtils.GetMonthDigit(month, addZero); dateLabel.text = month + dateDelim + day + dateDelim + year; } if (labelDisplay == LabelDisplay.EuFormat) { string year = dateTime.Year.ToString(); string day = dateTime.Day.ToString(); day = CalendarUtils.GetDayDigit(day, addZero); string month = dateTime.ToString("MM"); // 03 month = CalendarUtils.GetMonthDigit(month, addZero); // if( addZero && month.Length == 1 ) month = "0" + month; dateLabel.text = day + dateDelim + month + dateDelim + year; } if (labelDisplay == LabelDisplay.UsFormatFull) { string year = dateTime.Year.ToString(); string day = dateTime.Day.ToString(); day = CalendarUtils.GetDayDigit(day, addZero); string month = dateTime.ToString("MMMM"); // 03 dateLabel.text = month + dateDelim + day + dateDelim + year; } if (labelDisplay == LabelDisplay.EuFormatFull) { string year = dateTime.Year.ToString(); string day = dateTime.Day.ToString(); day = CalendarUtils.GetDayDigit(day, addZero); string month = dateTime.ToString("MMMM"); // 03 dateLabel.text = day + dateDelim + month + dateDelim + year; } }
public void NextMonth() { string month = ""; monthNumber++; if (monthNumber > 12) { if (cycleThroughMonth) { monthNumber = 1; } else { monthNumber = 12; } } month = CalendarUtils.GetMonthFull(monthNumber); monthInput.text = month; print("NextMonth: " + monthNumber); }
public string SaveDate(string saveName) { string saveDate = ""; day = CalendarUtils.GetDayDigit(day, true); monthDigit = CalendarUtils.GetMonthDigit(month, true); monthDigitSaved = monthDigit; yearSaved = year; // Standarized for DateTime saveDate = year + "-" + monthDigit + "-" + day; // if( usFormat ) { // saveDate = monthDigit + dateDelim + day + dateDelim + year; // } // else { // saveDate = day + dateDelim + monthDigit + dateDelim + year; // } PlayerPrefs.SetString(saveName, saveDate); // Debug.Log( "SaveDate date saved: " + saveDate ); return(saveDate); }
/// <summary> /// 画坐标轴 /// </summary> /// <param name="g"></param> private void drawAsix(Graphics g) { //画X轴 g.DrawLine(xasixPen, origin.X, origin.Y, this.Width, origin.Y); //画Y轴 g.DrawLine(xasixPen, origin.X, origin.Y, origin.X, 0); //找到所有时间单位 List <DateTime> datetimes = null; if (timeUnit == TimeUnit.day)//如果数据时间单位是日 { datetimes = CalendarUtils.WorkDayList(this.beginTime, this.endTime); } else if (timeUnit == TimeUnit.week) { datetimes = CalendarUtils.WorkWeekList(this.beginTime, this.endTime); } if (datetimes == null) { return; } //计算每个时间单位的像素数 int pixelNumPerTimeunit = AxisXLength / datetimes.Count; }
/// <summary> /// 执行卖出操作 /// </summary> /// <param name="tradeRecord"></param> /// <param name="strategyParam"></param> /// <param name="backtestParam"></param> public virtual void Execute(TradeRecords tradeRecord, Properties strategyParam, BacktestParameter backtestParam) { #region 1初始化行情库 if (tradeRecord == null) { return; } IndicatorRepository repository = (IndicatorRepository)backtestParam.Get <Object>("repository"); if (repository == null) { return; } #endregion #region 2 取得策略参数 int p_maxbuynum = strategyParam.Get <int>("maxbuynum", 0); double p_maxprofilt = strategyParam.Get <double>("maxprofilt"); int p_maxholddays = strategyParam.Get <int>("maxholddays"); double p_stoploss = strategyParam.Get <double>("stoploss"); int p_choosedays = strategyParam.Get <int>("choosedays"); double p_chooseprofilt = strategyParam.Get <double>("chooseprofilt"); double p_addholdprofilt = strategyParam.Get <double>("addholdprofilt"); double p_addholdamount = strategyParam.Get <double>("addholdamount"); #endregion String code = tradeRecord.Code; List <TradeBout> bouts = tradeRecord.Bouts; #region 3 遍历每一个买入回合 for (int i = 0; i < bouts.Count; i++) { #region 3.1 取得该回合的行情数据 TradeBout bout = bouts[i]; TimeSerialsDataSet ds = repository[bout.Code]; if (ds == null) { continue; } if (bout.Completed) { continue; //跳过已完成的 } KLine kline = ds.DayKLine; if (kline == null) { continue; } bool chooseToSell = false;//择机卖出状态,是指持仓价值较低 int bIndex = kline.IndexOf(bout.BuyInfo.TradeDate); if (bIndex < 0) { continue; } KLineItem klineItemDay = kline[bIndex]; DateTime d = klineItemDay.Date; #endregion #region 3.2 如果超过了最大持仓数限制,该回合跳过 if (p_maxbuynum > 0) { //计算当前回合的买入日期这天有多少持仓 int count = 0; bouts.ForEach(x => { if (x.Completed && bout.BuyInfo.TradeDate.Date >= x.BuyInfo.TradeDate.Date && bout.BuyInfo.TradeDate.Date < x.SellInfo.TradeDate.Date) { count++; } }); if (count > p_maxbuynum) { continue; } } #endregion #region 3.3 寻找卖点 String reason = ""; for (int index = bIndex + 1; index < kline.Count; index++) { klineItemDay = kline[index]; d = klineItemDay.Date; #region A 计算以当日最高价和收盘价卖出的盈利 double diff = klineItemDay.HIGH - bout.BuyInfo.TradePrice; double percentHigh = diff / bout.BuyInfo.TradePrice; diff = klineItemDay.CLOSE - bout.BuyInfo.TradePrice; double percentClose = diff / bout.BuyInfo.TradePrice; #endregion #region B 盈利超过预定 if (p_maxprofilt > 0 && percentHigh >= p_maxprofilt) //盈利超过预定 { double price = bout.BuyInfo.TradePrice * (1 + p_maxprofilt); int amount = bout.BuyInfo.Amount; bout.RecordTrade(2, klineItemDay.Date, TradeDirection.Sell, price, amount, backtestParam.Volumecommission, backtestParam.Stampduty, "盈利>=" + p_maxprofilt.ToString("F2")); break; } #endregion #region C 择机卖出状态 if (chooseToSell) { for (int t = 0; t < p_choosedays; t++) { index += t; if (index >= kline.Count) { break; } double percent = (kline[index].HIGH - bout.BuyInfo.TradePrice) / bout.BuyInfo.TradePrice; if (percent >= p_chooseprofilt) { double price = bout.BuyInfo.TradePrice * (1 + p_chooseprofilt); int amount = bout.BuyInfo.Amount; bout.RecordTrade(2, kline[index].Date, TradeDirection.Sell, price, amount, backtestParam.Volumecommission, backtestParam.Stampduty, (reason == "" ? "" : reason + ",并") + "在第" + (t + 1).ToString() + "天择机卖出"); break; } } if (!bout.Completed) { if (index >= kline.Count) { return; } double price = kline[index].CLOSE; int amount = bout.BuyInfo.Amount; bout.RecordTrade(2, kline[index].Date, TradeDirection.Sell, price, amount, backtestParam.Volumecommission, backtestParam.Stampduty, (reason == "" ? "" : reason + ",并") + "择机强制卖出"); } break; } #endregion #region D 持仓超过n天进入到择机卖出状态 if (p_maxholddays != 0 && CalendarUtils.WorkDayCount(bout.BuyInfo.TradeDate, klineItemDay.Date) >= p_maxholddays) { reason = "持仓超过" + p_maxholddays.ToString() + "天"; chooseToSell = true; continue; } #endregion #region E 达到止损线,进入到择机卖出状态 double loss = (klineItemDay.LOW - bout.BuyInfo.TradePrice) / bout.BuyInfo.TradePrice; if (p_stoploss > 0 && loss < 0 && loss < -1 * p_stoploss) { reason = "达到止损" + p_stoploss.ToString("F2"); bout.RecordTrade(2, d, TradeDirection.Sell, bout.BuyInfo.TradePrice * (1 - p_stoploss), bout.BuyInfo.Amount, backtestParam.Volumecommission, backtestParam.Stampduty, reason); break; } #endregion #region F调用子类的算法来寻找卖点 if (!bout.Completed) { chooseToSell = DoSell(code, bout, d, strategyParam, backtestParam, out reason); } if (bout.Completed) { break; } #endregion #region 判断是否加仓或者减仓 if (p_addholdprofilt > 0 && p_addholdamount > 0) { if (percentClose > p_addholdprofilt) { int addamount = (int)(bout.BuyInfo.Amount * p_addholdamount); TradeInfo tradeInfo = new TradeInfo(); tradeInfo.Code = bout.Code; tradeInfo.Amount = addamount; tradeInfo.Direction = TradeDirection.Buy; tradeInfo.Reason = "加仓"; tradeInfo.Fee = backtestParam.Volumecommission; tradeInfo.Stamps = backtestParam.Stampduty; tradeInfo.TradeDate = klineItemDay.Date; tradeInfo.TradePrice = klineItemDay.CLOSE; bout.BuyInfo.TradePrice = (bout.BuyInfo.Amount * bout.BuyInfo.TradePrice + addamount * klineItemDay.CLOSE) / (bout.BuyInfo.Amount + addamount); bout.BuyInfo.Amount += addamount; } } #endregion } #endregion //寻找卖点结束 } #endregion //遍历每一个买入回合结束 }
public virtual ITimeSeries Zoomout(TimeUnit tu, DateTime begin, DateTime end) { Func <List <T>, T> merger = this.getElementMerger(); if (merger == null) { return(null); } if (this.Count <= 0) { return(null); } if (begin < this[0].Date) { begin = this[0].Date; } if (end > this[this.Count - 1].Date) { end = this[this.Count - 1].Date; } List <T> items = new List <T>(); TimeSeries <T> result = (TimeSeries <T>) this.GetType().GetConstructor(new Type[] { typeof(String), typeof(TimeUnit) }).Invoke(new Object[] { code, tu }); /* * DateTime d = begin; * KeyValuePair<int, ITimeSeriesItem> kv = this.GetNearest(d); * if (kv.Value == null) * return null; * int index = kv.Key; * while(index < this.Count) * { * int n = CalendarUtils.TimeUnitGetSerialNo(this[index].Date,tu); * if (n == 1) * break; * index += 1; * } * * DateTime[] dayRange = null; * for (int i=index;i<this.Count;i++) * { * d = this[i].Date; * if(dayRange == null) * dayRange = CalendarUtils.TimeUnitRange(d, tu); * if(d<=dayRange[1]) * { * items.Add(this[i]); * continue; * } * T newItem = merger(items); * if (newItem != null) * result.Add(newItem); * dayRange = null; * * } */ DateTime d = begin; while (d <= end) { DateTime[] dayRange = CalendarUtils.TimeUnitRange(d, tu); //找到d所在的周期的第一天 KeyValuePair <int, ITimeSeriesItem> kvBegin = this.GetNearest(dayRange[0]); KeyValuePair <int, ITimeSeriesItem> kvEnd = this.GetNearest(dayRange[1]); items.Clear(); for (int i = kvBegin.Key; i <= kvEnd.Key; i++) { items.Add(this[i]); } T newItem = merger(items); if (newItem != null) { result.Add(newItem); } d = CalendarUtils.TimeUnitNextDate(d, tu); } return(result); }
public void SetCalendar(bool loadData) { if (targetCalendarPanel != null) { // clean it up first listDayObject.Clear(); // listDays.Clear(); int childIdx = 0; foreach (Transform t in targetCalendarPanel.transform) { if (childIdx > 0) { Destroy(t.gameObject); } childIdx++; } // ClearCalendar (); if (loadData) { LoadDate(); } monthButton.transform.GetChild(0).GetComponent <Text>().text = month; dateTimeNow = System.DateTime.Now; monthDigit = CalendarUtils.GetMonthDigit(month, true); daysInMonth = GetDaysInMonth(int.Parse(year), int.Parse(monthDigit)); // previous month int fillPrevMonthDays = 0; // Debug.Log( "SetCalendar - monthDigit: " + monthDigit + ", year: " + year + " , daysInMonth: " + daysInMonth ); DateTime dateTimeDay1 = DateTime.Parse(year + "/" + monthDigit + "/" + 1); if (!dateTimeDay1.DayOfWeek.Equals("Monday")) { int yearDigitPrev = int.Parse(year); int monthDigitPrev = int.Parse(monthDigit) - 1; if (monthDigitPrev < 1) { monthDigitPrev = 12; yearDigitPrev = yearDigitPrev - 1; } // Debug.Log ( "fillPrevMonthDays: " + dateTimeDay1.DayOfWeek ); if (dateTimeDay1.DayOfWeek.ToString().Equals("Tuesday")) { fillPrevMonthDays = 1; } else if (dateTimeDay1.DayOfWeek.ToString().Equals("Wednesday")) { fillPrevMonthDays = 2; } else if (dateTimeDay1.DayOfWeek.ToString().Equals("Thursday")) { fillPrevMonthDays = 3; } else if (dateTimeDay1.DayOfWeek.ToString().Equals("Friday")) { fillPrevMonthDays = 4; } else if (dateTimeDay1.DayOfWeek.ToString().Equals("Saturday")) { fillPrevMonthDays = 5; } else if (dateTimeDay1.DayOfWeek.ToString().Equals("Sunday")) { fillPrevMonthDays = 6; } int daysInMonthPrev = GetDaysInMonth(yearDigitPrev, monthDigitPrev); // int k = 0; for (int i = daysInMonthPrev - fillPrevMonthDays + 1; i <= daysInMonthPrev; i++) { string dayString = i + ""; DateTime dateTime = DateTime.Parse(yearDigitPrev + "/" + monthDigitPrev + "/" + i); // dayString += " " + dateTime.DayOfWeek; //ToString("MM/dd/yyyy");; // listDays.Add( dayString ); GameObject g = Instantiate(contentCalDay) as GameObject; g.SetActive(true); g.transform.SetParent(targetCalendarPanel.transform); g.name = dateTime.ToString("MM/dd/yyyy"); g.transform.GetComponent <Image>().color = prevMonthDayColor; g.transform.localScale = Vector3.one; g.transform.localPosition = Vector3.zero; // g.transform.GetComponent<Button>().onClick.AddListener( // if is an external prefab listDayObject.Add(g); g.transform.GetChild(0).GetComponent <Text>().text = listDayObject[listDayObject.Count - 1].name.Split('/')[1]; // listDays[listDays.Count-1]; // k++; } } // current month for (int i = 1; i <= daysInMonth; i++) { string dayString = i + ""; DateTime dateTime = DateTime.Parse(year + "/" + monthDigit + "/" + i); // dayString += " " + dateTime.DayOfWeek; //ToString("MM/dd/yyyy");; // listDays.Add( dayString ); GameObject g = Instantiate(contentCalDay) as GameObject; g.SetActive(true); g.transform.SetParent(targetCalendarPanel.transform); g.name = dateTime.ToString("MM/dd/yyyy"); g.transform.localScale = Vector3.one; g.transform.localPosition = Vector3.zero; SetDayColor(g, dayString); listDayObject.Add(g); g.transform.GetChild(0).GetComponent <Text>().text = listDayObject[listDayObject.Count - 1].name.Split('/')[1]; //listDays[listDays.Count-1]; } // next month int monthDigitNext = int.Parse(monthDigit) + 1; int yearDigitNext = int.Parse(year); if (monthDigitNext > 12) { monthDigitNext = 1; yearDigitNext = yearDigitNext + 1; } int gridCount = rows * cols; int len = gridCount - listDayObject.Count; // listDays.Count; for (int i = 1; i <= len; i++) { string dayString = i + ""; DateTime dateTime = DateTime.Parse(yearDigitNext + "/" + monthDigitNext + "/" + i); // dayString += " " + dateTime.DayOfWeek; //ToString("MM/dd/yyyy");; // listDays.Add( dayString ); GameObject g = Instantiate(contentCalDay) as GameObject; g.SetActive(true); g.transform.SetParent(targetCalendarPanel.transform); g.name = dateTime.ToString("MM/dd/yyyy"); // g.transform.GetChild(0).GetComponent<Text>().text = dayString; //listDays[listDays.Count-1]; g.transform.GetComponent <Image>().color = nextMonthDayColor; g.transform.localScale = Vector3.one; g.transform.localPosition = Vector3.zero; listDayObject.Add(g); g.transform.GetChild(0).GetComponent <Text>().text = listDayObject[listDayObject.Count - 1].name.Split('/')[1]; //listDays[listDays.Count-1]; } } }
public override TradeInfo DoSell(HoldRecord holdRecord, DateTime d, Properties strategyParam, StrategyContext context) { if (holdRecord == null) { return(null); } //取得行情库 IndicatorRepository repository = (IndicatorRepository)context.Get <Object>("repository"); if (repository == null) { return(null); } TimeSerialsDataSet ds = repository[holdRecord.code]; if (ds == null) { return(null); } KLine klineDay = ds.DayKLine; KLineItem klineItemDay = klineDay[d]; if (klineItemDay == null) { return(null); } //取得策略参数 double p_maxprofilt = strategyParam.Get <double>("maxprofilt"); int p_maxholddays = strategyParam.Get <int>("maxholddays"); double p_stoploss = strategyParam.Get <double>("stoploss"); int p_choosedays = strategyParam.Get <int>("choosedays"); double p_chooseprofilt = strategyParam.Get <double>("chooseprofilt"); GrailParameter p_grail = GrailParameter.Parse(strategyParam.Get <String>("grail")); double stampduty = context.Get <double>("stampduty"); double volumecommission = context.Get <double>("volumecommission"); //大盘要求必须卖 if (p_grail.MustSell(d, holdRecord.code)) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "大盘指数要求卖出" }; return(tradeInfo); } double profilt = (klineItemDay.CLOSE - holdRecord.buyPrice) / holdRecord.buyPrice; //判断是否到达最大收益 if (p_maxprofilt > 0) { if (profilt >= p_maxprofilt) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "盈利达到" + p_maxprofilt.ToString("F2") }; return(tradeInfo); } } //盈利超过个股预期 if (holdRecord.expect > 0) { if (profilt >= p_maxprofilt) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "盈利达到个股预期" + holdRecord.expect.ToString("F2") }; return(tradeInfo); } } //预期要求立即卖出 if (holdRecord.expect == -1) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "个股预期极低" }; return(tradeInfo); } //个股观望天数超过预期 int holdDays = CalendarUtils.WorkDayCount(holdRecord.buyDate, d); if (holdRecord.expect < 0) { if (holdDays >= holdRecord.expect * -1) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "个股预期观望超过" + (-1 * holdRecord.expect).ToString() + "天" }; return(tradeInfo); } } //达到止损线 if (p_stoploss > 0) { if (-1 * profilt > p_stoploss) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "到达止损线" + p_stoploss.ToString("F2") }; return(tradeInfo); } } //达到最大持仓天数 if (p_maxholddays > 0) { if (holdDays > p_maxholddays) { TradeInfo tradeInfo = new TradeInfo() { Direction = TradeDirection.Sell, Code = holdRecord.code, Amount = holdRecord.amount, EntrustPrice = klineItemDay.CLOSE, EntrustDate = d, TradeDate = d, TradePrice = klineItemDay.CLOSE, Stamps = stampduty, Fee = volumecommission, TradeMethod = TradeInfo.TM_AUTO, Reason = "到达最大持仓天数" + p_maxholddays.ToString() }; return(tradeInfo); } } return(null); }
public override TradeRecords DoBuy(TimeSerialsDataSet ds, Properties strategyParam, BacktestParameter backtestParam) { TimeSeries <ITimeSeriesItem <List <double> > > dayFunds = ds.FundTrendCreateOrLoad(TimeUnit.day); TimeSeries <ITimeSeriesItem <List <double> > > weekFunds = ds.FundTrendCreateOrLoad(TimeUnit.week); TimeSeries <ITimeSeriesItem <double> > dayCross = ds.FundTrendCrossCreateOrLoad(TimeUnit.day); TimeSeries <ITimeSeriesItem <double> > weekCross = ds.FundTrendCrossCreateOrLoad(TimeUnit.day); if (dayFunds == null || dayFunds.Count <= 0 || weekFunds == null || weekFunds.Count <= 0 || dayCross == null || dayCross.Count <= 0 || weekCross == null || weekCross.Count <= 0) { return(null); } TradeRecords tr = new TradeRecords(ds.Code); DateTime begin = backtestParam.BeginDate; DateTime end = backtestParam.EndDate; double p_day_low = strategyParam.Get <double>("day_low"); double p_day_bias = strategyParam.Get <double>("day_bias"); double p_week_low = strategyParam.Get <double>("week_low"); double p_week_bias = strategyParam.Get <double>("week_bias"); GetInMode p_getinMode = (GetInMode)strategyParam.Get <Object>("getinMode"); for (int i = 0; i < dayFunds.Count; i++) { ITimeSeriesItem <List <double> > dayFundItem = dayFunds[i]; if (dayFundItem == null) { continue; } if (dayFundItem.Date < begin || dayFundItem.Date >= end) { continue; } if ((dayFundItem.Value[0] - dayFundItem.Value[1]) < p_day_bias) { continue; } DateTime td = CalendarUtils.GetWeek(dayFundItem.Date, DayOfWeek.Friday); ITimeSeriesItem <List <double> > weekFundItem = weekFunds[td]; if (weekFundItem == null) { continue; } if ((weekFundItem.Value[0] - weekFundItem.Value[1]) < p_week_bias) { continue; } KLine dayLine = ds.DayKLine; if (dayLine == null) { continue; } KLineItem dayLineItem = dayLine[dayFundItem.Date]; if (dayLineItem == null) { continue; } TradeBout bout = new TradeBout(ds.Code); bout.RecordTrade(1, dayFundItem.Date, TradeDirection.Buy, dayLineItem.CLOSE, (int)(p_getinMode.Value / dayLineItem.CLOSE), 0, 0, Name); tr.Bouts.Add(bout); } return(tr); }
public void Initialize() { _calendarUtils = new CalendarUtils(); }