Модуль 10 · Выживание в реале
Урок 10.2 — Кейсы: Амнезия стопов, Призрачные деньги
⏱ 25 минут 🔒 Платный урок
Урок 24 из 25 · 96% пройдено
📖 Термины этого урока — простыми словами
Persistence (сохранение состояния) — способность бота помнить что происходило до перезапуска. Без этого каждый рестарт = чистый лист.
SQLite — простая база данных которая хранится в одном файле рядом с ботом. Не требует установки сервера. Идеальна для хранения состояния позиций.
Reconciliation (сверка) — сравнение того что бот думает о своём счёте с тем что реально есть на бирже. Делается через API биржи.
Floating PnL — нереализованная прибыль/убыток по открытой позиции. То что «плавает» пока сделка не закрыта. Может расходиться с расчётами бота.
❌ До этого урока
  • Думаешь "у меня стоят стопы, я защищён"
  • Paper-результаты кажутся реальной прибылью
  • Не отличаешь бумажный PnL от фактически полученного
✅ После этого урока
  • Знаешь про "амнезию стопов" — когда цена проходит дальше SL и убыток больше заявленного
  • Понимаешь "призрачные деньги" — overshoot на paper vs реал
  • Умеешь считать честный PnL с учётом проскальзывания и слипов
Кейс #4
Амнезия стопов
История

Бот торговал с трейлинг-стопом. За 3 дня стоп подтянулся с −2% до −0.4% — почти в безубыток. Ночью сервер перезагрузился (обновление системы). Бот запустился с нуля и вернул стоп на −2%. Следующее движение цены выбило позицию на 2% вниз вместо 0.4%. Потеря в 5 раз больше плана.

Диагноз

Трейлинг-стоп жил только в памяти процесса — в переменной внутри кода. Процесс умер → переменная пропала. При рестарте бот видит открытую позицию на бирже но не помнит до куда дотянул стоп. Устанавливает начальное значение как будто только открыл позицию.

❌ Как было
trailing_stop = -0.02
# живёт в памяти
# при рестарте = -0.02 снова
✓ Как надо
positions.db → таблица
symbol, entry, current_stop
при старте — загрузить из базы
Промпт для Claude Code
👤 Ты
Добавь сохранение состояния открытых позиций в SQLite базу. Бот должен при каждом обновлении трейлинг-стопа записывать в базу: символ, цена входа, текущий уровень стопа, время обновления. При запуске — загружать открытые позиции из базы а не начинать с нуля. Если в базе есть позиция которой нет на бирже — логировать и удалять из базы.
Как проверить
  • Открой бота, дождись пока стоп подтянется хоть раз
  • Останови бота — проверь что в базе записан актуальный уровень стопа
  • Запусти снова — бот должен продолжить с сохранённым стопом а не сбросить
  • В логах при старте: «Загружено N открытых позиций из базы»
Кейс #5
Призрачные деньги
История

Панель бота показывала +$6.15 по позиции BTR/USDT. Биржа показывала −$54.57 по той же монете. Разница $60 — без объяснений. Бот был уверен что зарабатывает. На самом деле — нет.

Диагноз

Бот считал PnL по своей логике: брал цену из внутреннего кеша, умножал на размер позиции из собственного словаря. Биржа считала иначе: включала фандинг-рейт, комиссии, частичные исполнения ордеров. Два расчёта существовали параллельно и никогда не сравнивались. Правда была только у биржи.

⚠️ Золотое правило

Источник истины о деньгах — всегда биржа, а не твой код. Всё что считает бот — это его предположение. Единственный способ знать реальный результат — запросить биржу напрямую.

Промпт для Claude Code
👤 Ты
Добавь в бота ежечасную сверку с биржей. Раз в час запрашивать реальный баланс счёта и реальные позиции через API биржи. Сравнить с тем что думает бот. Если расхождение больше $1 — записать в лог «РАСХОЖДЕНИЕ: бот думает X, биржа говорит Y» и отправить алерт в Telegram. Также в панели показывать два числа рядом: «По боту» и «По бирже» — чтобы я сразу видел если они расходятся.
Как проверить
  • В панели появились два числа: «По боту» и «По бирже»
  • Числа совпадают (или разница в пределах нескольких центов)
  • Проверь лог через час — должна быть запись о плановой сверке
  • Намеренно введи ошибку в расчёт бота — алерт должен прийти в Telegram
📍 Пять из семи

Амнезия стопов и призрачные деньги — оба про доверие. Бот думает одно, реальность — другое. Решение одинаковое: не доверять памяти процесса, сверяться с внешним источником правды. В следующем уроке — последние два кейса и финал курса.

← Урок 10.1 Урок 10.3 →