Skip to main content

CustomAggregateFunction.Calculate(GroupInfo) Method

Calculates the aggregated values of the specified series point value group.

Namespace: DevExpress.XtraCharts

Assembly: DevExpress.XtraCharts.v23.2.dll

NuGet Package: DevExpress.Charts

Declaration

public abstract double[] Calculate(
    GroupInfo groupInfo
)

Parameters

Name Type Description
groupInfo GroupInfo

Information about values that should be aggregated.

Returns

Type Description
Double[]

The array of data point values.

Remarks

The group info stores the following value collections in its properties:

Property Value Levels
GroupInfo.Values1 Value (for common and the bubble series), Value_1 (for range series), High (for financial series)
GroupInfo.Values2 Weight (for the bubble series), Value_2 (for range series), Low (for financial series)
GroupInfo.Values3 Open (for financial series)
GroupInfo.Values4 Close (for financial series)

Example

Follow the steps below to create an aggregate function.

private void Form1_Load(object sender, EventArgs e) {
    Series series = chartControl.Series["Random Data"];
    series.DataSource = GenerateData(100_000);
    series.ArgumentDataMember = "Argument";
    series.ValueDataMembers.AddRange("Value", "Value", "Value", "Value");

    XYDiagram diagram = chartControl.Diagram as XYDiagram;
    diagram.AxisX.DateTimeScaleOptions.AggregateFunction = AggregateFunction.Custom;
    diagram.AxisX.DateTimeScaleOptions.CustomAggregateFunction = new OhlcAggregateFunction();
}

class OhlcAggregateFunction : CustomAggregateFunction {
    public override double[] Calculate(GroupInfo groupInfo) {
        double open = groupInfo.Values1.First();
        double close = groupInfo.Values1.Last();
        double high = Double.MinValue;
        double low = Double.MaxValue;
        foreach (double value in groupInfo.Values1) {
            if (high < value) high = value;
            if (low > value) low = value;
        }

        return new double[] { high, low, open, close };
    }
}
See Also