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);
        }
Пример #2
0
        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
            }
        }
Пример #3
0
        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);
        }
Пример #6
0
		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;
		}
Пример #7
0
        /// <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]);
        }
Пример #8
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);
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
 /// <summary>
 /// Initializes a new instance of the OhlcSeriesAutomationPeer class.
 /// </summary>
 public OhlcSeriesAutomationPeer(OhlcSeries owner)
     : base(owner)
 {
 }
Пример #12
0
        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);
        }