Exemplo n.º 1
0
        /// <summary>
        /// прорисовать паттерн на его индивидуальном чарте
        /// </summary>
        private void PaintSinglePattern(IPattern pattern, ChartPainter chart)
        {
            if (chart.GetChart().InvokeRequired)
            {
                chart.GetChart().Invoke(new Action <IPattern, ChartPainter>(PaintSinglePattern), pattern, chart);
                return;
            }
            chart.ClearDataPointsAndSizeValue();
            chart.ClearSeries();

            if (pattern.Type == PatternType.Candle)
            {
                chart.PaintSingleCandlePattern(((PatternCandle)pattern).GetInCandle());
            }
            if (pattern.Type == PatternType.Volume)
            {
                chart.PaintSingleVolumePattern(((PatternVolume)pattern).GetInCandle());
            }
            if (pattern.Type == PatternType.Indicators)
            {
                PatternIndicators pat = (PatternIndicators)pattern;



                for (int i = 0; pat.Indicators != null && i < pat.Indicators.Count; i++)
                {
                    if (chart.IndicatorIsCreate(pat.Indicators[i].Name + "0") == false)
                    {
                        chart.CreateSeries(chart.GetChartArea(pat.Indicators[i].NameArea), pat.Indicators[i].TypeIndicator, pat.Indicators[i].NameSeries + "0");
                    }

                    chart.ProcessIndicator(pat.Indicators[i]);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Пересобрать контекстное меню для чарта
        /// </summary>
        private void ReloadContext()
        {
            try
            {
                List <MenuItem> menuRedact = null;

                List <MenuItem> menuDelete = null;

                if (_indicatorsCandles != null)
                {
                    menuRedact = new List <MenuItem>();
                    menuDelete = new List <MenuItem>();
                    for (int i = 0; i < _indicatorsCandles.Count; i++)
                    {
                        menuRedact.Add(new MenuItem(_indicatorsCandles[i].GetType().Name));
                        menuRedact[menuRedact.Count - 1].Click += RedactContextMenu_Click;
                        if (_indicatorsCandles[i].CanDelete)
                        {
                            menuDelete.Add(new MenuItem(_indicatorsCandles[i].GetType().Name));
                            menuDelete[menuDelete.Count - 1].Click += DeleteContextMenu_Click;
                        }
                    }
                }

                if (ChartCandle.GetChartArea("TradeArea") != null)
                {
                    if (menuRedact == null)
                    {
                        menuRedact = new List <MenuItem>();
                        menuDelete = new List <MenuItem>();
                    }
                    menuDelete.Add(new MenuItem("Trades"));
                    menuDelete[menuDelete.Count - 1].Click += DeleteContextMenu_Click;
                }

                List <MenuItem> items;

                items = new List <MenuItem>();
                items.Add(new MenuItem("Отрисовка чарта",
                                       new MenuItem[]
                                       { new MenuItem("Цветовая схема", new MenuItem[] { new MenuItem("Тёмная"), new MenuItem("Светлая") }),
                                         new MenuItem("Фигура сделки", new MenuItem[] { new MenuItem("Ромб"), new MenuItem("Кружок"), new MenuItem("Треугольник(тормозит при дебаггинге)") }),
                                         new MenuItem("Размер фигуры", new MenuItem[] { new MenuItem("6"), new MenuItem("10"), new MenuItem("14") }) }

                                       ));

                items[items.Count - 1].MenuItems[0].MenuItems[0].Click += ChartBlackColor_Click;
                items[items.Count - 1].MenuItems[0].MenuItems[1].Click += ChartWhiteColor_Click;

                items[items.Count - 1].MenuItems[1].MenuItems[0].Click += ChartRombToPosition_Click;
                items[items.Count - 1].MenuItems[1].MenuItems[1].Click += ChartCircleToPosition_Click;
                items[items.Count - 1].MenuItems[1].MenuItems[2].Click += ChartTriangleToPosition_Click;

                items[items.Count - 1].MenuItems[2].MenuItems[0].Click += ChartMinPointSize_Click;
                items[items.Count - 1].MenuItems[2].MenuItems[1].Click += ChartMiddlePointSize_Click;
                items[items.Count - 1].MenuItems[2].MenuItems[2].Click += ChartMaxPointSize_Click;

                items.Add(new MenuItem("Скрыть области"));
                items[items.Count - 1].Click += ChartHideIndicators_Click;

                items.Add(new MenuItem("Показать области"));
                items[items.Count - 1].Click += ChartShowIndicators_Click;

                if (menuRedact != null)
                {
                    items.Add(new MenuItem("Редактировать индикаторы", menuRedact.ToArray()));
                    items.Add(new MenuItem("Удалить индикатор", menuDelete.ToArray()));
                }

                items.Add(new MenuItem("Добавить индикатор"));
                items[items.Count - 1].Click += CreateIndicators_Click;

                ContextMenu menu = new ContextMenu(items.ToArray());

                ChartCandle.GetChart().ContextMenu = menu;
            }
            catch (Exception error)
            {
                SendErrorMessage(error);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// пересобрать контекстное меню для чарта
        /// </summary>
        private void ReloadContext()
        {
            try
            {
                List <MenuItem> menuRedact = null;

                List <MenuItem> menuDelete = null;

                if (_indicatorsCandles != null)
                {
                    menuRedact = new List <MenuItem>();
                    menuDelete = new List <MenuItem>();
                    for (int i = 0; i < _indicatorsCandles.Count; i++)
                    {
                        menuRedact.Add(new MenuItem(_indicatorsCandles[i].GetType().Name));
                        menuRedact[menuRedact.Count - 1].Click += RedactContextMenu_Click;
                        if (_indicatorsCandles[i].CanDelete)
                        {
                            menuDelete.Add(new MenuItem(_indicatorsCandles[i].GetType().Name));
                            menuDelete[menuDelete.Count - 1].Click += DeleteContextMenu_Click;
                        }
                    }
                }

                if (_chartCandle.GetChartArea("TradeArea") != null)
                {
                    if (menuRedact == null)
                    {
                        menuRedact = new List <MenuItem>();
                        menuDelete = new List <MenuItem>();
                    }
                    menuDelete.Add(new MenuItem("Trades"));
                    menuDelete[menuDelete.Count - 1].Click += DeleteContextMenu_Click;
                }



                List <MenuItem> items;

                items = new List <MenuItem>();

                items.Add(new MenuItem("Цвет чарта", new MenuItem[] { new MenuItem("Тёмный"), new MenuItem("Светлый") }));
                items[items.Count - 1].MenuItems[0].Click += ChartBlackColor_Click;
                items[items.Count - 1].MenuItems[1].Click += ChartWhiteColor_Click;

                items.Add(new MenuItem("Частота обновления", new MenuItem[] { new MenuItem("Максимально часто"), new MenuItem("Раз в секунду(оптимально)"), new MenuItem("Раз в пять секунд") }));
                items[items.Count - 1].MenuItems[0].Click += ChartReloadMaxFast_Click;
                items[items.Count - 1].MenuItems[1].Click += ChartReloadOneSecond_Click;
                items[items.Count - 1].MenuItems[2].Click += ChartReloadFiveSeconds_Click;

                items.Add(new MenuItem("Скрыть области"));
                items[items.Count - 1].Click += ChartHideIndicators_Click;

                items.Add(new MenuItem("Показать области"));
                items[items.Count - 1].Click += ChartShowIndicators_Click;

                if (menuRedact != null)
                {
                    items.Add(new MenuItem("Редактировать индикаторы", menuRedact.ToArray()));
                    items.Add(new MenuItem("Удалить индикатор", menuDelete.ToArray()));
                }

                items.Add(new MenuItem("Добавить индикатор"));
                items[items.Count - 1].Click += CreateIndicators_Click;

                ContextMenu menu = new ContextMenu(items.ToArray());

                _chartCandle.GetChart().ContextMenu = menu;
                // menu.Show(_chartCandle.GetChart(), ((MouseEventArgs)e).Location);
            }
            catch (Exception error)
            {
                SendErrorMessage(error);
            }
        }