docs/DESIGN.md — стратегия, execution flow, SL логика, биржи. Прочитать перед написанием любого кода. docs/ARCHITECTURE.md — модули, data flow, структура файлов. Прочитать перед рефакторингом. docs/PATTERNS.md — паттерны кодирования, async, atomic, тесты, UI. Прочитать перед написанием кода. docs/EXCHANGE_ADD_GUIDE.md — step-by-step guide для добавления новой биржи. Прочитать перед интеграцией.
Ключевые секции DESIGN.md:
- §2 Жизненный цикл сделки — entry/exit условия, sizing
- §5 Исполнение ордеров и Leg Risk — IOC, partial fills, parallel execution
- §12 Леверидж, маржа и защита от ликвидации — SL алгоритм, liquidation price
НИКОГДА не удалять файлы без ЯВНОГО подтверждения пользователя.
- Молчание ≠ согласие. Ответ на другую тему ≠ согласие.
- Ждать БУКВАЛЬНОГО "да", "удаляй", "давай" — и НИЧЕГО другого.
rmбезвозвратен. Данные пользователя священны.- Это правило распространяется на ВСЕ деструктивные операции: rm, git clean, git reset --hard, перезапись файлов.
НИКОГДА не делать выводов без проверки фактов.
- "Файл давно не обновлялся" → сначала сравни mtime с текущим временем
- "Бот завис" → сначала проверь процесс, соединения, логи
- "Тики не пишутся" → сначала проверь mtime файла vs now
- Любое утверждение о состоянии системы ОБЯЗАНО быть подкреплено проверкой
- Утверждения о производительности, таймингах, частотах → ПОСЧИТАТЬ на реальных данных, не угадывать
- Не "я думаю", не "скорее всего", не "видимо". Только "проверил — факт такой"
- Нарушение этого правила = цепочка ошибок, потеря времени, потеря доверия
Источник истины — common/src/constants.rs (используется ботом и оптимайзером).
bot/src/constants.rs это просто pub use arb_common::constants::*; — не добавлять туда новые константы и не "исправлять" common-файл.
Никаких const в других файлах. Если нужна константа — добавить в common/src/constants.rs.
Bot-only константы (которые не нужны оптимизатору) тоже помещать в common — это упрощает правило "одно место".
- Дельта-нейтральность: Long Lighter + Short Extended на одинаковый qty. Нарушение = directional риск.
- Stop-loss = защита от ликвидации: trigger = liquidation_price ± buffer. Price = между trigger и liquidation. НЕ произвольный % от entry. SL автоматически двигается при drift liq price (
sl_monitor.rs). - Entry execution: parallel — оба ордера на обе биржи одновременно. Exit — аналогично.
- fastwebsockets read_frame() не cancel-safe: никогда не использовать с tokio::select! или tokio::time::timeout.
- Qty/price округлять ПЕРЕД подписью: signature и body должны использовать одинаковые rounded values.
Сначала интеграционный тест → исправить → потом production. Не запускать бота для каждой итерации.
tools/— операционные скрипты (bot_start.sh, deploy.sh, optimizer_start.sh)bot/tests/tools/— Rust-инструменты для анализа/диагностики бирж. Запуск:cargo test --test tools -- <name> --ignored --nocapture. Используютtests/common/helpers (TLS, auth, API clients).bot/src/telegram/— Telegram уведомления + интерактивные команды (📊 Status, 📋 Trades). Конфиг:[telegram]секция в default.toml/local.toml (bot_token + chat_id). Архитектура: §8.4 в DESIGN.md.
Когда бот запущен для тестирования:
- ПЕРЕД запуском — убедиться что обе биржи ЧИСТЫЕ
- При ЛЮБОЙ ошибке в логах — немедленно сообщить и разобраться