{"id":31333391,"url":"https://github.com/empenoso/backtrader-quickstart-template","last_synced_at":"2025-09-26T01:57:39.267Z","repository":{"id":309677613,"uuid":"1037147694","full_name":"empenoso/backtrader-quickstart-template","owner":"empenoso","description":"A modular and flexible backtesting framework for trading strategies in Python using Backtrader.","archived":false,"fork":false,"pushed_at":"2025-08-25T15:10:01.000Z","size":4647,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T16:12:46.952Z","etag":null,"topics":["backtrader","backtrader-plotting"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/empenoso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-13T06:19:52.000Z","updated_at":"2025-08-25T15:10:04.000Z","dependencies_parsed_at":"2025-08-13T08:26:01.418Z","dependency_job_id":null,"html_url":"https://github.com/empenoso/backtrader-quickstart-template","commit_stats":null,"previous_names":["empenoso/backtrader-quickstart-template"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/empenoso/backtrader-quickstart-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/empenoso%2Fbacktrader-quickstart-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/empenoso%2Fbacktrader-quickstart-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/empenoso%2Fbacktrader-quickstart-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/empenoso%2Fbacktrader-quickstart-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/empenoso","download_url":"https://codeload.github.com/empenoso/backtrader-quickstart-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/empenoso%2Fbacktrader-quickstart-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277009878,"owners_count":25744543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backtrader","backtrader-plotting"],"created_at":"2025-09-26T01:57:34.864Z","updated_at":"2025-09-26T01:57:39.252Z","avatar_url":"https://github.com/empenoso.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backtrader Quickstart Template: народный фреймворк для алготрейдинга\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)\n\nГотовый шаблон для быстрого старта в алгоритмической торговле на Python с использованием библиотеки Backtrader. Проект создан, чтобы частные инвесторы и разработчики могли сосредоточиться на главном — на разработке и тестировании стратегий, а не на борьбе с инфраструктурой.\n\n---\n\n## 🎯 Философия проекта\n\nВ мире алгоритмической торговли доминируют крупные фонды с их колоссальными ресурсами. Этот проект — попытка создать мощный и доступный инструмент для частных инвесторов. Идея проста: больше не нужно зависеть от проприетарных платформ или писать с нуля сложную инфраструктуру для тестирования каждой новой идеи.\n\nЦель — построить открытый стандарт для алготрейдинга на базе **Backtrader**, заточенный под реалии российского рынка. Мы создаём систему, которая была бы так же удобна, как TradingView, но с гибкостью и мощью Python. Чтобы каждый, кто заинтересован в алгоритмической торговле, мог без усилий внедрить свою стратегию, протестировать её и получить наглядные результаты.\n\nЭтот репозиторий — не просто набор скриптов, а призыв к действию. Давайте объединим усилия и создадим по-настоящему «народный» Backtrader!\n\n## ✨ Ключевые особенности\n\n*   **Максимальная модульность**: одна стратегия — один файл. Никаких сложных зависимостей. Просто добавьте свой `.py` файл в папку `strategies`, и система автоматически его подхватит.\n*   **Простое управление**: главный файл `main.py` — это единая панель управления. Выбирайте режим, стратегию и период тестирования в одном месте.\n*   **Два режима работы**:\n    *   `BACKTEST`: быстрая проверка гипотезы на исторических данных.\n    *   `OPTIMIZATION`: автоматический подбор лучших параметров для вашей стратегии.\n*   **Информативные отчеты**: по итогам каждого теста генерируется подробный текстовый отчет с ключевыми метриками (прибыль, просадка, профит-фактор, коэффициент Сортино) и наглядные графики.\n*   **Визуализация оптимизации**: для режима оптимизации по двум параметрам строится тепловая карта, которая помогает визуально определить самые прибыльные и устойчивые зоны.\n*   **Адаптация под портфель**: шаблон изначально спроектирован для тестирования стратегий на нескольких акциях одновременно и корректно обрабатывает асинхронные исторические данные разной длины.\n*   **Готовность к реальной торговле**: архитектура закладывает основу для легкого перехода от бэктестинга к реальной торговле через API российских брокеров (Тинькофф, Финам, Алор и др.).\n\n## 📂 Структура проекта\n\n```\n.\n├── data-connector/Data/Tinkoff/ # Папка для ваших исторических данных (CSV/TXT)\n│   └── TQBR.SBER_D1.txt\n├── reports/                      # Сюда сохраняются все отчеты и графики\n│   └── SmaCrossStrategy_test_... .txt\n├── strategies/                   # Здесь живут ваши торговые стратегии\n│   ├── __init__.py               # 🚀 Автоматически загружает все стратегии из этой папки\n│   ├── base_strategy.py          # 🧱 Базовый класс-шаблон для всех стратегий\n│   └── sma_cross_strategy.py     # 📈 Пример готовой стратегии\n├── utils/                        # Вспомогательные модули\n│   ├── custom_csv.py             # 📈 Загрузчик для CSV-файлов нестандартного формата\n│   ├── report_generator.py       # 📊 Генератор текстовых отчетов и тепловых карт\n│   └── sortino_analyzer.py       # 📉 Анализатор для расчета коэффициента Сортино\n├── main.py                       # 🚀 Главный файл для запуска тестов и оптимизации\n├── requirements.txt              # Список необходимых библиотек\n└── install_requirements.bat      # Скрипт для быстрой установки зависимостей (для Windows)\n```\n\n## 🚀 Быстрый старт\n\n### 1. Клонирование репозитория\n```bash\ngit clone https://github.com/empenoso/backtrader-quickstart-template.git\ncd backtrader-quickstart-template\n```\n\n### 2. Установка зависимостей\nЗапустите `install_requirements.bat` (для Windows) или выполните команду в терминале:\n```bash\npip install -r requirements.txt\n```\n\n### 3. Добавление исторических данных\nПоместите ваши файлы с историческими данными в формате `.txt` или `.csv` в папку `data-connector/Data/`.\n\nВы можете использовать данные, полученные из любых источников, включая коннекторы **FinamPy**, **AlorPy** или **TinkoffPy**. Папка `Tinkoff` в пути `data-connector/Data/Tinkoff/` используется для примера, вы можете создавать любую удобную для вас структуру.\n\nГлавное — убедиться, что:\n1.  В `main.py` переменная `DATA_DIR` указывает на верную папку.\n2.  Формат ваших данных соответствует загрузчику `utils/custom_csv.py`. По умолчанию он настроен на текстовые файлы с разделителем-табуляцией и форматом даты `ДД.ММ.ГГГГ ЧЧ:ММ`. При необходимости вы легко можете его адаптировать.\n\n### 4. Настройка и запуск\nОткройте файл `main.py` и настройте \"Главную панель управления\":\n\n```python\n# 1. ВЫБЕРИТЕ РЕЖИМ: 'BACKTEST' или 'OPTIMIZATION'\nMODE = 'BACKTEST'\n\n# 2. ВЫБЕРИТЕ СТРАТЕГИЮ из загруженных\nSTRATEGY_TO_RUN = 'SmaCrossStrategy' \n\n# 3. НАСТРОЙКИ ПЕРИОДА ТЕСТИРОВАНИЯ\nFROM_DATE = datetime.datetime(2018, 1, 1)\nTO_DATE = datetime.datetime(2025, 8, 12)\n```\nПосле настройки просто запустите скрипт:\n```bash\npython main.py\n```\n\n## 🛠️ Как использовать\n\n### Создание новой стратегии\n\n1.  Создайте новый Python-файл в папке `strategies` (например, `my_super_strategy.py`).\n2.  Внутри файла создайте класс, унаследованный от `BaseStrategy`.\n3.  Определите обязательные атрибуты: `tickers`, `start_cash`, `commission` и параметры для оптимизации `opt_params`.\n4.  Реализуйте основную торговую логику в методе `next()`.\n\nСистема автоматически обнаружит и загрузит вашу новую стратегию при следующем запуске.\n\n### Анализ результатов\n\nВсе результаты сохраняются в папку `reports`.\n\n*   **Для бэктеста** создается текстовый отчет с полной статистикой и отдельные `.png` файлы с графиками для каждого тикера.\n\n    Пример отчета:\n    ```\n    --- ОТЧЕТ ПО БЭКТЕСТУ СТРАТЕГИИ: SmaCrossStrategy ---\n    Бумаги в тесте: ['SBER', 'VTBR', 'GAZP', 'LKOH', 'NVTK', 'YDEX', 'T']\n    Параметры: {'fast_ma': 20, 'slow_ma': 50, ...}\n    Период тестирования: с 01.01.2018 по 12.08.2025\n    --- РЕЗУЛЬТАТЫ ---\n    Итоговая прибыль/убыток: 252 713.12 [50.54%]\n    Доходность (годовых): 5.44%\n    Результат 'Купил и держал': 205 648.56 [41.13%]\n    Максимальная просадка: 67 124.98 [13.42%]\n    Всего сделок: 128\n    Процент прибыльных сделок: 41.41% (53 из 128)\n    Фактор прибыли: 2.13\n    Коэффициент Сортино: 1.08\n    --------------------------------------------------\n    ```\n\n* **Для оптимизации** создается текстовый отчет со всеми комбинациями параметров и **тепловая карта** (`.png`), на которой цветом показана эффективность (профит-фактор) каждой комбинации.\n\n## 🤝 Как помочь проекту?\n\nЭтот шаблон — лишь основа. Чтобы он стал по-настоящему удобным и «народным», ему нужна помощь сообщества.\n\nЧто можно сделать:\n*   **Улучшить визуализацию**: стандартный `cerebro.plot()` плохо справляется с портфелем из десятка акций. В `main.py` уже есть наработки по сохранению графиков в отдельные файлы, но это решение можно усовершенствовать.\n*   **Добавить новые метрики**: предложите новые анализаторы или улучшите существующие отчеты.\n*   **Предложить свои идеи**: возможно, вы видите архитектуру иначе? Знаете, как сделать управление стратегиями еще удобнее? Создайте `Issue` и давайте обсудим!\n*   **Добавить примеры стратегий**: поделитесь своими наработками с сообществом.\n*   **Интеграция с брокерами**: помогите с реализацией готовых модулей для подключения к API российских брокеров.\n\nЕсли вы разделяете идею создания «народного Backtrader» — подключайтесь! Любые улучшения, замечания и Pull Request'ы приветствуются.\n\nАвтор: Михаил Шардин  \n[🔗 Моя онлайн-визитка](https://shardin.name/?utm_source=github)  \n[📢 Telegram «Умный Дом Инвестора»](https://t.me/+asaEcPax8o41MjQy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fempenoso%2Fbacktrader-quickstart-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fempenoso%2Fbacktrader-quickstart-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fempenoso%2Fbacktrader-quickstart-template/lists"}