Создание пользовательского индикатора

Для создания пользовательского индикатора необходимо:

  1. Создать проект библиотеки классов в Visual Studio
  2. Добавить в проект ссылку на ATAS.Indicators.dll, который находится в папке с установленной программой
  3. Переопределить класс Indicator
  4. Добавить в конструкторе необходимые датасерии: ValueDataSeries, RangeDataSeries, CandleDataSeries или PriceSelectionDataSeries
  5. Описать логику работы индикатора в функции OnCalculate()
  6. Скомпилировать библиотеку
  7. Поместить полученный dll файл в папку Documents/ATAS/Indicators
  8. После этого созданный индикатор появится в списке индикаторов платформы. 


Скачать примеры можно с GitHub репозитория здесь. В references данного проекта необходимо добавить актуальную версию ATAS.Indicators.dll

Пример создания индикатора

Создаем класс MyCustomIndicator , наследуем его от Indicator :

public class MyCustomIndicator:Indicator
{
    protected override void OnCalculate(int bar, decimal value)
    {
     
    }
} 

Определяем конструктор. В случае необходимости добавляем нужное количество датасерий. По умолчанию каждый индикатор имеет одну ValueDataSeries. В данном примере добавим еще одну ValueDataSeries серию.

public MyCustomIndicator()
{
    DataSeries.Add(new ValueDataSeries("Values"));
} 

Определим логику работы индикатора. К примеру, нам необходим индикатор, показывающий максимальные значения входящей датасерии за 10 последних баров:

protected override void OnCalculate(int bar, decimal value)
 {
     var period=10;   
     var start = Math.Max(0, bar - Period + 1);
     var count = Math.Min(bar + 1, Period);
     var max = (decimal)SourceDataSeries[start];
     for (var i = start + 1; i < start + count; i++)
     {
         max = Math.Max(max, (decimal)SourceDataSeries[i]);
     }
     this[bar] = max;
 }

Метод OnCalculate вызывается для каждого бара на истории, далее вызывается на каждом тике.

Все бары и значения соответствующих им датасерий имеют порядковый номер. Самому раннему бару чарта соответствует номер 0, следующему бару соответствует номер 1 и так далее.

Value, которое передается в этот метод, зависит от Source, который может выбирать пользователь. В качестве источника можно использовать Open,High,Low,Close свечек,значения других индикаторов.

Image 11944

Бывают ситуации, когда индикатору не нужно иметь возможность выбора источника(например, индикаторы, которые в своих расчетах используют только данные свечек). В этом случае, раздел Source можно скрыть. Для этого необходимо в конструкторе вызвать базовый конструктор с параметром true

public MyCustomIndicator(): base(true)
{
}

Сервис поддержки клиентов работает на платформе UserEcho