private static void ReportGroupByTradeStartTime(Report report, BestTradeTime bestTradeTime) { var dict = new Dictionary <int, List <Tuple <int[], int[]> > >(); foreach (var t in bestTradeTime.Calculate()) { int tradeStartTime = t.Item1[2]; if (!dict.ContainsKey(tradeStartTime)) { dict[tradeStartTime] = new List <Tuple <int[], int[]> >(); } dict[tradeStartTime].Add(t); } var list = new List <Tuple <int[], int[]> >(); foreach (var tuples in dict.Values) { list.Add(tuples.OrderByDescending(t => bestTradeTime.Comparator(t.Item2)).First()); } foreach (var t in list.OrderByDescending(t => bestTradeTime.Comparator(t.Item2))) { foreach (var time in t.Item1) { report.Write(bestTradeTime.HMString(time)); } foreach (var c in t.Item2) { report.Write(c); } report.WriteLine(); } }
private void 日時ベスト夏時間5年_Click(object sender, EventArgs e) { RunTask(sender, (Report report) => { report.Version = 6; report.IsForceOverride = true; report.Comment = "冬時間"; report.SetHeader("start", "end", "start", "end", "↑↑", "↑↓", "↓↑", "↓↓"); var bestTradeTime = new BestTradeTime(GetM30Candles(new TimeSpan(365 * 5, 0, 0, 0))) { IsSummerTime = true }; foreach (var t in bestTradeTime.Calculate(100)) { foreach (var time in t.Item1) { report.Write(bestTradeTime.HMString(time)); } foreach (var c in t.Item2) { report.Write(c); } report.WriteLine(); } }); }
private static void ReportGroupByTradeStartAndEndTime(Report report, BestTradeTime bestTradeTime) { var dict = new Dictionary <int[], List <Tuple <int[], int[]> > >(); foreach (var t in bestTradeTime.Calculate()) { if (bestTradeTime.Comparator(t.Item2) < 5500) { continue; } int tradeStartTime = t.Item1[2]; int tradeEndTime = t.Item1[3]; int[] key = new int[] { tradeStartTime, tradeEndTime }; if (!dict.ContainsKey(key)) { dict[key] = new List <Tuple <int[], int[]> >(); } dict[key].Add(t); } var list = new List <Tuple <int[], int[]> >(); foreach (var tuples in dict.Values) { int[] pre = null; foreach (var t in tuples.OrderByDescending(t => bestTradeTime.Comparator(t.Item2))) { if (pre != null) { if (IsIntersect(pre, t.Item1)) { continue; } } pre = t.Item1; list.Add(t); } } foreach (var t in list.OrderByDescending(t => bestTradeTime.Comparator(t.Item2)).Take(10000)) { foreach (var time in t.Item1) { report.Write(bestTradeTime.HMString(time)); } foreach (var c in t.Item2) { report.Write(c); } report.WriteLine(); } }
private void 日時上下ベスト(object sender, EventArgs e) { RunTask(sender, (Report report) => { report.Version = 1; report.IsForceOverride = true; report.Comment = ""; report.SetHeader("start", "end", "start", "end", "↑↑", "↑↓", "↓↑", "↓↓"); BestTradeTime bestTradeTime = new BestTradeTime(new CandlesticksReader().Read(DATA_PATH + @"\m30-5y.csv")); bestTradeTime.Comparator = f => f[1] - f[0]; foreach (var t in bestTradeTime.Calculate(100)) { foreach (var time in t.Item1) { report.Write(bestTradeTime.HMString(time)); } foreach (var c in t.Item2) { report.Write(c); } report.WriteLine(); } }); }