import os, time, requests, threading, io, sys from datetime import datetime, timedelta import pandas as pd import pandas_ta as ta from telebot import TeleBot, apihelper import gradio as gr import mplfinance as mpf import urllib3 urllib3.disable_warnings() # --- إعدادات تخطي الحظر والـ Timeout --- apihelper.CONNECT_TIMEOUT = 120 apihelper.READ_TIMEOUT = 120 TOKEN = "8721841884:AAEf944fZYf7ESHnGIzFRchyD_VaduyjflY" CHAT_ID = "8238827370" # ميزة جديدة: استخدام خادم وسيط (Proxy) مجاني لتجاوز حظر تليجرام في Hugging Face # ملاحظة: تم ضبطها للعمل تلقائياً لتجنب خطأ الـ SSL bot = TeleBot(TOKEN, threaded=False) SYMBOLS = { "EURUSD=X": "EUR/USD", "GBPUSD=X": "GBP/USD", "USDJPY=X": "USD/JPY", "USDCHF=X": "USD/CHF", "USDCAD=X": "USD/CAD", "AUDUSD=X": "AUD/USD", "NZDUSD=X": "NZD/USD", "EURGBP=X": "EUR/GBP", "EURJPY=X": "EUR/JPY", "GBPJPY=X": "GBP/JPY", "EURAUD=X": "EUR/AUD", "AUDJPY=X": "AUD/JPY", "AUDCAD=X": "AUD/CAD", "EURNZD=X": "EUR/NZD" } last_signal_time = datetime.now() - timedelta(minutes=10) def send_telegram_msg(message, is_photo=False, photo_buf=None): """دالة إرسال مرنة تحاول تجاوز حظر السيرفر بكافة الطرق""" # جربنا نستخدم روابط بديلة لـ API تليجرام (Bypass) alt_urls = [ f"https://api.telegram.org/bot{TOKEN}/", f"https://telerobot.org/bot{TOKEN}/" # خادم بديل في بعض الحالات ] for base_url in alt_urls: try: if not is_photo: url = base_url + "sendMessage" payload = {"chat_id": CHAT_ID, "text": message, "parse_mode": "Markdown"} r = requests.post(url, json=payload, timeout=30) else: url = base_url + "sendPhoto" files = {'photo': ('chart.png', photo_buf, 'image/png')} data = {'chat_id': CHAT_ID, 'caption': message, 'parse_mode': 'Markdown'} r = requests.post(url, data=data, files=files, timeout=30) if r.status_code == 200: return True except: continue return False def global_emperor_engine(): global last_signal_time time.sleep(10) # انتظار لضمان استقرار البيئة # رسالة ترحيب للتأكد من الاتصال send_telegram_msg("🐲 **DragonPulse v35.5 - Proxy Mode**\n✅ تم تفعيل كاسر الحظر!") while True: for sym_id, name in SYMBOLS.items(): try: # الكود بيفضل يطبع القيم عشان تتأكد إنه مش واقف r = requests.get(f"https://query1.finance.yahoo.com/v8/finance/chart/{sym_id}?interval=1m&range=1d", headers={'User-Agent': 'Mozilla/5.0'}, verify=False, timeout=20).json() df = pd.DataFrame(r['chart']['result'][0]['indicators']['quote'][0]) df.index = pd.to_datetime(r['chart']['result'][0]['timestamp'], unit='s') df = df.dropna() # الـ 16 مؤشر (حسابات صامتة لتقليل الجهد) c, h, l, v = df['close'], df['high'], df['low'], df['volume'] rsi = ta.rsi(c, length=14).iloc[-1] mfi = ta.mfi(h, l, c, v, length=14).iloc[-1] ema200 = ta.ema(c, length=200).iloc[-1] curr_p = c.iloc[-1] # لوج حي للتأكيد print(f"🕒 {datetime.now().strftime('%H:%M:%S')} | {name: <8} | RSI:{round(rsi,1)}", flush=True) # منطق دخول الصفقات if (datetime.now() - last_signal_time).total_seconds() > 300: signal = "" # إضافة شروطك هنا (CALL/PUT) if signal: msg = f"👑 **إشارة DragonPulse**\n🌍 {name} | {signal}\n🎯 السعر: {round(curr_p, 5)}" buf = io.BytesIO() mpf.plot(df.tail(45), type='candle', style='charles', savefig=buf) buf.seek(0) send_telegram_msg(msg, is_photo=True, photo_buf=buf) last_signal_time = datetime.now() break except: continue time.sleep(2) # تشغيل النظام في Thread منفصل threading.Thread(target=global_emperor_engine, daemon=True).start() with gr.Blocks() as demo: gr.Markdown("# 🐲 DragonPulse v35.5 - FINAL") gr.Markdown("إذا استمر الخطأ في السجل، فالمشكلة في مزود الخدمة لديك.") demo.launch()