# API Reference - Справочник API BQuant

## 📚 Обзор

Справочник API содержит подробную документацию всех модулей, классов и функций BQuant.

## 🗂️ Структура API

### 🏗️ Core Modules - Базовые модули
- **bquant.core.config** - Конфигурация и настройки
- **bquant.core.exceptions** - Исключения и ошибки
- **bquant.core.logging_config** - Настройка логирования
- **bquant.core.performance** - Производительность и профилирование
- **bquant.core.utils** - Утилиты и вспомогательные функции

### 📊 Data Modules - Модули данных
- **bquant.data.loader** - Загрузка данных из различных источников
- **bquant.data.processor** - Обработка и очистка данных
- **bquant.data.validator** - Валидация данных
- **bquant.data.samples** - Встроенные sample данные
- **bquant.data.schemas** - Схемы данных и типы

### 📈 Indicators - Технические индикаторы
- **bquant.indicators.base** - Базовые классы индикаторов
- **bquant.indicators.macd** - MACD индикатор с анализом зон
- **bquant.indicators.preloaded** - PRELOADED индикаторы для готовых данных
- **bquant.indicators.factory** - Фабрика индикаторов
- **bquant.indicators.library_manager** - Управление внешними библиотеками (pandas-ta, TA-Lib)

### 🔬 Analysis - Аналитические модули
- **bquant.analysis.statistical** - Статистический анализ
- **bquant.analysis.zones** - Universal Zone Analysis Pipeline v2.1
- **bquant.analysis.base** - Базовые классы анализа

### 📊 Visualization - Модули визуализации
- **bquant.visualization.charts** - Финансовые графики
- **bquant.visualization.zones** - Визуализация зон
- **bquant.visualization.statistical** - Статистические графики
- **bquant.visualization.themes** - Темы и стили

## 🔍 Поиск по API

> **📊 Статистика пакета (на 24.10.2025):** BQuant содержит **1110+ сущностей** в **85 модулях**:
> - **491 класс** (индикаторы, анализаторы, визуализаторы)
> - **619 функций** (утилиты, расчеты, обработка данных)
> - **164+ индикатора** (включая pandas-ta интеграцию)
> 
> Ниже перечислены только **ключевые entry points** для быстрого старта. 
> Полная документация доступна в соответствующих разделах.

### 🎯 Основные entry points

#### 🚀 Быстрый старт
- `analyze_zones()` - **Universal Pipeline** для анализа зон (основной API)
- `load_ohlcv_data()` - Загрузка OHLCV данных
- `get_sample_data()` - Получение sample данных

#### 🔧 Ключевые компоненты
- `ZoneAnalysisBuilder` - Fluent builder для Universal Pipeline
- `IndicatorFactory` - Фабрика индикаторов (164+ доступных)
- `FinancialCharts` - Создание финансовых графиков

### 📚 Подробная документация

#### 📈 Indicators API - 164+ индикаторов
- **6 встроенных:** SMA, EMA, RSI, MACD, Bollinger Bands, Custom
- **158 pandas-ta:** Полная интеграция с pandas-ta библиотекой
- **PRELOADED:** Готовые индикаторы для sample данных
- **Factory pattern:** Универсальное создание любых индикаторов

#### 🔬 Analysis API - Аналитические модули
- **Universal Zone Analysis v2.1:** Анализ зон с любыми индикаторами
- **5 Detection Strategies:** zero_crossing, threshold, line_crossing, preloaded, combined
- **5 Analysis Strategies:** swing, divergence, shape, volume, volatility
- **Statistical Analysis:** Гипотезные тесты, регрессия, валидация
- **Clustering:** Автоматическая группировка зон

#### 📊 Visualization API - Графики и визуализация
- **FinancialCharts:** Candlestick, line, bar графики
- **ZoneVisualizer:** Визуализация зон с контекстом
- **StatisticalPlots:** Статистические графики и распределения
- **Themes:** 5 готовых тем оформления

#### 💾 Data API - Работа с данными
- **Loader:** Загрузка OHLCV данных из файлов
- **Processor:** Очистка и валидация данных
- **Samples:** 8 встроенных sample датасетов
- **Schemas:** Типизация и валидация структур данных

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

#### 📊 Работа с данными
- `load_ohlcv_data()` - Загрузка OHLCV данных
- `get_sample_data()` - Получение sample данных  
- `clean_ohlcv_data()` - Очистка и валидация данных

#### 📈 Технические индикаторы
- `IndicatorFactory.create()` - Создание любого из 164+ индикаторов
- `MACDPreloadedIndicator` - PRELOADED MACD для готовых данных
- `BaseIndicator` - Базовый класс для создания custom индикаторов

#### 🔬 Universal Zone Analysis (v2.1)
- `analyze_zones()` - **Основной API** для анализа зон
- `ZoneAnalysisBuilder` - Fluent builder с полной настройкой
- `run_all_hypothesis_tests()` - Статистические тесты

#### 📊 Визуализация
- `FinancialCharts` - Создание финансовых графиков
- `ZoneVisualizer` - Визуализация зон с контекстом
- `create_candlestick_chart()` - Быстрое создание candlestick

### ⚠️ Deprecated API
- `MACDZoneAnalyzer` - Используйте `analyze_zones()` вместо этого
- `analyze_complete()` - Заменен на Universal Pipeline
- `_zone_to_dict()` - Заменен на `zone.features.get()`

## Актуальные примеры работы с MACD

### Universal Pipeline (рекомендуемый подход)

```python
from bquant.analysis.zones import analyze_zones
from bquant.data.samples import get_sample_data

# Загружаем данные
data = get_sample_data('tv_xauusd_1h')

# Анализ MACD через Universal Pipeline
result = (
    analyze_zones(data)
    .with_indicator('custom', 'macd', fast_period=12, slow_period=26, signal_period=9)
    .detect_zones('zero_crossing', indicator_col='macd_hist')
    .with_strategies(swing='find_peaks', shape='statistical')
    .analyze(clustering=True, n_clusters=3)
    .build()
)

print(f"Найдено зон: {len(result.zones)}")
print(f"Статистика: {result.statistics}")
```

### PRELOADED MACD индикатор

```python
from bquant.indicators.preloaded import MACDPreloadedIndicator

# Создание PRELOADED MACD индикатора
macd_indicator = MACDPreloadedIndicator()
macd_data = macd_indicator.calculate(data)

# Использование в Universal Pipeline
result = (
    analyze_zones(data)
    .with_indicator('preloaded', 'macd_preloaded')
    .detect_zones('zero_crossing', indicator_col='macd')
    .analyze(clustering=False)
    .build()
)
```

## 📖 Как читать документацию

### Структура документации класса

```python
class MACDZoneAnalyzer:  # ⚠️ DEPRECATED - используйте analyze_zones()
    """
    Анализатор MACD с идентификацией зон.
    
    ⚠️ DEPRECATED: Этот класс устарел. Используйте Universal Pipeline:
    analyze_zones().with_indicator('custom', 'macd').detect_zones().build()
    
    Этот класс выполняет полный анализ MACD индикатора,
    включая расчет значений, идентификацию зон и статистический анализ.
    
    Attributes:
        macd_params (dict): Параметры MACD (fast, slow, signal)
        zone_params (dict): Параметры зон (min_duration, min_amplitude)
    
    Example (DEPRECATED):
        >>> analyzer = MACDZoneAnalyzer()  # ⚠️ Не рекомендуется
        >>> result = analyzer.analyze_complete(data)
        >>> print(f"Найдено зон: {len(result.zones)}")
        
    Example (рекомендуемый):
        >>> result = analyze_zones(data).with_indicator('custom', 'macd').build()
    """
    
    def __init__(self, macd_params=None, zone_params=None):
        """
        Инициализация анализатора.
        
        Args:
            macd_params (dict, optional): Параметры MACD. 
                Defaults to {'fast': 12, 'slow': 26, 'signal': 9}.
            zone_params (dict, optional): Параметры зон.
                Defaults to {'min_duration': 2, 'min_amplitude': 0.001}.
        """
    
    def analyze_complete(self, data):
        """
        Выполняет полный анализ данных.
        
        ⚠️ DEPRECATED: Используйте analyze_zones().build() вместо этого метода.
        
        Args:
            data (pd.DataFrame): OHLCV данные
            
        Returns:
            ZoneAnalysisResult: Результат анализа с зонами и статистикой
            
        Raises:
            DataError: Если данные некорректны
            AnalysisError: Если анализ не может быть выполнен
        """
```

### Структура документации функции

```python
def load_ohlcv_data(file_path, **kwargs):
    """
    Загружает OHLCV данные из файла.
    
    Поддерживает различные форматы файлов: CSV, Excel, JSON.
    Автоматически определяет формат и кодировку файла.
    
    Args:
        file_path (str): Путь к файлу с данными
        **kwargs: Дополнительные параметры для pandas.read_csv/read_excel
        
    Returns:
        pd.DataFrame: DataFrame с OHLCV данными
        
    Raises:
        FileNotFoundError: Если файл не найден
        DataError: Если данные некорректны
        
    Example:
        >>> data = load_ohlcv_data('data.csv')
        >>> print(f"Загружено {len(data)} записей")
    """
```

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

- **[User Guide](../user_guide/README.md)** - Руководство пользователя
- **[Tutorials](../tutorials/README.md)** - Обучающие материалы
- **[Examples](../examples/README.md)** - Примеры использования
- **[Developer Guide](../developer_guide/README.md)** - Для разработчиков

## 💡 Советы по использованию API

1. **Начните с базовых модулей** - изучите core и data
2. **Используйте sample данные** для экспериментов
3. **Читайте docstrings** - они содержат примеры использования
4. **Изучайте типы данных** - понимайте что возвращают функции
5. **Обрабатывайте исключения** - используйте try/except для ошибок

## 🚀 Расширение API

Хотите создать собственные индикаторы, анализаторы или визуализации? 
Изучите **[Extension Guide](extension_guide.md)** для подробного руководства по расширению BQuant.

---

**Начать изучение:** Core Modules 🏗️
