Встраивание индикатора в код другого индикатора. Binding параметры.

Встраивание индикатора в код другого индикатора. Binding параметры.

Часто более сложные индикаторы в своих расчетах используют значения других индикаторов. OsEngine предоставляет механизм внедрения одних индикаторов внутрь других. Для этого используется все та же фабрика индикаторов. Напишем индикатор, которому для работы нужна скользящая средняя, на основании нее будет строиться канал с отступом на заданный процент. Назовем его «SmaChannel». Процесс встраивания внутреннего индикатора будет выглядеть так: 

  1. Первым делом необходимо создать переменную типа Aindicator, в которой будет храниться ссылка на внутренний индикатор.
  2. При помощи фабрики создаем индикатор, в нашем случае это простая скользящая средняя.
  3. Привязываем значение нашего параметра _lenght к параметру длинны скользящей средней
  4. Вызываем метод базового класса ProcessIndicator, передавая имя для внутреннего индикатора и сам индикатор. 

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

Все встроенные индикаторы отображаются в последней вкладке окна настроек:


Рис. 1. Вкладка с настройками вложенных индикаторов.

Перед тем, как вызвать метод OnProcess этого индикатора, программа сначала обработает все внутренние индикаторы, таким образом при обращении к скользящей мы получим уже актуальные значения:

Все серии данных в индикаторе создаются при помощи метода CreateSeries, который складывает их в список DataSeries, расположенный в родительском классе. Поэтому, чтобы получить доступ к нужной серии данных, необходимо обратиться по индексу к этому списку. Другими словами, чтобы пользоваться индикатором, вам желательно знать порядок добавления серий данных.

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

Файл с исходным кодом индикатора SmaChannel находится по ссылке.

16:20
260
FAQ

Комментарии

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