# Universal Zone Analysis Pipeline v2.1

## 📚 Обзор

Universal Zone Analysis Pipeline v2.1 - это современная архитектура для анализа зон любых технических индикаторов. Pipeline использует Fluent Builder Pattern и Two-Layer Architecture для обеспечения максимальной гибкости и универсальности.

## 🏗️ Архитектурные принципы

### Two-Layer Architecture
- **Слой 1:** Zone Detection Strategies (5 типов стратегий)
- **Слой 2:** Universal Zone Analyzer (агностичен к источникам зон)
- **Убрано:** Indicator-specific facades (упрощение с 3 до 2 слоев)

### Fluent Builder Pattern
```python
result = (
    analyze_zones(df)
    .with_indicator('pandas_ta', 'rsi', length=14)
    .detect_zones('threshold', indicator_col='rsi', 
                  upper_threshold=70, lower_threshold=30)
    .with_strategies(swing='find_peaks', shape='statistical')
    .analyze(clustering=True, n_clusters=3)
    .build()
)
```

### True Universality v2.1
- **ZERO hardcoded индикаторов** - работает с любым индикатором
- **indicator_context контракт** - стратегии сами заполняют контекст
- **115 тестов, 100% pass rate** - доказательство универсальности

## 🔧 ZoneAnalysisBuilder - Fluent Interface

### Основные методы

#### `.with_indicator(source, name, **params)`
Настройка индикатора для анализа.

**Поддерживаемые источники:**
- `'preloaded'` - встроенные индикаторы
- `'custom'` - пользовательские индикаторы
- `'pandas_ta'` - библиотека pandas_ta
- `'talib'` - библиотека TA-Lib

**Примеры:**
```python
# MACD
.with_indicator('custom', 'macd', fast_period=12, slow_period=26, signal_period=9)

# RSI
.with_indicator('pandas_ta', 'rsi', length=14)

# AO (Awesome Oscillator)
.with_indicator('pandas_ta', 'ao', fast=5, slow=34)
```

#### `.detect_zones(strategy, **params)`
Настройка стратегии детекции зон.

**5 Detection Strategies:**
- `'zero_crossing'` - пересечение нулевой линии (MACD, AO)
- `'threshold'` - пороговые значения (RSI, Stochastic)
- `'line_crossing'` - пересечение линий (MA crossovers)
- `'preloaded'` - импорт готовых зон
- `'combined'` - комбинированные правила

**Примеры:**
```python
# Zero crossing для MACD
.detect_zones('zero_crossing', indicator_col='macd_hist')

# Threshold для RSI
.detect_zones('threshold', indicator_col='rsi', 
              upper_threshold=70, lower_threshold=30)

# Line crossing для MA
.detect_zones('line_crossing', line1_col='ma_fast', line2_col='ma_slow')
```

#### `.with_strategies(**strategies)`
Настройка аналитических стратегий.

**Доступные стратегии:**
- `swing` - анализ свингов (find_peaks, pivot_points, zigzag)
- `shape` - анализ формы зон (statistical, geometric)
- `divergence` - детекция дивергенций (classic, hidden)
- `volume` - анализ объемов (standard, correlation)
- `volatility` - анализ волатильности (combined, statistical)

**Примеры:**
```python
# Базовые стратегии
.with_strategies(swing='find_peaks', shape='statistical')

# Расширенные стратегии
.with_strategies(
    swing='zigzag',
    divergence='classic',
    volume='standard',
    volatility='combined'
)
```

#### `.analyze(**options)`
Настройка анализа и обработки.

**Опции:**
- `clustering=True/False` - кластеризация зон
- `n_clusters=3` - количество кластеров
- `regression=True/False` - регрессионный анализ
- `validation=True/False` - валидация моделей

**Примеры:**
```python
# Базовый анализ
.analyze(clustering=True, n_clusters=3)

# Полный анализ
.analyze(clustering=True, regression=True, validation=True)
```

#### `.with_cache(enable=True, ttl=3600)`
Настройка кэширования для производительности.

**Параметры:**
- `enable=True/False` - включить/выключить кэш
- `ttl=3600` - время жизни кэша в секундах

**Примеры:**
```python
# С кэшированием на 2 часа
.with_cache(enable=True, ttl=7200)

# Без кэширования
.with_cache(enable=False)
```

#### `.build()`
Запуск анализа и получение результата.

**Возвращает:** `ZoneAnalysisResult` объект с результатами анализа.

## 🏭 ZoneAnalysisPipeline - Core Engine

### Configuration-driven подход
Pipeline работает через `ZoneAnalysisConfig` без hardcode, обеспечивая максимальную гибкость.

### Dependency Injection
Все компоненты настраиваются через DI:
- ZoneFeaturesAnalyzer
- HypothesisTestSuite
- ZoneSequenceAnalyzer
- Regression Analyzer
- Validation Suite

### Автоматическая интеграция
```python
# Pipeline автоматически интегрирует все компоненты
result = (
    analyze_zones(df)
    .with_indicator('custom', 'macd', fast_period=12, slow_period=26, signal_period=9)
    .detect_zones('zero_crossing', indicator_col='macd_hist')
    .analyze(clustering=True)  # Автоматически включает hypothesis tests
    .build()
)

# Доступ к результатам
print(f"Зон найдено: {len(result.zones)}")
print(f"Статистика: {result.statistics}")
if result.hypothesis_tests:
    print(f"Тесты: {result.hypothesis_tests.results}")
```

## 🎯 UniversalZoneAnalyzer - Agnostic Analyzer

### Zone-agnostic подход
UniversalZoneAnalyzer НЕ ЗНАЕТ откуда зоны (MACD, AO, preloaded, custom) - он работает с любыми зонами универсально.

### Component Integration
Автоматическая интеграция компонентов:
- **ZoneFeaturesAnalyzer** - извлечение характеристик зон
- **HypothesisTestSuite** - статистические тесты
- **ZoneSequenceAnalyzer** - анализ последовательностей
- **Regression Analyzer** - регрессионный анализ (опционально)
- **Validation Suite** - валидация моделей (опционально)

### Strategy Support
Поддержка всех типов стратегий через DI:
- Swing strategies (find_peaks, pivot_points, zigzag)
- Shape strategies (statistical, geometric)
- Divergence strategies (classic, hidden)
- Volume strategies (standard, correlation)
- Volatility strategies (combined, statistical)

## 📊 indicator_context Contract

### True Universality v2.1
Стратегии сами заполняют контекст, обеспечивая ZERO hardcoded индикаторов.

### Standard Fields
```python
indicator_context = {
    'detection_strategy': 'zero_crossing',   # Стратегия детекции
    'detection_indicator': 'macd_hist',      # Основная колонка
    'signal_line': 'macd_signal',            # Вторичная линия (если есть)
    'detection_rules': {...}                 # Правила детекции
}
```

### Strategy Usage
```python
def detect_zones(self, data, config):
    context = config.indicator_context
    indicator_col = context.get('detection_indicator')  # Универсальный доступ
    rules = context.get('detection_rules', {})

    # Стратегия работает с любым индикатором
    # без hardcode названий колонок
```

## 🚀 Практические примеры

### Пример 1: MACD Analysis
```python
from bquant.analysis.zones import analyze_zones
from bquant.data.samples import get_sample_data

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

# MACD анализ с полным 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', divergence='classic')
    .analyze(clustering=True, n_clusters=3)
    .build()
)

# Результаты
print(f"Найдено зон: {len(result.zones)}")
for i, zone in enumerate(result.zones[:3]):
    if zone.features:
        print(f"Зона {i}: {zone.features.get('zone_type', 'unknown')}")
```

### Пример 2: RSI Analysis
```python
# RSI анализ с threshold detection
result = (
    analyze_zones(data)
    .with_indicator('pandas_ta', 'rsi', length=14)
    .detect_zones('threshold', indicator_col='rsi', 
                  upper_threshold=70, lower_threshold=30)
    .with_strategies(swing='pivot_points', volatility='combined')
    .analyze(clustering=True)
    .build()
)
```

### Пример 3: AO Analysis
```python
# AO (Awesome Oscillator) анализ
result = (
    analyze_zones(data)
    .with_indicator('pandas_ta', 'ao', fast=5, slow=34)
    .detect_zones('zero_crossing', indicator_col='AO_5_34')
    .with_strategies(swing='zigzag', shape='statistical')
    .analyze(clustering=True)
    .build()
)
```

### Пример 4: Caching для производительности
```python
# С кэшированием для больших данных
result = (
    analyze_zones(data)
    .with_cache(enable=True, ttl=7200)  # Кэш на 2 часа
    .with_indicator('custom', 'macd', fast_period=12, slow_period=26, signal_period=9)
    .detect_zones('zero_crossing', indicator_col='macd_hist')
    .analyze(clustering=True)
    .build()
)
```

## 🔄 Migration Guide

### От старого API к новому

**Старый способ (Deprecated):**
```python
from bquant.indicators import MACDZoneAnalyzer

analyzer = MACDZoneAnalyzer()
result = analyzer.analyze_complete(data)
legacy_zone = result.zones[0]
```

**Новый способ (Universal Pipeline):**
```python
from bquant.analysis.zones import analyze_zones

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')
    .analyze(clustering=True)
    .build()
)

# Прямой доступ к features
zone_features = result.zones[0].features.get('zone_type')
```

### Ключевые изменения
- `MACDZoneAnalyzer().analyze_complete()` → `analyze_zones().build()`
- `_zone_to_dict()` → `zone.features.get()`
- Hardcoded индикаторы → Universal API
- 3-слойная архитектура → 2-слойная архитектура

## 🎯 Преимущества Universal Pipeline v2.1

### Упрощение
- **2 слоя вместо 3** - убраны indicator-specific facades
- **Единый API** для всех индикаторов
- **Автоматическая интеграция** компонентов

### Универсальность
- **Работает с ЛЮБЫМ индикатором** из IndicatorFactory
- **ZERO hardcoded** названий колонок
- **115 тестов, 100% pass rate** - доказательство универсальности

### Производительность
- **Автоматическое кэширование** (память + диск)
- **Performance benchmarks** - zones/sec измерения
- **Code simplification** - ~200 lines net reduction

### Расширяемость
- **Strategy Pattern** - легко добавлять новые стратегии
- **Dependency Injection** - настраиваемые компоненты
- **Registry Pattern** - автоматическая регистрация

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

### 📚 Core API
- **[Quick Start](../../user_guide/quick_start.md)** - Быстрый старт с Universal Pipeline
- **[Zone Detection Strategies](strategies.md)** - Детальное описание 5 стратегий
- **[Statistical Analysis](statistical.md)** - Hypothesis tests и статистика
- **[Zone Analysis Models](zones.md)** - ZoneInfo, ZoneAnalysisResult

### 🎯 Learning Path
- **[Examples](../../examples/README.md)** - Готовые примеры использования
- **[Deep Dive Tutorial](../../research/notebooks/03_zones_universal.py)** - Comprehensive analysis
- **[Advanced Features](../../research/notebooks/03_analysis_new_features.py)** - Swing, divergence, regression
- **[Migration Guide](../../examples/02_macd_zone_analysis.py)** - Переход с legacy API

### 🏗️ Developer Resources
- **[Architecture Patterns](../../developer_guide/README.md)** - Design Patterns, Extension Points
- **[Testing Framework](../../tests/integration/)** - Integration tests, Backward compatibility
- **[Visualization](../../api/visualization/README.md)** - Zone visualization, Statistical plots
- **[Indicators](../../api/indicators/README.md)** - IndicatorFactory, Custom indicators

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

1. **Начните с простого** - один индикатор, базовая стратегия
2. **Используйте кэширование** - для больших данных и повторных анализов
3. **Экспериментируйте со стратегиями** - разные комбинации дают разные результаты
4. **Изучайте indicator_context** - понимание контракта поможет в расширении
5. **Используйте hypothesis tests** - для статистической валидации результатов

---

**Следующий шаг:** [Zone Detection Strategies](strategies.md) 🎯
