private void loadStockChart(string stockId, bool getRealTimeData) { List <Classes.StockPrice> stockPriceList = model.GetStockPriceData(new string[] { stockId }).First().Value.OrderByDescending(x => x.Date).Take(100).OrderBy(x => x.Date).ToList(); // List<MyStockAnalyzer.Classes.StockPrice> result = stockHelper.GetStockRealTimePrice if (getRealTimeData) { List <Classes.StockPrice> realTimePrice = stockHelper.GetStockRealTimePrice(new List <Classes.StockData>() { model.GetStockDataById(stockId) }, DateTime.Now.Date); if (realTimePrice.Count > 0) { stockPriceList.Add(realTimePrice.First()); } } List <StockChartData> chartData = StockAnalysisHelper.StockPriceDataToChart(stockPriceList); chartKBar.Series.Clear(); chartKBar.Series.Add("KChart"); chartKBar.Series[0].ChartType = SeriesChartType.Candlestick; chartKBar.Series[0]["PriceUpColor"] = "Red"; chartKBar.Series[0]["PriceDownColor"] = "LimeGreen"; foreach (StockChartData data in chartData) { chartKBar.Series[0].Points.AddXY(data.PriceToday.Date.ToString("yyyy/MM/dd"), (double)data.PriceToday.High, (double)data.PriceToday.Low, (double)data.PriceToday.Open, (double)data.PriceToday.Close); chartKBar.Series[0].Points.Last().Color = Color.Black; } chartKBar.ChartAreas[0].AxisY.Minimum = Math.Floor((double)(chartData.Select(x => x.PriceToday.Low).Min() * 0.98m)); chartKBar.ChartAreas[0].AxisY.Maximum = Math.Ceiling((double)(chartData.Select(x => x.PriceToday.High).Max() * 1.02m)); }
private void startStockSelection(List <MyStockAnalyzer.Classes.StockData> stockData, List <MyStockAnalyzer.Classes.StockPrice> realTimeData) { // 分析股票資料 foreach (MyStockAnalyzer.Classes.StockData data in stockData) { Dictionary <string, List <MyStockAnalyzer.Classes.StockPrice> > stockPrice = model.GetStockPriceData(new string[] { data.StockId }, dtSelectionBgn.Value.Date.AddMonths(-12), dtSelectionEnd.Value.Date); foreach (KeyValuePair <string, List <MyStockAnalyzer.Classes.StockPrice> > kvp in stockPrice) { // 如果要分析即時資料,將目前抓到的即時資料加入股價資訊中 if (chkRealData.Checked && realTimeData.Where(x => x.StockId == kvp.Key).Count() > 0) { kvp.Value.AddRange(realTimeData.Where(x => x.StockId == kvp.Key)); } List <StockChartData> chartData = StockAnalysisHelper.StockPriceDataToChart(kvp.Value); selectStockByAlgorithms(data, chartData); } } }