Бот для мониторига финансовых инструментов (акции, Forex, криптовалюты) с использованием индикаторов RSI (Relative Strength Index) и Stochastic Oscillator. Бот отправляет уведомления в Telegram при достижении пороговых значений индикаторов.
📊 Мониторинг двух индикаторов: RSI и Stochastic Oscillator с настраиваемыми параметрами
🔔 Умные уведомления: Автоматические алерты при перепроданности/перекупленности и интеграция с Telegram
⏰ Интеллектуальное расписание: Проверки по московскому времени (MSK), автоматический пропуск выходных дней, расписание проверок: 08:00, 15:00, 22:00 (МСК)
🔐 Безопасность: Ограничение доступа по TG_ID пользователей, использование разных API ключей для RSI и Stochastic
🛠 Технологии
- Python 3.8+
- Aiogram 3.x - для работы с Telegram API
- SQLAlchemy - для работы с базой данных
- aiohttp - для асинхронных HTTP запросов
- TwelveData API - для получения данных о рынке
- pytz - для работы с часовыми поясами
📁 Структура проекта
rsi_bot/
├── app/
│ ├── config.py # Конфигурация бота
│ ├── main.py # Точка входа
│ ├── core.py # Ядро приложения
│ ├── auth.py # Middleware аутентификации
│ ├── models.py # Модели базы данных
│ ├── database.py # Работа с базой данных
│ ├── handlers/
│ │ └── main_handlers.py # Обработчики команд
│ ├── keyboards/
│ │ └── inline.py # Inline-клавиатуры
│ └── services/
│ ├── twelvedata_service.py # Сервис TwelveData
│ ├── rsi_monitor.py # Мониторинг RSI
│ └── monitoring.py # Сервис мониторинга
├── requirements.txt # Зависимости
├── rsi_bot.db # База данных (создается автоматически)
└── README.md # Документация
- Установка зависимостей
pip install -r requirements.txt
- Настройка конфигурации Отредактируйте файл app/config.py:
TELEGRAM_BOT_TOKEN = "ВАШ_TELEGRAM_BOT_TOKEN"
TWELVEDATA_API_KEY_1 = "ВАШ_ПЕРВЫЙ_API_КЛЮЧ_TWELVEDATA"
TWELVEDATA_API_KEY_2 = "ВАШ_ВТОРОЙ_API_КЛЮЧ_TWELVEDATA"
ADMIN_USER_ID = [ВАШ_USER_ID] # ID пользователя Telegram
-
Получение API ключей Telegram Bot Token: Напишите @BotFather в Telegram Создайте нового бота с помощью команды /newbot Скопируйте токен
TwelveData API Keys: Зарегистрируйтесь на twelvedata Получите два API ключа (используйте разные аккаунты) Первый ключ для RSI, второй для Stochastic
-
Настройка параметров индикаторов В config.py можно настроить:
# RSI параметры
RSI_PERIOD = 14 # Период расчета
RSI_OVERSOLD = 30 # Порог перепроданности
RSI_OVERBOUGHT = 70 # Порог перекупленности
RSI_TIMEFRAME = "4h" # Таймфрейм
# Stochastic параметры
STOCH_TIMEFRAME = "1day" # Таймфрейм
STOCH_K_PERIOD = 5 # Период %K
STOCH_D_PERIOD = 3 # Период %D
STOCH_SMOOTHING = 3 # Замедление
STOCH_OVERSOLD = 20 # Порог перепроданности
STOCH_OVERBOUGHT = 80 # Порог перекупленности
Основные команды:
- /start - Главное меню
- ➕ Добавить пару - Добавить символ для отслеживания
- ➖ Удалить пару - Удалить символ из отслеживания
- 🔄 Обновить данные - Принудительное обновление данных
Поддерживаемые символы:
- Акции: AAPL, MSFT, GOOGL, AMZN, TSLA, META, NVDA, NFLX
- Forex: EUR/USD, GBP/USD, USD/JPY, USD/CHF, AUD/USD, USD/CAD
- Криптовалюты: BTC/USD, ETH/USD, ADA/USD, DOT/USD
Особенности реализации - разделение ключей:
- Ключ 1 используется для запросов RSI
- Ключ 2 используется для запросов Stochastic
Лимиты запросов:
- 8 запросов в минуту на каждый ключ
- 800 запросов в день на каждый ключ
- Интеллектуальное управление лимитами
Кеширование:
- Данные кешируются на 10 минут
- Уменьшает количество запросов к API
📊 Логика работы Расписание проверок:
- 08:00 МСК - Утренняя проверка
- 15:00 МСК - Дневная проверка
- 22:00 МСК - Вечерняя проверка
- Выходные дни пропускаются
Условия алертов: RSI:
- Перепроданность: RSI < 30
- Перекупленность: RSI > 70 Stochastic:
- Перепроданность: K < 20 и D < 20
- Перекупленность: K > 80 и D > 80
Warning
Только для образовательных целей - не используйте для реальной торговли
- Проверяйте лимиты API - TwelveData имеет ограничения