private void InitCharts() { _candle = null; _lastPrice = 0m; _allCandles.Clear(); _chartCombined.ClearAreas(); _chartBindVisibleRange.ClearAreas(); _areaComb = new ChartArea(); _areaBVR1 = new ChartArea(); _areaBVR2 = new ChartArea(); _areaComb.YAxises.Add(new ChartAxis { Id = _chartMainYAxis, AutoRange = false, AxisType = ChartAxisType.Numeric, AxisAlignment = ChartAxisAlignment.Right, }); _areaBVR2.YAxises.Add(new ChartAxis { Id = _chartMainYAxis, AutoRange = false, AxisType = ChartAxisType.Numeric, AxisAlignment = ChartAxisAlignment.Right, }); _chartCombined.AddArea(_areaComb); _chartBindVisibleRange.AddArea(_areaBVR1); _chartBindVisibleRange.AddArea(_areaBVR2); _timeframe = int.Parse((string)((ComboBoxItem)_comboMainTimeframe.SelectedItem).Tag); var step = (decimal)_updownPriceStep.Value.Value; var series = new CandleSeries( typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(_timeframe)); _candleElement1 = new ChartCandleElement { FullTitle = "Candles", YAxisId = _chartMainYAxis }; _chartCombined.AddElement(_areaComb, _candleElement1, series); _bvElement = new ChartBoxVolumeElement(_timeframe, step) { FullTitle = "BoxVolume", YAxisId = _chartMainYAxis }; _chartCombined.AddElement(_areaComb, _bvElement); _cpElement = new ChartClusterProfileElement(_timeframe, step) { FullTitle = "Cluster profile" }; _chartBindVisibleRange.AddElement(_areaBVR1, _cpElement); _candleElement2 = new ChartCandleElement { FullTitle = "Candles", YAxisId = _chartMainYAxis }; _chartBindVisibleRange.AddElement(_areaBVR2, _candleElement2, series); 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(); _chartCombined.IndicatorTypes.AddRange(indicators); _chartBindVisibleRange.IndicatorTypes.AddRange(indicators); }
private void InitCharts() { _candle = null; _lastPrice = 0m; _allCandles.Clear(); _chartCombined.ClearAreas(); _chartBindVisibleRange.ClearAreas(); _areaComb = new ChartArea(); _areaBVR1 = new ChartArea(); _areaBVR2 = new ChartArea(); _areaComb.YAxises.Add(new ChartAxis { Id = _chartMainYAxis, AutoRange = false, AxisType = ChartAxisType.Numeric, AxisAlignment = ChartAxisAlignment.Right, }); _areaBVR2.YAxises.Add(new ChartAxis { Id = _chartMainYAxis, AutoRange = false, AxisType = ChartAxisType.Numeric, AxisAlignment = ChartAxisAlignment.Right, }); _chartCombined.AddArea(_areaComb); _chartBindVisibleRange.AddArea(_areaBVR1); _chartBindVisibleRange.AddArea(_areaBVR2); _timeframe = int.Parse((string)((ComboBoxItem)_comboMainTimeframe.SelectedItem).Tag); var step = (decimal)_updownPriceStep.Value.Value; var series = new CandleSeries( typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(_timeframe)); _candleElement1 = new ChartCandleElement { FullTitle = "Candles", YAxisId = _chartMainYAxis }; _chartCombined.AddElement(_areaComb, _candleElement1, series); _bvElement = new ChartBoxVolumeElement(_timeframe, step) { FullTitle = "BoxVolume", YAxisId = _chartMainYAxis }; _chartCombined.AddElement(_areaComb, _bvElement); _cpElement = new ChartClusterProfileElement(_timeframe, step) { FullTitle = "Cluster profile" }; _chartBindVisibleRange.AddElement(_areaBVR1, _cpElement); _candleElement2 = new ChartCandleElement { FullTitle = "Candles", YAxisId = _chartMainYAxis }; _chartBindVisibleRange.AddElement(_areaBVR2, _candleElement2, series); 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(); _chartCombined.IndicatorTypes.AddRange(indicators); _chartBindVisibleRange.IndicatorTypes.AddRange(indicators); }