Инструмент для полуавтоматической торговли на бинарных опционах с интеграцией 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.qrc→rc_icons.py, папкаicons/— ресурсы иконок.disclaimer_text.py,loggingfile.py— окно дисклеймера, настройка логирования.
Примечание по данным: папка данных экземпляра создаётся в %AppData%/UTEConnect_<версия>/instance_<uuid> и изолируется для каждого установленного .exe (см. programm_files.py). Это удобно для параллельных запусков.
Тестировалось на Python 3.11–3.13 (Windows).
- Создайте и активируйте виртуальное окружение:
python -m venv venv
venv\Scripts\activate- Установите зависимости:
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), блокировки на выходные.
Встроенный 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).
Минимальный пример команды (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: управление профилями ММ, импорт/экспорт настроек.
- Дополнительные источники новостей и кэширование календаря.
- Клонируйте репозиторий, создайте
venv, установите зависимости (см. выше). - Запустите
python "UTE Connect.py". - В GUI заполните авторизационные данные, выберите режим ММ, сохраните таблицу.
- Для интеграции с MT4/5 сконфигурируйте советник на отправку HTTP‑GET к локальному эндпоинту.
- Проверьте логи и статистику.
Если возникнут вопросы — см. комментарии в mm_trading.py, utils.py, programm_files.py и UTE Connect.py как основной точке входа.