File size: 2,938 Bytes
6ee159d
4c3edc4
 
49382de
e227d9a
be76f2f
e227d9a
 
f114d79
81f7613
be76f2f
6ee159d
 
be76f2f
6ee159d
 
49382de
6ee159d
 
 
be76f2f
6ee159d
4c3edc4
be76f2f
81f7613
49382de
 
81f7613
 
 
49382de
81f7613
4c3edc4
 
 
6ee159d
4c3edc4
81f7613
 
49382de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81f7613
49382de
9e59807
e227d9a
 
9e59807
81f7613
e227d9a
 
4c3edc4
9e59807
be76f2f
81f7613
e227d9a
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import gradio as gr
from PIL import Image
import io
import base64
import requests

# استيراد الإعدادات
from config import OPENROUTER_API_KEY, OPENROUTER_API_URL, MODEL_NAME

# تعليمات الذكاء الاصطناعي
SYSTEM_PROMPT = """
You are a professional technical analyst with 10 years of experience in financial markets.
Analyze the chart provided and answer the following:

1. What is the current trend? (Uptrend / Downtrend / Sideways)
2. Are there any key support/resistance levels?
3. What technical indicators do you see? (RSI, MACD, Bollinger Bands...)
4. Suggest a trade idea: Entry point, Stop Loss, Take Profit
5. Timeframe and Risk/Reward ratio
6. Strategy name and explanation

Answer in Arabic in a professional tone.
"""

# دالة تحويل الصورة إلى Data URI
def image_to_data_uri(img):
    buffered = io.BytesIO()
    img_format = img.format if img.format else "PNG"
    img.save(buffered, format=img_format)
    return "data:image/png;base64," + base64.b64encode(buffered.getvalue()).decode("utf-8")

# دالة التحليل
def analyze_chart(image):
    if image is None:
        return "❌ لم يتم تحميل أي صورة."

    try:
        data_uri = image_to_data_uri(image)

        response = requests.post(
            OPENROUTER_API_URL,
            headers={
                "Authorization": f"Bearer {OPENROUTER_API_KEY}",
                "Content-Type": "application/json"
            },
            json={
                "model": MODEL_NAME,
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"type": "text", "text": SYSTEM_PROMPT},
                            {"type": "image_url", "image_url": {"url": data_uri}}
                        ]
                    }
                ],
                "max_tokens": 512
            }
        )

        result = response.json()

        # التعامل مع الخطأ إذا لم يُعَدّ النموذج إجابة
        if "choices" not in result or len(result["choices"]) == 0:
            return f"❌ لم يتم العثور على إجابة من الذكاء الاصطناعي.\nالاستجابة: {result}"

        return result["choices"][0]["message"]["content"]

    except Exception as e:
        return f"❌ حدث خطأ أثناء التحليل:\n{str(e)}"

# واجهة Gradio
interface = gr.Interface(
    fn=analyze_chart,
    inputs=gr.Image(type="pil", label="تحميل مخطط التداول"),
    outputs=gr.Markdown(label="تحليل الذكاء الاصطناعي"),
    title="🤖 منصة تحليل التداول الذكية (Google Gemini)",
    description="ارسل مخططًا وسيقوم الذكاء الاصطناعي بتحليله وتقديم صفقات احترافية.",
    theme="default"
)

if __name__ == "__main__":
    interface.launch()