8.3 KiB
🚀 Локальный стенд — 3 варианта от простого к полному
Все команды выполняются из /tmp/stand/grid-bot/ (или твоей копии пакета).
A) Только дашборд (30 сек)
Что увидишь: UI с графиками и блоком 🧠 Kronos. Совет подгрузится из kronos_advice.json (статичный). Торговый цикл и Kronos-advisor не запущены.
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 генерирует советы в фоне, можно жать «⟳ Обновить совет» в дашборде.
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) или по кнопке.
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 мин, бот сам читает свежий совет.
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 | Текущая цена, время, режим |
🛑 Остановка
# В терминале, где крутится бот: 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 занят)
lsof -i:5555
# Убей старый процесс или поменяй порт в main.py
"ModuleNotFoundError: No module named 'kronos'"
# Запусти из корня проекта, не из подпапки:
cd /tmp/stand/grid-bot
python3 main.py
"No module named 'model'" (Kronos не найден)
export PYTHONPATH=/tmp/stand/Kronos-src:$PYTHONPATH
Kronos падает с OOM
# Модель не влезла в RAM. Закрой Chrome, IDE и попробуй снова.
free -h # должно быть >2GB free
Бот не видит Kronos
# Проверь .env:
grep -E "KRONOS_(ENABLED|LIVE_ENABLED|MIN_CONFIDENCE)" .env
# И лог:
python3 main.py 2>&1 | grep -i kronos
📊 Какие API можно дёргать руками
# Текущий совет
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
🎯 Что я рекомендую для первого раза
- Начни с (A) — посмотри UI, заглушку Kronos
- Потом (B) — нажми «⟳ Обновить совет» несколько раз, посмотри как меняется
- Потом (C) — увидь, как Kronos влияет на grid в DEMO
- Если всё ОК → деплой на сервер по
DEPLOY.md