Core Modules - Базовые модули BQuant

📚 Обзор

Core модули содержат базовую функциональность BQuant: конфигурацию, исключения, логирование, производительность и утилиты.

🗂️ Модули

🔧 bquant.core.config - Конфигурация и настройки

  • Константы путей и конфигураций (PROJECT_ROOT, DATA_DIR, RESULTS_DIR, LOGGING, и др.)

  • Помощники: get_data_path(), get_indicator_params(), get_analysis_params(), validate_timeframe(), get_results_path(), get_cache_config()

⚠️ bquant.core.exceptions - Исключения и ошибки

  • BQuantError - Базовое исключение BQuant

  • DataError - Ошибки данных

  • AnalysisError - Ошибки анализа

  • VisualizationError - Ошибки визуализации

📝 bquant.core.logging_config - Настройка логирования

  • setup_logging() — инициализация логирования

  • get_logger() — получение логгера (с контекстом)

  • Декораторы и контекст логирования

bquant.core.performance - Производительность и профилирование

  • Декоратор @performance_monitor и контекст performance_context

  • Глобальный монитор PerformanceMonitor, сбор и экспорт метрик

  • Оптимизированные индикаторы (NumPy): sma, ema, rsi, macd, bollinger_bands

🛠️ bquant.core.utils - Утилиты и вспомогательные функции

  • setup_project_logging(), calculate_returns(), normalize_data()

  • save_results(), validate_ohlcv_columns(), create_timestamp()

  • memory_usage_info(), ensure_directory()

📓 bquant.core.nb - Notebook-Style Scripts API

  • NotebookSimulator - Класс для управления пошаговым выполнением скриптов

  • Утилиты логирования: log(), success(), error(), warning(), info()

  • Интерактивное управление: step(), wait(), substep()

  • Настройка окружения: setup_logging(), set_trap_mode()

🔍 Быстрый поиск

По функциональности

Конфигурация

  • get_data_path() - Получение пути к данным

  • validate_timeframe() - Проверка таймфрейма

  • get_indicator_params() - Параметры индикатора

Логирование

  • setup_logging() - Настройка логирования

  • get_logger() - Получение логгера

  • logger.info() - Информационные сообщения

Производительность

  • @performance_monitor() - Декоратор профилирования

  • performance_context() - Контекстный менеджер

  • get_performance_monitor().get_stats() - Получение метрик

Утилиты

  • validate_ohlcv_columns() - Проверка структуры данных

  • calculate_returns() - Доходности (simple/log)

  • normalize_data() - Нормализация данных

Notebook-style скрипты

  • NotebookSimulator() - Создание runner для скрипта

  • step() / wait() - Пошаговое выполнение

  • success() / error() - Логирование с эмодзи

По типу

🏗️ Классы

  • BQuantError - Базовое исключение

  • PerformanceMonitor - Сбор метрик

  • NotebookSimulator - Управление notebook-style скриптами

🔧 Функции

  • setup_logging() - Настройка логирования

  • get_logger() - Получение логгера

  • validate_ohlcv_columns() - Валидация данных

📋 Исключения

  • BQuantError - Базовое исключение

  • DataError - Ошибки данных

  • AnalysisError - Ошибки анализа

💡 Примеры использования

Конфигурация

from bquant.core.config import get_data_path, validate_timeframe

# Проверка таймфрейма
validate_timeframe('1h')

# Путь к данным TradingView/OANDA для XAUUSD 1h
path = get_data_path('XAUUSD', '1h', data_source='tradingview', quote_provider='oanda')

Логирование

from bquant.core.logging_config import setup_logging, get_logger

# Настройка логирования
setup_logging(level='INFO', log_file='bquant.log')

# Получение логгера
logger = get_logger(__name__)

# Использование логгера
logger.info("Starting analysis...")
logger.debug("Processing data...")
logger.warning("Data validation failed")
logger.error("Analysis failed")

Производительность

from bquant.core.performance import performance_monitor, performance_context

# Декоратор для профилирования
@performance_monitor()
def slow_function():
    """Функция с профилированием"""
    import time
    time.sleep(1)
    return "result"

# Контекстный менеджер
with performance_context("data_processing"):
    # Код для профилирования
    process_large_dataset()

Обработка ошибок

from bquant.core.exceptions import BQuantError, DataError, AnalysisError

try:
    # Попытка загрузки данных
    data = load_data('invalid_file.csv')
except DataError as e:
    logger.error(f"Data error: {e}")
    # Обработка ошибки данных
except BQuantError as e:
    logger.error(f"BQuant error: {e}")
    # Обработка общей ошибки

Утилиты

from bquant.core.utils import validate_ohlcv_columns, calculate_returns

check = validate_ohlcv_columns(df)
if not check['is_valid']:
    raise DataError('; '.join(check['messages']))

ret = calculate_returns(df['close'], method='log')

Notebook-style скрипты

from bquant.core.nb import NotebookSimulator

# Создание и настройка runner
runner = NotebookSimulator("Data Analysis Script", auto_setup=False)
runner.setup_logging('analysis.log')

# Пошаговое выполнение
runner.step("Loading Data")
# код загрузки данных
runner.success("Data loaded successfully")
runner.wait()

runner.step("Processing Data")
# код обработки
runner.success("Processing completed")
runner.wait()

runner.finish()

🔗 Связанные разделы

  • Data Modules - Модули для работы с данными

  • Indicators - Технические индикаторы

  • Analysis - Аналитические модули

  • Visualization - Модули визуализации

📖 Детальная документация


Следующий раздел: Data Modules 📊