Skip to content

UteBot - это бот для автоматической торговли опционами, поддерживающий разные торговые режимы.

Notifications You must be signed in to change notification settings

MICROWAVE-web/UteBot

Repository files navigation

UTE Connect

Инструмент для полуавтоматической торговли на бинарных опционах с интеграцией MT4/5-сигналов. Графическое приложение на PyQt управляет подключением к торговой платформе через WebSocket, ведёт статистику сделок, применяет стратегии мани‑менеджмента, поддерживает новостной фильтр и локальный HTTP‑эндпоинт для приёма сигналов от внешних источников (например, советника в MT4/MT5).

— Работает на Windows (поддержка сборки в один .exe) — GUI на PyQt, локализация RU/EN, светлая/тёмная темы — Связь с платформой: WebSocket wss://2ute.ru:100 — Приём сигналов: встроенный Flask-сервер (GET /?pair=EURUSD&direct=UP|DOWN)

Содержание

  • Описание функционала
  • Архитектура и ключевые модули
  • Установка окружения (из исходников)
  • Запуск
  • Настройки и файлы данных
  • Интерфейс и рабочий процесс
  • Интеграция с MT4/MT5 (локальный HTTP)
  • Новости и новостной фильтр
  • Статистика и отчётность
  • Сборка .exe (PyInstaller)
  • Локализация и ресурсы
  • Траблшутинг
  • Безопасность
  • Дорожная карта / идеи улучшений

Описание функционала

  • Подключение к платформе, поддержка аккаунтов: реальный RUB, реальный USD, демо.
  • Приём торговых сигналов (пара, направление) и автоматическое открытие опционов по заданной таблице ММ.
  • 4 режима мани‑менеджмента (серии сделок и счётчики шагов WIN/LOSS).
  • Временные проверки: расписание, низкая выплата (one_percent_time), выходные.
  • Новостной фильтр с градацией важности и настраиваемыми окнами «До/После».
  • Ведение статистики сделок (вкл. «ожидающие» и последующее обновление по факту закрытия).
  • Встроенный локальный HTTP‑сервер (Flask) для приёма сигналов от внешних систем/советников.
  • Локализация RU/EN, темы интерфейса: тёмная/светлая.

Архитектура и ключевые модули

  • UTE Connect.py — главный модуль GUI (PyQt). Загружает inteface_W7.ui, управляет состоянием, настройками, статистикой, локальным Flask‑сервером, проверкой версии и взаимодействием с модулем торговли.
  • mm_trading.py — ядро исполнения сделок: класс OptionSeries управляет WebSocket‑подключением, отправкой команд, очередями запросов/ответов, логикой серий, проверками времени/расписания/выплат и обновлением статистики.
  • utils.py — функции для экспирации, преобразования времени, пересчёта сводной статистики, добавления/обновления записей о сделках.
  • programm_files.py — управление файловым хранилищем данных/настроек. Создаёт уникальную папку экземпляра в %AppData% (через platformdirs), читает/записывает JSON‑файлы (auth_data, mm_data, statistic_data, additional_settings, news, language) c блокировками и бэкапами.
  • news.py — загрузка экономического календаря (investpy), периодическое обновление и диалог настройки новостного фильтра.
  • mm_types.py — константы/типы для режимов ММ.
  • themes.py, scrollbar_style.py — оформление UI (светлая/тёмная темы, стили скроллбаров, цвета таблиц).
  • icons.qrcrc_icons.py, папка icons/ — ресурсы иконок.
  • disclaimer_text.py, loggingfile.py — окно дисклеймера, настройка логирования.

Примечание по данным: папка данных экземпляра создаётся в %AppData%/UTEConnect_<версия>/instance_<uuid> и изолируется для каждого установленного .exe (см. programm_files.py). Это удобно для параллельных запусков.

Установка окружения (из исходников)

Тестировалось на Python 3.11–3.13 (Windows).

  1. Создайте и активируйте виртуальное окружение:
python -m venv venv
venv\Scripts\activate
  1. Установите зависимости:
pip install -r requirements.txt

Если требуется, установите дополнительные пакеты из вашей корпоративной среды.

Запуск

python "UTE Connect.py"

При первом запуске:

  • Будет создана папка данных экземпляра и файлы настроек по умолчанию.
  • В GUI заполните поля авторизации (URL, token, user_id, тип счёта) и сохраните.
  • Нажмите «Старт» для подключения и приёма сигналов.

Настройки и файлы данных

Все JSON‑данные хранятся в уникальной папке экземпляра в %AppData% (см. programm_files.py):

  • auth_data.log — URL платформы, token, user_id, selected_type_account, mt4_url и т.д.
  • mm_data.log — таблица мани‑менеджмента (шаги, инвестиции, экспирация, переходы WIN/LOSS, TP/SL).
  • statistic_data.json — журнал сделок: «ожидающие» и завершённые, плюс summary.
  • additional_settings_data.json — расписание торговли по дням/интервалам, список пар, тема (light/dark).
  • news.json, news_settings.json — новости и настройки новостного фильтра.
  • language.json — текущий язык (ru/en).

Интерфейс и рабочий процесс

  • Таблица ММ: добавляйте/сохраняйте строки; поддерживаются инвестиции в абсолютных значениях или процентах от баланса (например, 0.5%). Экспирация: HH:MM:SS или число минут.
  • Режим ММ выбирается в GUI; логика переходов по серии обрабатывается в mm_trading.OptionSeries.
  • Кнопка «Применить» пересчитывает статистику (utils.recalculate_summary).
  • Фильтры времени: расписание по дням (в additional_settings_data.json), интервалы сниженной выплаты с сервера (one_percent_time), блокировки на выходные.

Интеграция с MT4/MT5 (локальный HTTP)

Встроенный Flask‑сервер стартует в отдельном потоке и ищет свободный порт, начиная с 80. Хост берётся из mt4_url в auth_data (по умолчанию http://127.0.0.1).

  • Эндпоинт: GET /?pair=<SYMBOL>&direct=<UP|DOWN>
  • Пример: http://127.0.0.1:80/?pair=EURUSD&direct=UP
  • Приложение пересылает сигнал в основной поток и запускает обработку в OptionSeries.mt4_signal(...).

Важно: при параллельных запусках у каждого экземпляра своя директория данных и свой порт.

Новости и новостной фильтр

  • news.NewsUpdater периодически запрашивает экономический календарь (investpy) для актуального дня (+1 день) в тайм‑зоне GMT+3 и сохраняет только ближайшие события с валидным временем.
  • Диалог NewsFilterDialog позволяет настроить окна «До/После» для низкой/средней/высокой важности, опцию «только пары с затронутой валютой», а также обратный фильтр (для торговли на новостях).
  • Проверка новостного фильтра выполняется перед отправкой сделки.

Статистика и отчётность

  • При открытии сделки сначала записывается «ожидающая» запись (utils.add_pending_option_to_statistic).
  • После закрытия платформа присылает сообщение, и запись обновляется фактическими данными (utils.update_option_in_statistic).
  • Сводка пересчитывается по нажатию «Применить» или вручную через utils.recalculate_summary.
  • Учитывается особый случай «возврат 50%» (отрицательный результат считается убыточным, см. логику в utils и mm_trading).

Сборка .exe (PyInstaller)

Минимальный пример команды (Windows):

pyinstaller --noconfirm --onefile --windowed --icon "Z:\Projects\UteBot\icon.ico" --add-data "Z:\Projects\UteBot\icon.ico;." --add-data "Z:\Projects\UteBot\icons.qrc;." --add-data "Z:\Projects\UteBot\inteface_W7.ui;." --add-data "Z:\Projects\UteBot\translations_en.qm;." "Z:\Projects\UteBot\UTE Connect.py"

Команды для созданя переводов в интерфейсе

pylupdate5 '.\UTE Connect.py' '.\mm_trading.py' '.\news.py' '.\disclaimer_text.py' inteface_W7.ui -ts translations_en.ts
linguist
qt5-tools lrelease .\translations_en.ts

Рекомендации:

  • Убедитесь, что rc_icons.py сгенерирован из icons.qrc (если потребуется: pyrcc5 icons.qrc -o rc_icons.py).
  • Проверьте наличие переводов (translations_en.qm) рядом с приложением.
  • Если используется main_W7.spec, можно адаптировать/обновить под текущую структуру файлов.

Локализация и ресурсы

  • Переводы: translations_en.ts/.qm.
  • Ресурсы: icons/, icons.qrc, скомпилированные в rc_icons.py.
  • UI‑разметка: inteface_W7.ui.

Траблшутинг

  • Соединение нестабильно / тайм‑аут пинга: в логах появятся предупреждения, приложение попытается переподключиться; после нескольких ошибок соединение будет остановлено (см. max_errors в mm_trading.py).
  • Ошибка WebSocket / closed socket: автоматический reconnect(); при частых ошибках проверьте сеть и параметры auth_data.
  • Сигнал не принят: проверьте, что Flask‑сервер запущен и свободен порт, что pair присутствует в списке доступных пар платформы (см. периодическое обновление pair_list).
  • Неверные интервалы/экспирация: убедитесь, что формат экспирации корректный и не попадает в «плохие» интервалы выплат или выходные.
  • Новостной календарь: библиотека investpy может меняться; при ошибках обновите пакет или задайте язык, соответствующий локали.

Безопасность

  • В репозитории присутствует токен Telegram‑бота для проверки версии. Перед публикацией в открытый доступ замените или вынесите в переменные окружения/настройки запуска.
  • Данные авторизации к торговой платформе хранятся в %AppData% в JSON. Защитите доступ к рабочей машине и профилю пользователя.
  • Локальный HTTP‑сервер по умолчанию слушает 127.0.0.1. Не пробрасывайте порт наружу без надлежащей аутентификации и сетевой изоляции.

Дорожная карта / идеи улучшений

  • Перенос чувствительных данных (токены/ключи) в переменные окружения или шифрованное хранилище.
  • Единый конфиг для портов Flask, более явное управление несколькими экземплярами.
  • Единичные/интеграционные тесты для utils и логики ММ.
  • UI: управление профилями ММ, импорт/экспорт настроек.
  • Дополнительные источники новостей и кэширование календаря.

Быстрый старт для нового разработчика

  1. Клонируйте репозиторий, создайте venv, установите зависимости (см. выше).
  2. Запустите python "UTE Connect.py".
  3. В GUI заполните авторизационные данные, выберите режим ММ, сохраните таблицу.
  4. Для интеграции с MT4/5 сконфигурируйте советник на отправку HTTP‑GET к локальному эндпоинту.
  5. Проверьте логи и статистику.

Если возникнут вопросы — см. комментарии в mm_trading.py, utils.py, programm_files.py и UTE Connect.py как основной точке входа.

About

UteBot - это бот для автоматической торговли опционами, поддерживающий разные торговые режимы.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages