Exemplo n.º 1
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0.5;
                List <CAAnimation> animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    string              keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                    TKChartVisualPoint  point   = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);
                    double              oldY    = rect.Height;
                    double              half    = oldY + (point.Y - oldY) / 2.0;
                    CAKeyFrameAnimation a       = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.KeyTimes       = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
                    a.Values         = new NSObject[] { new NSNumber(oldY), new NSNumber(half), new NSNumber(point.Y) };
                    a.Duration       = duration;
                    a.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                    animations.Add(a);
                }

                CAAnimationGroup group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();

                return(group);
            }
Exemplo n.º 2
0
			public override void PointSelected (TKChart chart, TKChartData point, TKChartSeries series, nint index)
			{
				if (this.labelRender != null) {
					this.labelRender.SelectedSeries = (int)series.Index;
					this.labelRender.SelectedDataPoint = index;
				}
			}
 public override void PointDeselected(TKChart chart, TKChartData point, TKChartSeries series, nint index)
 {
     if (this.labelRender != null)
     {
         this.labelRender.SelectedDataPoint = -1;
     }
 }
Exemplo n.º 4
0
        public void setStyles(TKChartSeries series)
        {
            TKChartPaletteItem item = series.Style.Palette.PaletteItemAtIndex(series.Index);

            if (series is TKChartColumnSeries && item.Drawables.Length > 1)
            {
                NSObject drawable = item.Drawables [2];

                if (drawable is TKStroke)
                {
                    TKStroke stroke = drawable as TKStroke;
                    series.YAxis.Style.LineStroke = new TKStroke(stroke.Fill);
                }
                else
                {
                    series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill);
                }
            }
            else
            {
                series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill);
            }
            series.YAxis.Style.MajorTickStyle.TicksFill           = series.YAxis.Style.LineStroke.Fill;
            series.YAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible;
            series.YAxis.Style.MajorTickStyle.MinTickClippingMode = TKChartAxisClippingMode.Visible;

            if (series.YAxis.Style.MajorTickStyle.TicksFill is TKSolidFill)
            {
                TKSolidFill solidFill = series.YAxis.Style.MajorTickStyle.TicksFill as TKSolidFill;
                series.YAxis.Style.LabelStyle.TextColor = solidFill.Color;
            }
        }
Exemplo n.º 5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            CGRect exampleBounds         = this.ExampleBounds;
            CGRect overlayChartBounds    = new CGRect(exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height / 1.5f);
            CGRect indicatorsChartBounds = new CGRect(exampleBounds.X, overlayChartBounds.Height + 15, exampleBounds.Width, exampleBounds.Height / 3.0f);

            overlayChart = new TKChart(overlayChartBounds);
            overlayChart.GridStyle.VerticalLinesHidden = false;
            overlayChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview(overlayChart);

            indicatorsChart = new TKChart(indicatorsChartBounds);
            indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview(indicatorsChart);

            data     = StockDataPoint.LoadStockPoints(-1);
            settings = new IndicatorsTableView(this);

            SelectedIndicator = 0;
            SelectedTrendLine = 0;

            series = new TKChartCandlestickSeries(data.ToArray());

            overlayChart.Delegate = new ChartDelegate(indicatorsChart);

            this.loadCharts();
        }
Exemplo n.º 6
0
        public void setStyles(TKChartSeries series)
        {
            TKChartPaletteItem item = series.Style.Palette.PaletteItemAtIndex (series.Index);
            if (series is TKChartColumnSeries && item.Drawables.Length > 1) {
                NSObject drawable = item.Drawables [2];

                if (drawable is TKStroke) {
                    TKStroke stroke = drawable as TKStroke;
                    series.YAxis.Style.LineStroke = new TKStroke (stroke.Fill);
                }
                else {
                    series.YAxis.Style.LineStroke = new TKStroke (item.Stroke.Fill);
                }
            }
            else {
                series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill);
            }
            series.YAxis.Style.MajorTickStyle.TicksFill = series.YAxis.Style.LineStroke.Fill;
            series.YAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible;
            series.YAxis.Style.MajorTickStyle.MinTickClippingMode = TKChartAxisClippingMode.Visible;

            if (series.YAxis.Style.MajorTickStyle.TicksFill is TKSolidFill) {
                TKSolidFill solidFill = series.YAxis.Style.MajorTickStyle.TicksFill as TKSolidFill;
                series.YAxis.Style.LabelStyle.TextColor = solidFill.Color;
            }
        }
Exemplo n.º 7
0
            // >> chart-structure-animation-cs
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                var duration   = 0.0;
                var animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i);
                    var keyPath      = pointKeyPath + ".x";
                    var point        = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint;
                    var animation    = new CABasicAnimation();
                    animation.KeyPath  = keyPath;
                    animation.Duration = (double)(r.Next(100)) / 100.0;
                    animation.From     = new NSNumber(0);
                    animation.To       = new NSNumber(point.X);
                    animations.Add(animation);
                    duration = Math.Max(animation.Duration, duration);
                }

                var group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();
                return(group);
            }
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double duration = 0.5;
                List<CAAnimation> animations = new List<CAAnimation> ();

                for (int i = 0; i<(int)state.Points.Count; i++) {
                    string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                    TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);
                    double oldY = rect.Height;
                    double half = oldY + (point.Y - oldY)/2.0;
                    CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.KeyTimes = new NSNumber[] { new NSNumber (0), new NSNumber (0), new NSNumber (1) };
                    a.Values = new NSObject[] { new NSNumber (oldY), new NSNumber (half), new NSNumber (point.Y) };
                    a.Duration = duration;
                    a.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
                    animations.Add(a);
                }

                CAAnimationGroup group = new CAAnimationGroup ();

                group.Duration = duration;
                group.Animations = animations.ToArray();

                return group;
            }
Exemplo n.º 9
0
            public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index)
            {
                TKChartPaletteItem item = null;

                if (series.Index == 1)
                {
                    UIColor[] colors = new UIColor[] {
                        new UIColor(0f, 1f, 0f, 0.4f),
                        new UIColor(1f, 0f, 0f, 0.4f),
                        new UIColor(0f, 0f, 1f, 0.4f),
                    };
                    TKLinearGradientFill gradient = new TKLinearGradientFill(colors, new PointF(0.5f, 0.0f), new PointF(0.5f, 1.0f));
                    item = new TKChartPaletteItem(gradient);
                }
                else
                {
                    TKImageFill image = new TKImageFill(new UIImage("pattern1.png"), 5.0f);
                    image.ResizingMode = TKImageFillResizingMode.Tile;
                    TKStroke stroke = new TKStroke(UIColor.Black, 1.0f);
                    stroke.CornerRadius = 5.0f;
                    stroke.DashPattern  = new NSNumber[] { new NSNumber(2), new NSNumber(2), new NSNumber(5), new NSNumber(2) };
                    item = new TKChartPaletteItem(new NSObject[] { image, stroke });
                }

                return(item);
            }
Exemplo n.º 10
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double duration = 0;
                List<CAAnimation> animations = new List<CAAnimation>();
                for (int i = 0; i<(int)state.Points.Count; i++) {
                    string pointKeyPath = state.AnimationKeyPathForPointAtIndex ((uint)i);

                    string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath);
                    CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i+1.1);
                    animations.Add(a);

                    keyPath = string.Format("{0}.opacity", pointKeyPath);
                    a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i+1.1);
                    animations.Add(a);

                    duration = a.Duration;
                }
                CAAnimationGroup g = new CAAnimationGroup();
                g.Duration = duration;
                g.Animations = animations.ToArray();
                return g;
            }
Exemplo n.º 11
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0;
                List <CAAnimation> animations = new List <CAAnimation>();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    string pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i);

                    string keyPath        = string.Format("{0}.distanceFromCenter", pointKeyPath);
                    CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values   = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i + 1.1);
                    animations.Add(a);

                    keyPath    = string.Format("{0}.opacity", pointKeyPath);
                    a          = CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                    a.Values   = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) };
                    a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                    a.Duration = 0.3 * (i + 1.1);
                    animations.Add(a);

                    duration = a.Duration;
                }
                CAAnimationGroup g = new CAAnimationGroup();

                g.Duration   = duration;
                g.Animations = animations.ToArray();
                return(g);
            }
Exemplo n.º 12
0
 public override void PointSelected(TKChart chart, TKChartData point, TKChartSeries series, nint index)
 {
     if (this.labelRender != null)
     {
         this.labelRender.SelectedSeries    = (int)series.Index;
         this.labelRender.SelectedDataPoint = index;
     }
 }
Exemplo n.º 13
0
            public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
            {
                double             duration   = 0;
                List <CAAnimation> animations = new List <CAAnimation> ();

                for (int i = 0; i < (int)state.Points.Count; i++)
                {
                    TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i);

                    if (Grow)
                    {
                        string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.x", series.Index, i);

                        CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
                        animation.Duration       = 0.1 * (i + 0.2);
                        animation.From           = new NSNumber(0);
                        animation.To             = new NSNumber(point.X);
                        animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                        animations.Add(animation);

                        duration = animation.Duration;
                    }
                    else
                    {
                        string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
                        nfloat oldY    = rect.Height;

                        if (i > 0)
                        {
                            CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
                            animation.Duration       = 0.1 * (i + 1);
                            animation.Values         = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) };
                            animation.KeyTimes       = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) };
                            animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
                            animations.Add(animation);

                            duration = animation.Duration;
                        }
                        else
                        {
                            CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
                            animation.From     = new NSNumber(oldY);
                            animation.To       = new NSNumber(point.Y);
                            animation.Duration = 0.1f;
                            animations.Add(animation);
                        }
                    }
                }

                CAAnimationGroup group = new CAAnimationGroup();

                group.Duration   = duration;
                group.Animations = animations.ToArray();

                return(group);
            }
Exemplo n.º 14
0
			public override TKChartPointLabel LabelForDataPoint (TKChart chart, TKChartData dataPoint, string propertyName, TKChartSeries series, nuint dataIndex)
			{
				TKChartDataPoint point = (TKChartDataPoint)dataPoint;
				if (series.Index == (nuint)this.selectedSeriesIndex && dataIndex == (nuint)this.selectedDataPointIndex) {
					return new MyPointLabel (point, series, String.Format ("{0}", point.DataYValue));
				}

				
				return new TKChartPointLabel (point, series, String.Format ("{0}", point.DataYValue));
			}
Exemplo n.º 15
0
			public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
			{
				double duration = 0;
				List<CAAnimation> animations = new List<CAAnimation> ();
			
				for (int i = 0; i<(int)state.Points.Count; i++) 
				{			
					TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex ((uint)i);

					if (Grow) 
					{
						string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.x", series.Index, i);

						CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
						animation.Duration = 0.1 *(i + 0.2);
						animation.From = new NSNumber(0);
						animation.To = new NSNumber(point.X);
						animation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut);
						animations.Add(animation);
			
						duration = animation.Duration;
					}
					else 
					{
						string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i);
						nfloat oldY = rect.Height;
	
						if (i > 0) 
						{
							CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath);
							animation.Duration = 0.1* (i + 1);
							animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) };
							animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) };
							animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut);
							animations.Add (animation);
	
							duration = animation.Duration;
						}
						else 
						{
							CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath);
							animation.From = new NSNumber(oldY);
							animation.To = new NSNumber(point.Y);
							animation.Duration = 0.1f;
							animations.Add(animation);
						}
					}
				}
			
				CAAnimationGroup group = new CAAnimationGroup ();
				group.Duration = duration;
				group.Animations = animations.ToArray();
			
				return group;
			}
Exemplo n.º 16
0
			public override TKChartPointLabelRender PointLabelRenderForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRender render)
			{
				if (this.labelRender == null) {
					labelRender = new MyPointLabelRender (render, this.selectedDataPointIndex, this.selectedSeriesIndex);
				}

				if (series.Index == 0) {
					return this.labelRender;
				}

				return null;
			}
Exemplo n.º 17
0
            public override TKChartPaletteItem PaletteItemForPoint(TKChart chart, nuint index, TKChartSeries series)
            {
                if (series.Index == (nuint)this.selectedSeriesIndex && index == (nuint)this.selectedDataPointIndex) {
                    return new TKChartPaletteItem (new TKStroke (UIColor.Black, (float)2.0), new TKSolidFill (UIColor.White));
                }

                if (series.Index == 0) {
                    return new TKChartPaletteItem (new TKSolidFill (new UIColor ((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0)));
                }

                return new TKChartPaletteItem (new TKSolidFill (new UIColor ((float)(241 / 255.0), (float)(140 / 255.0), (float)(133 / 255.0), (float)1.0)));
            }
Exemplo n.º 18
0
        public override void RenderPointLabels(TKChartSeries series, CGRect bounds, CGContext ctx)
        {
            if (labelLayer != null)
            {
                labelLayer.RemoveFromSuperLayer();
            }

            for (int i = 0; i < series.Items.Length; i++)
            {
                TKChartData dataPoint = (TKChartData)series.Items [i];
                CGPoint     location  = base.LocationForDataPoint(dataPoint, series, bounds);
                if (!bounds.Contains(location))
                {
                    continue;
                }

                TKChartPointLabel      label = this.LabelForDataPoint(dataPoint, series, (uint)i);
                CGRect                 labelRect;
                TKChartPointLabelStyle labelStyle = series.Style.PointLabelStyle;
                if (this.isSelectedPoint)
                {
                    labelRect = new CGRect((float)(location.X - 17.5), (float)(location.Y - 10 - 2.5 * Math.Abs(labelStyle.LabelOffset.Vertical)), 35, 30);
                    if (labelRect.Y < bounds.Y)
                    {
                        this.labelLayer.IsOutsideBounds = true;
                        labelRect.Y = (float)(location.Y + 10 + 2.5 * Math.Abs(labelStyle.LabelOffset.Vertical) - labelRect.Size.Height);
                    }
                    else
                    {
                        this.labelLayer.IsOutsideBounds = false;
                    }

                    this.labelLayer.Frame = labelRect;
                    this.Render.AddSublayer(this.labelLayer);
                    this.labelLayer.SetNeedsDisplay();
                }
                else
                {
                    CGSize labelSize = label.SizeThatFits(bounds.Size);
                    labelRect = new CGRect((float)(location.X - labelSize.Width / 2.0 + labelStyle.LabelOffset.Horizontal),
                                           (float)(location.Y - labelSize.Height / 2.0 + labelStyle.LabelOffset.Vertical), labelSize.Width, labelSize.Height);

                    if (labelRect.Y < this.Render.Bounds.Y)
                    {
                        labelRect.Y = (float)(location.Y - labelSize.Height / 2.0 + Math.Abs(labelStyle.LabelOffset.Vertical));
                    }

                    label.DrawInContext(ctx, labelRect, new TKChartVisualPoint(new PointF(0, 0)), UIColor.White);
                }
            }
        }
Exemplo n.º 19
0
        void snippet17()
        {
            TKChartSeries series = null;

            // >> chart-drawing-pallete-items-cs
            var paletteItem1 = new TKChartPaletteItem(new TKSolidFill(UIColor.Red));
            var paletteItem2 = new TKChartPaletteItem(new TKStroke(UIColor.Blue));
            var plaetteItem3 = new TKChartPaletteItem(new TKStroke(UIColor.Blue), new TKSolidFill(UIColor.Red));

            series.Style.Palette.AddPaletteItem(paletteItem1);
            // << chart-drawing-pallete-items-cs
            Console.WriteLine(paletteItem2);
            Console.WriteLine(plaetteItem3);
        }
Exemplo n.º 20
0
        void ReloadChart()
        {
            chart.RemoveAllData();

            TKChartSeries series = null;

            if (this.SelectedOption == 0)
            {
                series = new TKChartCandlestickSeries(points.ToArray());
            }
            else
            {
                series = new TKChartOhlcSeries(points.ToArray());
            }
            series.Selection = TKChartSeriesSelection.DataPoint;

            TKChartNumericAxis yAxis = new TKChartNumericAxis(new NSNumber(300), new NSNumber(380));

            yAxis.MajorTickInterval = 20;
            chart.YAxis             = yAxis;

            chart.AddSeries(series);

            TKChartDateTimeAxis xAxis = (TKChartDateTimeAxis)chart.XAxis;

            xAxis.MinorTickIntervalUnit                    = TKChartDateTimeAxisIntervalUnit.Days;
            xAxis.Style.MajorTickStyle.TicksOffset         = -3;
            xAxis.Style.MajorTickStyle.TicksHidden         = false;
            xAxis.Style.MajorTickStyle.TicksWidth          = 1.5f;
            xAxis.Style.MajorTickStyle.TicksFill           = new TKSolidFill(UIColor.FromRGB(203, 203, 203));
            xAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible;


            // >> chart-zoom-cs
            xAxis.AllowZoom = true;
            yAxis.AllowZoom = true;
            // << chart-zoom-cs

            // >> chart-pan-cs
            xAxis.AllowPan = true;
            yAxis.AllowPan = true;
            // << chart-pan-cs

            yAxis.Style.LabelStyle.TextAlignment = TKChartAxisLabelAlignment.Bottom | TKChartAxisLabelAlignment.Right;



            chart.ReloadData();
        }
Exemplo n.º 21
0
		public override TKChartPointLabel LabelForDataPoint (TKChartData dataPoint, TKChartSeries series, nuint dataIndex)
		{
			TKChartDataPoint point = (TKChartDataPoint)dataPoint;
			if (series.Index == (nuint)this.SelectedSeries && dataIndex == (nuint)this.SelectedDataPoint) {
				if (this.labelLayer == null) {
					this.labelLayer = new SelectedPointLabel ();
				}

				this.labelLayer.LabelStyle = series.Style.PointLabelStyle;
				this.labelLayer.Text = String.Format ("{0}", point.DataYValue);
				this.isSelectedPoint = true;
				return null;
			}

			this.isSelectedPoint = false;
			return new TKChartPointLabel (dataPoint, series, String.Format ("{0}", point.DataYValue));
		}
Exemplo n.º 22
0
        private TKChartPointLabel CreateHorizontalLabel(TKChartSeries series, TKChartDataPoint dataPoint)
        {
            series.Style.PointShape = new TKPredefinedShape(TKShapeType.Circle, new System.Drawing.SizeF(8, 8));
            series.Style.PointLabelStyle.TextHidden      = false;
            series.Style.PointLabelStyle.LabelOffset     = new UIOffset(0, -24);
            series.Style.PointLabelStyle.Insets          = new UIEdgeInsets(-1, -5, -1, -5);
            series.Style.PointLabelStyle.LayoutMode      = TKChartPointLabelLayoutMode.Manual;
            series.Style.PointLabelStyle.Font            = UIFont.SystemFontOfSize(10);
            series.Style.PointLabelStyle.TextAlignment   = UITextAlignment.Center;
            series.Style.PointLabelStyle.Fill            = new TKSolidFill(new UIColor((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0));
            series.Style.PointLabelStyle.ClipMode        = TKChartPointLabelClipMode.Hidden;
            series.Style.PointLabelStyle.TextOrientation = TKChartPointLabelOrientation.Horizontal;
            series.Style.PointLabelStyle.TextColor       = UIColor.Red;
            series.Style.ShapeMode = TKChartSeriesStyleShapeMode.AlwaysShow;

            return(new TKChartPointLabel(dataPoint, series, $"{dataPoint.DataName}, {dataPoint.DataYValue}"));
        }
Exemplo n.º 23
0
            // >> chart-ohlc-visual-cs
            public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index)
            {
                var      dataPoint = series.DataPointAtIndex((uint)index);
                TKStroke stroke    = null;

                if (dataPoint.Close.DoubleValue < dataPoint.Open.DoubleValue)
                {
                    stroke = new TKStroke(UIColor.Red);
                }
                else
                {
                    stroke = new TKStroke(UIColor.Green);
                }
                var paletteItem = new TKChartPaletteItem(stroke);

                return(paletteItem);
            }
Exemplo n.º 24
0
        void snippet15()
        {
            // >> chart-drawing-pallete-cs
            TKChartSeries series = null;

            series.Style.Palette = new TKChartPalette();
            // << chart-drawing-pallete-cs

            // >> chart-drawing-pallete-mode-index-cs
            series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseItemIndex;
            // << chart-drawing-pallete-mode-index-cs

            // >> chart-drawing-pallete-mode-series-cs
            series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseSeriesIndex;
            // << chart-drawing-pallete-mode-series-cs

            series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseItemIndex;
        }
Exemplo n.º 25
0
            // >> chart-candlestick-visual-cs
            public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index)
            {
                var dataPoint = series.DataPointAtIndex((uint)index);
                var stroke    = new TKStroke(UIColor.Black);
                var fill      = new TKSolidFill();

                if (dataPoint.Close.DoubleValue < dataPoint.Open.DoubleValue)
                {
                    fill.Color = UIColor.Red;
                }
                else
                {
                    fill.Color = UIColor.Green;
                }
                var paletteItem = new TKChartPaletteItem(stroke, fill);

                return(paletteItem);
            }
Exemplo n.º 26
0
            public override TKChartSeries GetSeries(TKChart chart, nuint index)
            {
                TKChartSeries series = null;

                if (index == 2)
                {
                    series = new TKChartSplineSeries();
                }
                else
                {
                    series = new TKChartLineSeries();
                }

                series.SelectionMode    = TKChartSeriesSelectionMode.Series;
                series.Style.PointShape = new TKPredefinedShape(TKShapeType.Circle, new System.Drawing.SizeF(10, 10));
                series.Title            = string.Format("Series: {0}", index + 1);
                return(series);
            }
Exemplo n.º 27
0
        private TKChartPointLabel CreateVerticalLabel(TKChartSeries series, TKChartDataPoint dataPoint)
        {
            series.Style.ShapeMode = TKChartSeriesStyleShapeMode.AlwaysShow;
            series.Style.PointLabelStyle.LayoutMode = TKChartPointLabelLayoutMode.Manual;
            series.Style.PointLabelStyle.Fill       = new TKSolidFill(UIColor.White);
            series.Style.PointLabelStyle.Insets     = new UIEdgeInsets(-1, -3, -1, -3);

            // Position the label at your preferred position
            series.Style.PointLabelStyle.LabelOffset = new UIOffset(0, 200);

            // Set the text properties
            series.Style.PointLabelStyle.TextOrientation = TKChartPointLabelOrientation.Vertical;
            series.Style.PointLabelStyle.TextAlignment   = UITextAlignment.Center;
            series.Style.PointLabelStyle.TextColor       = UIColor.Blue;
            series.Style.PointLabelStyle.TextHidden      = false;

            return(new TKChartPointLabel(dataPoint, series, dataPoint.DataYValue.ToString()));
        }
Exemplo n.º 28
0
        public override TKChartPointLabel LabelForDataPoint(TKChartData dataPoint, TKChartSeries series, nuint dataIndex)
        {
            TKChartDataPoint point = (TKChartDataPoint)dataPoint;

            if (series.Index == (nuint)this.SelectedSeries && dataIndex == (nuint)this.SelectedDataPoint)
            {
                if (this.labelLayer == null)
                {
                    this.labelLayer = new SelectedPointLabel();
                }

                this.labelLayer.LabelStyle = series.Style.PointLabelStyle;
                this.labelLayer.Text       = String.Format("{0}", point.DataYValue);
                this.isSelectedPoint       = true;
                return(null);
            }

            this.isSelectedPoint = false;
            return(new TKChartPointLabel(dataPoint, series, String.Format("{0}", point.DataYValue)));
        }
Exemplo n.º 29
0
		public override void RenderPointLabels (TKChartSeries series, CGRect bounds, CGContext ctx)
		{
			if (labelLayer != null) {
				labelLayer.RemoveFromSuperLayer ();
			}

			for (int i = 0; i < series.Items.Length; i++) {
				TKChartData dataPoint = (TKChartData)series.Items [i];
				CGPoint location = base.LocationForDataPoint (dataPoint, series, bounds);
				if (!bounds.Contains(location)) {
					continue;
				}

				TKChartPointLabel label = this.LabelForDataPoint (dataPoint, series, (uint)i);
				CGRect labelRect;
				TKChartPointLabelStyle labelStyle = series.Style.PointLabelStyle;
				if (this.isSelectedPoint) {
					labelRect = new CGRect ((float)(location.X - 17.5), (float)(location.Y - 10 - 2.5 * Math.Abs (labelStyle.LabelOffset.Vertical)), 35, 30);
					if (labelRect.Y < bounds.Y) {
						this.labelLayer.IsOutsideBounds = true;
						labelRect.Y = (float)(location.Y + 10 + 2.5 * Math.Abs (labelStyle.LabelOffset.Vertical) - labelRect.Size.Height);
					} else {
						this.labelLayer.IsOutsideBounds = false;
					}

					this.labelLayer.Frame = labelRect;
					this.Render.AddSublayer (this.labelLayer);
					this.labelLayer.SetNeedsDisplay ();
				} else {
					CGSize labelSize = label.SizeThatFits (bounds.Size);
					labelRect = new CGRect ((float)(location.X - labelSize.Width / 2.0 + labelStyle.LabelOffset.Horizontal),
						(float)(location.Y - labelSize.Height / 2.0 + labelStyle.LabelOffset.Vertical), labelSize.Width, labelSize.Height);

					if (labelRect.Y < this.Render.Bounds.Y) {
						labelRect.Y = (float)(location.Y - labelSize.Height / 2.0 + Math.Abs (labelStyle.LabelOffset.Vertical));
					}

					label.DrawInContext (ctx, labelRect, new TKChartVisualPoint(new PointF(0, 0)), UIColor.White);
				}
			}
		}
Exemplo n.º 30
0
        void snippet18()
        {
            TKChartSeries series = null;

            // >> chart-drawing-pallete-items-arrays-cs
            series.Style.Palette = new TKChartPalette();
            var redFill = new TKSolidFill(UIColor.Red, 2.0f);
            var stroke1 = new TKStroke(UIColor.Yellow, 1.0f);

            stroke1.CornerRadius = 2.0f;
            stroke1.Insets       = new UIEdgeInsets(1, 1, 1, 1);
            var stroke2 = new TKStroke(UIColor.Black, 1.0f);

            stroke2.CornerRadius = 2.0f;
            series.Style.Palette.AddPaletteItem(new TKChartPaletteItem(new TKDrawing[] { redFill, stroke1, stroke2 }));
            // << chart-drawing-pallete-items-arrays-cs

            // >> chart-drawing-pallete-point-cs
            series.Style.PointShape = new TKPredefinedShape(TKShapeType.Rhombus, new CGSize(15, 15));
            // << chart-drawing-pallete-point-cs
        }
Exemplo n.º 31
0
        public void ReloadChart()
        {
            chart.RemoveAllData();

            Random r = new Random();

            for (int i = 0; i < 3; i++)
            {
                List <TKChartDataPoint> list = new List <TKChartDataPoint> ();
                for (int j = 0; j < 8; j++)
                {
                    list.Add(new TKChartDataPoint(new NSNumber(j + 1), new NSNumber(r.Next() % 100)));
                }

                TKChartSeries series = null;
                switch (this.SelectedOption)
                {
                case 0:
                    series = new TKChartLineSeries(list.ToArray());
                    break;

                case 1:
                    series = new TKChartSplineSeries(list.ToArray());
                    break;

                case 2:
                    series = new TKChartAreaSeries(list.ToArray());
                    break;

                case 3:
                    series = new TKChartSplineAreaSeries(list.ToArray());
                    break;
                }
                chart.AddSeries(series);

                // >> chart-selection-cs
                series.Selection = TKChartSeriesSelection.Series;
                // << chart-selection-cs
            }
        }
Exemplo n.º 32
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            TKChart chart = new TKChart(this.ExampleBounds);

            chart.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
            this.View.AddSubview(chart);

            Random r = new Random();
            List <CustomObject> data = new List <CustomObject> ();

            for (int i = 0; i < 5; i++)
            {
                CustomObject obj = new CustomObject()
                {
                    ObjectID = i,
                    Value1   = r.Next(100),
                    Value2   = r.Next(100),
                    Value3   = r.Next(100)
                };
                data.Add(obj);
            }

            chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value1"));
            chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value2"));
            chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value3"));

            TKChartStackInfo stackInfo = new TKChartStackInfo(new NSNumber(1), TKChartStackMode.Stack);

            for (int i = 0; i < chart.Series.Length; i++)
            {
                TKChartSeries series = chart.Series [i];
                series.SelectionMode = TKChartSeriesSelectionMode.Series;
                series.StackInfo     = stackInfo;
            }

            chart.ReloadData();
        }
        public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect)
        {
            var duration   = 0.0;
            var animations = new List <CAAnimation>();

            for (int i = 0; i < (int)state.Points.Count; i++)
            {
                var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i);
                var keyPath      = pointKeyPath + ".y";
                var point        = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint;
                var oldY         = rect.Size.Height;

                if (i > 0)
                {
                    var animation = new CAKeyFrameAnimation();
                    animation.KeyPath  = keyPath;
                    animation.Duration = (double)(0.1 * i);
                    animation.Values   = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) };
                    animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1.0) };
                    animations.Add(animation);
                    duration = animation.Duration;
                }
                else
                {
                    var animation = new CABasicAnimation();
                    animation.KeyPath  = keyPath;
                    animation.From     = new NSNumber(oldY);
                    animation.To       = new NSNumber(point.Y);
                    animation.Duration = 0.1;
                    animations.Add(animation);
                }
            }

            var group = new CAAnimationGroup();

            group.Duration   = duration;
            group.Animations = animations.ToArray();
            return(group);
        }
Exemplo n.º 34
0
        public void reloadChart(object sender, EventArgs e)
        {
            chart.RemoveAllData();

            Random r = new Random();

            for (int i = 0; i < 3; i++)
            {
                List <TKChartDataPoint> list = new List <TKChartDataPoint> ();
                for (int j = 0; j < 8; j++)
                {
                    list.Add(new TKChartDataPoint(new NSNumber(j + 1), new NSNumber(r.Next() % 100)));
                }

                TKChartSeries series = null;

                switch (this.SelectedOption)
                {
                case 0:
                    series = new TKChartLineSeries(list.ToArray());
                    break;

                case 1:
                    series = new TKChartSplineSeries(list.ToArray());
                    break;

                case 2:
                    series = new TKChartAreaSeries(list.ToArray());
                    break;

                case 3:
                    series = new TKChartSplineAreaSeries(list.ToArray());
                    break;
                }
                series.SelectionMode = TKChartSeriesSelectionMode.Series;
                chart.AddSeries(series);
            }
        }
Exemplo n.º 35
0
            public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index)
            {
                TKChartPaletteItem item = null;

                if (series.Index == 1) {
                    UIColor[] colors = new UIColor[] {
                        new UIColor(0f, 1f, 0f, 0.4f),
                        new UIColor(1f, 0f, 0f, 0.4f),
                        new UIColor(0f, 0f, 1f, 0.4f),
                    };
                    TKLinearGradientFill gradient = new TKLinearGradientFill(colors, new PointF (0.5f, 0.0f), new PointF (0.5f, 1.0f));
                    item = new TKChartPaletteItem (gradient);
                } else {
                    TKImageFill image = new TKImageFill(new UIImage ("pattern1.png"), 5.0f);
                    image.ResizingMode = TKImageFillResizingMode.Tile;
                    TKStroke stroke = new TKStroke (UIColor.Black, 1.0f);
                    stroke.CornerRadius = 5.0f;
                    stroke.DashPattern = new NSNumber[] { new NSNumber(2), new NSNumber(2), new NSNumber(5), new NSNumber(2) };
                    item = new TKChartPaletteItem (new NSObject[] { image, stroke });
                }

                return item;
            }
Exemplo n.º 36
0
		public MyPointLabel(TKChartData dataPoint, TKChartSeries series, string text) : base(dataPoint, series, text)
		{
		}
Exemplo n.º 37
0
        public override void ViewDidLoad()
        {
            this.AddOption("Simple moving average", "Trendlines", () => AddTrendline(new TKChartSimpleMovingAverageIndicator(this.series)));
            this.AddOption("Exponential moving average", "Trendlines", () => AddTrendline(new TKChartExponentialMovingAverageIndicator(this.series)));
            this.AddOption("Weighted moving average", "Trendlines", () => AddTrendline(new TKChartWeightedMovingAverageIndicator(this.series)));
            this.AddOption("Triangular moving average", "Trendlines", () => AddTrendline(new TKChartTriangularMovingAverageIndicator(this.series)));
            this.AddOption("Bollinger bands indicator", "Trendlines", () => AddTrendline(new TKChartBollingerBandIndicator(this.series)));
            this.AddOption("Moving average envelopes", "Trendlines", () => AddTrendline(new TKChartMovingAverageEnvelopesIndicator(this.series)));
            this.AddOption("Typical price", "Trendlines", () => AddTrendline(new TKChartTypicalPriceIndicator(this.series)));
            this.AddOption("Weighted close", "Trendlines", () => AddTrendline(new TKChartWeightedCloseIndicator(this.series)));
            this.AddOption("Median price", "Trendlines", () => AddTrendline(new TKChartMedianPriceIndicator(this.series)));
            this.AddOption("Modified moving average", "Trendlines", () => AddTrendline(new TKChartModifiedMovingAverageIndicator(this.series)));
            this.AddOption("Adaptive moving average", "Trendlines", () => AddTrendline(new TKChartAdaptiveMovingAverageIndicator(this.series)));

            this.AddOption("Percentage volume oscillator", "Indicators", () => AddIndicator(new TKChartPercentageVolumeOscillator(this.series)));
            this.AddOption("Percentage price oscillator", "Indicators", () => AddIndicator(new TKChartPercentagePriceOscillator(this.series)));
            this.AddOption("Absolute volume oscillator", "Indicators", () => AddIndicator(new TKChartAbsoluteVolumeOscillator(this.series)));
            this.AddOption("MACD indicator", "Indicators", () => AddIndicator(new TKChartMACDIndicator(this.series)));
            this.AddOption("RSI", "Indicators", () => AddIndicator(new TKChartRelativeStrengthIndex(this.series)));
            this.AddOption("Accumulation distribution line", "Indicators", () => AddIndicator(new TKChartAccumulationDistributionLine(this.series)));
            this.AddOption("True range", "Indicators", () => AddIndicator(new TKChartTrueRangeIndicator(this.series)));
            this.AddOption("Average true range", "Indicators", () => AddIndicator(new TKChartAverageTrueRangeIndicator(this.series)));
            this.AddOption("Commodity channel index", "Indicators", () => AddIndicator(new TKChartCommodityChannelIndex(this.series)));
            this.AddOption("Fast stochastic indicator", "Indicators", () => AddIndicator(new TKChartFastStochasticIndicator(this.series)));
            this.AddOption("Slow stochastic indicator", "Indicators", () => AddIndicator(new TKChartSlowStochasticIndicator(this.series)));
            this.AddOption("Rate of change", "Indicators", () => AddIndicator(new TKChartRateOfChangeIndicator(this.series)));
            this.AddOption("TRIX", "Indicators", () => AddIndicator(new TKChartTRIXIndicator(this.series)));
            this.AddOption("Williams percent", "Indicators", () => AddIndicator(new TKChartWilliamsPercentIndicator(this.series)));
            this.AddOption("Ease of movement", "Indicators", () => AddIndicator(new TKChartEaseOfMovementIndicator(this.series)));
            this.AddOption("Detrended price oscillator", "Indicators", () => AddIndicator(new TKChartDetrendedPriceOscillator(this.series)));
            this.AddOption("Force index", "Indicators", () => AddIndicator(new TKChartForceIndexIndicator(this.series)));
            this.AddOption("Rapid adaptive variance", "Indicators", () => AddIndicator(new TKChartRapidAdaptiveVarianceIndicator(this.series)));
            this.AddOption("Standard deviation", "Indicators", () => AddIndicator(new TKChartStandardDeviationIndicator(this.series)));
            this.AddOption("Relative momentum index", "Indicators", () => AddIndicator(new TKChartRelativeMomentumIndex(this.series)));
            this.AddOption("On balance volume", "Indicators", () => AddIndicator(new TKChartOnBalanceVolumeIndicator(this.series)));
            this.AddOption("Price volume trend", "Indicators", () => AddIndicator(new TKChartPriceVolumeTrendIndicator(this.series)));
            this.AddOption("Positive volume index", "Indicators", () => AddIndicator(new TKChartPositiveVolumeIndexIndicator(this.series)));
            this.AddOption("Negative volume index", "Indicators", () => AddIndicator(new TKChartNegativeVolumeIndexIndicator(this.series)));
            this.AddOption("Money flow index", "Indicators", () => AddIndicator(new TKChartMoneyFlowIndexIndicator(this.series)));
            this.AddOption("Ultimate oscillator", "Indicators", () => AddIndicator(new TKChartUltimateOscillator(this.series)));
            this.AddOption("Full stochastic indicator", "Indicators", () => AddIndicator(new TKChartFullStochasticIndicator(this.series)));
            this.AddOption("Market facilitation index", "Indicators", () => AddIndicator(new TKChartMarketFacilitationIndex(this.series)));
            this.AddOption("Chaikin oscillator", "Indicators", () => AddIndicator(new TKChartChaikinOscillator(this.series)));

            base.ViewDidLoad();

            CGRect exampleBounds         = this.View.Bounds;
            CGRect overlayChartBounds    = new CGRect(exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height / 1.5f);
            nfloat indicatorsOffset      = exampleBounds.Y + overlayChartBounds.Height + 15;
            CGRect indicatorsChartBounds = new CGRect(exampleBounds.X, indicatorsOffset, exampleBounds.Width, exampleBounds.Height - indicatorsOffset);

            overlayChart = new TKChart(overlayChartBounds);
            overlayChart.GridStyle.VerticalLinesHidden = false;
            overlayChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview(overlayChart);

            indicatorsChart = new TKChart(indicatorsChartBounds);
            indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview(indicatorsChart);

            data   = StockDataPoint.LoadStockPoints(-1);
            series = new TKChartCandlestickSeries(data.ToArray());

            this.loadCharts();
        }
Exemplo n.º 38
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad ();

            CGRect exampleBounds = this.ExampleBounds;
            CGRect overlayChartBounds = new CGRect (exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height/1.5f);
            CGRect indicatorsChartBounds = new CGRect (exampleBounds.X, overlayChartBounds.Height + 15, exampleBounds.Width, exampleBounds.Height / 3.0f);

            overlayChart = new TKChart (overlayChartBounds);
            overlayChart.GridStyle.VerticalLinesHidden = false;
            overlayChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview (overlayChart);

            indicatorsChart = new TKChart (indicatorsChartBounds);
            indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None;
            this.View.AddSubview (indicatorsChart);

            data = StockDataPoint.LoadStockPoints(-1);
            settings = new IndicatorsTableView (this);

            SelectedIndicator = 0;
            SelectedTrendLine = 0;

            series = new TKChartCandlestickSeries (data.ToArray ());

            overlayChart.Delegate = new ChartDelegate (indicatorsChart);

            this.loadCharts ();
        }
Exemplo n.º 39
0
            public override string TextForLabelAtPoint(TKChart chart, TKChartData dataPoint, TKChartSeries series, nuint dataIndex)
            {
                if (series is TKChartPieSeries) {
                    TKChartDataPoint point = (TKChartDataPoint)dataPoint;
                    return point.DataName;
                }
                else if (series is TKChartBarSeries) {
                    TKChartDataPoint point = (TKChartDataPoint)dataPoint;
                    return String.Format ("{0}", point.DataXValue);
                }
                else if (series is TKChartOhlcSeries) {
                    TKChartFinancialDataPoint point = (TKChartFinancialDataPoint)dataPoint;
                    return String.Format ("O:{0}\nH:{1}\nL:{2}\nC:{3}", point.Open, point.High, point.Low, point.Close);
                }

                return String.Format ("{0}", ((TKChartDataPoint)dataPoint).DataYValue);
            }
Exemplo n.º 40
0
		public override void ViewDidLoad ()
		{
			this.AddOption ("Simple moving average", "Trendlines", () => AddTrendline (new TKChartSimpleMovingAverageIndicator (this.series)));
			this.AddOption ("Exponential moving average", "Trendlines", () => AddTrendline (new TKChartExponentialMovingAverageIndicator(this.series)));
			this.AddOption ("Weighted moving average", "Trendlines", () => AddTrendline (new TKChartWeightedMovingAverageIndicator(this.series)));
			this.AddOption ("Triangular moving average", "Trendlines", () => AddTrendline (new TKChartTriangularMovingAverageIndicator(this.series)));
			this.AddOption ("Bollinger bands indicator", "Trendlines", () => AddTrendline (new TKChartBollingerBandIndicator(this.series)));
			this.AddOption ("Moving average envelopes", "Trendlines", () => AddTrendline (new TKChartMovingAverageEnvelopesIndicator(this.series)));
			this.AddOption ("Typical price", "Trendlines", () => AddTrendline (new TKChartTypicalPriceIndicator(this.series)));
			this.AddOption ("Weighted close", "Trendlines", () => AddTrendline (new TKChartWeightedCloseIndicator(this.series)));
			this.AddOption ("Median price", "Trendlines", () => AddTrendline (new TKChartMedianPriceIndicator(this.series)));
			this.AddOption ("Modified moving average", "Trendlines", () => AddTrendline (new TKChartModifiedMovingAverageIndicator(this.series)));
			this.AddOption ("Adaptive moving average", "Trendlines", () => AddTrendline (new TKChartAdaptiveMovingAverageIndicator(this.series)));

			this.AddOption ("Percentage volume oscillator", "Indicators", () => AddIndicator (new TKChartPercentageVolumeOscillator (this.series)));
			this.AddOption ("Percentage price oscillator", "Indicators", () => AddIndicator (new TKChartPercentagePriceOscillator(this.series)));
			this.AddOption ("Absolute volume oscillator", "Indicators", () => AddIndicator (new TKChartAbsoluteVolumeOscillator(this.series)));
			this.AddOption ("MACD indicator", "Indicators", () => AddIndicator (new TKChartMACDIndicator(this.series)));
			this.AddOption ("RSI", "Indicators", () => AddIndicator (new TKChartRelativeStrengthIndex(this.series)));
			this.AddOption ("Accumulation distribution line", "Indicators", () => AddIndicator (new TKChartAccumulationDistributionLine(this.series)));
			this.AddOption ("True range", "Indicators", () => AddIndicator (new TKChartTrueRangeIndicator(this.series)));
			this.AddOption ("Average true range", "Indicators", () => AddIndicator (new TKChartAverageTrueRangeIndicator(this.series)));
			this.AddOption ("Commodity channel index", "Indicators", () => AddIndicator (new TKChartCommodityChannelIndex(this.series)));
			this.AddOption ("Fast stochastic indicator", "Indicators", () => AddIndicator (new TKChartFastStochasticIndicator(this.series)));
			this.AddOption ("Slow stochastic indicator", "Indicators", () => AddIndicator (new TKChartSlowStochasticIndicator(this.series)));
			this.AddOption ("Rate of change", "Indicators", () => AddIndicator (new TKChartRateOfChangeIndicator(this.series)));
			this.AddOption ("TRIX", "Indicators", () => AddIndicator (new TKChartTRIXIndicator(this.series)));
			this.AddOption ("Williams percent", "Indicators", () => AddIndicator (new TKChartWilliamsPercentIndicator(this.series)));
			this.AddOption ("Ease of movement", "Indicators", () => AddIndicator (new TKChartEaseOfMovementIndicator(this.series)));
			this.AddOption ("Detrended price oscillator", "Indicators", () => AddIndicator (new TKChartDetrendedPriceOscillator(this.series)));
			this.AddOption ("Force index", "Indicators", () => AddIndicator (new TKChartForceIndexIndicator(this.series)));
			this.AddOption ("Rapid adaptive variance", "Indicators", () => AddIndicator (new TKChartRapidAdaptiveVarianceIndicator(this.series)));
			this.AddOption ("Standard deviation", "Indicators", () => AddIndicator (new TKChartStandardDeviationIndicator(this.series)));
			this.AddOption ("Relative momentum index", "Indicators", () => AddIndicator (new TKChartRelativeMomentumIndex(this.series)));
			this.AddOption ("On balance volume", "Indicators", () => AddIndicator (new TKChartOnBalanceVolumeIndicator(this.series)));
			this.AddOption ("Price volume trend", "Indicators", () => AddIndicator (new TKChartPriceVolumeTrendIndicator(this.series)));
			this.AddOption ("Positive volume index", "Indicators", () => AddIndicator (new TKChartPositiveVolumeIndexIndicator(this.series)));
			this.AddOption ("Negative volume index", "Indicators", () => AddIndicator (new TKChartNegativeVolumeIndexIndicator(this.series)));
			this.AddOption ("Money flow index", "Indicators", () => AddIndicator (new TKChartMoneyFlowIndexIndicator(this.series)));
			this.AddOption ("Ultimate oscillator", "Indicators", () => AddIndicator (new TKChartUltimateOscillator(this.series)));
			this.AddOption ("Full stochastic indicator", "Indicators", () => AddIndicator (new TKChartFullStochasticIndicator(this.series)));
			this.AddOption ("Market facilitation index", "Indicators", () => AddIndicator (new TKChartMarketFacilitationIndex(this.series)));
			this.AddOption ("Chaikin oscillator", "Indicators", () => AddIndicator (new TKChartChaikinOscillator(this.series)));

			base.ViewDidLoad ();

			CGRect exampleBounds = this.View.Bounds;
			CGRect overlayChartBounds = new CGRect (exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height/1.5f);
			nfloat indicatorsOffset = exampleBounds.Y + overlayChartBounds.Height + 15;
			CGRect indicatorsChartBounds = new CGRect (exampleBounds.X, indicatorsOffset, exampleBounds.Width, exampleBounds.Height - indicatorsOffset);

			overlayChart = new TKChart (overlayChartBounds);
			overlayChart.GridStyle.VerticalLinesHidden = false;
			overlayChart.AutoresizingMask = ~UIViewAutoresizing.None;
			this.View.AddSubview (overlayChart);

			indicatorsChart = new TKChart (indicatorsChartBounds);
			indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None;
			this.View.AddSubview (indicatorsChart);

			data = StockDataPoint.LoadStockPoints(-1);
			series = new TKChartCandlestickSeries (data.ToArray ());

			this.loadCharts ();
		}
Exemplo n.º 41
0
 public override void PointSelected(TKChart chart, TKChartData point, TKChartSeries series, nint index)
 {
     this.selectedSeriesIndex = (int)series.Index;
     this.selectedDataPointIndex = (int)index;
 }
Exemplo n.º 42
0
			public override void PointDeselected (TKChart chart, TKChartData point, TKChartSeries series, nint index)
			{
				if (this.labelRender != null) {
					this.labelRender.SelectedDataPoint = -1;
				}
			}
Exemplo n.º 43
0
		public MyAnnotation (TKPredefinedShape shape, NSObject x, NSObject y, TKChartSeries series)
			: base(x, y, series)
		{
			this.Shape = shape;
		}
Exemplo n.º 44
0
            public override string TextForLabelAtPoint(TKChart chart, TKChartData dataPoint, TKChartSeries series, nuint dataIndex)
            {
                if (series is TKChartPieSeries)
                {
                    TKChartDataPoint point = (TKChartDataPoint)dataPoint;
                    return(point.DataName);
                }
                else if (series is TKChartBarSeries)
                {
                    TKChartDataPoint point = (TKChartDataPoint)dataPoint;
                    return(String.Format("{0}", point.DataXValue));
                }
                else if (series is TKChartOhlcSeries)
                {
                    TKChartFinancialDataPoint point = (TKChartFinancialDataPoint)dataPoint;
                    return(String.Format("O:{0}\nH:{1}\nL:{2}\nC:{3}", point.Open, point.High, point.Low, point.Close));
                }

                return(String.Format("{0}", ((TKChartDataPoint)dataPoint).DataYValue));
            }
Exemplo n.º 45
0
 public MyPointLabel(TKChartData dataPoint, TKChartSeries series, string text) : base(dataPoint, series, text)
 {
 }
Exemplo n.º 46
0
 public override void PointSelected(TKChart chart, TKChartData point, TKChartSeries series, nint index)
 {
     this.selectedSeriesIndex    = (int)series.Index;
     this.selectedDataPointIndex = (int)index;
 }
Exemplo n.º 47
0
            public override TKChartPointLabel LabelForDataPoint(TKChart chart, TKChartData dataPoint, string propertyName, TKChartSeries series, nuint dataIndex)
            {
                TKChartDataPoint point = (TKChartDataPoint)dataPoint;

                if (series.Index == (nuint)this.selectedSeriesIndex && dataIndex == (nuint)this.selectedDataPointIndex)
                {
                    return(new MyPointLabel(point, series, String.Format("{0}", point.DataYValue)));
                }


                return(new TKChartPointLabel(point, series, String.Format("{0}", point.DataYValue)));
            }
Exemplo n.º 48
0
            public override TKChartPaletteItem PaletteItemForPoint(TKChart chart, nuint index, TKChartSeries series)
            {
                if (series.Index == (nuint)this.selectedSeriesIndex && index == (nuint)this.selectedDataPointIndex)
                {
                    return(new TKChartPaletteItem(new TKStroke(UIColor.Black, 2.0f), new TKSolidFill(UIColor.White)));
                }

                if (series.Index == 0)
                {
                    return(new TKChartPaletteItem(new TKSolidFill(new UIColor((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0))));
                }

                return(new TKChartPaletteItem(new TKSolidFill(new UIColor((float)(241 / 255.0), (float)(140 / 255.0), (float)(133 / 255.0), (float)1.0))));
            }