3

我从这里的另一篇文章中发现了 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。没有数据显示,但也没有错误代码 - 所以我想这是一个改进?这让我相信我应用公式的初始数据集存在某种问题,或者与图表控件本身的视图/边界有关。如果我在该轨道上发现更多内容,我会将其作为第二次更新发布。

4

3 回答 3

3

我发现了问题的根源:

priceseries.IsXValueIndexed = true;

我最初这样做是为了省略任何空白数据点(这将是股票价格场景中的周末)。当我将值更改为 false 时,突然间,公式的应用工作正常。缺点是我在没有数据的周末日期有空白点!但这是我可以自己解决的另一个问题。

对于遇到此问题的其他人,请参阅此参考文章以获取更多信息:http: //msdn.microsoft.com/en-us/library/dd456699 (VS.100).aspx

关于首先对数据进行分组的说明不是开玩笑的。不要遗漏任何数据点!

于 2010-02-28T21:16:48.193 回答
2

也发生在我身上。

使用 FinancialFormulas(特别是 FinancialFormula.ExponentialMovingAverage)系列 ChartType 应设置为 SeriesChartType.Line。

在我的代码中,它被设置为 SeriesChartType.FastLine,这是从 System.Drawing.dll 抛出 OverflowException

于 2010-08-16T00:55:52.623 回答
1

大红色 X 是在运行/解释公式时遇到问题并放弃重影的控件。也许公式过于复杂和实用,图表控件无法处理它......也许,有一个更新版本的代码已经解除了限制。codeplex.com上肯定会有一些东西。

这同样可以在设计时发生,在设计表单时,将控件拖到它上面,在这里和那里设置一些属性并获得一个大的红色 X,当控件在设计时行为不端时,这很常见还。

希望这会有所帮助,最好的问候,汤姆。

于 2010-02-28T19:42:35.803 回答