Модуль 6 · Paper Trading
Урок 6.1 — Paper Trading: бот торгует вживую без риска
⏱ 20 минут 🔒 Платный урок
Урок 15 из 22 · 68% пройдено
📖 Термины этого урока — простыми словами
Paper Trading — торговля "на бумаге". Бот работает на живом рынке с реальными ценами, но деньги виртуальные. Промежуток между бэктестом (история) и реальной торговлей (деньги).
Ордер — заявка на бирже купить или продать. Рыночный ордер = купи прямо сейчас по любой цене. Лимитный ордер = купи только если цена дойдёт до X.
Открытая позиция — сделка которая ещё не закрыта. Ты купил BTC — позиция открыта. Продал BTC — позиция закрыта, зафиксировал результат.
Лог / Логи — текстовый дневник бота. Записывает каждое действие: открыл позицию, закрыл, ошибка. По логам видно всё что бот делал пока ты не смотрел.
Slippage (Проскальзывание) — разница между ценой которую ты хотел и ценой которую получил. Хотел купить по $100.00 — купили по $100.08. Особенно заметно на быстром рынке или крупных объёмах.
Spread (Спред) — разрыв между лучшей ценой продавца (Ask) и лучшей ценой покупателя (Bid). Покупаешь по Ask, продаёшь по Bid. Разница уходит бирже. Даже до открытия позиции ты уже чуть в минусе.
❌ До этого урока
  • Бэктест показал +200%, но не уверен что на живом рынке будет так же
  • Страшно запускать бота "в реал" — вдруг он сольёт всё за час
  • Не знаешь как проверить бота БЕЗ риска денег
✅ После этого урока
  • Бот торгует на реальных ценах виртуальным балансом $1000
  • Видишь как он реагирует на живую волатильность
  • Знаешь где paper-результаты расходятся с бэктестом и почему

Разница между бэктестом и Paper Trading

Бэктест — это прошлое. Paper Trading — это живой рынок прямо сейчас, но все сделки только записываются локально. Бот видит реальные цены через публичный API (ключи не нужны), принимает реальные решения — просто не отправляет ордера на биржу, а логирует их в файл.

Цель: дать боту поработать минимум 1–2 недели и собрать статистику на живом рынке. Биржевые ключи понадобятся только в следующем модуле — Testnet.

Запускаем Paper Trading — без ключей, без риска

👤 Ты
В файле executor.py реализуй Paper Trading режим. Ключи биржи не нужны — бот получает цены через публичный API Binance (без авторизации).

Когда стратегия даёт сигнал — не отправляй ордер на биржу, а записывай в файл logs/trades.csv: время, символ, направление, цена входа, размер, SL, TP.

Добавь функцию get_stats() которая считает по trades.csv: количество сделок, win rate, итоговый PnL, среднюю прибыль и средний убыток.
👤 Ты
Запусти main.py. Через 5 минут выведи первые сигналы которые нашёл бот и объясни по какой монете и почему.
📊 Первые сигналы бота
14:32:07 → SOL/USDT LONG
  RSI: 26.4 (перепродан)
  Цена: $141.80 (ниже нижней BB)
  Вход: $141.80 | SL: $138.96 | TP: $147.47

14:35:22 → XRP/USDT — нет сигнала
  RSI: 42.1 (нейтрально)

✓ Paper Trade записан: SOL LONG $50 → logs/trades.csv

Реализм в Paper Trading — имитируем реальный рынок

Paper Trading без реализма — это мираж. Бэктест показывает +$200, Paper показывает +$180, а реальный бот делает +$120. Разница — спред, проскальзывание, задержки. Заставь Paper Trading учитывать это с самого начала:

👤 Промпт — Market Simulator
В executor.py добавь модуль Market-Simulator для режима Paper Trading.

Он должен имитировать реальный рынок:
Спред: при покупке цена входа = текущая цена + 0.03% (Ask хуже Bid)
Проскальзывание: дополнительно +0.05% к цене исполнения (рынок двигается пока идёт ордер)
Задержка: перед исполнением пауза 150–250мс (сеть + биржа)
Комиссия: 0.04% за открытие + 0.04% за закрытие (Binance Futures Maker)

Итог: каждая сделка должна сразу показывать "реальную" цену с учётом всех потерь.
В лог пиши: цена сигнала / цена исполнения / потери на спреде и проскальзывании.
Пример лога с симулятором
14:32:07 SIGNAL → SOL LONG @ $141.80
  +spread 0.03%: $141.84
  +slippage 0.05%: $141.91
  delay: 187ms
  executed: $141.91 (–$0.11 от сигнала)
  commission open: –$0.057
⚠️ Зачем это нужно

Если Paper Trading не учитывает спред и проскальзывание — ты получишь «Мираж бэктеста». Стратегия которая "зарабатывала" $50 в день на симуляции будет терять $10 на реальном рынке. Симулятор показывает правду заранее.

Живой монитор — «центр управления полётами»

Не смотри на чёрную консоль. Попроси Claude сделать нормальный веб-интерфейс:

👤 Промпт — Live Monitor
Добавь к боту лёгкий веб-монитор на Flask. Порт 8080.

В мониторе должно быть 4 вкладки:
Статус: бот Online/Offline, аптайм, последний сигнал
Открытые сделки: монета, направление, цена входа, текущий PnL в $%
Архив: закрытые сделки, Win Rate, общий PnL
Настройки: текущие параметры бота (RSI пороги, SL, TP) — только просмотр

На вкладке Архив добавь накопительный график PnL — линия роста капитала по всем закрытым сделкам (Chart.js или простой SVG).

На всех вкладках внизу экрана — плавающий виджет: текущий суммарный PnL за сегодня в $ и %, зелёный если плюс, красный если минус. Обновляется каждые 5 секунд.

Монитор должен обновляться каждые 5 секунд без перезагрузки страницы.

Защити монитор паролем — добавь HTTP Basic Auth. Логин: admin, пароль: [придумай любой, например: nexus2024]. Без авторизации — возвращать 401.

Если я открываю адрес и вижу пустую страницу или ошибку — напиши команду для открытия порта 8080 в ufw.
💡 Открыть монитор в браузере

После запуска — открой в браузере: http://[IP сервера]:8080. IP сервера — тот который дал Hetzner при создании. Если пустая страница — попроси Claude проверить порты.

Что делать пока бот работает

Оставь бота работать на несколько дней. Можешь закрыть терминал — бот продолжит работать на сервере. Раз в день заглядывай в статистику:

👤 Ты — проверка через день
Открой logs/trades.csv и выведи статистику за последние 24 часа. Покажи самую прибыльную и самую убыточную сделку.
⏳ Дай боту время

Минимум 50 сделок для статистической значимости. Если торгует 5–10 символов — обычно это 1–2 недели. Не делай выводов по первым 5 сделкам.

✅ Итог урока

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

← Урок 5.3 Урок 6.2: Анализ и улучшение →