Мультиинструментальная торговля: GAZPF + SBERF на Fibonacci Grid
Сегодня мы добавили поддержку мультиинструментальной торговли в нашего Rust-бота для MOEX. Теперь бот одновременно работает с двумя фьючерсами — GAZPF (Газпром) и SBERF (Сбербанк), каждый со своими оптимальными параметрами.
Что нового
Мультисимвольная архитектура
Раньше бот торговал только одним инструментом. Теперь каждый символ получает собственное состояние Fibonacci Grid — независимый анализ свингов, уровней входа и управление позициями. Два инструмента работают параллельно в одном процессе, разделяя ресурсы, но не мешая друг другу.
Формат запуска стал выразительнее:
--symbols GAZPF@RTSX:1:0.05:2.2,SBERF@RTSX:1:0.05:1.0
Четвёртый параметр — per-symbol min_swing — порог минимального свинга для построения сетки Фибоначчи. Это оказалось критически важным: GAZPF и SBERF имеют разную волатильность.
Per-symbol пороги: зачем это нужно
При первом запуске SBERF бот не смог построить Fibonacci Grid — свинги инструмента не достигали порога 2.2%, установленного для GAZPF. Бектест на 1953 свечах (2 недели данных) показал:
| min_swing | Сделки | Win Rate | Profit Factor | P&L |
|---|---|---|---|---|
| 0.8% | 14 | 35.7% | 0.94 | -0.17% |
| 1.0% | 7 | 42.9% | 1.51 | +0.09% |
| 1.5% | 0 | - | - | - |
Оптимальный порог для SBERF — 1.0%. При нём бот обнаруживает структурные свинги ~1.0-1.3%, характерные для этого менее волатильного фьючерса, и показывает положительный Profit Factor.
Для сравнения, GAZPF работает с порогом 2.2% — его свинги достигают 2.5-4%.
Dashboard: переключатель инструментов
Веб-дашборд на bot.majotrade.net получил кнопки выбора инструмента — GAZPF и SBERF. Каждый инструмент имеет свой viewport на графике, что позволяет переключаться между символами без потери масштаба.
Dashboard работает на WebAssembly (Rust + eframe/egui), обновляет данные каждые 5 минут и поддерживает два режима — DRY RUN (симуляция) и LIVE.
Текущее состояние системы
Что работает
- Fibonacci Stateful Grid — стратегия на основе уровней Фибоначчи с каскадными входами на уровнях 0.382, 0.500, 0.618, 0.786
- Dual-mode — бот всегда симулирует сделки (dry-run), опционально размещает реальные ордера через Finam API
- Мультисимвольная торговля — GAZPF + SBERF с независимыми grid-состояниями
- Per-symbol конфигурация — индивидуальные пороги свинга для каждого инструмента
- Веб-дашборд — real-time визуализация на bot.majotrade.net с графиком свечей, уровнями Фибоначчи и историей сделок
- PostgreSQL — хранение свечей, состояния grid, истории сделок
- Systemd — автоматический запуск, мониторинг, ограничение ресурсов
Текущие позиции (на момент публикации)
- GAZPF: Grid LONG, свинг 127.13 -> 132.65 (+4.3%), ожидание входа на уровнях коррекции
- SBERF: Grid LONG, вход @ 314.95 (уровень 0.382), TP=315.67, SL=314.37, свинг 311.91 -> 316.83 (+1.6%)
Статистика dry-run (GAZPF, с 21 февраля)
6 сделок за 2 недели, Win Rate 50% (3W/3L). Стратегия консервативная — входит только при подтверждённых свингах и ждёт откатов к уровням Фибоначчи.
Технические детали
Бот написан на Rust, работает на домашнем сервере (archbook, Arch Linux). Ключевые компоненты:
- bot4rest — основной торговый процесс, REST API polling к Finam
- orchestrator — управление токенами и мониторинг
- dashboard_export — генерация JSON из PostgreSQL для веб-дашборда
- fib_backtest — бектест-инструмент для подбора параметров на исторических данных
Весь код — open source, а дашборд доступен по адресу bot.majotrade.net.
Что дальше
- Сбор статистики SBERF dry-run для валидации порогов
- Анализ корреляции между инструментами (одновременные позиции)
- Подготовка к live-торговле при достаточной статистике dry-run