示例#1
0
        public static void SetChartViewModelPriceData(IList <Candle> candles, ChartViewModel cvm)
        {
            var priceDataSeries = new OhlcDataSeries <DateTime, double>();
            var xvalues         = new List <DateTime>();
            var openValues      = new List <double>();
            var highValues      = new List <double>();
            var lowValues       = new List <double>();
            var closeValues     = new List <double>();

            var atr = new AverageTrueRange();

            for (var i = 0; i < candles.Count; i++)
            {
                var time = new DateTime(candles[i].CloseTimeTicks, DateTimeKind.Utc).ToLocalTime();

                xvalues.Add(time);
                openValues.Add((double)candles[i].OpenBid);
                highValues.Add((double)candles[i].HighBid);
                lowValues.Add((double)candles[i].LowBid);
                closeValues.Add((double)candles[i].CloseBid);
            }

            priceDataSeries.Append(xvalues, openValues, highValues, lowValues, closeValues);
            priceDataSeries.SeriesName = "Price";

            var pricePaneVm = cvm.ChartPaneViewModels.Count > 0 ? cvm.ChartPaneViewModels[0] : null;
            var atrPaneVm   = cvm.ChartPaneViewModels.Count > 1 ? cvm.ChartPaneViewModels[1] : null;

            if (pricePaneVm == null)
            {
                pricePaneVm = new ChartPaneViewModel(cvm, cvm.ViewportManager)
                {
                    IsFirstChartPane = true,
                    IsLastChartPane  = false
                };

                var series = new FastCandlestickRenderableSeries {
                    AntiAliasing = false
                };
                series.SetValue(FilteringLegendModifier.IncludeSeriesProperty, false);
                series.SeriesColor = Colors.DarkBlue;
                pricePaneVm.ChartSeriesViewModels.Add(new ChartSeriesViewModel(priceDataSeries, series));
                cvm.ChartPaneViewModels.Add(pricePaneVm);
            }
            else
            {
                pricePaneVm.ChartSeriesViewModels.Clear();
                var renderableSeries = new FastCandlestickRenderableSeries {
                    AntiAliasing = false
                };
                renderableSeries.SetValue(FilteringLegendModifier.IncludeSeriesProperty, false);
                pricePaneVm.ChartSeriesViewModels.Add(new ChartSeriesViewModel(priceDataSeries, renderableSeries));
            }
        }
示例#2
0
        public static void AddIndicator(ChartPaneViewModel paneViewModel, string market, IIndicator indicator, Color color, Timeframe timeframe, IList <Candle> candles, bool showInLegend = true)
        {
            var series           = CreateIndicatorSeries(market, indicator, color, timeframe, candles);
            var renderableSeries = new FastLineRenderableSeries
            {
                AntiAliasing    = false,
                SeriesColor     = color,
                StrokeThickness = 2
            };

            renderableSeries.SetValue(FilteringLegendModifier.IncludeSeriesProperty, showInLegend);

            paneViewModel.ChartSeriesViewModels.Add(new ChartSeriesViewModel(series, renderableSeries));
        }
示例#3
0
        public static void SetChartViewModelIndicatorPaneData(IList <Candle> candles, ChartViewModel cvm, IIndicator indicator)
        {
            indicator.Reset();
            var indicatorDataSeries = new XyDataSeries <DateTime, double>();

            for (var i = 0; i < candles.Count; i++)
            {
                var time = new DateTime(candles[i].CloseTimeTicks, DateTimeKind.Utc).ToLocalTime();

                var v = indicator.Process(candles[i]);
                indicatorDataSeries.Append(time, v.IsFormed ? v.Value : float.NaN);
            }

            indicatorDataSeries.SeriesName = indicator.Name;

            var indicatorPaneVm = cvm.ChartPaneViewModels.Count > 1 ? cvm.ChartPaneViewModels[1] : null;

            if (indicatorPaneVm == null)
            {
                var indicatorPane = new ChartPaneViewModel(cvm, cvm.ViewportManager)
                {
                    IsFirstChartPane    = false,
                    IsLastChartPane     = true,
                    YAxisTextFormatting = "0.0000"
                };

                indicatorPane.ChartSeriesViewModels.Add(new ChartSeriesViewModel(indicatorDataSeries, new FastLineRenderableSeries
                {
                    AntiAliasing    = false,
                    SeriesColor     = Colors.DarkBlue,
                    StrokeThickness = 2
                }));

                cvm.ChartPaneViewModels.Add(indicatorPane);
            }
            else
            {
                indicatorPaneVm.ChartSeriesViewModels.Clear();
                var fastLineRenderableSeries = new FastLineRenderableSeries
                {
                    AntiAliasing    = false,
                    SeriesColor     = Colors.DarkBlue,
                    StrokeThickness = 2
                };

                indicatorPaneVm.ChartSeriesViewModels.Add(new ChartSeriesViewModel(indicatorDataSeries, fastLineRenderableSeries));
            }
        }