Files

255 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Локальный стенд — 3 варианта от простого к полному
Все команды выполняются из `/tmp/stand/grid-bot/` (или твоей копии пакета).
---
## A) Только дашборд (30 сек)
**Что увидишь:** UI с графиками и блоком 🧠 Kronos. Совет подгрузится из `kronos_advice.json` (статичный). Торговый цикл и Kronos-advisor **не запущены**.
```bash
cd /tmp/stand/grid-bot
# Минимальный .env для UI (без реальных ключей)
cat > .env <<'EOF'
# === Web auth ===
WEB_USERNAME=admin
WEB_PASSWORD=admin
# === Kronos — выключен, совет подгрузится из файла ===
KRONOS_ENABLED=false
KRONOS_LIVE_ENABLED=false
KRONOS_MIN_CONFIDENCE=0.4
# === Grid — DEMO режим ===
DEMO_MODE=true
GRID_LEVELS=10
GRID_STEP_PERCENT=0.005
# === API ключи пустые (DEMO) ===
TRADERNET_PUBLIC_KEY=
TRADERNET_SECRET_KEY=
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
EOF
# Используем существующий venv
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
# Запуск
python3 main.py
```
Открой: **http://127.0.0.1:5555/**
Логин: `admin` / `admin`
**Что работает:**
- ✅ Дашборд с графиками (статичные)
- ✅ Блок 🧠 Kronos показывает последний совет из `kronos_advice.json`
- ✅ Trade log (пустой)
- ✅ Настройки
- ❌ Торговый цикл **НЕ запущен** (Kronos отключён)
- ❌ Нет автообновления советов
---
## B) Дашборд + живой Kronos advisor (5 мин)
**Что увидишь:** то же + Kronos генерирует советы в фоне, можно жать «⟳ Обновить совет» в дашборде.
```bash
cd /tmp/stand/grid-bot
# В .env (см. выше) поменяй:
# KRONOS_ENABLED=true
# KRONOS_LIVE_ENABLED=false # ← бот НЕ применяет советы, только показывает
# Запусти advisor в отдельном терминале:
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
kronos-venv/bin/python kronos_advisor_main.py --source binance --symbol BTC-USDT.IMEX --tf 60 --lookback 400 --pred-len 24 --model kronos-mini
# В другом терминале — дашборд:
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
python3 main.py
```
Или жми кнопку **⟳ Обновить совет** в дашборде — она сама запустит advisor.
**Что работает:**
- ✅ Всё из (A)
- ✅ Совет обновляется по кнопке или вручную
- ✅ Можно видеть, как Kronos реагирует на текущий рынок
- ❌ Торговый цикл **НЕ запущен**
---
## C) Полный стенд — grid-bot в DEMO + Kronos (10 мин)
**Что увидишь:** grid-bot в DEMO-режиме (виртуальные ордера) + Kronos-советник + всё обновляется автоматически каждые 15 мин (через timer) или по кнопке.
```bash
cd /tmp/stand/grid-bot
# В .env:
cat > .env <<'EOF'
# === Web auth ===
WEB_USERNAME=admin
WEB_PASSWORD=admin
# === Kronos — включён, но НЕ применяет в LIVE ===
KRONOS_ENABLED=true
KRONOS_LIVE_ENABLED=true
KRONOS_MODEL=kronos-mini
KRONOS_TF_MIN=60
KRONOS_LOOKBACK=400
KRONOS_PRED_LEN=24
KRONOS_MIN_CONFIDENCE=0.4
KRONOS_ADVICE_FILE=/tmp/stand/grid-bot/kronos_advice.json
# === Grid — DEMO ===
DEMO_MODE=true
GRID_LEVELS=10
GRID_STEP_PERCENT=0.005
GRID_TAKE_PROFIT_PERCENT=0.5
# === API ключи пустые (DEMO) ===
TRADERNET_PUBLIC_KEY=
TRADERNET_SECRET_KEY=
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
EOF
# Запустить grid-bot (он сам поднимет Flask + trading loop + cron advisor)
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
python3 main.py
```
**Что работает:**
- ✅ Всё из (B)
- ✅ Торговый цикл крутится в DEMO (виртуальные ордера, BTC-USDT.IMEX по симулированной цене)
- ✅ Kronos реально влияет на шаг/центр/паузу grid-а
- ✅ Telegram-уведомления о смене совета (если `TELEGRAM_BOT_TOKEN` задан)
- ✅ Автообновление совета каждые ~10 мин (через Flask-внутренний cron в `trading_loop`)
---
## D) С systemd timer (15 мин, «как в проде»)
**Что увидишь:** полный прод-сценарий. Timer запускает `kronos_advisor_main.py` каждые 15 мин, бот сам читает свежий совет.
```bash
cd /tmp/stand/grid-bot
# 1) Подправить пути в unit (по умолчанию они /root/grid-bot)
sed -i 's|/root/grid-bot|/tmp/stand/grid-bot|g; s|User=root|User=andr|g; s|/root/.openclaw/kronos_advice.json|/tmp/stand/grid-bot/kronos_advice.json|g' kronos-advisor.service
# 2) Установить (без sudo — пользовательский systemd)
mkdir -p ~/.config/systemd/user
cp kronos-advisor.{service,timer} ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now kronos-advisor.timer
systemctl --user list-timers kronos-advisor.timer
# 3) Запустить grid-bot
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
python3 main.py
```
**Что работает:**
- ✅ Полный прод-сценарий локально
- ✅ Timer запускает advisor как отдельный процесс
- ✅ Можно смотреть `journalctl --user -u kronos-advisor`
---
## 🔍 Что смотреть в браузере
Открой **http://127.0.0.1:5555/**, логин `admin`/`admin`.
| Раздел | Что там |
|---|---|
| Графики | Цена + Grid (buy/sell уровни) |
| Настройки | GRID_LEVELS, GRID_STEP_PERCENT, GRID_TAKE_PROFIT_PERCENT |
| **🧠 Kronos Advisor** | **Совет от Kronos: step/center/range/pause, источник, время генерации, кнопка ⟳ Обновить совет** |
| Trade log | Последние сделки (виртуальные в DEMO) |
| Status bar | Текущая цена, время, режим |
---
## 🛑 Остановка
```bash
# В терминале, где крутится бот: Ctrl+C
# Если запускал timer:
systemctl --user disable --now kronos-advisor.timer
# Если остались процессы:
pkill -f "python3 main.py"
pkill -f "kronos_advisor_main"
```
---
## 🐛 Если что-то не работает
### "Address already in use" (порт 5555 занят)
```bash
lsof -i:5555
# Убей старый процесс или поменяй порт в main.py
```
### "ModuleNotFoundError: No module named 'kronos'"
```bash
# Запусти из корня проекта, не из подпапки:
cd /tmp/stand/grid-bot
python3 main.py
```
### "No module named 'model'" (Kronos не найден)
```bash
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
```
### Kronos падает с OOM
```bash
# Модель не влезла в RAM. Закрой Chrome, IDE и попробуй снова.
free -h # должно быть >2GB free
```
### Бот не видит Kronos
```bash
# Проверь .env:
grep -E "KRONOS_(ENABLED|LIVE_ENABLED|MIN_CONFIDENCE)" .env
# И лог:
python3 main.py 2>&1 | grep -i kronos
```
---
## 📊 Какие API можно дёргать руками
```bash
# Текущий совет
curl -u admin:admin http://127.0.0.1:5555/api/kronos
# Запустить advisor
curl -u admin:admin -X POST http://127.0.0.1:5555/api/kronos/refresh
# Статус advisor
curl -u admin:admin http://127.0.0.1:5555/api/kronos/refresh/status
# Состояние grid
curl -u admin:admin http://127.0.0.1:5555/api/state
```
---
## 🎯 Что я рекомендую для первого раза
1. Начни с **(A)** — посмотри UI, заглушку Kronos
2. Потом **(B)** — нажми «⟳ Обновить совет» несколько раз, посмотри как меняется
3. Потом **(C)** — увидь, как Kronos влияет на grid в DEMO
4. Если всё ОК → деплой на сервер по `DEPLOY.md`