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); }
/// <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; }
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); }
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); }
////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); }
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); }
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); }
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); }
/// <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); }
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))); }
public static void Main(string[] args) { FileUtil.WriteFile(@"D:\project\stock\n.txt", StockUtil.FormatDate(DateTime.Now)); }