Riy777 commited on
Commit
ed906df
·
1 Parent(s): e3e8378

Update ml_engine/processor.py

Browse files
Files changed (1) hide show
  1. ml_engine/processor.py +67 -35
ml_engine/processor.py CHANGED
@@ -1,18 +1,19 @@
1
  # ml_engine/processor.py
2
- # (V12.0 - Titan Powered Core)
3
 
4
  import asyncio
5
  import traceback
6
  import numpy as np
7
 
8
- # استيراد محرك Titan الجديد
9
  try:
10
  from ml_engine.titan_engine import TitanEngine
11
  except ImportError:
12
- print("❌ [Processor] لم يتم العثور على titan_engine.py! تأكد من إنشائه.")
13
  TitanEngine = None
14
 
15
  from ml_engine.monte_carlo import MonteCarloAnalyzer
 
16
 
17
  class MLProcessor:
18
  def __init__(self, market_context, data_manager, learning_hub):
@@ -20,63 +21,94 @@ class MLProcessor:
20
  self.data_manager = data_manager
21
  self.learning_hub = learning_hub
22
 
23
- # تهيئة المحركات
24
  self.titan = TitanEngine() if TitanEngine else None
 
 
 
 
 
 
 
 
 
25
  self.mc_analyzer = MonteCarloAnalyzer()
26
 
27
- # حالة التهيئة
28
  self.initialized = False
29
 
30
  async def initialize(self):
31
- """تهيئة غير متزامنة لمحرك Titan"""
32
- if self.titan and not self.titan.initialized:
33
- await self.titan.initialize()
34
- self.initialized = True
 
 
 
 
 
 
 
 
 
35
 
36
  async def process_and_score_symbol_enhanced(self, raw_data):
37
  """
38
- المعالجة المركزية باستخدام Titan (Layer 2).
39
- الآن، Titan هو المسؤول الأول والأخير عن القرار الفني.
40
  """
41
- # ضمان التهيئة
42
  if not self.initialized: await self.initialize()
43
-
44
  symbol = raw_data.get('symbol')
45
- ohlcv_data = raw_data.get('ohlcv') # {'5m': [], '15m': [], ...}
46
 
47
- if not symbol or not ohlcv_data or not self.titan: return None
48
 
49
  try:
50
- # 1. 🧠 استدعاء العقل المدبر (Titan Inference)
51
- # Titan سيأخذ البيانات الخام، يطبق الهرم المقلوب، ويعطي احتمالية دقيقة
52
- titan_result = self.titan.predict(ohlcv_data)
53
- titan_score = titan_result.get('score', 0.0)
54
-
55
- # 2. 🎲 تحليل مخاطر إضافي (اختياري للدعم)
56
- # يمكننا تشغيل مونت كارلو سريع كـ "رأي ثانٍ" للتأكيد فقط
 
 
 
57
  mc_score = 0.5
58
  if '1h' in ohlcv_data:
59
  closes = np.array([c[4] for c in ohlcv_data['1h']])
 
60
  mc_res = self.mc_analyzer.generate_1h_price_distribution_simple(closes)
 
61
  mc_score = mc_res.get('mc_prob_gain', 0.5)
62
 
63
- # 3. 📊 تجميع النتيجة النهائية
64
- # ف�� V12.0، نثق بـ Titan بنسبة 100% لأنه تدرب على كل شيء
65
- final_decision_score = titan_score
66
-
67
- # هيكل النتيجة الموحد
 
 
 
 
 
 
 
 
 
68
  analysis_result = {
69
  'symbol': symbol,
70
  'current_price': raw_data.get('current_price', 0.0),
71
- # النتيجة النهائية التي سيعتمد عليها المستكشف والحارس
72
- 'enhanced_final_score': final_decision_score,
73
 
74
- # تفاصيل للشفافية والتسجيل
75
- 'titan_score': titan_score,
76
- 'mc_validation_score': mc_score,
77
- 'titan_status': titan_result.get('status', 'UNKNOWN'),
 
 
 
 
78
 
79
- # الاحتفاظ بالبيانات لاستخدام الحارس لاحقاً
80
  'ohlcv_sample': {tf: data[-1] for tf, data in ohlcv_data.items() if data}
81
  }
82
 
@@ -87,4 +119,4 @@ class MLProcessor:
87
  traceback.print_exc()
88
  return None
89
 
90
- print("✅ ML Processor V12.0 (Titan Core) loaded.")
 
1
  # ml_engine/processor.py
2
+ # (V12.3 - Hybrid Scoring Core: Titan + Patterns + Monte Carlo)
3
 
4
  import asyncio
5
  import traceback
6
  import numpy as np
7
 
8
+ # استيراد المحركات الثلاثة
9
  try:
10
  from ml_engine.titan_engine import TitanEngine
11
  except ImportError:
12
+ print("❌ [Processor] لم يتم العثور على titan_engine.py!")
13
  TitanEngine = None
14
 
15
  from ml_engine.monte_carlo import MonteCarloAnalyzer
16
+ from ml_engine.patterns import ChartPatternAnalyzer # محرك الأنماط V11.1
17
 
18
  class MLProcessor:
19
  def __init__(self, market_context, data_manager, learning_hub):
 
21
  self.data_manager = data_manager
22
  self.learning_hub = learning_hub
23
 
24
+ # 1. المحرك الرئيسي (Titan) - القناص (50%)
25
  self.titan = TitanEngine() if TitanEngine else None
26
+
27
+ # 2. المحرك المساند (Patterns) - المتخصصون (40%)
28
+ # نستخدم نفس النسخة الموجودة في DataManager لتوفير الذاكرة إذا أمكن
29
+ if self.data_manager and self.data_manager.pattern_analyzer:
30
+ self.pattern_engine = self.data_manager.pattern_analyzer
31
+ else:
32
+ self.pattern_engine = ChartPatternAnalyzer()
33
+
34
+ # 3. المحرك الاحتمالي (Monte Carlo) - المدقق (10%)
35
  self.mc_analyzer = MonteCarloAnalyzer()
36
 
 
37
  self.initialized = False
38
 
39
  async def initialize(self):
40
+ """تهيئة جميع المحركات الفرعية"""
41
+ if not self.initialized:
42
+ print("⚙️ [Processor] تهيئة نظام التقييم الهجين...")
43
+ tasks = []
44
+ if self.titan and not self.titan.initialized:
45
+ tasks.append(self.titan.initialize())
46
+ if self.pattern_engine and not self.pattern_engine.initialized:
47
+ tasks.append(self.pattern_engine.initialize())
48
+
49
+ if tasks:
50
+ await asyncio.gather(*tasks)
51
+ self.initialized = True
52
+ print("✅ [Processor] النظام الهجين جاهز.")
53
 
54
  async def process_and_score_symbol_enhanced(self, raw_data):
55
  """
56
+ المعالجة المركزية الهجينة (Hybrid Core Processing)
 
57
  """
 
58
  if not self.initialized: await self.initialize()
 
59
  symbol = raw_data.get('symbol')
60
+ ohlcv_data = raw_data.get('ohlcv')
61
 
62
+ if not symbol or not ohlcv_data: return None
63
 
64
  try:
65
+ # --- 1. تشغيل المحركات الثلاثة بالتوازي ---
66
+ # (للسرعة القصوى، لا ننتظر واحداً تلو الآخر)
67
+
68
+ # أ. مهمة Titan
69
+ titan_task = asyncio.to_thread(self.titan.predict, ohlcv_data) if self.titan else None
70
+
71
+ # ب. مهمة الأنماط
72
+ pattern_task = self.pattern_engine.detect_chart_patterns(ohlcv_data) if self.pattern_engine else None
73
+
74
+ # ج. مهمة مونت كارلو (على فريم الساعة كمعيار)
75
  mc_score = 0.5
76
  if '1h' in ohlcv_data:
77
  closes = np.array([c[4] for c in ohlcv_data['1h']])
78
+ # تشغيل سريع غير متزامن للمحاكاة
79
  mc_res = self.mc_analyzer.generate_1h_price_distribution_simple(closes)
80
+ # تطبيع النتيجة لتكون بين 0 و 1 (هي أصلاً احتمالية)
81
  mc_score = mc_res.get('mc_prob_gain', 0.5)
82
 
83
+ # انتظار النتائج
84
+ titan_res = await titan_task if titan_task else {'score': 0.0}
85
+ pattern_res = await pattern_task if pattern_task else {'pattern_confidence': 0.0}
86
+
87
+ # --- 2. استخراج الدرجات الخام ---
88
+ score_titan = titan_res.get('score', 0.0)
89
+ score_patterns = pattern_res.get('pattern_confidence', 0.0)
90
+ score_mc = mc_score
91
+
92
+ # --- 3. تطبيق المعادلة الهجينة (The Hybrid Formula) ---
93
+ # Titan (50%) + Patterns (40%) + MC (10%)
94
+ hybrid_score = (score_titan * 0.50) + (score_patterns * 0.40) + (score_mc * 0.10)
95
+
96
+ # تجميع النتيجة النهائية
97
  analysis_result = {
98
  'symbol': symbol,
99
  'current_price': raw_data.get('current_price', 0.0),
100
+ 'enhanced_final_score': hybrid_score, # الدرجة النهائية المعتمدة
 
101
 
102
+ # تفاصيل للشفافية (Audit Trail)
103
+ 'components': {
104
+ 'titan_score': score_titan,
105
+ 'patterns_score': score_patterns,
106
+ 'mc_score': score_mc
107
+ },
108
+ 'titan_details': titan_res,
109
+ 'pattern_details': pattern_res.get('details', {}),
110
 
111
+ # عينة بيانات للحارس
112
  'ohlcv_sample': {tf: data[-1] for tf, data in ohlcv_data.items() if data}
113
  }
114
 
 
119
  traceback.print_exc()
120
  return None
121
 
122
+ print("✅ ML Processor V12.3 (Hybrid Core) loaded.")