IndicatorsParameters. Типы и применение.

IndicatorsParameters. Типы и применение.

В области финансовых рынков существует огромное множество индикаторов и подавляющее большинство из них имеет настраиваемые параметры. 

В OsEngine класс IndicatorParameter является базовым классом для всех параметров индикатора, который избавляет от необходимости создания отдельных окон для индикаторов. При использовании классов параметров появляется возможность настраивать любые индикаторы при помощи готового функционала платформы.

Обзор интерфейса абстрактного класса IndicatorParameter.

DoDefault – публичный метод. Сбрасывает целевое значение параметра на значение по умолчанию.

Bind – публичный метод. Принимает в качестве аргумента другой параметр такого же типа, связывает основные значения двух параметров. При изменении основного значения одного параметра, автоматически будет изменено значение другого.

Далее идут абстрактные члены, поэтому мы будем рассматривать их в контексте производных классов.

Name – уникальное имя для параметра. 

GetStringToSave - общедоступный метод, не принимающий параметров. Возвращает строку, в которую записаны все поля объекта для дальнейшего сохранения в хранилище.

LoadParamFromString - общедоступный метод. Принимает строку, парсит ее и инициализирует состояние объекта.

Type – свойство указывает тип параметра. Перечисление IndicatorParameterType содержит следующие константы:

  1. Int – целевое значение параметра является целым числом.
  2. Decimal - целевое значение параметра является числовым типом с плавающей запятой.
  3. String - целевое значение параметра является строкой.
  4. Bool - целевое значение параметра является булевым значением.

ValueChange – общедоступное событие. Сигнализирует об изменении целевого значения параметра.

В OsEngine существует четыре класса, расширяющих функционал абстрактного класса IndicatorParameter. Все они являются некой оболочкой над соответствующими примитивными типами. Для создания параметров используются соответствующие методы класса Aindicator, который является базовым для всех индикаторов. Все параметры индикатора отображаются в первой вкладке окна настроек:


 Рис. 1. Меню настройки параметров индикатора.

IndicatorParameterInt.

IndicatorParameterInt используется, когда в качестве параметра индикатора необходимо использовать целочисленные значения. Например, в индикаторе SMA есть такой параметр, как количество свечей, необходимое для расчета значения индикатора. Посмотрим на примере, как использовать этот тип параметра:

  1. Создаем приватное поле типа IndicatorParameterInt.
  2. При помощи метода CreateParameterInt создаем сам параметр. Первым аргументом в метод передается желаемое имя для параметра. Оно будет отображаться в пользовательском интерфейсе. Второй аргумент инициализирует параметр значениями по умолчанию.
  3. Используем главное значение параметра в логике индикатора.

Целевое значение параметра IndicatorParameterInt хранится в свойстве ValueInt. Во время использования параметра мы можем менять его основное значение, но всегда можно узнать какое значение у параметра было при создании, обратившись к свойству ValueIntDefolt.

IndicatorParameterDecimal.

Класс IndicatorParameterDecimal используется, когда индикатору нужны настройки типа decimal. Предлагаем рассмотреть способ использования этого параметра на примере доработки индикатора LastDayMiddle, который мы сделали в прошлых статьях. Нам нужно добавить еще две серии данных, которые будут отображать отклонение от середины прошлого для, одна вверх на заданный процент, другая вниз.

  1. Создаем приватное поле типа IndicatorParameterDecimal.
  2. Создаем дополнительные серии данных для верхней и нижней линий отклонения.
  3. Создаем параметр при помощи метода CreateParameterDecimal. Первым аргументом в метод передается желаемое имя для параметра. Второй аргумент задает целевое значение параметра.

Создадим метод, который будет вычислять размер отклонения, используя значение середины прошлого дня и параметр _deviationPercent:

Для того, чтобы получить целевое значение параметра данного типа, нужно обратиться к свойству ValueDecimal. И теперь, используя метод CalcDeviation, вычисляем значения для линий отклонения:

В итоге индикатор будет выглядеть так:

 Рис. 2. Отображение серий данных индикатора на графике.

IndicatorParameterString.

Класс IndicatorParameterString позволяет передавать индикаторам любые строковые значения в качестве параметров. Для добавления в индикатор параметров данного типа, в Aindicator существует два метода, причем от выбранного метода зависит способ использования данного параметра в графическом интерфейсе.

Если создавать параметр при помощи метода CreateParameterString, в окне настроек индикатора он будет отображаться в виде поля для ввода любых символов:


 Рис. 3. Визуальное представление параметра IndicatorParameterString.

Если же прибегнуть к использованию метода CreateParameterStringCollection, параметр отобразится в виде выпадающего списка:


 Рис. 4. Другой способ отображения параметра IndicatorParameterString.

По сути это некая аналогия перечисления. Мы ограничиваем список доступных для выбора пользователем значений.

Продолжим модифицировать наш индикатор и добавим возможность выбора метода вычисления максимума и минимума. Сделаем 2 способа:

  1. HighLow – используем High и Low значения свечи.
  2. Close – используем только цену закрытия свечи.

Для начала изменим конструктор класса:

  1. Создаем приватное поле типа IndicatorParameterString.
  2. Создаем список доступных для параметра значений.
  3. При помощи метода CreateParameterStringCollection создаем уже сам параметр, передавая желаемое название, значение по умолчанию и список доступных значений.

Далее логику вычисления максимума и минимума вынесем в отдельный метод:

Для того, чтобы получить значение параметра, необходимо вызвать свойство ValuesString. Таким образом мы определяем способ подсчета максимума и минимума. 

Выбор способа расчета по закрытиям позволяет исключить тени из вычислений:

Рис. 5. Визуальное представление индикатора на графике.

IndicatorParameterBool.

Класс IndicatorParameterBool позволяет использовать булевы значения в качестве параметров индикатора. Для создания параметров данного типа используется метод CreateParameterBool, который принимает отображаемое имя и значение по умолчанию. Как и все параметры, данный имеет специальное свойство ValueBool, в котором хранит свое значение.

Код измененного индикатора можно скачать по ссылке.

15:44
189
FAQ

Комментарии

Нет комментариев. Ваш будет первым!