# Built-In indicators access

## General <a href="#general" id="general"></a>

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 <a href="#access-built-in-indicators" id="access-built-in-indicators"></a>

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**](http://api.quantower.com/docs/TradingPlatform.BusinessLayer.Indicator.html#TradingPlatform_BusinessLayer_Indicator_GetValue_System_Int32_System_Int32_TradingPlatform_BusinessLayer_SeekOriginHistory_) 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**](http://api.quantower.com/docs/TradingPlatform.BusinessLayer.Indicator.html#TradingPlatform_BusinessLayer_Indicator_GetValue_System_Int32_System_Int32_TradingPlatform_BusinessLayer_SeekOriginHistory_) 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:

![In the additional window of the chart we can see result of our calculations](https://gblobscdn.gitbook.com/assets%2F-LD6FsRvQ3jgwJIg6O7r%2F-LMbd5GKyvB8lu_k4G8-%2F-LMbdBK9jpbnLHDpIuub%2Fresult.png?alt=media\&token=b311dce8-1ea4-49dc-adad-04755ceea7e4)

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.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.ampfutures.com/trading-platforms/quantower/quantower-algo/built-in-indicators.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
