public async Task LoadChart()
        {
            var stockInfo = new StockInfoItem
            {
                Id         = StockValueContext.Id,
                MarketType = StockValueContext.ExchangeTypeKey,
                Name       = StockValueContext.Name
            };
            StockChartModel chartModel = await _queryService.GetRealTimeTradeChartAsync(stockInfo);

            // Set the start and end value to y axis
            SetOpenCloseTimeToCharAxis(chartModel);

            // Set the top and bottom value for the chart
            SetUpDownLimitLineToChart(chartModel.StockMessage);

            // Draw the middle, up and down extra line for the chart
            DrawExtraLines(chartModel.StockMessage);

            // 設定股價座標顯示的區間次數
            SetPriceTickInterval(Convert.ToDouble(chartModel.StockMessage.LimitUp), Convert.ToDouble(chartModel.StockMessage.LimitDown), 5);

            // Add stock point to chart
            foreach (var point in chartModel.ChartData)
            {
                DateTime xDateTime = DateTimeUtils.UnixTimeStampToDateTime(Convert.ToDouble(point.Timestemp));
                var      axisPoint = DateTimeAxis.CreateDataPoint(xDateTime, Convert.ToDouble(point.Value));
                ChartDataCollection.Add(axisPoint);
            }
        }
        public IEnumerable <StockChartModel> First([FromBody] IEnumerable <QueryModel> value)
        {
            string condField = HttpContext.Request.Query["field"];

            string[] condValues = JsonConvert.DeserializeObject <string[]>(HttpContext.Request.Query["value"]);

            List <string>          items   = _member.GetStockedModel(value.ElementAt(0).field, condField, condValues);
            List <StockChartModel> retData = new List <StockChartModel>();

            foreach (string element in items)
            {
                StockChartModel   tmpData   = new StockChartModel();
                List <QueryModel> queryData = new List <QueryModel>();
                queryData.Add(new QueryModel {
                    field = value.ElementAt(0).field, value = element
                });
                queryData.Add(value.ElementAt(1));

                tmpData.Name = element;
                tmpData.Data = _member.GetChartModelByGroupInfo(queryData, condField, condValues);
                retData.Add(tmpData);
            }

            return(retData);
        }
 private void SetOpenCloseTimeToCharAxis(StockChartModel chartModel)
 {
     // set the start and end y axis
     if (chartModel.ChartData.Count > 0)
     {
         DateTime op  = DateTimeUtils.UnixTimeStampToDateTime(Convert.ToDouble(chartModel.ChartData[0].Timestemp));
         DateTime clo = new DateTime(op.Year, op.Month, op.Day, 13, 30, 0);
         OpeningTimeAxis = DateTimeAxis.ToDouble(op);
         ClosingTimeAxis = DateTimeAxis.ToDouble(clo);
     }
 }
Beispiel #4
0
        internal StockChartModel ConvertToModel()
        {
            StockChartModel chartModel = new StockChartModel();

            chartModel.StockId = StockId;

            if (StockMessage.Count > 0)
            {
                chartModel.StockMessage = StockMessage[0].Convert();
            }

            chartModel.ChartData = new List <ChartPointModel>();
            foreach (var point in ChartData)
            {
                chartModel.ChartData.Add(point.Convert());
            }


            return(chartModel);
        }