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(); }
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); }