private Object.QuoteRange GetSeriesYRange(Series series, double s, double e) { if (series is ThresholdSeries && series.Visibility == C1.Chart.SeriesVisibility.Visible) { var value = (series as ThresholdSeries).Threshold.Value; return(new Object.QuoteRange() { Min = value, Max = value }); } Object.QuoteRange qr = null; IEnumerable <double> quoteData = series.GetValues(0); var period = GetSeriesPeriod(series); var start = period == 0 ? Convert.ToInt32(s) : (Convert.ToInt32(s) < (period - 1) ? 0 : (Convert.ToInt32(s) - (period - 1))); var len = Convert.ToInt32(e) - Convert.ToInt32(s) + 1; IEnumerable <double> quoteCache = quoteData.Skip(start).Take(len); if (quoteCache.Any()) { qr = new Object.QuoteRange(); var min = quoteCache.Min(); var max = quoteCache.Max(); qr.Min = min; qr.Max = max; } return(qr); }
public Object.QuoteRange GetSymbolYRange(IEnumerable <Object.QuoteData> quoteData, double s, double e) { Object.QuoteRange qr = null; var start = Convert.ToInt32(s); var len = Convert.ToInt32(e) - start + 1; IEnumerable <Object.QuoteData> quoteCache = quoteData.Skip(start).Take(len); if (quoteCache.Any()) { qr = new Object.QuoteRange(); qr.Min = quoteCache.Min((k) => { return(k.Low); }); qr.Max = quoteCache.Max((k) => { return(k.High); }); } return(qr); }
private Object.QuoteRange GetSeriesYRange(Series series, double s, double e) { Object.QuoteRange qr = null; double[] quoteX = series.GetValues(1).ToArray(); IEnumerable <double> quoteData = series.GetValues(0); var start = -1; var end = -1; for (int i = 0; i < quoteX.Count(); i++) { var x = quoteX[i]; if (start == -1 && x > s) { start = i - 1; end = quoteX.Count() - 3; } if (end == -1 && x > e) { end = i - 1; } } var len = end - start + 1; IEnumerable <double> quoteCache = quoteData.Skip(start).Take(len); if (quoteCache.Any()) { qr = new Object.QuoteRange(); var min = quoteCache.Min(); var max = quoteCache.Max(); qr.Min = min; qr.Max = max; } return(qr); }
public Object.QuoteRange GetOverlayYRange(double[] data, int period, double s, double e) { Object.QuoteRange qr = null; int halfLen = data.Length / 2; var dl1 = data.Take(halfLen); var dl2 = data.Skip(halfLen).Take(halfLen); var start = s < period ? 0 : s - period; var len = e - Math.Max(s, period); IEnumerable <double> quoteCache1 = dl1.Skip(Convert.ToInt32(start)).Take(Convert.ToInt32(len)); IEnumerable <double> quoteCache2 = dl2.Skip(Convert.ToInt32(start)).Take(Convert.ToInt32(len)); var quoteCache = quoteCache1.Union(quoteCache2); if (quoteCache.Any()) { qr = new Object.QuoteRange(); qr.Min = quoteCache.Min(); qr.Max = quoteCache.Max(); } return(qr); }