Example #1
0
		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);
		}
Example #2
0
        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);
        }