Beispiel #1
0
        public MainWindow()
        {
            InitializeComponent();

            Title = Title.Put(LocalizedStrings.Str3200);

            _fpsAverage = new MyMovingAverage(10);

            Loaded += OnLoaded;

            PreviewMouseDoubleClick     += (sender, args) => { Chart.IsAutoRange = true; };
            PreviewMouseWheel           += (sender, args) => { Chart.IsAutoRange = false; };
            PreviewMouseRightButtonDown += (sender, args) => { Chart.IsAutoRange = false; };

            _chartUpdateTimer.Interval = TimeSpan.FromMilliseconds(100);
            _chartUpdateTimer.Tick    += ChartUpdateTimerOnTick;
            _chartUpdateTimer.Start();
        }
Beispiel #2
0
        private void InitCharts()
        {
            Chart.ClearAreas();

            _area = new ChartArea {
                ShowPerfStats = true
            };

            var yAxis = _area.YAxises.First();

            yAxis.AutoRange    = true;
            Chart.IsAutoRange  = true;
            Chart.IsAutoScroll = true;

            Chart.AddArea(_area);

            var series = new CandleSeries(
                typeof(TimeFrameCandle),
                _security,
                TimeSpan.FromMinutes(Timeframe));

            _indicatorElement = null;
            _tradeElement     = null;

            _candleElement = new ChartCandleElement(Timeframe, PriceStep)
            {
                FullTitle = "Candles", YAxisId = yAxis.Id
            };
            Chart.AddElement(_area, _candleElement, series);

            if (AddIndicator)
            {
                _indicator = new MyMovingAverage(200)
                {
                    Name = "MyMA"
                };

                _indicatorElement = new ChartIndicatorElement
                {
                    DrawStyle       = ChartIndicatorDrawStyles.Line,
                    Antialiasing    = true,
                    StrokeThickness = 1,
                    Color           = Colors.Blue,
                    YAxisId         = yAxis.Id,
                };

                Chart.AddElement(_area, _indicatorElement, series, _indicator);
            }

            if (AddTrades)
            {
                _tradeElement = new ChartTradeElement {
                    FullTitle = "Trades"
                };
                Chart.AddElement(_area, _tradeElement, _security);
            }

            var ns = typeof(IIndicator).Namespace;

            var rendererTypes = typeof(Chart).Assembly
                                .GetTypes()
                                .Where(t => !t.IsAbstract && typeof(BaseChartIndicatorPainter).IsAssignableFrom(t))
                                .ToDictionary(t => t.Name);

            var indicators = typeof(IIndicator).Assembly
                             .GetTypes()
                             .Where(t => t.Namespace == ns && !t.IsAbstract && typeof(IIndicator).IsAssignableFrom(t))
                             .Select(t =>
            {
                var name = t.Name;
                var p    = rendererTypes.TryGetValue(name + "Painter");
                if (p == null)
                {
                    if (t.Name.EndsWith("Indicator"))
                    {
                        name = name.Substring(0, name.Length - "Indicator".Length);
                    }

                    p = rendererTypes.TryGetValue(name + "Painter");
                }

                return(new IndicatorType(t, p));
            })
                             .ToArray();

            Chart.IndicatorTypes.AddRange(indicators);
        }