Skip to main content
Glama
CRITICAL_ISSUES_ANALYSIS.md10.1 kB
# 🔴 КРИТИЧЕСКИЕ ПРОБЛЕМЫ ИЗ ЛОГОВ - АНАЛИЗ И РЕШЕНИЯ **Дата анализа:** 2025-11-22 **Источник:** Логи выполнения `autonomous_agent.main` --- ## 📊 КРИТИЧЕСКИЕ ПРОБЛЕМЫ ### 1. ⚠️ RuntimeWarning: Mean of empty slice (КРИТИЧНО) **Проблема:** ``` /opt/anaconda3/lib/python3.12/site-packages/numpy/core/fromnumeric.py:3504: RuntimeWarning: Mean of empty slice. /opt/anaconda3/lib/python3.12/site-packages/numpy/core/_methods.py:129: RuntimeWarning: invalid value encountered in scalar divide ``` **Частота:** Повторяется **десятки раз** в каждом анализе **Локация проблемы:** - `mcp_server/technical_analysis.py:136` - `df['volume'].tail(20).mean()` - `mcp_server/technical_analysis.py:233` - `df['volume'].rolling(20).mean().iloc[-1]` - `mcp_server/technical_analysis.py:235` - `df['volume'].iloc[-1] / df['volume'].rolling(20).mean().iloc[-1]` - `mcp_server/technical_analysis.py:697` - `np.mean([abs(c['close'] - c['open']) for c in candles[i-5:i]])` - `mcp_server/technical_analysis.py:836` - `np.mean([c['volume'] for c in prev_candles])` **Причина:** - Недостаточно данных для расчета (менее 20 свечей для rolling mean) - Пустые срезы при расчете среднего для паттернов - Отсутствие проверки на пустые массивы перед `np.mean()` **Влияние:** - Засоряет логи предупреждениями - Может приводить к `NaN` значениям в индикаторах - Потенциально некорректные расчеты **Решение:** ```python # БЫЛО: volume_avg = float(df['volume'].tail(20).mean()) # ДОЛЖНО БЫТЬ: volume_tail = df['volume'].tail(20) volume_avg = float(volume_tail.mean()) if len(volume_tail) > 0 else float(df['volume'].mean()) if len(df) > 0 else 0.0 ``` --- ### 2. 🔴 OpenRouter API Error 401: "User not found" (КРИТИЧНО) **Проблема:** ``` 2025-11-22 13:51:38.310 | ERROR | autonomous_agent.qwen_client:generate:132 - OpenRouter API error 401: {"error":{"message":"User not found.","code":401}} ``` **Локация:** `autonomous_agent/qwen_client.py:132` **Причина:** - Неверный или истекший API ключ OpenRouter - Проблема с аутентификацией - Возможно, ключ не установлен в переменных окружения **Влияние:** - **Qwen AI анализ полностью отключен** (Step 5 пропускается) - Система работает без AI-улучшений - Потеря важного компонента анализа **Решение:** 1. Проверить `OPENROUTER_API_KEY` в `.env` 2. Добавить graceful fallback без AI анализа 3. Логировать предупреждение, но не прерывать работу --- ### 3. 🔴 Best LONG/SHORT Score = 0.00 (КРИТИЧНО) **Проблема:** ``` • Best LONG score: 0.00 • Best SHORT score: 0.00 ``` **НО в отчете показаны сигналы:** - USDT/TRY: Score 5.00 - ETH/USDT: Score 3.00 - и т.д. **Локация проблемы:** - `autonomous_agent/detailed_formatter.py:69-70` использует `confluence_score` - `publish_market_analysis.py:110-111` использует `score` **Причина:** - **Несоответствие полей данных!** - В `detailed_formatter.py` ищется `confluence_score`, но в данных может быть `score` или `final_score` - Пустые списки `all_longs`/`all_shorts` при расчете **Влияние:** - Неправильная оценка качества сигналов - Пользователь видит 0.00, хотя есть сигналы с score > 0 - Некорректная оценка риска **Решение:** ```python # БЫЛО: best_long_score = max([opp.get("confluence_score", 0) for opp in all_longs], default=0) # ДОЛЖНО БЫТЬ: best_long_score = max([ opp.get("confluence_score", 0) or opp.get("final_score", 0) or opp.get("score", 0) for opp in all_longs ], default=0) ``` --- ### 4. ⚠️ Cache Disabled (СРЕДНЯЯ ВАЖНОСТЬ) **Проблема:** ``` 2025-11-22 13:53:27.996 | INFO | CacheManager initialized with CACHING DISABLED (real-time data only) Cache enabled: False ``` **НО в логах видны:** ``` Cache hit for get_ohlcv: UNI/USDT 1h ``` **Причина:** - `CacheManager` отключен (по умолчанию `enabled=False`) - Но `bybit_client` использует свой внутренний кэш - Два разных механизма кэширования **Влияние:** - Больше API запросов к Bybit - Медленнее выполнение анализа - Потенциальные rate limits **Решение:** - Включить `ENABLE_CACHE=true` в `.env` - Или унифицировать кэширование --- ### 5. ⚠️ Validation Failed - Hard Stops (СРЕДНЯЯ ВАЖНОСТЬ) **Проблема:** ``` WARNING | Validation failed for USDT/BRL long: Entry BLOCKED by hard stops. Volume too low for scalping on 5m: 0.00; BB Squeeze on 1m without volume confirmation (vol_ratio: 0.00) WARNING | Validation failed for FLUID/USDT long: Entry BLOCKED by hard stops. MACD bearish on 3 short timeframes ``` **Локация:** `autonomous_agent/autonomous_analyzer.py:_validate_opportunities` **Причина:** - Слишком строгие hard stops в валидации - Volume = 0.00 (проблема с данными или расчетом) - Противоречивые сигналы на разных таймфреймах **Влияние:** - Много сигналов отфильтровывается - Только 1 LONG из 4 прошел валидацию - 0 SHORT прошли валидацию **Решение:** - Проверить расчет volume (может быть связано с проблемой #1) - Пересмотреть критерии hard stops - Добавить более детальное логирование причин блокировки --- ### 6. ⚠️ Low Experience Scores (НИЗКАЯ ВАЖНОСТЬ) **Проблема:** ``` Experience data logged for UNI/USDT: pattern=unknown, score=2.2 Experience data logged for ETH/USDT: pattern=unknown, score=2.8 Experience data logged for BTC/USDC: pattern=unknown, score=2.2 ``` **Причина:** - Низкие confluence scores - `pattern=unknown` - паттерны не распознаются - Возможно, проблема в расчете score **Влияние:** - Накопление опыта с низкими score - Может влиять на будущие рекомендации --- ## 🎯 ПРИОРИТЕТЫ ИСПРАВЛЕНИЯ ### КРИТИЧНО (сделать немедленно): 1. **Исправить RuntimeWarning: Mean of empty slice** - Добавить проверки на пустые массивы - Использовать безопасные значения по умолчанию - Файлы: `mcp_server/technical_analysis.py` 2. **Исправить Best LONG/SHORT Score = 0.00** - Унифицировать названия полей (`confluence_score` vs `score` vs `final_score`) - Добавить fallback для разных вариантов названий - Файлы: `autonomous_agent/detailed_formatter.py`, `publish_market_analysis.py` 3. **Исправить OpenRouter API 401** - Проверить API ключ - Добавить graceful fallback - Файлы: `autonomous_agent/qwen_client.py` ### ВАЖНО (сделать в ближайшее время): 4. **Включить кэширование** - Установить `ENABLE_CACHE=true` - Проверить эффективность 5. **Улучшить валидацию сигналов** - Проверить расчет volume - Пересмотреть hard stops - Добавить детальное логирование --- ## 📝 РЕКОМЕНДАЦИИ ПО УЛУЧШЕНИЮ 1. **Добавить валидацию данных перед расчетами:** ```python if len(df) < 20: logger.warning(f"Insufficient data for {symbol}: {len(df)} candles") return default_values ``` 2. **Унифицировать названия полей score:** - Использовать одно название везде: `final_score` - Или добавить нормализацию полей 3. **Улучшить обработку ошибок:** - Graceful fallback для всех внешних API - Не прерывать анализ при ошибках AI 4. **Добавить мониторинг качества:** - Трекинг количества валидированных сигналов - Алерты при низком проценте прохождения валидации --- ## ✅ ЧЕКЛИСТ ИСПРАВЛЕНИЙ - [ ] Исправить все `np.mean()` с проверкой на пустые массивы - [ ] Исправить `best_long_score`/`best_short_score` с fallback полей - [ ] Проверить и исправить OpenRouter API ключ - [ ] Включить кэширование (`ENABLE_CACHE=true`) - [ ] Добавить валидацию данных перед расчетами - [ ] Улучшить логирование причин блокировки сигналов - [ ] Добавить graceful fallback для всех внешних API --- **Статус:** 🔴 ТРЕБУЕТ НЕМЕДЛЕННОГО ВНИМАНИЯ

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheMacroeconomicDao/bybit-ai-trader'

If you have feedback or need assistance with the MCP directory API, please join our Discord server