Модуль 4 · Полная защита капитала
Урок 4.3 — Тестируем защиту: симуляция падения рынка
⏱ 15 минут 🔒 Платный урок
Урок 12 из 25 · 52% пройдено
📖 Термины этого урока — простыми словами
Симуляция (stress-test) — намеренно подаём боту плохие данные чтобы посмотреть как он реагирует. Как пожарная тревога: лучше сработать вхолостую чем узнать о дырке во время настоящего пожара.
Paper trading — режим где бот принимает решения и "открывает" сделки, но реальных денег не тратит. Всё логируется так же как в бою — только без потерь.
Мок-данные (mock data) — искусственные цены которые мы сами придумываем и подаём боту вместо реальных. Позволяют воспроизвести любой сценарий: крэш -5%, памп +15%, боковик.
Срабатывание стоп-лосса — бот закрыл позицию с убытком потому что цена дошла до уровня защиты. Это не провал — это защита сработала как надо.
❌ До этого урока
  • Думаешь "я добавил SL — значит защита работает"
  • Не проверял защиту на живых данных, только на бэктесте
  • Не знаешь как проверить что трейлинг-стоп реально двигается
✅ После этого урока
  • Запустил paper-режим и симулировал обвал рынка -5%
  • Убедился что SL сработал и позиция закрылась
  • Защита проверена в условиях близких к боевым

Бэктест — не гарантия

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

Нужен другой тест: запускаем бота в paper-режиме и принудительно "роняем" рынок. Смотрим — закрыл ли бот позицию как надо.

👤 Ты
Добавь в бота режим paper trading. В этом режиме бот работает как обычно — ищет сигналы, "открывает" позиции — но реальных ордеров на бирже не создаёт. Все позиции храним в памяти (dict), PnL считаем по текущей цене. Логируем каждое событие: открытие, обновление трейлинга, закрытие по SL/TP.
📋 Claude Code создал paper_engine.py
PaperPosition класс — хранит entry, SL, TP, trailing
update(price) — пересчитывает trailing, проверяет SL/TP
close(reason) — логирует причину закрытия
paper_mode=True в config.yaml

Симуляция обвала

Теперь самое интересное. Просим Claude Code написать скрипт который подаёт в стратегию искусственные цены — сначала рост (чтобы открылась позиция), потом резкое падение -5%.

👤 Ты
Напиши скрипт simulate_crash.py. Сценарий: берём текущую цену BTC/USDT через API, запускаем бота в paper режиме. Подаём цены: сначала +1% (бот открывает LONG), потом каждую секунду -1% (итого -5% от пика). Проверяем что стоп-лосс сработал и позиция закрылась с убытком не больше установленного SL. Выводим в лог: открыли на X, SL стоял на Y, закрыли на Z, убыток W%.
🔴 Вывод simulate_crash.py
12:04:01 BTC цена: 84,230 USDT
12:04:02 Сигнал LONG → открыли на 85,072 USDT
12:04:02 SL установлен: 83,921 USDT (-1.35%)
12:04:03 Цена: 84,221 → трейлинг обновился
12:04:04 Цена: 83,369 → SL HIT
12:04:04 Позиция закрыта: убыток -1.35%

ТЕСТ ПРОЙДЕН: SL сработал в пределах установленного лимита
⚠️ Что делать если тест НЕ прошёл

Бот не закрыл позицию? Это значит SL не проверяется в основном цикле. Попроси Claude Code: "Найди где в main loop обновляется цена позиции и проверяется SL. Если такого места нет — добавь. Покажи мне строки кода где это происходит". Типичная ошибка: проверка SL есть только при открытии, но не при каждом тике.

Проверяем трейлинг

👤 Ты
Напиши второй тест simulate_trail.py. Сценарий: открываем LONG, цена идёт вверх +3% — проверяем что трейлинг-стоп двигается следом. Потом цена падает с пика на 1.5% — позиция должна закрыться по трейлингу. Выводи каждое обновление трейлинга в лог.
📈 Вывод simulate_trail.py
Открыто: 85,072 | Trailing stop: 83,921
+1.0%: цена 85,923 | Trailing → 84,638
+2.0%: цена 86,773 | Trailing → 85,418
+3.0%: цена 87,624 | Trailing → 86,199
-1.5%: цена 86,311 → TRAIL HIT
Закрыто: прибыль +1.45%

ТЕСТ ПРОЙДЕН: трейлинг двигался и зафиксировал прибыль
💡 Почему paper-тест важнее бэктеста

Бэктест знает будущее — он читает данные которые уже закончились. Paper-тест работает в реальном времени: данные приходят с биржи, код обрабатывает их как в бою. Если защита работает в paper — с высокой вероятностью будет работать и в testnet.

Итог модуля 4 — защита готова

Ты прошёл полный цикл защиты капитала:

Модуль 4 — результат:
✓ SL / TP настроены и протестированы
✓ Трейлинг-стоп двигается вслед за ценой
✓ Paper engine симулировал обвал -5% → SL сработал
✓ Trailing зафиксировал прибыль при развороте
✅ Модуль 4 завершён

Бот защищён. В следующем модуле идём на бэктест — проверяем стратегию на истории, считаем Win Rate и PnL на реальных данных за прошлый год.

← Урок 4.2 Урок 5.1: Бэктест →