Access to advanced aggregations
Using the available aggregation types in your code
Theory
As we know, chart aggregation is a type of displaying aggregated values. These values are price, volume and time. The main idea of each aggregation is to help traders analyze the state of the market in history and in real time.
At this moment, Quantower API supports 9 aggregation types. All of them you can use in your scripts easily. But before we continue, please read the article how to download history by using Quantower API.
To download aggregated history we need use GetHistory method which takes instanse of HistoryRequestParameters class as input parameter. This class contains the necessary properties such as FromTime, ToTime, HistoryType, etc. with which we can flexibly customize our request. But today we are interested in the Aggregation property. This property contains instance of HistoryAggregation class which is base class for all available aggregation types. All we need to get the aggregated history is to set to this property instance of required aggregation type.
Listed below are all available aggregation classes with examples of history requests.
Available aggregation classes
Tick aggregation
The HistoryAggregationTick class is used to buid simple Tick chart.
new HistoryAggregationTick(int ticksCount);ticksCount - the number of ticks for aggregation.
var tickhistoricalData = this.Symbol.GetHistory(new HistoryRequestParameters(){ Symbol = this.Symbol, FromTime = DateTime.Now.AddHours(-3), ToTime = DateTime.Now, HistoryType = this.Symbol.VolumeType == SymbolVolumeType.Volume ? HistoryType.Last : HistoryType.BidAsk, Period = Period.TICK1, Aggregation = new HistoryAggregationTick(1),});Time aggregation
The HistoryAggregationTime class is used to build the Time chart.
new HistoryAggregationTime(Period period);period - period of time (8s, 30min, 4h etc). Instance of Period structure.
Heiken-Ashi aggregation
The HistoryAggregationHeikenAshi class is used to build the Heiken-Ashi chart.
source - enum, base period of time (Tick, Seconds. Minutes etc).
value - the amount of 'source' time.
Range Bars aggregation
The HistoryAggregationRangeBars class is used to build the Range Bars chart.
rangeBars - the height (in ticks) of each bar.
Renko aggregation
The HistoryAggregationRenko class is used to build the Renko chart.
period - base period of time. Instance of Period structure.
brickSize - required size of renko brick
renkoStyle - enum, calculation methods (Classic, HighLow, AdvancedClassic, AdvancedHighLow)
Line break aggregation
The HistoryAggregationLineBreak class is used to build the Line break chart.
period - base period of time. Instance of Period structure.
lineBreak - line break value.
Kagi aggregation
The HistoryAggregationKagi class is used to build the Kagi chart.
period - base period of time. Instance of Period structure.
reversal - the amount of price movement that required for the Kagi line to reverse direction.
Points & Figures aggregation
The HistoryAggregationPointsAndFigures class is used to build the Points & Figures chart.
period - base period of time. Instance of Period structure.
boxSize - price range (the number of ticks) for X-Columns or O-Columns
reversal - a parameter that indicates the number of Box Sizes that the price should go in the opposite direction to begin a new column.
style - enum, calculation methods (Classic, HighLow)
Volume Bars aggregation
The HistoryAggregationVolume class is used to build the Volume bars chart.
volumeValue - base volume value of bar
Practice
In this part of the article, we will create a simple strategy script in which we will try to apply the knowledge. Let's describe our actions step by step:
Create HistoricalData instance by loading 6 hours of Renko history.
Create Fast SMA and Slow SMA indicators and then attach them to our HistoricalData.
Display metrics:
Fast SMA value
Slow SMA value
Current brick high price
Current brick low price
Log high and low prices of each new brick.

Input parameters
First, let’s define input parameters. In this section, we want to be able to change the aggregation parameters and indicator base settings.
OnRun method
In this section, we will carry out the first, second and fourth points.
OnGetMetrics method
Here we create required metrics.
OnStop method
Never forget to remove unused objects and unsubscribe form unused events.
Last updated
Was this helpful?