Библиотека торговых стратегий для Trade360Lab с manifest-driven архитектурой. Репозиторий содержит единый контракт стратегии, переиспользуемые индикаторы, автоматический registry, примеры конфигов и тестовую базу для дальнейшей интеграции в backtest, optimizer и live-bot.
shared/: базовый контракт стратегии, валидация DataFrame, schema/manifest helpers, registry и общие signal helpersindicators/: переиспользуемые технические индикаторы наpandasstrategies/: стратегии, сгруппированные по категориямexamples/: примеры JSON-конфигов для запуска стратегийtests/: unit и integration тестыSTRATEGY_SPEC.md: спецификация библиотеки и контрактовCONTRIBUTING.md: правила добавления новых стратегий и разработки
.
├─ strategies/
│ ├─ trend/
│ │ └─ ema_cross/
│ ├─ mean_reversion/
│ │ └─ rsi_reversion/
│ └─ breakout/
│ └─ donchian_breakout/
├─ indicators/
│ ├─ trend/
│ ├─ momentum/
│ ├─ volatility/
│ └─ volume/
├─ shared/
├─ examples/
├─ tests/
│ ├─ fixtures/
│ ├─ unit/
│ └─ integration/
├─ STRATEGY_SPEC.md
├─ CONTRIBUTING.md
├─ README.md
└─ pyproject.toml
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'Запуск тестов:
.venv/bin/python -m pytestЗапуск линтера:
.venv/bin/ruff check .Получить список доступных стратегий:
from shared.registry import StrategyRegistry
registry = StrategyRegistry()
print(registry.list_strategies())Создать экземпляр стратегии по slug:
from shared.registry import StrategyRegistry
registry = StrategyRegistry()
strategy = registry.create("ema_cross", {"fast_period": 12, "slow_period": 26})
result = strategy.run(df)Получить manifest стратегии:
manifest = registry.get_manifest("rsi_reversion")
search_space = registry.get_manifest("donchian_breakout")["parameters"]ema_cross: трендовая стратегия на пересечении быстрых и медленных EMArsi_reversion: mean reversion стратегия на возврате RSI из зон перепроданности и перекупленностиdonchian_breakout: breakout стратегия на пробое предыдущих границ канала Дончиана
Все стратегии:
- наследуются от
shared.base_strategy.BaseStrategy - принимают
paramsпри инициализации - валидируют входной OHLCV DataFrame
- возвращают обязательные сигнальные колонки
- не используют lookahead bias
- автоматически обнаруживаются через
strategies/**/manifest.json
Обязательные сигнальные колонки:
entry_longentry_shortexit_longexit_short
Полный контракт описан в STRATEGY_SPEC.md.
strategies/<category>/<slug>/
├─ strategy.py
├─ manifest.json
├─ README.md
└─ tests/
Репозиторий хранит только библиотечный слой стратегий и не смешивает его с логикой исполнения ордеров. Это облегчает дальнейшее подключение стратегий к отдельным backtest и live runtime компонентам.
