Пример #1
0
        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;
        }
Пример #2
0
        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;
        }
Пример #3
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;
        }
Пример #4
0
        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);
        }
Пример #5
0
        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");
        }