Установить окружение
Создайте папку проекта, активируйте виртуальное окружение (python -m venv venv). Установите зависимости: pip install pandas numpy requests matplotlib python-telegram-bot openai. Для хранения ключей используйте .env файл с python-dotenv.
Написать модуль загрузки свечей
Сделайте функцию get_candles(ticker, interval=5, days=1). Используйте MoEx ISS API — запрос в JSON, обрабатывайте через pandas DataFrame. Пример: pd.DataFrame(data['candles']['data'], columns=data['candles']['columns']). Обновите колонки: ‘open’, ‘high’, ‘low’, ‘close’, ‘volume’.
Реализовать поиск экстремумов
Напишите алгоритм поиска локальных минимумов и максимумов с помощью rolling-окна или argrelextrema (scipy.signal). Для «двойного дна» найдите два минимума с допустимым разбросом. Для «голова-плечи» — последовательность: пик, минимум, пик, минимум, пик. Векторизуйте для скорости.
Интегрировать OpenAI для верификации
При обнаружении кандидата рисуйте график matplotlib с аннотациями, сохраняйте в base64. Отправьте в chat.completions.create: ‘Посмотри на график, найден паттерн “двойное дно”. Оцени вероятность от 0 до 100. Если < 60 — скажи “ложь”.’ Ответ парсите регуляркой.
Настроить уведомления в Telegram
Заведите бота через @BotFather, получите токен. В коде после подтверждения OpenAI отправляйте сообщение вида: ‘📈 SBER — Двойное дно, вероятность 85%. Цена 308,5 ₽. Цель: 313,0 ₽ (стоп 305,0)’. Прикрепите график. Запускайте бесконечный цикл с time.sleep(60).