Files
gridbot/LOCAL-DEV.md
T

8.3 KiB
Raw Blame History

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

🎯 Что я рекомендую для первого раза

  1. Начни с (A) — посмотри UI, заглушку Kronos
  2. Потом (B) — нажми «⟳ Обновить совет» несколько раз, посмотри как меняется
  3. Потом (C) — увидь, как Kronos влияет на grid в DEMO
  4. Если всё ОК → деплой на сервер по DEPLOY.md