private static IList <DataPoint> GetDataPoints(ChartSeries series) { PieSeries pieSeries = series as PieSeries; if (pieSeries != null) { return((IList <DataPoint>)pieSeries.DataPoints); } CategoricalSeries categoricalSeries = series as CategoricalSeries; if (categoricalSeries != null) { return(categoricalSeries.DataPoints); } RangeSeries rangeSeries = series as RangeSeries; if (rangeSeries != null) { return(rangeSeries.DataPoints); } OhlcSeries ohlcSeries = series as OhlcSeries; if (ohlcSeries != null) { return(ohlcSeries.DataPoints); } ScatterPointSeries scatterPointSeries = (ScatterPointSeries)series; return(scatterPointSeries.DataPoints); }
private void createNewSeries(bool isOHLC, string id, string displayName) { if (isSeriesExist(id)) { return; } Series series; createTabPage(id, displayName); if (isOHLC) { series = new OhlcSeries(); series.Values = new ChartValues <OHLCPointModel>(); } else { series = new LineSeries(); series.Values = new ChartValues <ValuePointModel>(); } series.PointGeometry = null; series.DataLabels = false; series.Title = displayName; cartesianChart1.Series.Add(series); cartesianChart1.DisableAnimations = false; lock (syncLock) { idSeries.Add(id, series);// idSEries.Count = 1 mesdz boks radite na svoju odgovornost } }
private async Task InitializeSeries(LiveOhlcSeries ohlcSeries, long tickTime) { OhlcSeries historicOhlc = null; try { // Determine time span to collect initial data var startTimeEpoch = tickTime - ohlcSeries.TimeSpanSeconds * ohlcSeries.MaxSeriesSize; var startTime = DateTimeHelper.ToDateTime(startTimeEpoch); var endTime = DateTimeHelper.ToDateTime(tickTime); // Read historic ohlc historicOhlc = await _marketApi.ReadOhlcSeries(CurrencyPair, startTime, endTime, ohlcSeries.TimeSpanSeconds); } catch (ExchangeApiException e) { Logger.Warn($"Error loading historic data for OhlcSeries {ohlcSeries.TimeSpanSeconds}.", e); } finally { var ohlcItems = historicOhlc != null ? historicOhlc.OhlcItems : ImmutableList <OhlcItem> .Empty; // Init live ohlc series with historic data or empty list so series is initialized ohlcSeries.Initialize(ohlcItems); } }
private RadCartesianChartView createChart() { RadCartesianChartView chart = new RadCartesianChartView(this.Activity); // context is an instance of Context. OhlcSeries series = new OhlcSeries(); series.CategoryBinding = new CategoryBinding(); series.OpenBinding = new OpenValueBinding(); series.HighBinding = new HighValueBinding(); series.LowBinding = new LowValueBinding(); series.CloseBinding = new CloseValueBinding(); series.Data = this.getData(); chart.Series.Add(series); CategoricalAxis horizontalAxis = new CategoricalAxis(); chart.HorizontalAxis = horizontalAxis; LinearAxis verticalAxis = new LinearAxis(); chart.VerticalAxis = verticalAxis; return(chart); }
private void OhlcSticksRadioButton_Click(object sender, RoutedEventArgs e) { this.Chart.Series.Clear(); var series = new OhlcSeries(); UpdateSeries(series); this.Chart.Series.Insert(0, series); }
private RadCartesianChartView createChart() { RadCartesianChartView chart = new RadCartesianChartView(this.Activity); // context is an instance of Context. OhlcSeries series = new OhlcSeries(); series.CategoryBinding = new CategoryBinding(); series.OpenBinding = new OpenValueBinding(); series.HighBinding = new HighValueBinding(); series.LowBinding = new LowValueBinding(); series.CloseBinding = new CloseValueBinding(); series.Data = this.getData(); chart.Series.Add(series); CategoricalAxis horizontalAxis = new CategoricalAxis(); chart.HorizontalAxis = horizontalAxis; LinearAxis verticalAxis = new LinearAxis(); chart.VerticalAxis = verticalAxis; return chart; }
/// <summary> /// Calculate EMA for last OhlcSeries value /// </summary> /// <param name="ohlcSeries">OhlcSeries to use for calcuting EMA</param> /// <param name="optInTimePeriod">Period to use in EMA calculation</param> /// <returns>EMA value of last OhlcItem</returns> public static double Ema(this OhlcSeries ohlcSeries, int optInTimePeriod) { int neededValues = Core.EmaLookback(optInTimePeriod) + 1; if (ohlcSeries.OhlcItems.Count < neededValues) { throw new OhlcCalculationException("Not enough ohlc items to perform calculation"); } int outBegIdx, outNbElement; double[] inputClose = ohlcSeries.OhlcItems.Take(neededValues).Select(i => Convert.ToDouble(i.Close)).Reverse().ToArray(); double[] output = new double[inputClose.Length]; var res = Core.Ema(0, inputClose.Length - 1, inputClose, optInTimePeriod, out outBegIdx, out outNbElement, output); if (res != Core.RetCode.Success) { throw new OhlcCalculationException($"Unable to calculate EMA value, error: {res}"); } return(output[0]); }
/// <summary> /// Adds info to 'Generation' tab (e.g.: generation number, # of species and genomes). /// </summary> /// <param name="generation"></param> private void GenerateGenerationTabDesign(Generation generation) { int genCount = 0; foreach (Species s in generation.Species) { genCount += s.Members.Count; } // statistics labels // since other tabs need general statistics from the generation, we modify them too // generation tab genTabGenerationNameLabel.Text = "Generation " + generation.Number.ToString(); genTabSpeciesCountLabel.Text = "Species: " + generation.Species.Count.ToString(); genTabGenomeCountLabel.Text = "Genomes: " + genCount.ToString(); // species tab speciesTabSpeciesCountLabel.Text = "Species: " + generation.Species.Count.ToString(); speciesTabGenomeCountLabel.Text = "Genomes: " + genCount.ToString(); // pie chart generationGenomePerSpeciesChart.Series.Clear(); Func <ChartPoint, string> labelPoint = chartPoint => string.Format("{0} ({1:P})", chartPoint.Y, chartPoint.Participation); foreach (Species s in generation.Species) { generationGenomePerSpeciesChart.Series.Add(new PieSeries { Title = s.Id.ToString(), Values = new ChartValues <double> { s.Members.Count }, DataLabels = true, LabelPoint = labelPoint }); } // fitness chart generationFitnessChart.Series.Clear(); generationFitnessChart.AxisX.Clear(); generationFitnessChart.AxisY.Clear(); OhlcSeries series = new OhlcSeries { Title = "Fitness Distribution", Values = new ChartValues <OhlcPoint>() }; double globalMean = 0; foreach (Species s in generation.Species) { double speciesAverageFitness = s.Members.Sum(g => g.Fitness) / s.Members.Count; globalMean += speciesAverageFitness; double speciesMax = s.Members.Max(g => g.Fitness); double speciesMin = s.Members.Min(g => g.Fitness); series.Values.Add(new OhlcPoint(speciesAverageFitness, speciesMax, speciesMin, speciesAverageFitness)); } globalMean /= generation.Species.Count == 0 ? 1 : generation.Species.Count; generationFitnessChart.AxisY.Add(new Axis { Sections = new SectionsCollection { new AxisSection { Value = globalMean, Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(21, 49, 49)) } } }); generationFitnessChart.Series = new SeriesCollection { series }; // genome size chart generationGenomeSizeChart.Series.Clear(); generationGenomeSizeChart.AxisX.Clear(); generationGenomeSizeChart.AxisY.Clear(); series = new OhlcSeries { Values = new ChartValues <OhlcPoint>() }; globalMean = 0; foreach (Species s in generation.Species) { double avgGenomeSize = s.Members.Sum(g => g.Connections.Count + g.Nodes.Count) / s.Members.Count; double minGenomeSize = s.Members.Min(g => g.Connections.Count + g.Nodes.Count); double maxGenomeSize = s.Members.Max(g => g.Connections.Count + g.Nodes.Count); series.Values.Add(new OhlcPoint(avgGenomeSize, maxGenomeSize, minGenomeSize, avgGenomeSize)); } globalMean /= generation.Species.Count == 0 ? 1 : generation.Species.Count; generationGenomeSizeChart.AxisY.Add(new Axis { Sections = new SectionsCollection { new AxisSection { Value = globalMean, Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(21, 49, 49)) } } }); generationGenomeSizeChart.Series = new SeriesCollection { series }; }
public override dynamic GetDataSet() { var games = trackerFactory.GetTracker() .Games .Where(g => g.Type == GameType.PlayRanked && ((filterDateFrom == null) || (g.Date.Date >= filterDateFrom)) && ((filterDateTo == null) || (g.Date.Date <= filterDateTo)) ) .OrderBy(g => g.Date); Dictionary <string, Tuple <DateTime, int> > chartDatagameAfterGame; Dictionary <DateTime, Tuple <int, int, int> > chartDataMaxMin; GetChartData(games, out chartDatagameAfterGame, out chartDataMaxMin); ohlcMinMax = new OhlcSeries() { Title = null, DecreaseBrush = new SolidColorBrush(Colors.DodgerBlue), Stroke = new SolidColorBrush(Colors.DodgerBlue) }; //LabelPoint = (cp) => { return "uu"; } ohlcMinMax.Values = new ChartValues <OhlcPoint>(); lsLastInDay = new LineSeries() { Title = "Last Rank in Day", Stroke = new SolidColorBrush(Colors.DodgerBlue), Fill = Brushes.Transparent }; lsLastInDay.Values = new ChartValues <int>(); lsMinInDay = new LineSeries() { Title = "Worst Rank in Day", Stroke = new SolidColorBrush(Colors.Goldenrod), Fill = Brushes.Transparent }; lsMinInDay.Values = new ChartValues <int>(); lsMaxInDay = new LineSeries() { Title = "Best Rank in Day", Stroke = new SolidColorBrush(Colors.YellowGreen), Fill = Brushes.Transparent }; lsMaxInDay.Values = new ChartValues <int>(); lsAll = new LineSeries() { Title = "Rank", PointGeometry = null }; lsAll.Values = new ChartValues <int>(); labelsDetailed = new List <string>(); labels = new List <string>(); foreach (var row in chartDataMaxMin.Values) { ohlcMinMax.Values.Add(new OhlcPoint(row.Item2, row.Item3, row.Item1, row.Item2)); lsMinInDay.Values.Add(row.Item1); lsLastInDay.Values.Add(row.Item2); lsMaxInDay.Values.Add(row.Item3); } foreach (var key in chartDataMaxMin.Keys) { labels.Add(key.Date.Date.ToString("d")); } foreach (var row in chartDatagameAfterGame) { lsAll.Values.Add(row.Value.Item2); labelsDetailed.Add(row.Value.Item1.ToString("d")); } seriesCollection = new SeriesCollection(); ShowSeries(); return(seriesCollection); }
private void UpdateStockSeries() { DateTimeCategoricalAxis horizontalAxis = this.radChartView2.Axes[0] as DateTimeCategoricalAxis; LinearAxis verticalAxis = this.radChartView2.Axes[1] as LinearAxis; this.radChartView2.Series.Clear(); if (this.radDropDownList1.SelectedItem != null) { string seriesType = this.radDropDownList1.SelectedItem.Text; OhlcSeries series; if (seriesType == "Candlestick") { series = new CandlestickSeries(); } else { series = new OhlcSeries(); } series.BorderColor = Color.FromArgb(102, 102, 102); series.BackColor = Color.FromArgb(102, 102, 102); series.HorizontalAxis = horizontalAxis; series.VerticalAxis = verticalAxis; series.OpenValueMember = "Open"; series.HighValueMember = "High"; series.LowValueMember = "Low"; series.CloseValueMember = "Close"; series.CategoryMember = "Date"; series.DataSource = viewModel.Data; this.radChartView2.Series.Add(series); if (!(series is CandlestickSeries)) { foreach (OhlcPointElement point in series.Children) { if (point.IsFalling) { point.BorderColor = Color.FromArgb(175, 175, 175); } } } } if (this.radDropDownList2.SelectedItem != null) { IndicatorBase indicator = CreateMAIndicator(this.radDropDownList2.SelectedItem.Text); indicator.BorderColor = Color.Red; indicator.PointSize = SizeF.Empty; IParentIndicator parentIndicator = indicator as IParentIndicator; if (parentIndicator != null) { parentIndicator.ChildIndicator.BorderColor = Color.Black; } this.radChartView2.Series.Add(indicator); } }
/// <summary> /// Initializes a new instance of the OhlcSeriesAutomationPeer class. /// </summary> public OhlcSeriesAutomationPeer(OhlcSeries owner) : base(owner) { }
private List <Hashtable> SeriesToHashtables(List <Series> listOfSeries) { List <Hashtable> hashtableList = new List <Hashtable>(); foreach (Series series in listOfSeries) { List <object> dataList = new List <object>(); Hashtable hashtable1 = new Hashtable(); if (series is LineSeries) { if (series.ToHashtable().ContainsKey((object)"data")) { Hashtable hashtable2 = series.ToHashtable(); hashtableList.Add(hashtable2); continue; } LineSeries lineSeries = series as LineSeries; lineSeries.Data.ForEach( (Action <LineSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); lineSeries.Type = LineSeriesType.Line; hashtable1 = lineSeries.ToHashtable(); } if (series is SplineSeries) { SplineSeries splineSeries = series as SplineSeries; splineSeries.Data.ForEach((Action <SplineSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); splineSeries.Type = SplineSeriesType.Spline; hashtable1 = splineSeries.ToHashtable(); } if (series is AreaSeries) { AreaSeries areaSeries = series as AreaSeries; areaSeries.Data.ForEach( (Action <AreaSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); areaSeries.Type = AreaSeriesType.Area; hashtable1 = areaSeries.ToHashtable(); } if (series is AreasplineSeries) { AreasplineSeries areasplineSeries = series as AreasplineSeries; areasplineSeries.Data.ForEach( (Action <AreasplineSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); areasplineSeries.Type = AreasplineSeriesType.Areaspline; hashtable1 = areasplineSeries.ToHashtable(); } if (series is AreasplinerangeSeries) { AreasplinerangeSeries areasplinerangeSeries = series as AreasplinerangeSeries; areasplinerangeSeries.Data.ForEach( (Action <AreasplinerangeSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); areasplinerangeSeries.Type = AreasplinerangeSeriesType.Areasplinerange; hashtable1 = areasplinerangeSeries.ToHashtable(); } if (series is ArearangeSeries) { ArearangeSeries arearangeSeries = series as ArearangeSeries; arearangeSeries.Data.ForEach( (Action <ArearangeSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); arearangeSeries.Type = ArearangeSeriesType.Arearange; hashtable1 = arearangeSeries.ToHashtable(); } if (series is ColumnrangeSeries) { ColumnrangeSeries columnrangeSeries = series as ColumnrangeSeries; columnrangeSeries.Data.ForEach( (Action <ColumnrangeSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); columnrangeSeries.Type = ColumnrangeSeriesType.Columnrange; hashtable1 = columnrangeSeries.ToHashtable(); } if (series is ColumnSeries) { ColumnSeries columnSeries = series as ColumnSeries; columnSeries.Data.ForEach((Action <ColumnSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); columnSeries.Type = ColumnSeriesType.Column; hashtable1 = columnSeries.ToHashtable(); } if (series is ScatterSeries) { ScatterSeries scatterSeries = series as ScatterSeries; scatterSeries.Data.ForEach( (Action <ScatterSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); scatterSeries.Type = ScatterSeriesType.Scatter; hashtable1 = scatterSeries.ToHashtable(); } if (series is PolygonSeries) { PolygonSeries polygonSeries = series as PolygonSeries; polygonSeries.Data.ForEach( (Action <PolygonSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); polygonSeries.Type = PolygonSeriesType.Polygon; hashtable1 = polygonSeries.ToHashtable(); } if (series is CandleStickSeries) { CandleStickSeries candleStickSeries = series as CandleStickSeries; candleStickSeries.Data.ForEach( (Action <CandleStickSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); candleStickSeries.Type = CandleStickSeriesType.Candlestick; hashtable1 = candleStickSeries.ToHashtable(); } if (series is FlagsSeries) { FlagsSeries flagsSeries = series as FlagsSeries; flagsSeries.Data.ForEach((Action <FlagsSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); flagsSeries.Type = FlagsSeriesType.Flags; hashtable1 = flagsSeries.ToHashtable(); } if (series is OhlcSeries) { OhlcSeries ohlcSeries = series as OhlcSeries; ohlcSeries.Data.ForEach( (Action <OhlcSeriesData>)(data => dataList.Add((object)data.ToHashtable()))); ohlcSeries.Type = OhlcSeriesType.Ohlc; hashtable1 = ohlcSeries.ToHashtable(); } hashtableList.Add(hashtable1); } return(hashtableList); }