Esempio n. 1
0
        static Dictionary <string, DividendData> GetDividendData(string path)
        {
            Dictionary <string, DividendData> dicDividendData = new Dictionary <string, DividendData>();

            string[] lines = new string[] { };
            using (StreamReader sr = new StreamReader(path, true))
            {
                lines = sr.ReadToEnd().Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
            }
            for (int i = 1; i < lines.Length; i++)
            {
                string[] tokens        = lines[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                string   Year          = tokens[0];
                double   CashDividend  = DoubleParse(tokens[3]);
                double   ShareDividend = DoubleParse(tokens[6]);
                dicDividendData[Year] = new DividendData(Year, CashDividend, ShareDividend);
            }
            return(dicDividendData);
        }
Esempio n. 2
0
 static void UpdateMonthData(List <MonthData> monthDatas, Dictionary <string, DividendData> dicDividend)
 {
     for (int i = 0; i < monthDatas.Count - 1; i++)
     {
         string monthCode = monthDatas[i].MonthCode;
         string month     = monthCode.Substring(3);
         if (month != "08") // 假設9月第一個交易日將現金股息以當日開盤價買入
         {
             monthDatas[i].ValueCostRatio = monthDatas[i + 1].StartPrice / monthDatas[i].StartPrice;
         }
         else
         {
             int year = int.Parse(monthCode.Substring(0, 2));
             year += year < 50 ? 2000 : 1900;
             if (dicDividend.Keys.Contains(year.ToString()))
             {
                 DividendData dividendData = dicDividend[year.ToString()];
                 double       newShare     = dividendData.ShareDividend / 10;                          //配股股數
                 double       newCash      = dividendData.CashDividend / monthDatas[i + 1].StartPrice; //配息買得股數
                 monthDatas[i].ValueCostRatio = (monthDatas[i + 1].StartPrice / monthDatas[i].StartPrice) * (1 + newShare + newCash);
             }
         }
     }
 }