Skip to content

Latest commit

 

History

History
63 lines (46 loc) · 5.47 KB

CLAUDE.md

File metadata and controls

63 lines (46 loc) · 5.47 KB

Claude Code Instructions

Обязательное чтение перед работой

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 — это упрощает правило "одно место".

Ключевые инварианты

  1. Дельта-нейтральность: Long Lighter + Short Extended на одинаковый qty. Нарушение = directional риск.
  2. Stop-loss = защита от ликвидации: trigger = liquidation_price ± buffer. Price = между trigger и liquidation. НЕ произвольный % от entry. SL автоматически двигается при drift liq price (sl_monitor.rs).
  3. Entry execution: parallel — оба ордера на обе биржи одновременно. Exit — аналогично.
  4. fastwebsockets read_frame() не cancel-safe: никогда не использовать с tokio::select! или tokio::time::timeout.
  5. 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.

КРИТИЧЕСКОЕ ПРАВИЛО: Запуск бота

Когда бот запущен для тестирования:

  1. ПЕРЕД запуском — убедиться что обе биржи ЧИСТЫЕ
  2. При ЛЮБОЙ ошибке в логах — немедленно сообщить и разобраться