Доступ к встроенным индикаторам
Используйте результаты 50+ встроенных индикаторов Quantower в своих стратегиях и индикаторах

Общее

При разработке собственных индикаторов или стратегии вам может потребоваться использование некоторых стандартных индикаторов, например скользящих средних. Вам не нужно писать для этого какой-либо код, поскольку торговая платформа Quantower предоставляет вам широкий набор предопределенных индикаторов. На данный момент существует около 50 встроенных индикаторов, среди них:
  • EMA
  • ADX
  • Keltner
  • ROC
  • RSI
  • KAMA
  • AROON
  • и много других

Доступ к встроенным индикаторам

Вы можете получить доступ к встроенным индикаторам с помощью класса Core.Indicators.BuiltIn. Хорошее место для запуска таких индикаторов - метод OnInit вашего скрипта:
1
Indicator AC;
2
3
protected override void OnInit()
4
{
5
// An example of creation AC indicator
6
AC = Core.Indicators.BuiltIn.AC();
7
}
Copied!
Индикатор может предоставлять некоторые параметры, и вы можете указать их при создании:
1
Indicator EMA;
2
3
protected override void OnInit()
4
{
5
// An example of creation EMA indicator with parameters:
6
// Period = 10
7
// PriceType = Open
8
EMA = Core.Indicators.BuiltIn.EMA(10, PriceType.Open);
9
}
Copied!
При необходимости вы можете создать несколько копий одного индикатора или несколько разных индикаторов:
1
Indicator fastEMA;
2
Indicator slowEMA;
3
4
protected override void OnInit()
5
{
6
// An example of creation a few EMA indicators with different parameters
7
fastEMA = Core.Indicators.BuiltIn.EMA(12, PriceType.Open);
8
slowEMA = Core.Indicators.BuiltIn.EMA(26, PriceType.Open);
9
}
Copied!
Теперь нам нужно назначить созданный индикатор нашему текущему скрипту - это означает, что он будет использовать символ и кавычки из своего родителя. Вы можете сделать это с помощью метода AddIndicator:
1
Indicator EMA;
2
3
protected override void OnInit()
4
{
5
// Create EMA indicator
6
EMA = Core.Indicators.BuiltIn.EMA(10, PriceType.Open);
7
8
// Add created EMA indicator as a child to our script
9
AddIndicator(EMA);
10
}
Copied!
Все готово для использования этого индикатора в наших расчетах. После получения новых котировок он будет рассчитан автоматически. Вы можете получить доступ к его значениям через метод GetValue:
1
/// <summary>
2
/// Calculation entry point. This function is called when a price data updates.
3
/// </summary>
4
protected override void OnUpdate(UpdateArgs args)
5
{
6
// Get EMA value for current bar from first line
7
double valueFromEMA = EMA.GetValue();
8
9
// Using EMA value in parent indicator
10
SetValue(valueFromEMA);
11
}
Copied!
Если вам нужно получить доступ к значению для предыдущих баров или к значению из строки других индикаторов, вы можете использовать смещение и параметр lineIndex метода GetValue **:
1
/// <summary>
2
/// Calculation entry point. This function is called when a price data updates.
3
/// </summary>
4
protected override void OnUpdate(UpdateArgs args)
5
{
6
// Get EMA value for current bar from second line
7
double valueFromEMA = EMA.GetValue(5, 1);
8
9
// Using EMA value in parent indicator
10
SetValue(valueFromEMA);
11
}
Copied!
Это полный исходный код нашего примера. Мы используем два индикатора EMA с разным периодом и отображаем их разницу на графике:
1
using System.Drawing;
2
using TradingPlatform.BusinessLayer;
3
4
5
namespace IndicatorWithBuiltIn
6
{
7
public class IndicatorWithBuiltIn : Indicator
8
{
9
/// <summary>
10
/// Built in indicators
11
/// </summary>
12
Indicator fastEMA;
13
Indicator slowEMA;
14
15
/// <summary>
16
/// Indicator's constructor. Contains general information: name, description, LineSeries etc.
17
/// </summary>
18
public IndicatorWithBuiltIn()
19
: base()
20
{
21
// Defines indicator's name and description.
22
Name = "IndicatorWithBuiltIn";
23
24
// Defines line on demand with particular parameters.
25
AddLineSeries("line1", Color.CadetBlue, 1, LineStyle.Solid);
26
27
// By default indicator will be applied on main window of the chart
28
SeparateWindow = true;
29
}
30
31
/// <summary>
32
/// This function will be called after creating an indicator as well as after its input params reset or chart (symbol or timeframe) updates.
33
/// </summary>
34
protected override void OnInit()
35
{
36
// Create first instance of EMA indicator with Period 12
37
fastEMA = Core.Indicators.BuiltIn.EMA(12, PriceType.Open);
38
AddIndicator(fastEMA);
39
40
// Create second instance of EMA indicator with period 26
41
slowEMA = Core.Indicators.BuiltIn.EMA(26, PriceType.Open);
42
AddIndicator(slowEMA);
43
44
}
45
46
/// <summary>
47
/// Calculation entry point. This function is called when a price data updates.
48
/// </summary>
49
protected override void OnUpdate(UpdateArgs args)
50
{
51
// Calculate difference
52
double difference = fastEMA.GetValue() - slowEMA.GetValue();
53
54
// Use difference as a value for parent indicator
55
SetValue(difference);
56
}
57
}
58
}
Copied!
И результат этого индикатора на графике:
В дополнительном окне графика мы видим результат наших расчетов.
Как видите, создать этот индикатор было несложно. Перед тем, как приступить к написанию собственного кода, проверьте сначала, возможно, нужные вычисления уже доступны во встроенном наборе. Команда Quantower постоянно работает над добавлением новых встроенных индикаторов. Если у вас есть идеи и предложения, что мы должны добавить - смело пишите нам.