Часто более сложные индикаторы в своих расчетах используют значения других индикаторов. OsEngine предоставляет механизм внедрения одних индикаторов внутрь других.
Сегодня посмотрим, как это выглядит в исходном коде.
Посмотреть исходный код индикатора, сделанного для данной статьи на ГитХаб можно здесь:
В скриптах проекта вот этот файл:
Напишем индикатор, которому для работы нужна скользящая средняя. На основании нее будет строиться канал с отступом на заданный процент. Назовем его «SmaChannel».
Процесс встраивания внутреннего индикатора будет выглядеть так:
Каждый параметр имеет метод Bind, который принимает другой параметр и связывает оба следующим образом: если изменится значение одного, автоматически изменится и значение второго. Таким образом, выполнив привязку единожды, отпадает необходимость контролировать параметры встроенных индикаторов. Более того, если вы измените значение параметра во встроенном индикаторе, то оно изменится и в родительском.
Все встроенные индикаторы отображаются в последней вкладке окна настроек:
Перед тем, как вызвать метод OnProcess этого индикатора, программа сначала обработает все внутренние индикаторы, таким образом при обращении к скользящей мы получим уже актуальные значения:
Все серии данных в индикаторе создаются при помощи метода CreateSeries, который складывает их в список DataSeries, расположенный в родительском классе. Поэтому, чтобы получить доступ к нужной серии данных, необходимо обратиться по индексу к этому списку. Другими словами, чтобы пользоваться индикатором, вам желательно знать порядок добавления серий данных.
В нашем случае мы знаем, что у скользящей только одна серия данных, и значит, она будет располагаться под нулевым индексом. В свою очередь серия данных хранит свои значения в списке Values.
Удачных алгоритмов!
Комментарии открыты для друзей!
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