Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
10 августа 2024, 11:12

Назначение и описание класса BotFactory. OsEngine.

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

Именно в этом классе OsEngine запрашивает список доступных роботов в системе. И именно здесь создаются экземпляры роботов.

Назначение и описание класса BotFactory. OsEngine.

Код класса расположен в файле BotFactory.cs в каталоге https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/BotFactory.cs

В самом проекте, если Вы откроете OsEngine, данный класс находится здесь:

Назначение и описание класса BotFactory. OsEngine.

Класс BotFactory инкапсулирует всю логику создания роботов в одном месте, но «заставить» фабрику иметь возможность создавать экземпляры роботов можно тремя способами. Между тем, в данный момент остался ОДИН правильный. Через использование атрибута класса BotAttribute;

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

Рассмотрим все члены класса BotFactory. Сам класс:

Назначение и описание класса BotFactory. OsEngine.

BotsWithAttribute – приватное статическое поле только для чтения. Содержит словарь, в качестве ключа в котором выступает имя типа робота, в качестве значения – ссылка на объект-тип класса робота.

GetNamesStrategy – общедоступный статический метод. Возвращает список имен роботов, которые создаются классическим способом и при помощи атрибута класса. 

GetStrategyForName – публичный статический метод. Инкапсулирует логику создания роботов классическим способом и при помощи атрибута класса. Принимает следующие параметры:

  • nameClass — имя класса, экземпляр которого нужно создать;
  • name — уникальное имя для экземпляра робота;
  • startProgram — тип программы, инициировавшей запрос к методу;
  • isScript — флаг. Указывает, нужно ли подгружать код робота в качестве скрипта извне;

GetTypesWithBotAttribute – приватный статический метод. Инициализирует поле BotsWithAttribute.

GetScriptsNamesStrategy – публичный статический метод. Возвращает список имен роботов, которые создаются путем загрузки из файлов в виде скриптов.

GetFullNamesFromFolder – приватный статический метод. Возвращает список строк с указанием пути к коду скриптов.

CreateScriptStrategyByName – публичный статический метод. Инкапсулирует логику создания экземпляров роботов из файлов скриптов. Принимает следующие параметры:

  • nameClass — имя класса, экземпляр которого нужно создать;
  • name — уникальное имя для экземпляра робота;
  • startProgram — тип программы, инициировавшей запрос к методу;

Serialize – приватный статический метод. Генерирует, затем компилирует код скрипта из файла.

GetDllsPathFromFolder – приватный статический метод. Возвращает путь к dll библиотекам, которые необходимы для компиляции кода скрипта.

ReadFile – приватный статический метод. Считывает по заданному пути код из текстового файла.

GetNamesStrategyWithParametersSync – публичный статический метод. Используется оптимизатором, синхронизирует процесс получения списка имен классов роботов, которые имеют оптимизируемые параметры.

NeadToReload – публичное статическое поле типа bool. Флаг, указывающий на необходимость перезагрузки списка с именами классов роботов.

LoadBotsNames – приватный статический метод. Загружает в переменную список имен роботов, имеющих оптимизируемые параметры.

SaveBotsNames – приватный статический метод. Сохраняет в хранилище список имен роботов, имеющих оптимизируемые параметры.

LoadNamesWithParam – приватный статический метод. Сохраняет в переменную список имен классов роботов, которые имеют оптимизируемые параметры.

LoadNamesWithParamEndEvent – общедоступное статическое событие. Извещает подписчиков о готовности списка ботов с параметрами.

 

Удачных алгоритмов!

Комментарии открыты для друзей!

Назначение и описание класса BotFactory. OsEngine.

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

Назначение и описание класса BotFactory. OsEngine.

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн