Начинаем серию постов о том, как делать индикаторы для терминала OsEngine со стороны программиста.
Делается это обычно в 50 – 100 строк кода, и слой создания индикаторов в OsEngine довольно прост. Тем не менее тема важная, и серия постов будет содержать около 20 статей, включая глубокие объяснения архитектуры для программистов.
Вначале посмотрим на уже готовый индикатор и пройдёмся по небольшому списку того, что предстоит научится делать.
Список того, что нужно делать, чтобы создать индикатор в OsEngine:
- Создать класс в папке Indicators в проекте.
- Указать классу атрибут Indicator, чтобы OsEngine понял, что созданный Вами класс — это индикатор.
- Унаследоваться от класса Aindicator.
- Создать параметры и серии данных в методе OnStateChange. Это у индикаторов вместо конструктора.
- Сделать логику расчёта индикатора по определённому индексу в методе OnProcess.
- Всё!
Открываем индикатор AC. В OsEngine это вот этот файл в проекте:

Атрибут, внутри которого обязательно пишем текстовое название индикатора, в данном случае это «AC»:

Наследование и обязательные методы:
- Данная строка означает, что класс – наследник AIndicator. Все индикаторы с 2020 года в OsEngine должны быть наследниками этого класса.
- Обязательный метод OnStateChange вызывается при создании индикатора и при удалении. Используется как место для активации индикатора.
- Обязательный метод OnProcess вызывается, когда надо пересчитать значение индикатора по определённому индексу.
Вместо конструктора класса:

- Метод OnStateChange вызывается при создании индикатора и при удалении. Понять, что именно сейчас происходит, можно при помощи параметра state, который передаётся в метод. Тип статуса Configure означает, что на данный момент у нас происходит создание индикатора. Именно в этот момент нужно создавать серии данных и параметры для индикатора.
- Создание параметров.
- Создание серии данных. В данном случае это одна серия, но можно и больше.
- Создание «встроенного» индикатора и его связывание с параметрами.
Логика расчёта индикатора:
- Метод OnProcess – место, где надо заполнять серии данных и рассчитывать индикаторы. Делать это надо по индексу, который передаётся в качестве параметра номер 2.
- Не забывайте во время создания индикатора ставить в метод расчёта различные «костыли». Обычно индикатор имеет длину, как в данном случае, и как минимум не надо начинать его расчёт, пока индекс, по которому надо считать индикатор, не превысит его длину.
- Вызов серии данных и сохранение в неё по определённому индексу значения индикатора.
Далее в данной серии постов будем рассматривать всё вышеописанное в подробностях.
Удачных алгоритмов!
Комментарии открыты для друзей!

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
