Built-In indicators access

Use the results of 50+ built-in indicators of Quantower in your strategies and indicators

General

During development of your own indicators or strategy, you may require using some standard indicators, for example Moving Averages. You don't need to write any code for this, as Quantower trading platform provides you a wide set of predefined indicators. At the moment there are about 50 built-in indicators, among them:

  • EMA

  • ADX

  • Keltner

  • ROC

  • RSI

  • KAMA

  • AROON

  • and many others

Access built-in indicators

You can access built-in indicators using Core.Indicators.BuiltIn class. A good place to initiate such indicators is in an OnInit method of your script:

Indicator AC;​protected override void OnInit(){    AC = Core.Indicators.BuiltIn.AC();                }

An indicator can provide some parameters and you can specify them during creation:

Indicator EMA;​protected override void OnInit(){    EMA = Core.Indicators.BuiltIn.EMA(10, PriceType.Open);         }

You can create a few copies of one indicator or a few different indicators if needed:

Indicator fastEMA;Indicator slowEMA;​protected override void OnInit(){    fastEMA = Core.Indicators.BuiltIn.EMA(12, PriceType.Open);             slowEMA = Core.Indicators.BuiltIn.EMA(26, PriceType.Open);         }

Now we need to assign the created indicator to our current script — which means it will use symbol and quotes from its parent. You can do this via AddIndicator method:

Indicator EMA;​protected override void OnInit(){    EMA = Core.Indicators.BuiltIn.EMA(10, PriceType.Open);    AddIndicator(EMA);}

Everything is ready to use this indicator in our calculations. After receiving new quotes it will be calculated automatically. You can access its values via GetValue method:

protected override void OnUpdate(UpdateArgs args){     double valueFromEMA = EMA.GetValue();     SetValue(valueFromEMA);            }

In case you need to access value for previous bars or value from other indicators line you can use the offset and a lineIndex parameter of a GetValue method:

protected override void OnUpdate(UpdateArgs args){     double valueFromEMA = EMA.GetValue(5, 1);     SetValue(valueFromEMA);            }

This is a total source code of our example. We use two EMA indicators with different period and display their difference on the chart:

using System.Drawing;using TradingPlatform.BusinessLayer;​​namespace IndicatorWithBuiltIn{   	public class IndicatorWithBuiltIn : Indicator    {        Indicator fastEMA;        Indicator slowEMA;​        public IndicatorWithBuiltIn()            : base()        {            Name = "IndicatorWithBuiltIn";​            AddLineSeries("line1", Color.CadetBlue, 1, LineStyle.Solid);​            SeparateWindow = true;        }​        protected override void OnInit()        {            fastEMA = Core.Indicators.BuiltIn.EMA(12, PriceType.Open);            AddIndicator(fastEMA);​            slowEMA = Core.Indicators.BuiltIn.EMA(26, PriceType.Open);            AddIndicator(slowEMA);​        }​        protected override void OnUpdate(UpdateArgs args)        {            double difference = fastEMA.GetValue() - slowEMA.GetValue();​            SetValue(difference);        }    }}​

And a result of this indicator on the chart:

As you can see it was not really difficult to create this indicator. Before starting writing your own code, check first, maybe the required calculations are already available in a built-in set. Quantower team is constantly working on adding new built-in indicators.

Last updated