Каталог 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Этот файл является единственным источником истины о списке валютных пар в проекте.
ALL_SYMBOLSlist[str]"BAS/QUOTE" (например, "EUR/USD", "USD/RUB").historical_loader.py)incremental_updater.py)Пример:
ALL_SYMBOLS = [
"EUR/USD",
"USD/JPY",
"GBP/USD",
# ... всего 287 пар
]
CURRENCY_GROUPSdict[str, list[str]]CURRENCY_GROUPS = {
'Major': ["EUR/USD", "USD/JPY", ...], # 34 пары
'Minor': ["AUD/CAD", "EUR/GBP", ...], # 107 пар
'Exotic': ["USD/TRY", "EUR/PLN", ...] # 146 пар
}
analyze_centrality.py)Файл также содержит вспомогательные структуры данных для полного описания валют:
Конфигурационный файл является связующим звеном между всеми компонентами системы:
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
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-процессов выполняется проверка:
XXX/YYYALL_SYMBOLS присутствуют в одной из группНа основе текущей конфигурации:
| Параметр | Значение | Примечание |
|---|---|---|
| Всего пар | 287 | Полный граф связей |
| Major (мажорные) | 34 пары | 11.8% |
| Minor (минорные) | 107 пар | 37.3% |
| Exotic (экзотические) | 146 пар | 50.9% |
| Уникальных валют | 145 | Из 153 доступных в проекте |
| Наиболее центральная | USD | 115 связей |
BAS/QUOTE (базовая валюта/котируемая валюта)EUR/USD = сколько USD за 1 EUR)Символы из ALL_SYMBOLS используются напрямую в запросах к API:
symbol = "EUR/USD" # Из конфигурации
params = {'symbol': symbol, 'interval': '1day', ...}
response = requests.get(API_URL, params=params)
При добавлении новых пар в проект:
ALL_SYMBOLSCURRENCY_GROUPSdata/, куда загружаются данные для пар из этой конфигурацииALL_SYMBOLS для поддержания актуальности данных