Skip to main content
Glama
test_full_analysis.py7.14 kB
""" Тест полного анализа рынка через OpenRouter Qwen """ import asyncio import os import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) from autonomous_agent.qwen_client import QwenClient from loguru import logger logger.add( sys.stdout, format="<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{message}</cyan>", level="INFO" ) async def test_full_market_analysis(): """Тест полного анализа рынка""" print("\n" + "=" * 60) print("ТЕСТ ПОЛНОГО АНАЛИЗА РЫНКА") print("=" * 60) api_key = os.getenv("QWEN_API_KEY", "") if not api_key: print("❌ QWEN_API_KEY не установлен!") return False try: client = QwenClient(api_key, model="qwen/qwen-turbo") prompt = """ Проведи анализ криптовалютного рынка и выдай мне 3 лучших точки входа прямо сейчас. Требования: 1. Найди ТОП 3 возможности с confluence ≥ 8.0/10 2. Вероятность успеха ≥ 70% 3. R:R минимум 1:2 4. Детально объясни каждую возможность 5. Укажи конкретные уровни входа, SL, TP Формат ответа (JSON): { "top_opportunities": [ { "symbol": "BTC/USDT", "side": "long", "entry_price": 50000, "stop_loss": 49500, "take_profit": 51000, "confluence_score": 8.5, "probability": 0.75, "risk_reward": 2.0, "reasoning": "Детальное объяснение почему это хорошая возможность", "timeframes_alignment": ["1h", "4h", "1d"], "key_factors": ["RSI oversold", "Support level", "Bullish pattern"] } ], "market_summary": "Краткое резюме рыночной ситуации", "btc_status": "bullish/neutral/bearish", "recommendations": ["Общие рекомендации"] } """ system_instructions = """ Ты - профессиональный AI торговый аналитик с глубокими знаниями технического анализа криптовалютных рынков. Твоя задача - находить моменты НЕИЗБЕЖНОГО роста с максимальной вероятностью успеха. Критерии качества: - Confluence минимум: 8.0/10 - Вероятность успеха: ≥ 70% - R:R минимум: 1:2 - Multi-timeframe alignment - Детальное обоснование Всегда отвечай в формате JSON как указано в запросе. """ print("📤 Отправляю запрос на полный анализ рынка...") print("⏳ Ожидание ответа (может занять 30-60 секунд)...") result = await client.generate( prompt=prompt, system_prompt=system_instructions, temperature=0.3, max_tokens=3000 ) if result.get("success"): print("\n✅ Анализ успешен!") content = result.get("content", "") print(f"\n📥 Длина ответа: {len(content)} символов") print(f"\n📝 Полный ответ:") print("=" * 60) print(content) print("=" * 60) # Попытка распарсить JSON import json try: json_content = content if "```json" in json_content: json_start = json_content.find("```json") + 7 json_end = json_content.find("```", json_start) json_content = json_content[json_start:json_end].strip() elif "```" in json_content: json_start = json_content.find("```") + 3 json_end = json_content.find("```", json_start) json_content = json_content[json_start:json_end].strip() parsed = json.loads(json_content) print(f"\n✅ JSON успешно распарсен!") print(f" - Ключи: {list(parsed.keys())}") if "top_opportunities" in parsed: print(f"\n 🎯 Найдено возможностей: {len(parsed['top_opportunities'])}") for i, opp in enumerate(parsed['top_opportunities'][:3], 1): print(f"\n {i}. {opp.get('symbol', 'N/A')} ({opp.get('side', 'N/A').upper()})") print(f" Entry: ${opp.get('entry_price', 0):,.2f}") print(f" SL: ${opp.get('stop_loss', 0):,.2f}") print(f" TP: ${opp.get('take_profit', 0):,.2f}") print(f" Confluence: {opp.get('confluence_score', 0)}/10") print(f" Probability: {opp.get('probability', 0)*100:.0f}%") print(f" R:R: {opp.get('risk_reward', 0):.2f}") print(f" Reasoning: {opp.get('reasoning', 'N/A')[:100]}...") if "market_summary" in parsed: print(f"\n 📊 Market Summary: {parsed['market_summary']}") if "btc_status" in parsed: print(f"\n ₿ BTC Status: {parsed['btc_status']}") return True except json.JSONDecodeError as e: print(f"\n⚠️ Не удалось распарсить JSON: {e}") print(" Но ответ получен, возможно формат другой") return True # Все равно успех, просто формат другой else: print(f"\n❌ Ошибка: {result.get('error', 'Unknown')}") return False except Exception as e: print(f"\n❌ Исключение: {e}") import traceback traceback.print_exc() return False async def main(): """Запуск теста""" print("\n" + "🚀" * 30) print("ТЕСТ ПОЛНОГО АНАЛИЗА РЫНКА ЧЕРЕЗ OPENROUTER") print("🚀" * 30) result = await test_full_market_analysis() print("\n" + "=" * 60) if result: print("✅ ТЕСТ ПРОШЁЛ УСПЕШНО!") print("🎉 OpenRouter Qwen работает отлично!") else: print("❌ ТЕСТ ПРОВАЛЕН") print("Проверьте API ключ и баланс на OpenRouter") print("=" * 60) return 0 if result else 1 if __name__ == "__main__": exit_code = asyncio.run(main()) sys.exit(exit_code)

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