Набор скриптов для торговли и бэктестов стратегии дивергенций цены и RSI на рынке Forex (MetaTrader 5, Backtrader).
- Поиск дивергенций по RSI и экстремумам цены
- Управление риском: риск в % от депозита, TP = SL * R
- Авто-расчёт объёма сделки с проверкой доступной маржи (MT5)
- Бэктест в Backtrader и HTML-отчёт через QuantStats
- Утилиты для выгрузки исторических данных и списка инструментов
- Python 3.10+
- Установленный MetaTrader 5 (терминал)
- Демо/реальный счёт и доступ к серверу брокера
- Пакеты из
requirements.txt
pip install -r requirements.txtУбедитесь, что путь к терминалу MT5 корректен для вашей системы (см. конфиг ниже).
Файл utils/keys.py хранит параметры подключения к MT5:
class Keys:
name = "<LOGIN>"
key = "<PASSWORD>"
serv = "<SERVER>"
path = r"C:\\Program Files\\MetaTrader 5\\terminal64.exe"- name: логин счёта (число)
- key: пароль
- serv: сервер (например, "MetaQuotes-Demo")
- path: путь к исполняемому файлу терминала MT5
- Выгрузка истории по инструменту в CSV:
utils/bars.py- Настройте
symbol,timeframe,barsи запустите файл - CSV сохраняется в
utils/datasets/<SYMBOL>_<TF>.csv
- Настройте
- Выгрузка списка доступных инструментов:
utils/symbols.py- Сохранит
all_symbols.csvиcurrency_pairs.csvвutils/datasets/
- Сохранит
Скрипт: strats/DivergenceStratBT.py
- Использует датасет из
utils/datasets/EURUSD_M5.csv(по умолчанию) - Параметры стратегии настраиваются в блоке
cerebro.addstrategy(...) - По завершении создаётся HTML-отчёт QuantStats рядом с файлом стратегии
Запуск:
python strats/DivergenceStratBT.py | catСкрипт: run_bot/DivergenceStratPANDA.py
- Подключается к MT5, скачивает последние бары, считает RSI
- Ищет дивергенции на последних барах, считает SL/TP и размер лота
- Отправляет маркет-ордера при наличии сигнала
Запуск:
python run_bot/DivergenceStratPANDA.py | catКлючевые параметры в начале файла:
- order: ширина окна для локальных экстремумов
- RSI_PERIOD: период RSI
- DIV_LOOKBACK: глубина поиска дивергенций
- SIGNAL_EXPIRY: «срок годности» сигнала, баров
- RISK_RATIO: отношение TP к SL
- RISK_PERCENT: риск в % от депозита
- SYMBOLS: список тикеров для мониторинга
- run_bot/
- DivergenceStratPANDA.py — рабочий сканер/торговый бот под MT5
- strats/
- DivergenceStratBT.py — стратегия для Backtrader + отчёт QuantStats
- utils/
- bars.py — выгрузка исторических данных в CSV
- symbols.py — выгрузка списка инструментов в CSV
- loging.py — примеры открытия/закрытия позиций (MT5)
- keys.py — параметры подключения к MT5
- datasets/ — CSV-файлы с данными
- Не удалось авторизоваться: проверьте
utils/keys.py(логин/пароль/сервер/путь к MT5) - Нет данных/пустой DataFrame: убедитесь, что символ и таймфрейм доступны у брокера
- Ошибка открытия ордера (retcode): возможно, недостаточно маржи или объём вне допустимого диапазона
- HTML-отчёт не создаётся: проверьте наличие
quantstatsи корректность индекса дат (без таймзоны)
Данный проект предоставлен в образовательных целях. Торговля на финансовых рынках сопряжена с рисками. Используйте на демо-счёте и на свой страх и риск.