Riy777 commited on
Commit
f375b09
·
1 Parent(s): 4c1a71a

Update data_manager.py

Browse files
Files changed (1) hide show
  1. data_manager.py +32 -22
data_manager.py CHANGED
@@ -1,4 +1,4 @@
1
- # data_manager.py (Updated to V7.8 - Added Pattern Detection Logging)
2
  import os
3
  import asyncio
4
  import httpx
@@ -67,7 +67,7 @@ class DataManager:
67
  self.pattern_analyzer = ChartPatternAnalyzer(r2_service=None)
68
  # --- (نهاية الإضافة) ---
69
 
70
- print("✅ DataManager initialized - V7.8 (Added Pattern Detection Logging)")
71
 
72
  async def _load_markets(self):
73
  try:
@@ -328,7 +328,7 @@ class DataManager:
328
  (جديد V7.7) - الفلتر الثاني: "فلتر شرارة الانعكاس" (بداية الزخم)
329
  """
330
  try:
331
- # (1. واقي العملات المستقرة)
332
  ohlcv_candles = analysis.get('ohlcv_1h', {}).get('1h', [])
333
  if not ohlcv_candles or len(ohlcv_candles) < 30:
334
  return 0.0
@@ -414,7 +414,7 @@ class DataManager:
414
  """
415
  الطبقة 1: فحص سريع - (محدث بالكامل V7.7 - فلتر مزدوج)
416
  """
417
- print("📊 الطبقة 1 (V7.7): بدء الغربلة (الكاشف المزدوج: انفجار + شرارة)...")
418
 
419
  # الخطوة 1: جلب أفضل 100 عملة حسب الحجم
420
  volume_data = await self._get_volume_data_optimal()
@@ -498,8 +498,9 @@ class DataManager:
498
  if 'ohlcv_1h' in symbol_data: del symbol_data['ohlcv_1h']
499
 
500
  final_candidates.append(symbol_data)
 
501
 
502
- print(f"🎯 اكتملت الغربلة (V7.7). تم تأهيل {len(final_candidates)} عملة من أصل 100 للطبقة 2.")
503
 
504
  if final_candidates:
505
  print("🏆 المرشحون الناجحون:")
@@ -510,17 +511,16 @@ class DataManager:
510
 
511
  return final_candidates
512
 
513
- # 🔴 --- START OF CHANGE (V7.8 - طباعة نتيجة النمط) --- 🔴
514
  async def _run_mini_detector(self, symbol_data: Dict) -> Dict:
515
- """(V7.8) يشغل المحللات الأساسية + يطبع نتيجة النمط"""
516
-
517
- symbol = symbol_data.get('symbol', 'UNKNOWN') # (جديد V7.8)
518
  ohlcv_1h = symbol_data.get('ohlcv_1h')
519
  current_price = symbol_data.get('current_price')
 
520
 
521
  df = self._create_dataframe(ohlcv_1h.get('1h'))
522
  if df.empty:
523
- raise ValueError(f"{symbol}: DataFrame فارغ لتحليل 1H") # (محدث V7.8)
524
 
525
  analysis_dict = {'current_price': current_price}
526
 
@@ -535,26 +535,36 @@ class DataManager:
535
  if not isinstance(results[0], Exception):
536
  analysis_dict['monte_carlo_distribution'] = results[0]
537
 
538
- # (الطباعة التي طلبتها)
539
  if not isinstance(results[1], Exception):
540
  pattern_result = results[1]
541
  analysis_dict['pattern_analysis'] = pattern_result
542
 
 
543
  pattern_name = pattern_result.get('pattern_detected', 'no_clear_pattern')
544
- if pattern_name != 'no_clear_pattern':
545
- conf = pattern_result.get('pattern_confidence', 0)
546
- tf = pattern_result.get('timeframe', 'N/A')
547
- print(f" 🧬 [Pattern V8] {symbol}: 💡 نعم، تم العثور على نمط: {pattern_name} (TF: {tf}, Conf: {conf:.2f})")
 
 
 
 
 
 
548
  else:
549
- # (يمكن تفعيل هذا السطر إذا أردت رؤية العملات التي لم يُعثر له�� على نمط)
550
- # print(f" 🧬 [Pattern V8] {symbol}: 👈 لا، لم يتم العثور على نمط واضح.")
551
- pass
 
552
  else:
553
- # (طباعة إذا فشل المحرك نفسه)
554
- print(f" ❌ [Pattern V8] {symbol}: ⚠️ فشل محرك الأنماط: {results[1]}")
 
 
555
 
556
  return analysis_dict
557
- # 🔴 --- END OF CHANGE --- 🔴
558
 
559
 
560
  async def _fetch_1h_ohlcv_for_screening(self, symbol: str) -> List:
@@ -799,4 +809,4 @@ class DataManager:
799
  except Exception as e:
800
  return {'action': 'HOLD', 'confidence': 0.3, 'reason': f'Error: {str(e)}', 'source': 'whale_analysis'}
801
 
802
- print("✅ DataManager loaded - V7.8 (Added Pattern Detection Logging)")
 
1
+ # data_manager.py (Updated to V7.8 - Added Pattern V8 Diagnostic Print)
2
  import os
3
  import asyncio
4
  import httpx
 
67
  self.pattern_analyzer = ChartPatternAnalyzer(r2_service=None)
68
  # --- (نهاية الإضافة) ---
69
 
70
+ print("✅ DataManager initialized - V7.8 (Pattern V8 Diagnostic Print)")
71
 
72
  async def _load_markets(self):
73
  try:
 
328
  (جديد V7.7) - الفلتر الثاني: "فلتر شرارة الانعكاس" (بداية الزخم)
329
  """
330
  try:
331
+ # (1. واقي العملات المستقرة - نفس الفلتر الأول)
332
  ohlcv_candles = analysis.get('ohlcv_1h', {}).get('1h', [])
333
  if not ohlcv_candles or len(ohlcv_candles) < 30:
334
  return 0.0
 
414
  """
415
  الطبقة 1: فحص سريع - (محدث بالكامل V7.7 - فلتر مزدوج)
416
  """
417
+ print("📊 الطبقة 1 (V7.8): بدء الغربلة (الكاشف المزدوج + طباعة الأنماط)...")
418
 
419
  # الخطوة 1: جلب أفضل 100 عملة حسب الحجم
420
  volume_data = await self._get_volume_data_optimal()
 
498
  if 'ohlcv_1h' in symbol_data: del symbol_data['ohlcv_1h']
499
 
500
  final_candidates.append(symbol_data)
501
+ # (else: فشل في كلا الفلترين، يتم تجاهله)
502
 
503
+ print(f"🎯 اكتملت الغربلة (V7.8). تم تأهيل {len(final_candidates)} عملة من أصل 100 للطبقة 2.")
504
 
505
  if final_candidates:
506
  print("🏆 المرشحون الناجحون:")
 
511
 
512
  return final_candidates
513
 
514
+ # 🔴 --- START OF CHANGE (V7.8) --- 🔴
515
  async def _run_mini_detector(self, symbol_data: Dict) -> Dict:
516
+ """(محدث V7.8) يشغل المحللات + يطبع نتيجة الأنماط V8"""
 
 
517
  ohlcv_1h = symbol_data.get('ohlcv_1h')
518
  current_price = symbol_data.get('current_price')
519
+ symbol = symbol_data.get('symbol', 'UNKNOWN') # (للطباعة)
520
 
521
  df = self._create_dataframe(ohlcv_1h.get('1h'))
522
  if df.empty:
523
+ raise ValueError("DataFrame فارغ لتحليل 1H")
524
 
525
  analysis_dict = {'current_price': current_price}
526
 
 
535
  if not isinstance(results[0], Exception):
536
  analysis_dict['monte_carlo_distribution'] = results[0]
537
 
538
+ # (إضافة طباعة تشخيصية لنموذج الأنماط V8)
539
  if not isinstance(results[1], Exception):
540
  pattern_result = results[1]
541
  analysis_dict['pattern_analysis'] = pattern_result
542
 
543
+ # (استخراج البيانات للطباعة)
544
  pattern_name = pattern_result.get('pattern_detected', 'no_clear_pattern')
545
+ confidence = pattern_result.get('pattern_confidence', 0)
546
+ tf = pattern_result.get('timeframe', 'N/A')
547
+
548
+ if pattern_name != "Neutral / No Pattern" and confidence > 0.5:
549
+ # (نمط مفيد ومرتفع الثقة)
550
+ print(f" 💡 [ML Pattern] {symbol}: نمط مُكتشف! "
551
+ f"'{pattern_name}' (الثقة: {confidence:.2f}) على إطار {tf}")
552
+ elif pattern_name == "Neutral / No Pattern":
553
+ # (لا يوجد نمط - لا نطبع شيئاً لتجنب إغراق السجل)
554
+ pass
555
  else:
556
+ # (نمط ضعيف الثقة)
557
+ print(f" - [ML Pattern] {symbol}: نمط ضعيف. "
558
+ f"'{pattern_name}' (الثقة: {confidence:.2f}) على إطار {tf}")
559
+
560
  else:
561
+ # (في حال فشل النموذج V8.8)
562
+ print(f" ❌ [ML Pattern] {symbol}: فشل تحليل الأنماط ({results[1]})")
563
+ analysis_dict['pattern_analysis'] = {} # (إضافة قاموس فارغ آمن)
564
+ # 🔴 --- END OF CHANGE (V7.8) --- 🔴
565
 
566
  return analysis_dict
567
+ # 🔴 --- END OF CHANGE (V7.8) --- 🔴
568
 
569
 
570
  async def _fetch_1h_ohlcv_for_screening(self, symbol: str) -> List:
 
809
  except Exception as e:
810
  return {'action': 'HOLD', 'confidence': 0.3, 'reason': f'Error: {str(e)}', 'source': 'whale_analysis'}
811
 
812
+ print("✅ DataManager loaded - V7.8 (Pattern V8 Diagnostic Print)")