Update app.py
Browse files
app.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
# app.py
|
| 2 |
import os
|
| 3 |
import traceback
|
| 4 |
import signal
|
|
@@ -249,31 +249,22 @@ async def run_3_layer_analysis():
|
|
| 249 |
symbol = candidate['symbol']
|
| 250 |
print(f" 🤔 تحليل {symbol} بالنموذج الضخم...")
|
| 251 |
|
| 252 |
-
# ✅
|
| 253 |
ohlcv_data = candidate.get('ohlcv') or candidate.get('raw_ohlcv')
|
| 254 |
-
if ohlcv_data:
|
| 255 |
-
# تمرير البيانات الخام مباشرة للنموذج
|
| 256 |
-
candidate['raw_ohlcv'] = ohlcv_data # تأكيد تمرير البيانات الخام
|
| 257 |
-
candles_info = {tf: len(data) for tf, data in ohlcv_data.items()}
|
| 258 |
-
timeframes_count = len(candles_info)
|
| 259 |
-
print(f" 📊 بيانات الشموع المتاحة: {timeframes_count} إطار ({candles_info})")
|
| 260 |
-
|
| 261 |
-
# ✅ إضافة تحقق أكثر مرونة لبيانات الشموع
|
| 262 |
-
total_candles = sum(len(data) for data in ohlcv_data.values())
|
| 263 |
-
if total_candles >= 50: # تخفيف الشرط من 200 إلى 50 شمعة كحد أدنى
|
| 264 |
-
print(f" ✅ بيانات شموع كافية لـ {symbol}: {total_candles} شمعة")
|
| 265 |
-
else:
|
| 266 |
-
print(f" ⚠️ بيانات شموع محدودة لـ {symbol}: {total_candles} شمعة فقط")
|
| 267 |
-
else:
|
| 268 |
print(f" ⚠️ لا توجد بيانات شموع لـ {symbol}")
|
| 269 |
continue
|
| 270 |
|
| 271 |
-
# ✅
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
|
| 276 |
-
# إرسال كل عملة للنموذج الضخم على حدة
|
| 277 |
llm_analysis = await llm_service_global.get_trading_decision(candidate)
|
| 278 |
|
| 279 |
# ✅ التحقق من وجود قرار صالح من النموذج
|
|
@@ -287,7 +278,7 @@ async def run_3_layer_analysis():
|
|
| 287 |
'strategy': llm_analysis.get('strategy', 'GENERIC'),
|
| 288 |
'analysis_timestamp': datetime.now().isoformat(),
|
| 289 |
'timeframes_count': timeframes_count,
|
| 290 |
-
'
|
| 291 |
}
|
| 292 |
final_opportunities.append(opportunity)
|
| 293 |
|
|
|
|
| 1 |
+
# app.py (محدث)
|
| 2 |
import os
|
| 3 |
import traceback
|
| 4 |
import signal
|
|
|
|
| 249 |
symbol = candidate['symbol']
|
| 250 |
print(f" 🤔 تحليل {symbol} بالنموذج الضخم...")
|
| 251 |
|
| 252 |
+
# ✅ التأكد من تمرير بيانات OHLCV بشكل صحيح
|
| 253 |
ohlcv_data = candidate.get('ohlcv') or candidate.get('raw_ohlcv')
|
| 254 |
+
if not ohlcv_data:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 255 |
print(f" ⚠️ لا توجد بيانات شموع لـ {symbol}")
|
| 256 |
continue
|
| 257 |
|
| 258 |
+
# ✅ التأكد من تمرير البيانات الخام للنموذج
|
| 259 |
+
candidate['raw_ohlcv'] = ohlcv_data
|
| 260 |
+
candidate['ohlcv'] = ohlcv_data
|
| 261 |
+
|
| 262 |
+
timeframes_count = candidate.get('successful_timeframes', 0)
|
| 263 |
+
total_candles = sum(len(data) for data in ohlcv_data.values())
|
| 264 |
+
|
| 265 |
+
print(f" 📊 بيانات الشموع: {timeframes_count} إطار زمني, {total_candles} شمعة")
|
| 266 |
|
| 267 |
+
# ✅ إرسال كل عملة للنموذج الضخم على حدة
|
| 268 |
llm_analysis = await llm_service_global.get_trading_decision(candidate)
|
| 269 |
|
| 270 |
# ✅ التحقق من وجود قرار صالح من النموذج
|
|
|
|
| 278 |
'strategy': llm_analysis.get('strategy', 'GENERIC'),
|
| 279 |
'analysis_timestamp': datetime.now().isoformat(),
|
| 280 |
'timeframes_count': timeframes_count,
|
| 281 |
+
'total_candles': total_candles
|
| 282 |
}
|
| 283 |
final_opportunities.append(opportunity)
|
| 284 |
|