LibraryManager — управление внешними индикаторами
LibraryManager централизует работу с внешними библиотеками индикаторов (например, pandas-ta и TA-Lib).
Он отвечает за загрузку, регистрацию динамических обёрток и предоставление «простого способа» создавать
индикаторы без ручного кода.
Основные задачи
Загрузка всех поддерживаемых библиотек одной командой.
Динамическая регистрация индикаторов в
IndicatorFactory.Предоставление информации о доступности библиотек и количестве индикаторов.
Создание индикаторов по названию библиотеки и функции без знания внутренних префиксов.
Публичные методы
Метод |
Описание |
|---|---|
|
Загружает все поддерживаемые библиотеки и возвращает количество зарегистрированных индикаторов для каждой. |
|
Загружает конкретную библиотеку ( |
|
Возвращает список поддерживаемых библиотек. |
|
Проверяет, установлена ли библиотека и доступен ли загрузчик. |
|
Возвращает структуру с признаками доступности, количеством и списком индикаторов или сообщением об ошибке. |
|
Создаёт индикатор библиотеки, автоматически загружая соответствующую обёртку из |
Дополнительные функции-алиасы: load_pandas_ta(), load_talib(), load_all_indicators().
Быстрый старт: «простой способ» получить индикатор из pandas-ta
from bquant.indicators import LibraryManager
# 1. Загрузить все доступные библиотеки
LibraryManager.load_all_libraries()
# 2. Создать индикатор pandas-ta без ручной регистрации
macd = LibraryManager.create_indicator('pandas_ta', 'macd', fast=12, slow=26, signal=9)
result = macd.calculate(data)
LibraryManager.create_indicator() скрывает детали префиксов (pandas_ta_macd) и использует
IndicatorFactory для создания корректного экземпляра.
Получение информации о библиотеках
from bquant.indicators import LibraryManager
info = LibraryManager.get_library_info('pandas_ta')
if info['available']:
print(f"Всего индикаторов: {info['indicators_count']}")
print(f"Примеры: {info['indicators'][:5]}")
else:
print(f"Библиотека недоступна: {info['error']}")
Информация полезна для отображения в интерфейсе или логировании. Список индикаторов (info['indicators']) отражает
все функции, обнаруженные динамическим загрузчиком PandasTALoader.
Интеграция с IndicatorFactory
При вызове load_all_libraries() менеджер:
Импортирует соответствующие загрузчики (
PandasTALoader,TALibLoader).Запускает
register_indicators()на каждом загрузчике. В случае pandas-ta создаются классы-наследникиLibraryIndicatorдля каждой доступной функции.Регистрирует новые классы в
IndicatorFactoryпод ключами видаpandas_ta_<имя>.
После этого индикаторы доступны как через LibraryManager.create_indicator(), так и напрямую через
IndicatorFactory.create('pandas_ta', '<имя>', **params).
Обработка ошибок и логирование
Недоступные библиотеки логируются с уровнем
warning, а метод возвращает0индикаторов.При попытке создать индикатор из отсутствующей библиотеки выбрасывается
IndicatorCalculationErrorс контекстом.LibraryManager.load_all_libraries()агрегирует результаты и сообщает общее количество зарегистрированных индикаторов.