internal Data.ArcsRange GetArcsRange(double s, double e) { Data.ArcsRange range = new Data.ArcsRange(); if (Model.CurrectQuote != null && Model.CurrectQuote.Data != null && Model.CurrectQuote.Data.Any()) { IEnumerable <Object.QuoteData> quoteCache = Model.CurrectQuote.Data.Skip(Convert.ToInt32(s)).Take(Convert.ToInt32(e) - Convert.ToInt32(s)); if (quoteCache.Any()) { range.EndY = quoteCache.Min(p => p.Close); range.StartY = quoteCache.Max(p => p.Close); range.StartX = s + quoteCache.TakeWhile(p => p.Close != range.StartY).Count(); range.EndX = s + quoteCache.TakeWhile(p => p.Close != range.EndY).Count(); } } return(range); }
internal void RangeSelectorChanged() { if (financialChart != null && Model.LowerValue != null && Model.UpperValue != null) { financialChart.BeginUpdate(); IEnumerable <Object.QuoteRange> ranges = GetYRange(Model.LowerValue.Value, Model.UpperValue.Value); if (ranges != null && ranges.Any()) { if (financialChart != null) { mainSeries.AxisY.Min = financialChart.AxisY.Min = ranges.Min(p => { return(p == null ? int.MaxValue : p.Min); }); mainSeries.AxisY.Max = financialChart.AxisY.Max = ranges.Max(p => { return(p == null ? int.MinValue : p.Max); }); IndicatorsRangeSelectorChanged(); if (arcs.Visibility == C1.Chart.SeriesVisibility.Visible) { Data.ArcsRange range = GetArcsRange(Model.LowerValue.Value, Model.UpperValue.Value); arcs.StartX = range.StartX; arcs.EndX = range.EndX; arcs.StartY = range.StartY; arcs.EndY = range.EndY; IEnumerable <Data.SettingParam> settings; if (ViewModel.ViewModel.Instance.Settings.TryGetValue("Fibonacci Arcs", out settings)) { Data.SettingParam param = (from p in settings where p.Key == "StartX" select p).FirstOrDefault(); param.Value = arcs.StartX; param = (from p in settings where p.Key == "EndX" select p).FirstOrDefault(); param.Value = arcs.EndX; param = (from p in settings where p.Key == "StartY" select p).FirstOrDefault(); param.Value = arcs.StartY; param = (from p in settings where p.Key == "EndY" select p).FirstOrDefault(); param.Value = arcs.EndY; } } else if (fans.Visibility == C1.Chart.SeriesVisibility.Visible) { Data.ArcsRange range = GetArcsRange(Model.LowerValue.Value, Model.UpperValue.Value); fans.StartX = range.EndX; fans.EndX = range.StartX; fans.StartY = range.EndY; fans.EndY = range.StartY; IEnumerable <Data.SettingParam> settings; if (ViewModel.ViewModel.Instance.Settings.TryGetValue("Fibonacci Fans", out settings)) { Data.SettingParam param = (from p in settings where p.Key == "StartX" select p).FirstOrDefault(); param.Value = fans.StartX; param = (from p in settings where p.Key == "EndX" select p).FirstOrDefault(); param.Value = fans.EndX; param = (from p in settings where p.Key == "StartY" select p).FirstOrDefault(); param.Value = fans.StartY; param = (from p in settings where p.Key == "EndY" select p).FirstOrDefault(); param.Value = fans.EndY; } } } } var quote = ranges.First(); } financialChart.EndUpdate(); }