Продолжаем исследовать слой создания индикаторов в OsEngine.
Рассматриваем класс родитель для всех индикаторов, начиная с 2020 года, Aindicator.
Aindicator – это абстрактный (может быть только наследуемым) класс с большим кол-вом исходного кода.
Сам класс находится в проекте здесь:
В иерархии наследования во время создания индикатора мы находимся здесь:
Внутри класса есть следующие регионы:
- Mandatory overload members. Обязательные к перегрузке (в индикаторе) члены класса.
- Service. Сервисный код.
- Parameters. Working with strategy parameters. Параметры индикатора. Хранение, создание.
- Built-in indicators. Работа со связыванием параметров индикатора с встроенными индикаторами.
- Data series. Работа с сериями данных.
- Candles loading. Прогрузка индикатора свечными данными.
- Loading of data arrays into the indicator. Прогрузка индикатора данными в виде массива Decimal значений.
Далее рассмотрим каждый из этих регионов.
Mandatory overload members. Обязательные к перегрузке (в индикаторе) члены класса.
Когда на основе Aindicator создаётся индикатор, внутри него будет только два обязательных к созданию метода:
- OnStateChange – изменился статус индикатора. Вызывается дважды на создании индикатора и его удалении. В качестве параметра передаётся перечисление IndicatorState, который может принимать значения:
- Configure – вызывается при создании индикатора. Предполагается, что, когда пришёл данный статус в этот метод, надо создавать параметры и серии данных.
- Dispose – вызывается при удалении индикатора. В этот момент было бы не плохо почистить за собой различные дополнительные данные внутри Вашего индикатора, если они есть.
- OnProcess – вызывается, когда надо пересчитать индикатор. В качестве параметров туда передадутся:
- List<Candle> source – все имеющиеся по инструменту свечи.
- Int index – индекс, по которому надо пересчитать индикатор.
Service. Сервисный код.
Данный регион содержит сервисный код для обслуживания индикатора в ядре OsEngine:
- Init. Инициализация индикатора. Используется ядром вместо конструктора.
- Clear. Очистка данных внутри индикатора.
- Delete. Удаление индикатора.
- Load. Загрузка из файловой системы состояния индикатора.
- Save. Сохранение в файловую систему состояния индикатора.
- ShowDialog. Открыть окно настроек индикатора.
- StartProgram. Программа, в рамках которой индикатор был создан. Tester/Optimizer/Trader.
- TypeIndicator. Устаревшее поле. Используется в старом слое создания индикаторов.
- CanDelete. Можно ли удалить индикатор или он обязателен для робота.
- NameSeries. Устаревшее поле. Используется в старом слое создания индикаторов.
- NameArea. Устаревшее поле. Используется в старом слое создания индикаторов.
- Name. Уникальное имя индикатора.
- PaintOn. Включена ли прорисовка индикатора.
- IsOn. Включен ли расчёт индикатора.
Parameters. Working with strategy parameters. Параметры индикатора. Хранение, создание.
Регион, к которому можно обращаться из индикатора для создания и менеджмента параметров:
- CreateParameterDecimal. Создать параметр типа Decimal.
- CreateParameterInt. Создать параметр типа Int.
- CreateParameterStringCollection. Создать параметр типа «Коллекция строк»
- CreateParameterString. Создать параметр типа String.
- CreateParameterBool. Создать параметр типа Bool.
- LoadParametersValues. Загрузить параметры из файловой системы после перезагрузки.
- GetValueParameterSaveByUser. Взять настройки конкретного параметра из файловой системы.
- List<IndicatorParameter> Parameters. Массив параметров, созданных для индикатора.
- List<ParameterDigit> ParametersDigit. Массив числовых параметров, созданных для индикатора.
- Parameter_ValueChange. Обработчик для события обновления настроек параметра.
- SaveParameters. Сохранить состояние параметров в файловую систему.
- Action ParametersChangeByUser. Событие: параметры индикатора были изменены.
Built-in indicators. Работа со связыванием параметров индикатора с встроенными индикаторами.
Регион, к которому можно обращаться из индикатора для связывания индикатора с другими индикаторами.
- List<Aindicator> IncludeIndicators. Встроенные в Ваш индикатор другие индикаторы.
- List<string> IncludeIndicatorsName. Имена встроенных индикаторов.
- ProcessIndicator. Привязать индикатор.
Data series. Работа с сериями данных.
- CreateSeries. Создать серию данных.
- DataSeries. Ранее созданные серии данных.
- CheckSeriesParametersInSaveData. Проверить в файловой системе ранее сохранённые настройки.
- SaveSeries. Сохранить настройки серий данных в файловую систему.
- ValuesToChart. Массивы значений серий данных для прорисовки на чарте.
- Colors. Массив цветов серий данных для прорисовки на чарте.
Candles loading. Прогрузка индикатора свечными данными.
- _myCandles. Массив свечей, который был передан в индикатор в последний раз.
- Process. Вход в логику подгрузки свечей в индикатор.
- ProcessAll. Пересчитать все значения индикатора от 0 до конца массива свечек.
- ProcessLast. Пересчитать последнее значение индикатора.
- ProcessNew. Пересчитать новое значение индикатора. Появилась новая свеча.
- Reload. Пересчитать все значения индикатора по имеющимся данным.
- NeedToReloadEvent. Событие: Нужно перезагрузить индикатор в чартах и роботах.
Loading of data arrays into the indicator. Прогрузка индикатора данными в виде массива Decimal значений.
- Process. Вход в логику подгрузки числовых данных в индикатор.
- ProcessAll. Пересчитать все значения индикатора от 0 до конца массива.
- ProcessLast. Пересчитать последнее значение индикатора.
- ProcessNew. Пересчитать новое значение индикатора. Появился новый элемент в массиве.
Удачных алгоритмов!
Комментарии открыты для друзей!
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