public Deal(Stock _stock = null, int type = 0) { analyzData = new AnalyzeData(); stock = _stock; eType = type; buy_date = 0; buy_price = 0; buy_shares = 0; buy_money = 0; buy_poundage = 0; buy_total_money = 0; sell_date = 0; sell_price = 0; sell_low = 0; sell_shares = 0; sell_money = 0; sell_poundage = 0; sell_total_money = 0; shares_available = 0; bonus = 0; ESellReason = ESR.EPR_None; }
public AnalyzeData(AnalyzeData other) { count_days = other.count_days; max_drawdown = other.max_drawdown; max_climb = other.max_climb; total_returns = other.total_returns; count = other.count; average_days = other.average_days; average_returns = other.average_returns; annual_returns = other.annual_returns; //returns_list = new List<double>(); //volatility = 0; }
public Deal(Deal other) { stock = other.stock; analyzData = new AnalyzeData(other.analyzData); buy_date = other.buy_date; buy_price = other.buy_price; buy_shares = other.buy_shares; buy_money = other.buy_money; buy_poundage = other.buy_poundage; buy_total_money = other.buy_total_money; sell_date = other.sell_date; sell_price = other.sell_price; sell_low = other.sell_low; sell_money = other.sell_money; sell_poundage = other.sell_poundage; sell_total_money = other.sell_total_money; bonus = other.bonus; ESellReason = other.ESellReason; }
public static int SumData(ref AnalyzeData sumData, ref List <AnalyzeData> analyzData_List) { sumData.count = analyzData_List.Count; for (int i = 0; i < analyzData_List.Count; i++) { Debug.Assert(analyzData_List[i].count_days != 0); sumData.count_days += analyzData_List[i].count_days; if (sumData.max_drawdown > analyzData_List[i].max_drawdown) { sumData.max_drawdown = analyzData_List[i].max_drawdown; } if (sumData.max_climb < analyzData_List[i].max_climb) { sumData.max_climb = analyzData_List[i].max_climb; } sumData.total_returns += analyzData_List[i].total_returns - 100; } if (sumData.count == 0) { sumData.max_drawdown = 0; sumData.max_climb = 0; sumData.total_returns = 0; } else { sumData.count_days = sumData.count_days / sumData.count; sumData.total_returns = Utility.Round2(sumData.total_returns); sumData.average_returns = Utility.Round2(sumData.total_returns / sumData.count + 100); //sumData.annual_returns = Utility.Round2(sumData.total_returns / sumData.count_days * 250 + 100); } //sumData.total_returns += 100; return(EST.EST_OK); }
public static void WriteDataMining_StrategyStatistics() { int i, year; Utility.Log("==================== WriteDataMining_StrategyStatistics"); Utility.Log("DmList.Count = " + TDList.Count); Utility.Log("==================== 1"); Dictionary <int, List <AnalyzeData> > Year_DataList_Dic = new Dictionary <int, List <AnalyzeData> >(); List <AnalyzeData> DmList_analyzData_List = new List <AnalyzeData>(); for (i = 0; i < TDList.Count; i++) { Debug.Assert(TDList[i].deal.analyzData.count_days != 0); year = Utility.GetYear(TDList[i].deal.buy_date); if (Year_DataList_Dic.ContainsKey(year)) { List <AnalyzeData> analyzData_List; Year_DataList_Dic.TryGetValue(year, out analyzData_List); analyzData_List.Add(TDList[i].deal.analyzData); } else { List <AnalyzeData> analyzData_List = new List <AnalyzeData>(); analyzData_List.Add(TDList[i].deal.analyzData); Year_DataList_Dic.Add(year, analyzData_List); } DmList_analyzData_List.Add(TDList[i].deal.analyzData); } Year_DataList_Dic.Add(0, DmList_analyzData_List); Utility.Log("==================== 2"); Dictionary <int, AnalyzeData> Year_SumData_Dic = new Dictionary <int, AnalyzeData>(); List <int> ls_yskey = new List <int>(Year_DataList_Dic.Keys); for (i = 0; i < Year_DataList_Dic.Count; i++) { year = ls_yskey[i]; List <AnalyzeData> analyzData_List; Year_DataList_Dic.TryGetValue(year, out analyzData_List); if (analyzData_List == null) { continue; } AnalyzeData sumData = new AnalyzeData(); AnalyzeData.SumData(ref sumData, ref analyzData_List); Year_SumData_Dic.Add(year, sumData); } Utility.Log("==================== 3"); //////////////////// write ///////////////////// string CutTime = DateTime.Now.ToString("yyyy-MM-dd") + " " + Utility.GetClock(); string relativePath = "/Data/DataMining/StrategyStatistics[" + CutTime + "].csv"; string path = System.Environment.CurrentDirectory + relativePath; Utility.Log("WriteContent " + path); if (File.Exists(path) && Utility.IsFileNotOpen(path)) { File.Delete(path); } FileStream fs = new FileStream(path, FileMode.CreateNew); StreamWriter sw = new StreamWriter(fs, Encoding.Default); string line = "Year,A_Count,A_CntDays,A_TolReturns,A_AvgReturns"; sw.WriteLine(line); List <int> year_List = new List <int>(Year_SumData_Dic.Keys); year_List.Sort(); for (i = 0; i < year_List.Count; i++) { line = ""; year = year_List[i]; line += year; line += "," + Year_SumData_Dic[year].count; line += "," + Year_SumData_Dic[year].count_days; line += "," + Year_SumData_Dic[year].total_returns; line += "," + Year_SumData_Dic[year].average_returns; sw.WriteLine(line); } sw.Close(); fs.Close(); Utility.Log("==================== 4"); }