CustomAggregateFunction Class
The base class for a custom aggregate function callback.
Namespace: DevExpress.XtraCharts
Assembly: DevExpress.XtraCharts.v18.1.dll
Declaration
Related API Members
The following members accept/return CustomAggregateFunction objects:
Example
Set the CustomAggregateFunction class descendant object to the ScaleGridOptionsBase.CustomAggregateFunction property to use the custom aggregate function. Note that the ScaleGridOptionsBase.AggregateFunction property should be set to Custom.
Note
A complete sample project is available at https://github.com/DevExpress-Examples/how-to-implement-a-custom-aggregate-function-t625114
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 };
}
}
Related GitHub Examples
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the CustomAggregateFunction class.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.