Microsoft Chart Control — большой красный крестик (плохо) всякий раз, когда я использую финансовые формулы

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

Я делаю все во время выполнения, например, создаю ряды и накладываю их на область диаграммы. Я могу успешно создать график Candlestick, предоставив ему значение 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» на график после выполнения вызова Financialformula, и оба заканчиваются большим средним красным X. Проходя через пример кода снова, кажется, что одна строка кода — это все, что нужно для генерации дополнительной серии данных, но я застрял! Не помогает и то, что красный X не имеет никакой отладочной информации :(

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

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


person Bill Sambrone    schedule 28.02.2010    source источник


Ответы (3)


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

priceseries.IsXValueIndexed = true;

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

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

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

person Bill Sambrone    schedule 28.02.2010

Случилось и со мной.

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

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

person Infinum    schedule 16.08.2010

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

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

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

person t0mm13b    schedule 28.02.2010