# Скрипт для получения баланса реального счёта T-Bank

## Описание

Скрипт `get_real_account_balance.py` предназначен для получения информации о свободном балансе реального брокерского счёта в T-Bank Invest API.

## Функционал

- 🔄 Автоматическое переключение на реальный режим работы T-Bank API
- 📋 Получение списка всех брокерских счетов
- 💰 Получение детальной информации о балансе счёта
- 💳 Отображение свободного баланса по всем валютам
- 📈 Показ открытых позиций с текущей стоимостью
- 📊 Расчёт общей суммы свободных средств в рублях
- 🕒 Вывод времени выполнения

## Требования

### 1. Python 3.7+

### 2. Установленные зависимости

```bash
pip install requests python-dotenv
```

### 3. Настройка окружения

Создайте файл `.env` в корне проекта со следующим содержанием:

```env
# T-Bank API - РЕАЛЬНЫЙ СЧЁТ
TBANK_REAL_TOKEN=ваш_реальный_API_токен
TBANK_ACCOUNT_ID_REAL=ваш_ID_реального_счёта

# T-Bank API - SANDBOX (для тестов)
TBANK_TOKEN=t.wqnyx3rg3L8_P3GUrXXP29SPdebJRvYYD5b_Z5-5PjA1ky5_jJRaQlZRVV6eYe60WxuQBHzUI7RgxJpJskj_8g
TBANK_ACCOUNT_ID=ваш_ID_sandbox_счёта

# Режим работы (sandbox или real)
TBANK_ENV=sandbox

# Комиссии T-Bank (по умолчанию)
TBANK_COMMISSION_PCT=0.3
MOEX_EXCHANGE_FEE_PCT=0.0
```

### 4. Получение API токена

1. Зайдите в [T-Bank Invest API](https://invest-public-api.tinkoff.ru/)
2. Получите API токен в личном кабинете
3. Скопируйте токен в `.env` файл

## Использование

### Запуск скрипта

```bash
python get_real_account_balance.py
```

### Пример вывода

```
🏦 Получение баланса реального счёта T-Bank
==================================================
🔄 Переключение на реальный режим работы...
✅ Режим: реальный счёт
   Токен: t.wqnyx3rg3L8...5PjA1
   URL:   https://invest-public-api.tinkoff.ru/rest
   Счёт:  XXXXXXXXXX

📋 Получение информации о счёте...
✅ Найдено счетов: 1
   • XXXXXXXXXX - Инвестиционный счёт (OPEN)

💰 Получение баланса счёта XXXXXXXXXX...
✅ Баланс получен успешно
   Тип счёта: INVESTMENT_ACCOUNT
   Статус: OPEN
   Заблокирован: Нет

💳 Валютные балансы:
   RUB: 150 000.00 ₽ свободно (0.00 ₽ заблокировано, всего: 150 000.00 ₽)
   USD: 1 000.00 USD свободно (0.00 USD заблокировано, всего: 1 000.00 USD)
        ≈ 90 000.00 ₽ в рублях

📊 Итог:
   Общий свободный баланс: 240 000.00 ₽

📈 Позиции на счёте:
   SBER: +100.00 шт × 285.60 ₽ = 28 560.00 ₽ (+1 200.00 ₽ доходность)
   GAZP: +50.00 шт × 280.10 ₽ = 14 005.00 ₽ (+250.50 ₽ доходность)

   Общая стоимость позиций: 42 565.00 ₽
   Общий капитал: 282 565.00 ₽

✅ Баланс успешно получен в 2026-07-02 15:30:45
```

## Особенности

### 1. Безопасность

- Скрипт не хранит пароли или секретные ключи
- Токены берутся из `.env` файла
- В выводе токены обрезаются для безопасности

### 2. Обработка ошибок

- Проверка наличия реального токена
- Валидация ответов API
- Обработка сетевых ошибок
- Информативные сообщения об ошибках

### 3. Конвертация валют

Для валют кроме RUB используется примерный курс конвертации:
- USD: 90.00 ₽
- EUR: 98.00 ₽
- GBP: 115.00 ₽
- CNY: 12.50 ₽

Для точного расчёта в реальном приложении нужно подключить API Центрального Банка.

### 4. Интеграция с проектом

Скрипт использует существующие модули проекта:
- `src.api.tbank` - для работы с T-Bank API
- `src.utils.config` - для чтения конфигурации

## Возможные ошибки и решения

### 1. "не указан TBANK_REAL_TOKEN"

**Проблема:** Не указан токен для реального счёта
**Решение:** Добавьте `TBANK_REAL_TOKEN` в `.env` файл

### 2. "Ошибка переключения режима"

**Проблема:** Некорректный токен или URL
**Решение:** Проверьте токен и URL в `.env` файле

### 3. "Ошибка получения баланса"

**Проблема:** Недостаточно прав или ошибка API
**Решение:** Проверьте токен и права доступа в T-Bank Invest

### 4. "Нет информации о валютных балансах"

**Проблема:** Счёт не активен или нет средств
**Решение:** Проверьте статус счёта в T-Bank Invest

## Разработка

### Структура скрипта

```python
main()
├── Проверка конфигурации
├── Переключение на реальный режим
├── Получение списка счетов
├── Получение баланса счёта
├── Обработка валютных балансов
├── Обработка позиций
└── Вывод итоговой информации
```

### Функции

- `format_currency()` - форматирование суммы с валютой
- `convert_to_rub()` - конвертация в рубли
- `main()` - основная логика скрипта

### Расширение функционала

Для добавления новых возможностей:
1. Добавьте новые функции в скрипт
2. Расширьте обработку данных из API
3. Добавьте новые форматы вывода
4. Реализуйте конвертацию валют через API ЦБ

## Лицензия

Скрипт разработан для проекта Market Analysis.