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 комментарий
Эта тема самая главная в индикаторах. Главные 2 вопроса это цена и время.Все индюки гоняются за анализом  изменчивости  цены. А в период ставится какая то цифра типа RSI(14) или в MACD 8,12,26. А почему не 5,8,18? Или 5,5,45 ?
Вместо чисел можно поставить функцию расчета периода  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).Также хорош индюк средняя из синусов.
avatar

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