BQuant Sample Data

Встроенные тестовые данные для демонстрации возможностей BQuant и разработки примеров.

📊 Доступные датасеты

TradingView XAUUSD 1H (tv_xauusd_1h)

  • Источник: TradingView via OANDA

  • Символ: XAUUSD (золото)

  • Таймфрейм: 1 час

  • Записей: 1,000

  • Размер: ~540 KB

  • Период: Июнь-Август 2025

  • Колонки: time, OHLCV, volume, accumulation_distribution, MACD, signal, RSI, RSI-based MA, regular bullish/bearish signals

MetaTrader XAUUSD M15 (mt_xauusd_m15)

  • Источник: MetaTrader

  • Символ: XAUUSD (золото)

  • Таймфрейм: 15 минут

  • Записей: 1,000

  • Размер: ~210 KB

  • Период: Май 2025

  • Колонки: time, OHLCV, volume, spread

🚀 Быстрый старт

from bquant.data.samples import get_sample_data, list_datasets

# Получить список всех датасетов
datasets = list_datasets()
for dataset in datasets:
    print(f"{dataset['title']}: {dataset['rows']} rows")

# Загрузить данные как pandas DataFrame
df = get_sample_data('tv_xauusd_1h')
print(df.head())
print(f"Shape: {df.shape}")

# Загрузить данные как список словарей
data = get_sample_data('tv_xauusd_1h', format='dict')
print(f"Records: {len(data)}")
print(f"Columns: {list(data[0].keys())}")

📋 API функции

Основные функции

get_sample_data(dataset_name, format='pandas')

Загружает sample данные в указанном формате.

  • Параметры: dataset_name'tv_xauusd_1h' или 'mt_xauusd_m15'; format'pandas'|'dataframe' либо 'dict'|'list'.

  • Возвращает: pandas.DataFrame или List[Dict[str, Any]].

# Как DataFrame (по умолчанию)
df = get_sample_data('tv_xauusd_1h')

# Как список словарей
data = get_sample_data('tv_xauusd_1h', format='dict')

list_datasets()

Возвращает список всех доступных датасетов с основной информацией.

datasets = list_datasets()
# [{'name': 'tv_xauusd_1h', 'title': 'TradingView XAUUSD 1H', ...}, ...]

get_dataset_info(dataset_name)

Возвращает детальную информацию о конкретном датасете.

info = get_dataset_info('tv_xauusd_1h')
print(info['columns'])  # Список колонок
print(info['period_start'])  # Начало периода

validate_dataset(dataset_name)

Валидирует целостность и корректность данных.

result = validate_dataset('tv_xauusd_1h')
if result['is_valid']:
    print("✅ Dataset is valid")
else:
    print("❌ Errors:", result['errors'])

Дополнительные функции

get_sample_preview(dataset_name, n=5)

Возвращает первые n записей для предварительного просмотра.

preview = get_sample_preview('tv_xauusd_1h', 3)
for record in preview:
    print(f"Time: {record['time']}, Close: {record['close']}")

find_datasets(symbol=None, timeframe=None, source=None)

Находит датасеты по заданным критериям.

# Все датасеты для XAUUSD
xauusd_data = find_datasets(symbol='XAUUSD')

# Все часовые данные
hourly_data = find_datasets(timeframe='1h')

# Все данные от TradingView
tv_data = find_datasets(source='TradingView')

compare_sample_datasets(dataset1, dataset2)

Сравнивает два датасета.

comparison = compare_sample_datasets('tv_xauusd_1h', 'mt_xauusd_m15')
print(f"Common columns: {comparison['common_columns']}")
print(f"Dataset 1 unique: {comparison['unique_columns']['tv_xauusd_1h']}")

🔧 Интеграция с BQuant

С индикаторами

from bquant.data.samples import get_sample_data
from bquant.indicators.macd import MACDZoneAnalyzer

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

# Используем с MACD анализатором
analyzer = MACDZoneAnalyzer()
result = analyzer.analyze_complete(data)

print(f"Found {len(result.zones)} MACD zones")

С визуализацией

from bquant.data.samples import get_sample_data
from bquant.visualization import FinancialCharts

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

# Создаем график
charts = FinancialCharts()
fig = charts.create_candlestick_chart(data, title="Sample XAUUSD Data")
fig.show()

С анализом

from bquant.data.samples import get_sample_data
from bquant.indicators.macd import MACDZoneAnalyzer
from bquant.analysis.statistical import run_all_hypothesis_tests
from bquant.analysis.zones.zone_features import ZoneFeaturesAnalyzer

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

# Анализируем MACD зоны
analyzer = MACDZoneAnalyzer()
result = analyzer.analyze_complete(data)

# Статистические тесты
features = ZoneFeaturesAnalyzer().extract_all_zones_features(result.zones)
zones_features = [feature.to_dict() for feature in features]
test_results = run_all_hypothesis_tests(zones_features)
for test_name, outcome in test_results["tests"].items():
    print(f"{test_name}: p-value = {outcome['p_value']:.4f}")

📁 Структура данных

TradingView данные (tv_xauusd_1h)

{
    'time': '2025-06-11T20:00:00+07:00',
    'open': 3336.94,
    'high': 3344.77,
    'low': 3327.95,
    'close': 3330.0,
    'volume': 54323.0,
    'accumulation_distribution': 6642770.32110492,
    'macd': 1.9401445111593605,
    'signal': 2.76537114439529,
    'rsi': 47.8275212676637,
    'rsi_based_ma': 55.23196702366443,
    'regular_bullish': None,
    'regular_bullish_label': '',
    'regular_bearish': None,
    'regular_bearish_label': ''
}

MetaTrader данные (mt_xauusd_m15)

{
    'time': '2025-05-20T02:00:00',
    'open': 2425.15,
    'high': 2425.79,
    'low': 2424.85,
    'close': 2425.56,
    'volume': 7.0,
    'spread': 4.0
}

⚠️ Важные замечания

Лицензия и использование

  • Лицензия: Open data, свободно для исследований и образования

  • Disclaimer: Только для демонстрации. Не для production торговли

  • Источники: TradingView (OANDA), MetaTrader

Технические детали

  • Формат хранения: Embedded Python структуры (List[Dict])

  • Кодировка: UTF-8 для TradingView, Windows-1251 для MetaTrader

  • Размер в памяти: ~1-2 MB при загрузке в DataFrame

  • Числовые типы: float для всех числовых значений, None для NaN

Ограничения

  • Фиксированное количество записей (1,000 на датасет)

  • Только XAUUSD данные в текущей версии

  • Статические данные (обновляются вручную)

🔄 Обновление данных

# Обновить все датасеты
python scripts/data/extract_samples.py --extract-all

# Обновить конкретный датасет
python scripts/data/extract_samples.py --dataset tv_xauusd_1h

# Проверить доступность источников
python scripts/data/extract_samples.py --validate-sources

🧪 Тестирование

# Валидация всех датасетов
from bquant.data.samples import validate_dataset, list_dataset_names

for dataset_name in list_dataset_names():
    result = validate_dataset(dataset_name)
    if result['is_valid']:
        print(f"✅ {dataset_name}: Valid")
    else:
        print(f"❌ {dataset_name}: {result['errors']}")

# Общий статус
from bquant.data.samples import print_sample_data_status
print_sample_data_status()

Обновлено: 2025-08-25
Версия BQuant: 1.0.0-dev
Общий размер: ~750 KB (2 датасета)