Riy777 commited on
Commit
491d9d6
·
1 Parent(s): 575196e

Update LLM.py

Browse files
Files changed (1) hide show
  1. LLM.py +24 -8
LLM.py CHANGED
@@ -251,15 +251,15 @@ class LLMService:
251
  symbol = data_payload.get('symbol', 'unknown')
252
  target_strategy = data_payload.get('target_strategy', 'GENERIC')
253
 
254
- # ✅ التحقق من بيانات الشموع بشكل صحيح
255
- ohlcv_data = data_payload.get('ohlcv') or data_payload.get('raw_ohlcv')
256
  if not ohlcv_data:
257
  print(f"⚠️ لا توجد بيانات شموع لـ {symbol} - تخطي التحليل")
258
  return None
259
 
260
  # ✅ حساب إجمالي الشموع المتاحة
261
- total_candles = sum(len(data) for data in ohlcv_data.values() if data)
262
- timeframes_count = len([tf for tf, data in ohlcv_data.items() if data and len(data) >= 10])
263
 
264
  print(f" 📊 بيانات {symbol}: {total_candles} شمعة في {timeframes_count} إطار زمني")
265
 
@@ -267,6 +267,18 @@ class LLMService:
267
  print(f" ⚠️ بيانات شموع غير كافية لـ {symbol}: {total_candles} شمعة فقط")
268
  return None
269
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  # جلب جميع البيانات المطلوبة
271
  news_text = await self.news_fetcher.get_news_for_symbol(symbol)
272
  pattern_analysis = await self._get_pattern_analysis(data_payload)
@@ -287,6 +299,7 @@ class LLMService:
287
  'whale_data_available': whale_data.get('data_available', False),
288
  'total_candles': total_candles,
289
  'timeframes_count': timeframes_count,
 
290
  'timestamp': datetime.now().isoformat()
291
  }
292
  await self.r2_service.save_llm_prompts_async(
@@ -302,6 +315,7 @@ class LLMService:
302
  decision_dict['pattern_analysis'] = pattern_analysis
303
  decision_dict['whale_data_integrated'] = whale_data.get('data_available', False)
304
  decision_dict['total_candles_analyzed'] = total_candles
 
305
  return decision_dict
306
  else:
307
  print(f"❌ فشل تحليل النموذج الضخم لـ {symbol} - لا توجد قرارات بديلة")
@@ -337,7 +351,8 @@ class LLMService:
337
  async def _get_pattern_analysis(self, data_payload):
338
  try:
339
  symbol = data_payload['symbol']
340
- ohlcv_data = data_payload.get('ohlcv') or data_payload.get('raw_ohlcv')
 
341
 
342
  if ohlcv_data:
343
  # ✅ تمرير البيانات الخام مباشرة لمحرك تحليل الأنماط
@@ -359,7 +374,8 @@ class LLMService:
359
  target_strategy = payload.get('target_strategy', 'GENERIC')
360
  final_score = payload.get('final_score', 'N/A')
361
  enhanced_final_score = payload.get('enhanced_final_score', 'N/A')
362
- ohlcv_data = payload.get('ohlcv') or payload.get('raw_ohlcv', {})
 
363
 
364
  final_score_display = f"{final_score:.3f}" if isinstance(final_score, (int, float)) else str(final_score)
365
  enhanced_score_display = f"{enhanced_final_score:.3f}" if isinstance(enhanced_final_score, (int, float)) else str(enhanced_final_score)
@@ -587,8 +603,8 @@ OUTPUT FORMAT (JSON):
587
  symbol = trade_data['symbol']
588
  original_strategy = trade_data.get('strategy', 'GENERIC')
589
 
590
- # ✅ التحقق من بيانات الشموع المحدثة
591
- ohlcv_data = processed_data.get('ohlcv') or processed_data.get('raw_ohlcv')
592
  if not ohlcv_data:
593
  print(f"⚠️ لا توجد بيانات شموع محدثة لـ {symbol} - تخطي إعادة التحليل")
594
  return None
 
251
  symbol = data_payload.get('symbol', 'unknown')
252
  target_strategy = data_payload.get('target_strategy', 'GENERIC')
253
 
254
+ # ✅ التحقق من بيانات الشموع بشكل صحيح - الإصلاح الرئيسي هنا
255
+ ohlcv_data = data_payload.get('raw_ohlcv') or data_payload.get('ohlcv')
256
  if not ohlcv_data:
257
  print(f"⚠️ لا توجد بيانات شموع لـ {symbol} - تخطي التحليل")
258
  return None
259
 
260
  # ✅ حساب إجمالي الشموع المتاحة
261
+ total_candles = sum(len(data) for data in ohlcv_data.values() if data) if ohlcv_data else 0
262
+ timeframes_count = len([tf for tf, data in ohlcv_data.items() if data and len(data) >= 10]) if ohlcv_data else 0
263
 
264
  print(f" 📊 بيانات {symbol}: {total_candles} شمعة في {timeframes_count} إطار زمني")
265
 
 
267
  print(f" ⚠️ بيانات شموع غير كافية لـ {symbol}: {total_candles} شمعة فقط")
268
  return None
269
 
270
+ # ✅ تأكيد وجود بيانات شموع صالحة
271
+ valid_timeframes = []
272
+ for timeframe, candles in ohlcv_data.items():
273
+ if candles and len(candles) >= 5: # تخفيف الشرط
274
+ valid_timeframes.append(timeframe)
275
+
276
+ if not valid_timeframes:
277
+ print(f" ⚠️ لا توجد أطر زمنية صالحة لـ {symbol}")
278
+ return None
279
+
280
+ print(f" ✅ أطر زمنية صالحة لـ {symbol}: {', '.join(valid_timeframes)}")
281
+
282
  # جلب جميع البيانات المطلوبة
283
  news_text = await self.news_fetcher.get_news_for_symbol(symbol)
284
  pattern_analysis = await self._get_pattern_analysis(data_payload)
 
299
  'whale_data_available': whale_data.get('data_available', False),
300
  'total_candles': total_candles,
301
  'timeframes_count': timeframes_count,
302
+ 'valid_timeframes': valid_timeframes,
303
  'timestamp': datetime.now().isoformat()
304
  }
305
  await self.r2_service.save_llm_prompts_async(
 
315
  decision_dict['pattern_analysis'] = pattern_analysis
316
  decision_dict['whale_data_integrated'] = whale_data.get('data_available', False)
317
  decision_dict['total_candles_analyzed'] = total_candles
318
+ decision_dict['timeframes_analyzed'] = timeframes_count
319
  return decision_dict
320
  else:
321
  print(f"❌ فشل تحليل النموذج الضخم لـ {symbol} - لا توجد قرارات بديلة")
 
351
  async def _get_pattern_analysis(self, data_payload):
352
  try:
353
  symbol = data_payload['symbol']
354
+ # استخدام raw_ohlcv أولاً ثم ohlcv - الإصلاح الرئيسي
355
+ ohlcv_data = data_payload.get('raw_ohlcv') or data_payload.get('ohlcv')
356
 
357
  if ohlcv_data:
358
  # ✅ تمرير البيانات الخام مباشرة لمحرك تحليل الأنماط
 
374
  target_strategy = payload.get('target_strategy', 'GENERIC')
375
  final_score = payload.get('final_score', 'N/A')
376
  enhanced_final_score = payload.get('enhanced_final_score', 'N/A')
377
+ # استخدام raw_ohlcv أولاً - الإصلاح الرئيسي
378
+ ohlcv_data = payload.get('raw_ohlcv') or payload.get('ohlcv', {})
379
 
380
  final_score_display = f"{final_score:.3f}" if isinstance(final_score, (int, float)) else str(final_score)
381
  enhanced_score_display = f"{enhanced_final_score:.3f}" if isinstance(enhanced_final_score, (int, float)) else str(enhanced_final_score)
 
603
  symbol = trade_data['symbol']
604
  original_strategy = trade_data.get('strategy', 'GENERIC')
605
 
606
+ # ✅ التحقق من بيانات الشموع الم��دثة - الإصلاح الرئيسي
607
+ ohlcv_data = processed_data.get('raw_ohlcv') or processed_data.get('ohlcv')
608
  if not ohlcv_data:
609
  print(f"⚠️ لا توجد بيانات شموع محدثة لـ {symbol} - تخطي إعادة التحليل")
610
  return None