File size: 2,053 Bytes
6ee159d
49382de
4c3edc4
 
49382de
be76f2f
49382de
 
 
f114d79
be76f2f
6ee159d
 
be76f2f
6ee159d
 
49382de
6ee159d
 
 
be76f2f
6ee159d
4c3edc4
be76f2f
49382de
 
 
 
 
4c3edc4
 
 
49382de
 
6ee159d
4c3edc4
49382de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4c3edc4
49382de
be76f2f
49382de
 
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
import gradio as gr
import requests
from PIL import Image
import io
import base64

OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions" 
OPENROUTER_API_KEY = "YOUR_API_KEY_HERE"
MODEL_NAME = "google/gemini-flash-1.5"

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.
"""

def image_to_data_uri(img):
    buffered = io.BytesIO()
    img.save(buffered, format=img.format)
    return "data:image/png;base64," + base64.b64encode(buffered.getvalue()).decode()

def analyze_chart(image):
    if image is None:
        return "❌ لم يتم تحميل أي صورة."
    
    data_uri = image_to_data_uri(image)

    try:
        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()
        return result["choices"][0]["message"]["content"]
    except Exception as e:
        return f"❌ خطأ: {str(e)}"

interface = gr.Interface(fn=analyze_chart, inputs=gr.Image(type="pil"), outputs="markdown")
interface.launch()