Microsoft Chart Control - Big Red X (плохо) всякий раз, когда я использую финансовые формулы - PullRequest
2 голосов
/ 28 февраля 2010

Я обнаружил элементы управления диаграммами Microsoft .Net из другого поста здесь, и до сих пор я их обожаю. Для тех, кто в этом нуждается, вот ссылка: http://code.msdn.microsoft.com/mschart

Я делаю все во время выполнения, например, создаю серии и накладываю их на область диаграммы. Я могу успешно создать свечную диаграмму, предоставив ей значения X и 4 Y, и когда я добавлю ее на диаграмму, вот так:

// "Price" is the .Name property of this series
chart1.Series.Add(priceseries);

Отлично работает. Затем я просмотрел образцы, которые пришли с этим прекрасным контролем для финансовых формул. В примере сказано, что для использования формулы скользящего среднего (просто используя это в качестве примера, я не могу заставить их работать), код выглядит так:

chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage,"5","Input","Simple");

Где "5" - это период, который нужно использовать, так что это может быть все, что я хочу. «Вход» - это серия источников данных, а «Простой» - выходной ряд. Чтобы сделать это так, чтобы мой код работал, я создал кнопку и сделал следующее:

    private void button1_Click(object sender, EventArgs e)
    {
        chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage, "5", "Price", "SMA");     
    }

Хорошо и просто, да? Что ж, как только я нажимаю на эту кнопку, мой элемент управления диаграммы отображает на графике большую, красную, несчастную X и НЕ серию скользящих средних (которую я назвал «SMA») в любом виде, форме или форме.

Добавляя к приведенному выше коду, я попытался предварительно создать серию «SMA», я попытался добавить серию «SMA» на график после выполнения вызова финансовой формулы, и оба заканчиваются большим средним красным X. Повторно просматривая пример кода, кажется, что единственная строка кода - это все, что нужно для генерации дополнительной серии данных, но я застрял! Это не помогает, что красный X не имеет никакой отладочной информации: (

Есть какие-нибудь идеи о том, как избавиться от большого X и заставить его отображать новую серию данных?

Обновление: В качестве теста я удалил бит о добавлении ряда в Chart1, а затем добавил бит chart1.DataManipulator сразу после него. Как и ожидалось, начальная серия, в которой есть все мои исходные данные, не появляется (потому что я удалила деталь, добавив ее в диаграмму), но когда следующая строка кода выполняет приложение формулы - большого красного X нет. Нет данных показано, но без кода ошибки - так что я думаю, что это улучшение? Это наводит меня на мысль, что есть какая-то проблема либо с начальным набором данных, к которому я применяю формулу, либо с чем-то, связанным с видом / границами самого элемента управления диаграммы. Если я найду что-нибудь еще на этом треке, я опубликую это как второе обновление.

Ответы [ 3 ]

3 голосов
/ 01 марта 2010

Я обнаружил источник моей проблемы:

priceseries.IsXValueIndexed = true;

Я сделал это изначально, чтобы пропустить пустые точки данных (которые будут выходными в сценарии цены акций). Когда я изменил значение на false, внезапно применение формулы сработало нормально. Недостатком является то, что у меня есть пустые места на выходные дни, где нет данных! Но это еще одна проблема, которую я могу решить самостоятельно.

Для всех, кто имеет эту проблему, см. Эту справочную статью для дополнительной информации: http://msdn.microsoft.com/en-us/library/dd456699(VS.100).aspx

Примечание о группировке ваших данных в первую очередь не шутка. Не опускайте никаких точек данных!

2 голосов
/ 16 августа 2010

со мной тоже случилось.

При использовании FinancialFormulas (в частности FinancialFormula.ExponentialMovingAverage) для серии ChartType должно быть установлено значение SeriesChartType.Line.

В моем коде было установлено значение SeriesChartType.FastLine, и это вызывало исключение OverflowException из System.Drawing.dll

1 голос
/ 28 февраля 2010

Большой красный X - это элемент управления, который столкнулся с проблемой при запуске / интерпретации формулы и отбросил призрак. Возможно, формула была слишком сложной и громоздкой, чтобы элемент управления Chart мог с ней справиться ... Может быть, есть более современная версия кода, которая сняла ограничение. На codeplex.com обязательно найдется что-то для этого.

Это может произойти в равной степени и во время разработки, при разработке формы и перетаскивании на нее элемента управления, нескольких свойств, установленных здесь и там, и чтобы получить большой красный X, это было обычным явлением, когда элемент управления ведет себя неправильно во время разработки также.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

...