rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

Часто более сложные индикаторы в своих расчетах используют значения других индикаторов. OsEngine предоставляет механизм внедрения одних индикаторов внутрь других.

Сегодня посмотрим, как это выглядит в исходном коде.

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9 

1. Где исходники?

Посмотреть исходный код индикатора, сделанного для данной статьи на ГитХаб можно здесь:

https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/bin/Debug/Custom/Indicators/Scripts/SmaChannel.cs

В скриптах проекта вот этот файл:

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

2. Разбор кода.

Напишем индикатор, которому для работы нужна скользящая средняя. На основании нее будет строиться канал с отступом на заданный процент. Назовем его «SmaChannel».

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

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

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

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

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

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

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

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9 

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

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

Удачных алгоритмов!

Комментарии открыты для друзей!

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support

Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php

Встраивание индикатора в код другого индикатора. Индикаторы OsEngine #9

★2
1 комментарий

UPDONW
Новый дизайн