Сегодня посмотрим на довольно сложный индикатор – индикатор Bollinger. В нём несколько серий данных и встроенный индикатор. Поговорим о том, что у него там внутри.
1. Где исходники?
Посмотреть исходный код индикатора Bollinger на ГитХаб можно здесь:
https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/bin/Debug/Custom/Indicators/Scripts/Bollinger.cs
В скриптах проекта вот этот файл:

2. Разбор класса.

- Объявлен атрибут «Indicator» и в скобочках указано название класса индикатора. OsEngine после этого понимает, что это индикатор.
- Класс индикатора унаследован от «Aindicator». После этого внутри класса нам доступно создание параметров и нужно объявить два обязательных метода.
- Объявление параметра длины расчёта индикатора.
- Объявление параметра отклонения индикатора.
- Объявление серии для верхней линии индикатора.
- Объявление серии для нижней линии индикатора.
- Объявление серии для центральной линии индикатора.
- Встроенный индикатор Скользящая средняя. Объявление.
- Создан обязательный метод OnStateChange.
- Создан обязательный метод OnProcess, вызываемый в тот момент, когда надо пересчитать значение индикатора по какому-то индексу.
3. Метод OnStateChange.

- Создание параметра длины индикатора.
- Создание параметра отклонения индикатора.
- Создание верхней линии индикатора.
- Создание нижней линии индикатора.
- Создание центральной линии индикатора.
- Создание другого индикатора «Sma», который будет рассчитывать центр канала для текущего.
- Привязка параметра «Длина индикатора» к длине встроенного индикатора.
- Привязка встроенного индикатора к текущему. После вызова этого метода встроенный индикатор будет рассчитываться внутри текущего.
4. Метод OnProcess.

- Если индекс, по которому нужно рассчитать значение, меньше, чем длина центра канала, выходим из метода.
- Берём данные из встроенного индикатора скользящей средней и записываем в серию данных индикатора Bollinger.
- Расчёт отклонения рыночных цен от скользящей средней.
- Усреднение отклонений, найденных в предыдущем пункте. Расчёт мультипликатора для определения верхней и нижней границы канала.
- Расчёт и сохранение данных о верхнем и нижнем канале в соответствующие серии данных.
Удачных алгоритмов!
Комментарии открыты для друзей!

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
