Создание пользовательского индикатора
Для создания пользовательского индикатора необходимо:
- Создать проект библиотеки классов в Visual Studio
- Добавить в проект ссылку на ATAS.Indicators.dll, который находится в папке с установленной программой
- Переопределить класс Indicator
- Добавить в конструкторе необходимые датасерии: ValueDataSeries, RangeDataSeries, CandleDataSeries или PriceSelectionDataSeries
- Описать логику работы индикатора в функции OnCalculate()
- Скомпилировать библиотеку
- Поместить полученный dll файл в папку Documents/ATAS/Indicators
- После этого созданный индикатор появится в списке индикаторов платформы.
Скачать примеры можно с 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 свечек,значения других индикаторов.
Бывают ситуации, когда индикатору не нужно иметь возможность выбора источника(например, индикаторы, которые в своих расчетах используют только данные свечек). В этом случае, раздел Source можно скрыть. Для этого необходимо в конструкторе вызвать базовый конструктор с параметром true
public MyCustomIndicator(): base(true) { }
Сервис поддержки клиентов работает на платформе UserEcho