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

📚 Обзор

Примеры использования BQuant демонстрируют различные сценарии применения библиотеки от простых до сложных.

🗂️ Категории примеров

🚀 Примеры универсального анализа зон

  • 01_basic_indicators.pyОСНОВЫ ИНДИКАТОРОВ (314 строк)

    • IndicatorFactory и LibraryManager: базовые SMA, RSI, MACD, Bollinger Bands

    • Создание данных: create_sample_ohlcv_data() без внешних источников

    • Авто-загрузка библиотек: LibraryManager.load_all_libraries() и интеграция с pandas-ta

  • 02a_universal_zones.pyГЛАВНЫЙ ТУТОРИАЛ (693 строки)

    • Универсальный API: MACD, RSI, AO, MA crossover, Stochastic, кастомные индикаторы и preloaded-зоны

    • Отсутствие дублирования: один pipeline для всех стратегий детекции

    • Кэширование и сохранение: pickle, JSON и parquet для результатов анализа

    • Модульный запуск: отдельные функции для подготовки, анализа и визуализации

  • 02_macd_zone_analysis.pyРУКОВОДСТВО ПО МИГРАЦИИ (406 строк)

  • Legacy vs Universal (сравнение): пошаговое сопоставление старого и нового API

  • Предупреждения об устаревании (Deprecation Warnings): демонстрация предупреждений и путей миграции

  • Бенчмарк производительности: измерение времени и памяти для обоих подходов

    • Несколько стратегий: zero_crossing, line_crossing, комбинированные правила и профили fallback

📈 Примеры продвинутых возможностей

  • 03_data_processing.pyДЕМОНСТРАЦИЯ PIPELINE ДАННЫХ (510 строк)

  • ETL-конвейер: очистка, агрегация и нормализация рыночных данных

  • Инженерия признаков (feature engineering): генерация признаков для последующего анализа зон

    • Отчётность: структурированный вывод метрик и логирование прогресса

  • 04_comprehensive_analysis.pyПОЛНЫЙ PIPELINE (301 строк)

    • UniversalZoneAnalyzer: конфигурация через ZoneDetectionRegistry

    • Смешанные режимы рынка: демонстрация тренда, коррекции и боковика

    • Полный цикл: от подготовки данных до сохранения результатов анализа

  • 05_strategies_demo.pyГЛУБОКОЕ ПОГРУЖЕНИЕ В СТРАТЕГИИ (401 строк)

  • Колебательные и дивергенционные стратегии: FindPeaks, PivotPoints, ZigZag, классические дивергенции

  • .with_strategies() API: комбинирование нескольких стратегий в одном пайплайне

  • zone.features: доступ к расширенным метрикам, устойчивым fallback-аналитикам и печать симметрии длительности

  • 06_regression_demo.pyРЕГРЕССИОННЫЙ АНАЛИЗ (345 строк)

    • Статистическое моделирование: регрессия по метрикам зон и контроль стабильности R²

    • Подготовка признаков: нормализация метрик зон, train/test split и оценка

    • Валидация: сравнение моделей, коэффициентов и чувствительности к индикаторам

  • 07_validation_demo.pyФРЕЙМВОРК ВАЛИДАЦИИ (536 строк)

  • Кросс-валидация (cross-validation): проверка стабильности стратегий на нескольких срезах

  • Метрики качества: устойчивость R², permutation test и контроль ресурсоёмкости

  • Стресс-тесты: анализ поведения при разных объёмах данных и профили нагрузки

🔬 Исследовательские ноутбуки

  • 03_zones_universal.py — Глубокий разбор универсального анализа зон (412 строк) (см. исходный код)

  • 03_analysis_new_features.py — Тестирование новых аналитических возможностей (см. исходный код)

🎯 Быстрый старт с примерами

1. Универсальный анализ зон

# examples/02a_universal_zones.py
import bquant as bq
from bquant.data.samples import get_sample_data
from bquant.analysis.zones import analyze_zones

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

# Universal Pipeline - любой индикатор
result = (
    analyze_zones(data)
    .with_indicator('pandas_ta', 'rsi', length=14)
    .detect_zones('threshold', indicator_col='RSI_14',  # колонка создаётся pandas-ta
                  upper_threshold=70, lower_threshold=30)
    .analyze(clustering=True)
    .build()
)

# Выводим результаты
print(f"Найдено зон: {len(result.zones)}")
if not result.zones:
    print("⚠️ RSI на текущем датасете не пересёк пороги 70/30 — зон может не быть.")
print(f"Статистика: {result.statistics}")

2. Руководство по миграции — Legacy vs New API

# examples/02_macd_zone_analysis.py

# ⚠️ УСТАРЕВШИЙ СПОСОБ (DEPRECATED)
from bquant.indicators import MACDZoneAnalyzer
analyzer = MACDZoneAnalyzer()
result = analyzer.analyze_complete(data)

# ✅ Новый способ: Universal Pipeline
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()
)

3. Продвинутые возможности — стратегии и анализ

# examples/05_strategies_demo.py
from bquant.analysis.zones import analyze_zones
from bquant.data.samples import get_sample_data

data = get_sample_data('tv_xauusd_1h')

# Продвинутые стратегии
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',      # Анализ swing-движений
        divergence='classic',    # Обнаружение дивергенций
        volume='standard',       # Анализ объёма
        volatility='combined'    # Анализ волатильности
    )
    .analyze(clustering=True)
    .build()
)

# Hypothesis tests автоматически в pipeline
if result.hypothesis_tests:
    for test_name, test_result in result.hypothesis_tests.results.items():
        p_value = test_result.get('p_value')
        if p_value is not None:
            print(f"{test_name}: p={p_value:.4f}")
        else:
            print(f"{test_name}: {test_result}")

🗺️ Навигация по примерам

🚀 Quick Start

  • Basic Indicators (см. исходный код) — стартовая демонстрация IndicatorFactory

  • Universal Zones (см. исходный код) — НАЧНИТЕ ЗДЕСЬ: любой индикатор за 3 строки

📚 Маршрут изучения

  • Migration Guide (02_macd_zone_analysis.py) — переход с deprecated API (см. исходный код)

  • Strategies Deep Dive (05_strategies_demo.py) — все типы стратегий (см. исходный код)

  • Regression Analysis (06_regression_demo.py) — статистическое моделирование (см. исходный код)

  • Validation Framework (07_validation_demo.py) — проверка качества (см. исходный код)

🔗 Перекрёстные ссылки

📊 Структура каждого примера

📖 Заголовок и описание

"""
Пример: Анализ MACD с зонами

Этот пример демонстрирует:
- Загрузку sample данных
- Создание анализатора MACD
- Выполнение полного анализа
- Визуализацию результатов

Автор: BQuant Team
Дата: 2024
"""

🔧 Импорты и настройка

import bquant as bq
from bquant.data.samples import get_sample_data
from bquant.indicators import MACDZoneAnalyzer
from bquant.visualization import FinancialCharts

# Настройка логирования
import logging
import plotly.io as pio

logging.basicConfig(level=logging.INFO)
pio.renderers.default = "json"  # безопасный renderer для headless-среды

💻 Основной код

def main():
    """Основная функция примера"""
    
    # 1. Загрузка данных
    print("Загружаем данные...")
    data = get_sample_data('tv_xauusd_1h')
    
    # 2. Анализ
    print("Выполняем анализ...")
    analyzer = MACDZoneAnalyzer()
    result = analyzer.analyze_complete(data)
    
    # 3. Результаты
    print("Результаты анализа:")
    print(f"  - Зон найдено: {len(result.zones)}")
    print(f"  - Статистика: {result.statistics}")
    
    # 4. Визуализация
    print("Создаем визуализацию...")
    charts = FinancialCharts()
    try:
        fig = charts.plot_macd_with_zones(data, result.zones)
        fig.show()
    except Exception as exc:
        print(f"⚠️ Визуализация недоступна: {exc}")

if __name__ == "__main__":
    main()

📋 Документация

  • Описание - Что делает пример

  • Требования - Необходимые зависимости

  • Запуск - Как запустить пример

  • Результаты - Что ожидать на выходе

📏 Example Quality Standards

Self-contained

  • Независимость - каждый пример работает без внешних зависимостей

  • Sample данные - использование встроенных sample данных

  • Полный код - все необходимые импорты и функции включены

Well-documented

  • Подробные комментарии - объяснение каждого шага

  • Docstrings - документация для всех функций

  • Примеры вывода - ожидаемые результаты

Error-handled

  • Graceful degradation - обработка отсутствующих опциональных компонентов

  • Try/except блоки - обработка возможных ошибок

  • Информативные сообщения - понятные сообщения об ошибках

Performance-aware

  • Демонстрация кэширования - показ возможностей оптимизации

  • Время выполнения - измерение производительности

  • Memory usage - контроль использования памяти

🔗 Integration with Documentation

Tutorial Integration

  • Связь с учебными материалами - примеры интегрированы с tutorials

  • Learning path - логическая последовательность изучения

  • Progressive complexity - от простого к сложному

Developer Resources

  • Архитектурные принципы - ссылки на design patterns

  • Extension points - показ возможностей расширения

  • Best practices - демонстрация лучших практик

🚀 Как запускать примеры

1. Клонирование репозитория

git clone https://github.com/bquant-team/bquant.git
cd bquant

2. Установка зависимостей

pip install -e .

3. Запуск примера

# Базовый пример
python examples/01_basic_indicators.py

# Продвинутый пример
python examples/02a_universal_zones.py

# С параметрами
python examples/06_regression_demo.py

4. В Jupyter Notebook

# Запускаем пример в интерактивном режиме
from pathlib import Path
import runpy

example_path = Path("examples/02a_universal_zones.py")
try:
    runpy.run_path(example_path, run_name="__main__")
except (TypeError, LookupError, RuntimeError, ValueError) as exc:
    print("⚠️ Скрипт требует дополнительные аргументы или опциональные библиотеки (pandas-ta/talib):", exc)

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

🎯 Для изучения

  • Начните с basic/ - Освойте базовые концепции

  • Изучайте код - Читайте комментарии и docstrings

  • Экспериментируйте - Изменяйте параметры и наблюдайте результаты

  • Задавайте вопросы - Если что-то непонятно

🔧 Для разработки

  • Используйте как шаблоны - Адаптируйте под свои нужды

  • Изучайте паттерны - Обратите внимание на структуру кода

  • Тестируйте изменения - Проверяйте работу после модификаций

  • Документируйте - Добавляйте комментарии к своим изменениям

🚀 Для продакшена

  • Адаптируйте под данные - Замените sample данные на реальные

  • Добавьте обработку ошибок - Используйте try/except блоки

  • Оптимизируйте производительность - Примените техники из performance/

  • Настройте логирование - Добавьте информативные логи

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

🤝 Вклад в примеры

Добавление нового примера

  1. Создайте файл в соответствующей папке

  2. Добавьте документацию - описание, требования, запуск

  3. Протестируйте - убедитесь что пример работает

  4. Создайте PR - предложите изменения

Структура нового примера

"""
Название: Краткое описание

Подробное описание что делает пример и как его использовать.

Требования:
- bquant
- pandas
- matplotlib

Запуск:
python examples/category/example_name.py

Автор: Ваше имя
Дата: YYYY-MM-DD
"""

import bquant as bq
# ... остальные импорты

def main():
    """Основная функция"""
    pass

if __name__ == "__main__":
    main()

Начать изучение: 02a_universal_zones.py (см. исходный код) 🚀