IndicatorsFactory. Обзор слоя создания индикаторов. Индикаторы в OsEngine 14.
Начинаем исследовать слой создания индикаторов в OsEngine. Для начала посмотрим на архитектурную часть вопроса.За процесс создания и подключения индикаторов в OsEngine отвечает слой создания индикаторов, функционал которого сосредоточен в пространстве имен OsEngine.Indicators. Файлы с кодом данного слоя находятся здесь: Рис. 1. Расположение классов слоя создания индикаторов в проекте.Существует два способа создания индикаторов. Первый способ через прямую реализацию интерфейса IIndicator является излишне сложным и уже морально устарел, поэтому мы не будем акцентировать на нем внимание. Перейдем сразу к рассмотрению второго способа, который является предпочтительным.Процесс создания индикаторов основан на наследовании от абстрактного класса Aindicator, в котором помимо виртуальных методов, переопределяемых в производных классах, также содержится готовый функционал, используемый всеми индикаторами.Чтобы наглядно понять структуру отношений, взглянем на следующую диаграмму: Рис. 2. Граф наследования индикаторов.Во главе иерархии стоит интерфейс IIndicator. Далее идет абстрактный класс Aindicator, и уже от него наследуются классы индикаторов. В последующих статьях мы подробнее познакомимся с этими конструкциями.За непосредственное создание экземпляров классов индикаторов отвечает фабрика индикаторов. Логика фабрики содержится в классе IndicatorsFactory, который имеет ряд публичных статических членов, используемых при создании роботов:IndicatorsWithAttribute содержит словарь, в котором в качестве ключа выступает имя класса индикатора, в качестве значения ссылка на объект-тип класса индикатора.GetIndicatorsNames возвращает список имен всех скриптовых индикаторов.CreateIndicatorByName – основной метод фабрики, который создает экземпляры индикаторов.Метод CreateIndicatorByName принимает следующие аргументы:nameClass – имя класса индикатора, экземпляр которого нужно создать;name – произвольное имя для объекта класса индикатора, которое будет использоваться в программе и отображаться в пользовательском интерфейсе;canDelete – флаг указывает, можно ли пользователю вручную удалить данный индикатор с графика;startProgram – тип программы, в которой создается индикатор, опциональный параметр;В качестве возвращаемого значения метод отдает экземпляр класса, запрашиваемого индикатора, приведенного к базовому типу Aindicator. На снимке показан пример создания трех индикаторов при помощи фабрики:Удачных алгоритмов!Комментарии открыты для друзей!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. Для начала посмотрим на архитектурную часть вопроса.
За процесс создания и подключения индикаторов в OsEngine отвечает слой создания индикаторов, функционал которого сосредоточен в пространстве имен OsEngine.Indicators. Файлы с кодом данного слоя находятся здесь:
Рис. 1. Расположение классов слоя создания индикаторов в проекте.
Существует два способа создания индикаторов. Первый способ через прямую реализацию интерфейса IIndicator является излишне сложным и уже морально устарел, поэтому мы не будем акцентировать на нем внимание. Перейдем сразу к рассмотрению второго способа, который является предпочтительным.
Процесс создания индикаторов основан на наследовании от абстрактного класса Aindicator, в котором помимо виртуальных методов, переопределяемых в производных классах, также содержится готовый функционал, используемый всеми индикаторами.
Чтобы наглядно понять структуру отношений, взглянем на следующую диаграмму:
Рис. 2. Граф наследования индикаторов.
Во главе иерархии стоит интерфейс IIndicator. Далее идет абстрактный класс Aindicator, и уже от него наследуются классы индикаторов. В последующих статьях мы подробнее познакомимся с этими конструкциями.
За непосредственное создание экземпляров классов индикаторов отвечает фабрика индикаторов. Логика фабрики содержится в классе IndicatorsFactory, который имеет ряд публичных статических членов, используемых при создании роботов:
- IndicatorsWithAttribute содержит словарь, в котором в качестве ключа выступает имя класса индикатора, в качестве значения ссылка на объект-тип класса индикатора.
- GetIndicatorsNames возвращает список имен всех скриптовых индикаторов.
- CreateIndicatorByName – основной метод фабрики, который создает экземпляры индикаторов.
Метод CreateIndicatorByName принимает следующие аргументы:
- nameClass – имя класса индикатора, экземпляр которого нужно создать;
- name – произвольное имя для объекта класса индикатора, которое будет использоваться в программе и отображаться в пользовательском интерфейсе;
- canDelete – флаг указывает, можно ли пользователю вручную удалить данный индикатор с графика;
- startProgram – тип программы, в которой создается индикатор, опциональный параметр;
В качестве возвращаемого значения метод отдает экземпляр класса, запрашиваемого индикатора, приведенного к базовому типу Aindicator. На снимке показан пример создания трех индикаторов при помощи фабрики:
Удачных алгоритмов!
Комментарии открыты для друзей!
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
What's Your Reaction?