Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -20,7 +20,7 @@ from trade_manager import TradeManager
|
|
| 20 |
import state
|
| 21 |
from helpers import safe_float_conversion, validate_candidate_data_enhanced
|
| 22 |
|
| 23 |
-
# المتغيرات
|
| 24 |
r2_service_global = None
|
| 25 |
data_manager_global = None
|
| 26 |
llm_service_global = None
|
|
@@ -215,6 +215,9 @@ async def run_3_layer_analysis():
|
|
| 215 |
|
| 216 |
print(f"🎯 تم اختيار {len(final_layer2_candidates)} عملة للطبقة 3 (الأقوى فقط)")
|
| 217 |
|
|
|
|
|
|
|
|
|
|
| 218 |
# عرض أفضل 10 عملات من الطبقة 2
|
| 219 |
print("\n🏆 أفضل 10 عملات من الطبقة 2:")
|
| 220 |
for i, candidate in enumerate(final_layer2_candidates):
|
|
@@ -237,6 +240,15 @@ async def run_3_layer_analysis():
|
|
| 237 |
try:
|
| 238 |
print(f" 🤔 تحليل {candidate['symbol']} بالنموذج الضخم...")
|
| 239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 240 |
# إرسال كل عملة للنموذج الضخم على حدة
|
| 241 |
llm_analysis = await llm_service_global.get_trading_decision(candidate)
|
| 242 |
|
|
@@ -249,7 +261,8 @@ async def run_3_layer_analysis():
|
|
| 249 |
'enhanced_score': candidate.get('enhanced_final_score', 0),
|
| 250 |
'llm_confidence': llm_analysis.get('confidence_level', 0),
|
| 251 |
'strategy': llm_analysis.get('strategy', 'GENERIC'),
|
| 252 |
-
'analysis_timestamp': datetime.now().isoformat()
|
|
|
|
| 253 |
}
|
| 254 |
final_opportunities.append(opportunity)
|
| 255 |
|
|
|
|
| 20 |
import state
|
| 21 |
from helpers import safe_float_conversion, validate_candidate_data_enhanced
|
| 22 |
|
| 23 |
+
# المتغيرات العالمية
|
| 24 |
r2_service_global = None
|
| 25 |
data_manager_global = None
|
| 26 |
llm_service_global = None
|
|
|
|
| 215 |
|
| 216 |
print(f"🎯 تم اختيار {len(final_layer2_candidates)} عملة للطبقة 3 (الأقوى فقط)")
|
| 217 |
|
| 218 |
+
# ✅ حفظ المرشحين العشرة في ملف Candidates في R2
|
| 219 |
+
await r2_service_global.save_candidates_async(final_layer2_candidates)
|
| 220 |
+
|
| 221 |
# عرض أفضل 10 عملات من الطبقة 2
|
| 222 |
print("\n🏆 أفضل 10 عملات من الطبقة 2:")
|
| 223 |
for i, candidate in enumerate(final_layer2_candidates):
|
|
|
|
| 240 |
try:
|
| 241 |
print(f" 🤔 تحليل {candidate['symbol']} بالنموذج الضخم...")
|
| 242 |
|
| 243 |
+
# ✅ التحقق من وجود بيانات OHLCV كافية
|
| 244 |
+
ohlcv_data = candidate.get('ohlcv') or candidate.get('raw_ohlcv')
|
| 245 |
+
if ohlcv_data:
|
| 246 |
+
candles_info = {tf: len(data) for tf, data in ohlcv_data.items()}
|
| 247 |
+
print(f" 📊 بيانات الشموع المتاحة: {candles_info}")
|
| 248 |
+
else:
|
| 249 |
+
print(f" ⚠️ لا توجد بيانات شموع كافية لـ {candidate['symbol']}")
|
| 250 |
+
continue
|
| 251 |
+
|
| 252 |
# إرسال كل عملة للنموذج الضخم على حدة
|
| 253 |
llm_analysis = await llm_service_global.get_trading_decision(candidate)
|
| 254 |
|
|
|
|
| 261 |
'enhanced_score': candidate.get('enhanced_final_score', 0),
|
| 262 |
'llm_confidence': llm_analysis.get('confidence_level', 0),
|
| 263 |
'strategy': llm_analysis.get('strategy', 'GENERIC'),
|
| 264 |
+
'analysis_timestamp': datetime.now().isoformat(),
|
| 265 |
+
'candles_data': {tf: len(data) for tf, data in ohlcv_data.items()} if ohlcv_data else {}
|
| 266 |
}
|
| 267 |
final_opportunities.append(opportunity)
|
| 268 |
|