abscur3

Конфигурация проекта AbsCur3

← Назад к корневому README.md

🎯 Назначение

Каталог config/ содержит ключевые конфигурационные файлы, определяющие логику работы проекта AbsCur3. Центральным элементом является файл currencies.py, который хранит полный список из 287 валютных пар — основу для загрузки данных и последующего расчёта абсолютных курсов.

📁 Структура конфигурации

graph TD
    A[config/] --> B[currencies.py]
    B --> B1[ALL_SYMBOLS]
    B --> B2[CURRENCY_GROUPS]
    B --> B3[Доп. метаданные]
    
    B1 --> C1[ETL-процессы<br/>historical_loader.py<br/>incremental_updater.py]
    B2 --> C2[Аналитика<br/>analyze_centrality.py]

📄 Файл currencies.py

Этот файл является единственным источником истины о списке валютных пар в проекте.

Основные константы

1. ALL_SYMBOLS

Пример:

ALL_SYMBOLS = [
    "EUR/USD",
    "USD/JPY",
    "GBP/USD",
    # ... всего 287 пар
]

2. CURRENCY_GROUPS

3. Дополнительные метаданные

Файл также содержит вспомогательные структуры данных для полного описания валют:

🔄 Роль в архитектуре проекта

Конфигурационный файл является связующим звеном между всеми компонентами системы:

flowchart LR
    CFG[config/currencies.py] --> ETL[ETL-скрипты<br/>Загрузка данных]
    CFG --> CALC[Алгоритмы<br/>Расчёт абс. курсов]
    CFG --> ANALYTICS[Аналитические скрипты]
    CFG --> VIS[Визуализация<br/>Веб-интерфейс]
    
    ETL --> DATA[data/raw/twelve_data/pairs/]
    DATA --> CALC
    ANALYTICS --> DATA

⚙️ Использование в коде

Загрузка конфигурации в Python-скриптах

import sys
import os

# Добавляем каталог config в путь Python
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'config'))

# Импортируем конфигурацию
import currencies

# Используем список пар
for symbol in currencies.ALL_SYMBOLS:
    print(f"Обработка пары: {symbol}")

# Используем группы
print(f"Количество мажорных пар: {len(currencies.CURRENCY_GROUPS['Major'])}")

Валидация конфигурации

При запуске ETL-процессов выполняется проверка:

  1. Полнота списка: ровно 287 пар
  2. Корректность формата: символы в формате XXX/YYY
  3. Согласованность групп: все пар из ALL_SYMBOLS присутствуют в одной из групп

📊 Статистика (актуальная)

На основе текущей конфигурации:

Параметр Значение Примечание
Всего пар 287 Полный граф связей
Major (мажорные) 34 пары 11.8%
Minor (минорные) 107 пар 37.3%
Exotic (экзотические) 146 пар 50.9%
Уникальных валют 145 Из 153 доступных в проекте
Наиболее центральная USD 115 связей

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

Формат символов

Взаимодействие с API Twelve Data

Символы из ALL_SYMBOLS используются напрямую в запросах к API:

symbol = "EUR/USD"  # Из конфигурации
params = {'symbol': symbol, 'interval': '1day', ...}
response = requests.get(API_URL, params=params)

Миграция и обновление

При добавлении новых пар в проект:

  1. Добавить пару в ALL_SYMBOLS
  2. Определить её группу в CURRENCY_GROUPS
  3. Запустить историческую загрузку для новой пары
  4. Система ежедневного обновления автоматически включит новую пару в обработку

🔗 Связанная документация