コード例 #1
0
        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));
        }
コード例 #2
0
        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);
                }
            }
        }