Фабрика и библиотека индикаторов
IndicatorFactory (bquant.indicators.base)
IndicatorFactory — центральный реестр индикаторов BQuant. Он хранит классы для всех типов индикаторов
(встроенные PRELOADED, пользовательские CUSTOM и обёртки внешних библиотек) и предоставляет единый интерфейс
создания экземпляров.
Основные методы
register_indicator(name, indicator_class)— сохраняет класс индикатора в реестре. Используется как при ручной регистрации пользовательских индикаторов, так и загрузчиками внешних библиотек.register_library_function(name, func)— сохраняет оригинальную функцию библиотеки для обратных ссылок. Динамический загрузчикpandas-taвызывает его для каждой обнаруженной функции.create(source, indicator, **params) -> BaseIndicator— современный интерфейс создания индикатора. Принимает источник (preloaded,custom,pandas_ta,talib) и имя индикатора без префиксов.create_indicator(name, **kwargs)— устаревшая оболочка, совместимая со старым API. В новых сценариях предпочтительно использоватьcreate().list_indicators() -> Dict[str, str]— возвращает реестр индикаторов и их тип (preloaded/custom/library).get_indicator_info(name) -> Optional[Dict]— предоставляет подробную информацию об индикаторе, если она определена в классе.
Как работает реестр
PRELOADED/CUSTOM индикаторы регистрируются под своим именем (например,
sma,macd_preloaded).LIBRARY индикаторы регистрируются с ключом
{library}_{indicator}(например,pandas_ta_macd). Динамические загрузчики (PandasTALoader,TALibLoader) создают наследниковLibraryIndicatorна лету и добавляют их в реестр.LibraryManagerуправляет загрузкой внешних библиотек и вызываетIndicatorFactory.register_indicator()для всех найденных обёрток. Благодаря этомуIndicatorFactory.create('pandas_ta', name, **params)доступен без ручного кода.
Пример: создание индикаторов
from bquant.indicators import IndicatorFactory, LibraryManager
# PRELOADED и CUSTOM индикаторы регистрируются автоматически при импорте пакета
macd_preloaded = IndicatorFactory.create('preloaded', 'macd_preloaded')
custom_sma = IndicatorFactory.create('custom', 'sma', period=20)
# Загружаем внешние библиотеки (pandas-ta, TA-Lib)
LibraryManager.load_all_libraries()
# Создаём индикаторы из pandas-ta без ручной регистрации
macd = IndicatorFactory.create('pandas_ta', 'macd', fast=12, slow=26, signal=9)
rsi = IndicatorFactory.create('pandas_ta', 'rsi', length=14)
Пример: получение метаданных
from bquant.indicators import IndicatorFactory
info = IndicatorFactory.get_indicator_info('pandas_ta_macd')
print(info['description'])
print(info['parameters'])
Встроенные индикаторы (bquant.indicators)
При импорте bquant.indicators вызывается вспомогательная функция _register_all_indicators(), которая:
Регистрирует PRELOADED индикаторы (например,
MACDPreloadedIndicator).Добавляет CUSTOM реализации (SMA, EMA, RSI, MACD, Bollinger Bands).
Делегирует загрузку внешних библиотек
LibraryManager.load_all_libraries().
Благодаря этому любой индикатор можно создать одной строкой через IndicatorFactory.create() или «простой способ»
через LibraryManager.create_indicator().
Загрузчики внешних библиотек
PandasTALoaderавтоматически обнаруживает десятки функцийpandas-ta, создаёт для них обёртки и регистрирует их вIndicatorFactory.TALibLoaderвыполняет аналогичную задачу дляTA-Lib(при наличии зависимости).LibraryManagerотвечает за последовательную загрузку, логирование и предоставление информации о доступных индикаторах пользователю.
Подробнее о менеджере библиотек см. в разделе LibraryManager.