Dragon-Gemy-VIP / app.py
gemyeeii's picture
Update app.py
bb04637 verified
Raw
History Blame Contribute Delete
4.93 kB
import os, time, requests, threading, io, sys
from datetime import datetime, timedelta
import pandas as pd
import pandas_ta as ta
import gradio as gr
import mplfinance as mpf
import urllib3
# تعطيل تحذيرات SSL القديمة لضمان استقرار السيرفر
urllib3.disable_warnings()
# --- إعدادات الوصول ---
TOKEN = "8721841884:AAEf944fZYf7ESHnGIzFRchyD_VaduyjflY"
CHAT_ID = "8238827370"
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"
}
last_trade_time = datetime.now() - timedelta(minutes=10)
# --- نظام الإرسال الفولاذي (تخطي أخطاء الـ SSL الظاهرة في الصور) ---
def send_telegram_direct(message, image_data=None):
def worker():
url = f"https://api.telegram.org/bot{TOKEN}/"
payload = {'chat_id': CHAT_ID, 'parse_mode': 'Markdown'}
try:
if image_data:
files = {'photo': ('chart.png', image_data.getvalue(), 'image/png')}
requests.post(url + "sendPhoto", data={**payload, 'caption': message}, files=files, timeout=30, verify=False)
else:
requests.post(url + "sendMessage", data={**payload, 'text': message}, timeout=30, verify=False)
except: pass
threading.Thread(target=worker).start()
def get_super_analysis(df):
# 1. مدرسة الفيبوناتشي الذهبية
high, low = df['high'].max(), df['low'].min()
fib618 = high - (0.618 * (high - low))
fib50 = high - (0.50 * (high - low))
# 2. مدرسة السيولة (Bollinger Bands)
bb = ta.bbands(df['close'], length=20, std=2)
# 3. مدرسة الزخم (RSI + MACD + Stochastic)
rsi = ta.rsi(df['close'], length=14).iloc[-1]
stoch = ta.stoch(df['high'], df['low'], df['close']).iloc[-1]
# 4. مدرسة العرض والطلب (أقوى مستويات)
sup = df['low'].tail(30).min()
res = df['high'].tail(30).max()
return fib618, fib50, bb, rsi, stoch, sup, res
def global_emperor_engine():
global last_trade_time
print("🚀 DRAGON PULSE v27.0 - ULTIMATE ARSENAL START", flush=True)
send_telegram_direct("🐲 **DragonPulse v27.0 [الإصدار المدمر]**\n✅ تم دمج 5 مدارس تحليلية\n⚡ نظام الربط الفولاذي مفعل لتخطي أخطاء SSL")
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'}, timeout=10).json()
data = r['chart']['result'][0]
df = pd.DataFrame(data['indicators']['quote'][0])
df.index = pd.to_datetime(data['timestamp'], unit='s')
df = df.dropna()
fib618, fib50, bb, rsi, stoch, sup, res = get_super_analysis(df)
curr_p = df['close'].iloc[-1]
# --- شروط دخول الترسانة (دقة 95% وسرعة قصوى) ---
if (datetime.now() - last_trade_time).total_seconds() > 150: # صفقات كل 2.5 دقيقة
signal = ""
# شرط الشراء الخماسي (فيبو + سيولة + دعم + زخم + برايس أكشن)
if (curr_p <= fib618 or curr_p <= bb['BBL_20_2.0'].iloc[-1] or curr_p <= sup) and rsi < 45:
if stoch['STOCHk_14_3_3'] < 20 and df['close'].iloc[-1] > df['open'].iloc[-1]:
signal = "CALL 🟢 [ULTIMATE]"
# شرط البيع الخماسي
elif (curr_p >= fib618 or curr_p >= bb['BBU_20_2.0'].iloc[-1] or curr_p >= res) and rsi > 55:
if stoch['STOCHk_14_3_3'] > 80 and df['close'].iloc[-1] < df['open'].iloc[-1]:
signal = "PUT 🔴 [ULTIMATE]"
if signal:
msg = (f"🚨 **DragonPulse v27.0**\n🌍 الزوج: {name}\n📊 الإشارة: {signal}\n🎯 السعر: {round(curr_p, 5)}\n⏳ مدة: 2 دقيقة")
buf = io.BytesIO()
mpf.plot(df.tail(30), type='candle', style='charles', savefig=buf)
buf.seek(0)
send_telegram_direct(msg, image_data=buf)
last_trade_time = datetime.now()
break
except: continue
time.sleep(0.5)
threading.Thread(target=global_emperor_engine, daemon=True).start()
with gr.Blocks() as demo: gr.Markdown("# 🐲 DragonPulse v27.0 - Ultimate Arsenal")
demo.launch()