Часто более сложные индикаторы в своих расчетах используют значения других индикаторов. 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
Вместо чисел можно поставить функцию расчета периода MACD(F1,F2,F3). Это и будет вложенные индикаторы.Кроме того важно анализировать не все свечи, а только те которые делают новый шаг цены.Это рендж график. Внутренние свечи, делающие коррекции свечи солдата, можно не учитывать. Эта процедура будет типа исключение из индикатора.В этом случае надо решить вопрос с объемом удаленных свечей.В рендж графике достаточно периода 10. Фактически надо научить индикатор считать новые фракталы, углы графика. Мы сейчас знаем фракталы Б Вильямса из 5 свечей. Это идеальный фрактал. На графике есть и др фракталы из 1, 3 ,7 ,9 и тд свечей. Если волны Эла растягиваются на +4 волны, то фракталы на +8 волн (+4 свечи ). Я потратил 7 лет на изучение индикаторов.Силу тренда определяют ADX или Rквадрат. Самые полезные индюки из параметров свечей… типа коридоры BB, коридор ошибки( анти ВВ) и др. нормализаторы. Для рендж графика очень полезен Ишимоку тк в нем нет средней, а есть середина группы свечей. Группы свечей надо взять 5,10,40.Типа С(-5) или (H(10)-L(10))\2 ,ref((H(40)-L(40)\2),-10).Также хорош индюк средняя из синусов.