# 🚀 Локальный стенд — 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`