Проект IndicatorsFactory. Обзор слоя создания индикаторов.

Проект IndicatorsFactory. Обзор слоя создания индикаторов.

За процесс создания и подключения индикаторов в OsEngine отвечает слой создания индикаторов, функционал которого сосредоточен в пространстве имен OsEngine.Indicators. Файлы с кодом данного слоя находится в каталоге: OsEngine\project\OsEngine\Indicators\

Рис. 1. Расположение классов слоя создания индикаторов в проекте.

Существует два способа создания индикаторов. Первый способ через прямую реализацию интерфейса IIndicator является излишне сложным и уже морально устарел, поэтому мы не будем акцентировать на нем внимания. Перейдем сразу к рассмотрению второго способа, который является предпочтительным.

Процесс создания индикаторов основан на наследовании от абстрактного класса Aindicator, в котором помимо виртуальных методов, переопределяемых в производных классах, также содержится готовый функционал, используемый всеми индикаторами.

Чтобы наглядно понять структуру отношений, взглянем на следующую диаграмму:

Рис. 2. Граф наследования индикаторов.

Во главе иерархии стоит интерфейс IIndicator. Далее идет абстрактный класс Aindicator и уже от него наследуются классы индикаторов. В последующих статьях мы подробнее познакомимся с этими конструкциями.

За непосредственное создание экземпляров классов индикаторов отвечает фабрика индикаторов. Логика фабрики содержится в классе IndicatorsFactory, который имеет ряд публичных статических членов, используемых при создании роботов:

  1. IndicatorsWithAttribute – содержит словарь, в котором в качестве ключа выступает имя класса индикатора, в качестве значения ссылка на объект-тип класса индикатора.
  2. GetIndicatorsNames – возвращает список имен всех скриптовых индикаторов.
  3. CreateIndicatorByName – основной метод фабрики, который создает экземпляры индикаторов. 

Метод CreateIndicatorByName принимает следующие аргументы:

  1. nameClass – имя класса индикатора, экземпляр которого нужно создать;
  2. name – произвольное имя для объекта класса индикатора, которое будет использоваться в программе и отображаться в пользовательском интерфейсе;
  3. canDelete – флаг указывает, можно ли пользователю вручную удалить данный индикатор с графика;
  4. startProgram – тип программы, в которой создается индикатор, опциональный параметр;

В качестве возвращаемого значения метод отдает экземпляр класса запрашиваемого индикатора, приведенного к базовому типу Aindicator. На снимке показан пример создания трех индикаторов при помощи фабрики:

12:40
462
FAQ

Комментарии

Нет комментариев. Ваш будет первым!