Beispiel #1
0
        static void Main(string[] args)
        {
            Dictionary <string, string> dic = ProcessParam(args);
            string stock = dic["-stock"];     //"002693";
            string startDate = dic["-start"]; //"2013-05-01";
            string endDate, filter;

            if (dic.ContainsKey("-end"))
            {
                endDate = dic["-end"];
            }
            else
            {
                endDate = StockUtil.FormatDate(DateTime.Now);
            }

            if (dic.ContainsKey("-filter"))
            {
                filter = dic["-filter"];
            }
            else
            {
                filter = "500";
            }

            StockLog.Log.Info(stock + " " + startDate + " " + endDate + " " + filter);

            Analyze(stock, startDate, endDate, filter);
        }
Beispiel #2
0
        /// <summary>
        /// 生成所有的股票的
        /// </summary>
        public static void generateAll()
        {
            string stock = "sh600036";

            DateTime startDate = new DateTime(2013, 6, 01);
            DateTime stopDate  = new DateTime(2013, 6, 28);
            int      interval  = 1;

            //上海股票
            for (int i = 600000; i < 602000; i++)
            {
                stock = "sh" + i;
                //Console.WriteLine(stock.Substring(2));
                //return;
                for (DateTime dateTime = startDate;
                     dateTime < stopDate;
                     dateTime += TimeSpan.FromDays(interval))
                {
                    if (!(dateTime.Date.DayOfWeek == DayOfWeek.Saturday || dateTime.Date.DayOfWeek == DayOfWeek.Sunday))
                    {
                        //Console.WriteLine(toDate(dateTime.Date));
                        generateFile(stock, StockUtil.FormatDate(dateTime.Date));
                    }
                }
            }
            return;
        }
Beispiel #3
0
        public static List <DailyData> ConvertDailyList(List <EntryData> entryList)
        {
            if (entryList.Count == 0)
            {
                return(null);
            }
            List <DailyData> list = new List <DailyData>();

            for (DateTime dateTime = DateTime.Parse(StockUtil.FormatDate(entryList[0].time));
                 dateTime <= DateTime.Parse(StockUtil.FormatDate(entryList[entryList.Count - 1].time));
                 dateTime += TimeSpan.FromDays(1))
            {
                IEnumerable <EntryData> querySet = from d in entryList where StockUtil.FormatDate(d.time) == StockUtil.FormatDate(dateTime) select d;
                if (querySet.Count <EntryData>() > 0)
                {
                    DailyData dd = new DailyData()
                    {
                        Date      = dateTime,
                        entryList = querySet.ToList <EntryData>()
                    };
                    dd.Init();
                    list.Add(dd);
                }
            }
            return(list);
        }
Beispiel #4
0
        public bool Execute(StockInfo info)
        {
            string startDate = info.startDate.Equals("") ? Constant.ANALYZE_START_DATE : info.startDate;

            //string endDate = info.endDate.Equals("") ? StockUtil.FormatDate(DateTime.Now) : info.endDate;
            Analyzer.Analyze(info.stock, startDate, StockUtil.FormatDate(DateTime.Now), info.filterList);
            return(true);
        }
        public static void DownloadSingle(string sid)
        {
            string startDate = BizApi.QueryExtractLastUpdate(sid).AddDays(1).ToString("yyyy-MM-dd");
            string endDate   = StockUtil.FormatDate(DateTime.Now);

            DataDownload.DownloadDataToCsvByReader(sid, startDate, endDate);
            if (!Constant.CLEAN)
            {
                StockUtil.UpdateDownloadTimeStamp(sid, endDate);
            }
            StockLog.Log.Info(sid + " updated " + startDate + " " + endDate);
        }
Beispiel #6
0
        ////download from one csv file
        //public static void DownloadDataToCsvByReaderFromCsvFile(string csvFile, string startDate, string endDate)
        //{
        //    List<string> list = Common.StockUtil.ParseListFromCsvFile(csvFile);
        //    foreach (string stock in list)
        //    {
        //        if (!Directory.Exists(Constant.ROOT_FOLDER + stock)) Directory.CreateDirectory(Constant.ROOT_FOLDER + stock);

        //        for (DateTime dateTime = DateTime.Parse(startDate);
        //             dateTime <= DateTime.Parse(endDate);
        //             dateTime += TimeSpan.FromDays(1))
        //        {
        //            if (!(dateTime.Date.DayOfWeek == DayOfWeek.Saturday || dateTime.Date.DayOfWeek == DayOfWeek.Sunday))
        //                DownloadDataToCsvByReader(stock, StockUtil.FormatDate(dateTime.Date));
        //        }
        //    }
        //}

        public static string DownloadDataToCsvByReader(string stock, string startDate, string endDate)
        {
            for (DateTime dateTime = DateTime.Parse(startDate);
                 dateTime <= DateTime.Parse(endDate);
                 dateTime += TimeSpan.FromDays(1))
            {
                if (!(dateTime.Date.DayOfWeek == DayOfWeek.Saturday || dateTime.Date.DayOfWeek == DayOfWeek.Sunday))
                {
                    //LOG.Info(toDate(dateTime.Date));

                    DownloadDataToCsvByReader(stock, StockUtil.FormatDate(dateTime.Date));
                }
            }

            return(Constant.ROOT_FOLDER + stock);
        }
Beispiel #7
0
        public string CompareDaily()
        {
            if (data1.DailyList.Count != data2.DailyList.Count)
            {
                return(null);
            }

            StringBuilder sb = new StringBuilder();

            sb.Append(String.Format("{0},{1},{2},{3}\n", "time", "bigSellShareRate", "bigBuyShareRate", "Average"));
            for (int i = 0; i < data1.DailyList.Count; i++)
            {
                sb.Append(String.Format("{0},{1},{2},{3}\n", StockUtil.FormatDate(data1.DailyList[i].Date), StockUtil.FormatRate(data1.DailyList[i].TotalBuyMoney / data2.DailyList[i].TotalBuyMoney), StockUtil.FormatRate(data1.DailyList[i].TotalSellMoney / data2.DailyList[i].TotalSellMoney), StockUtil.FormatRate(data1.DailyList[i].TotalMoney / data2.DailyList[i].TotalMoney)));
            }
            return(sb.ToString());
        }
        public static string Analyze(string stock, string filter, string startDate, string endDate)
        {
            stock = StockUtil.FormatStock(stock);
            string           analyzePath;
            List <DailyData> dds = Csv.ReadCsv(stock, startDate, endDate, true);
            StringBuilder    str = new StringBuilder();

            str.Append("date,bigBuyShare,bigSellShare,toalShare,bigBuyMoney,bigSellMoney,toalMoney,Open,Close,Average,Hightest,WhenHighest,Lowest,WhenLowest,BigBuyShareRate,BigSellShareRate,BigBuyMoneyRate,BigSellMoneyRate\n");
            foreach (DailyData ds in dds)
            {
                BigDeal fd = new BigDeal(ds, filter);
                fd.Analye();
                str.Append(StockUtil.FormatDate(fd.set.Date) + ",");
                str.Append(fd.TotalBuyShareByBigDeal + ",");
                str.Append(fd.TotalSellShareByBigDeal + ",");
                str.Append(fd.set.TotalShare + ",");
                str.Append(fd.TotalBuyMoneyByBigDeal + ",");
                str.Append(fd.TotalSellMoneyByBigDeal + ",");
                str.Append(fd.set.TotalMoney + ",");
                str.Append(fd.set.OpenPrice + ",");
                str.Append(fd.set.ClosePrice + ",");
                str.Append(fd.set.Average + ",");
                str.Append(fd.set.HighestPrice + ",");
                str.Append(StockUtil.FormatTime(fd.set.TimeWhenHighest) + ",");
                str.Append(fd.set.LowestPrice + ",");
                str.Append(StockUtil.FormatTime(fd.set.TimeWhenLowest) + ",");
                str.Append(fd.RateOfBuyShareByTotal + ",");
                str.Append(fd.RateOfSellShareByTotal + ",");
                str.Append(fd.RateOfBuyMoneyByTotal + ",");
                str.Append(fd.RateOfSellMoneyByTotal + ",");
                str.Append("\n");
            }

            analyzePath = Constant.ANALYZE_FOLDER + stock + "_" + startDate + "_" + endDate + "_" + filter + ".csv";

            if (File.Exists(analyzePath))
            {
                File.Delete(analyzePath);
            }
            using (StreamWriter outfile = new StreamWriter(Constant.ANALYZE_FOLDER + stock + "_" + startDate + "_" + endDate + "_" + filter + ".csv"))
            {
                outfile.Write(str);
                Console.WriteLine("Analyzed: " + Constant.ANALYZE_FOLDER + stock + "_" + startDate + "_" + endDate + "_" + filter + ".csv");
            }

            return(analyzePath);
        }
Beispiel #9
0
        public bool Execute(StockInfo info)
        {
            string startDate;

            if (Constant.DOWNLOAD_ALL.Equals("0"))
            {
                startDate = StockUtil.ReadUpdateFile(info.stock);
            }
            else
            {
                startDate = "2014-01-01";
            }
            string endDate = StockUtil.FormatDate(DateTime.Now);

            //DataDownload.DownloadDataToCsv(info.stock, startDate, endDate);
            StockUtil.UpdateDownloadTimeStamp(info.stock, endDate);
            StockLog.Log.Info(info.stock + " updated " + startDate + " " + endDate);

            return(true);
        }
Beispiel #10
0
        public static List <DailyData> ReadCsv(string stock, string startDate, string endDate, bool isDownload)
        {
            List <DailyData> dds = new List <DailyData>();;

            for (DateTime dateTime = DateTime.Parse(startDate);
                 dateTime <= DateTime.Parse(endDate);
                 dateTime += TimeSpan.FromDays(1))
            {
                if (!(dateTime.Date.DayOfWeek == DayOfWeek.Saturday || dateTime.Date.DayOfWeek == DayOfWeek.Sunday))
                {
                    //LOG.Info(toDate(dateTime.Date));
                    DailyData s = ReadCsv(stock, StockUtil.FormatDate(dateTime.Date), isDownload);
                    if (s != null)
                    {
                        dds.Add(s);
                    }
                }
            }
            return(dds);
        }
Beispiel #11
0
        /// <summary>
        /// 生成csv 文件
        /// </summary>
        /// <param name="date"></param>
        /// <param name="stock"></param>
        /// <returns></returns>
        public static bool downloadDataToCsv(string stock, string startDate, string endDate)
        {
            if (!Directory.Exists(Constant.ROOT_FOLDER + stock))
            {
                Directory.CreateDirectory(Constant.ROOT_FOLDER + stock);
            }

            for (DateTime dateTime = DateTime.Parse(startDate);
                 dateTime < DateTime.Parse(endDate);
                 dateTime += TimeSpan.FromDays(1))
            {
                if (!(dateTime.Date.DayOfWeek == DayOfWeek.Saturday || dateTime.Date.DayOfWeek == DayOfWeek.Sunday))
                {
                    //Console.WriteLine(toDate(dateTime.Date));
                    downloadDataToCsv(stock, StockUtil.FormatDate(dateTime.Date));
                }
            }

            return(true);
        }
Beispiel #12
0
        public void Init()
        {
            _startTime = entryList[0].time;
            _endTime   = entryList[entryList.Count - 1].time;
            _date      = DateTime.Parse(StockUtil.FormatDate(_startTime));
            int     index = 0;
            decimal current;

            if (entryList.Count == 0)
            {
                return;
            }
            foreach (EntryData data in entryList)
            {
                current = data.price;

                if (index == 0)
                {
                    _close   = current;
                    _highest = current;
                    _lowest  = current;
                }

                if (_highest < current)
                {
                    _highest         = current;
                    _timeWhenHighest = data.time;
                }
                if (_lowest > current)
                {
                    _lowest         = current;
                    _timeWhenLowest = data.time;
                }
                _open = current;
                index++;
            }
        }
 public static string Analyze(string stock, string startDate, string endDate)
 {
     return(Analyze(stock, Constant.BIG_DEAL, startDate, StockUtil.FormatDate(DateTime.Now)));
 }
Beispiel #14
0
 public static void Main(string[] args)
 {
     FileUtil.WriteFile(@"D:\project\stock\n.txt", StockUtil.FormatDate(DateTime.Now));
 }