|
|
|
import os |
|
import streamlit as st |
|
from PIL import Image |
|
from groq import Groq |
|
import base64 |
|
import io |
|
|
|
|
|
os.environ["GROQ_API_KEY"] = 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 |
|
|
|
|
|
client = Groq(api_key=os.environ.get("GROQ_API_KEY")) |
|
|
|
st.set_page_config(page_title="AI Trade Predictor", layout="wide") |
|
st.markdown(""" |
|
<style> |
|
.main { |
|
background-color: #0d1117; |
|
color: white; |
|
} |
|
.stButton>button { |
|
background-color: #1f6feb; |
|
color: white; |
|
font-weight: bold; |
|
} |
|
.stFileUploader label { |
|
color: #58a6ff; |
|
} |
|
</style> |
|
""", unsafe_allow_html=True) |
|
|
|
st.title("\U0001F4B0 AI Trade Predictor") |
|
st.markdown("Upload a candlestick chart image and get a trading signal analysis using AI") |
|
|
|
|
|
uploaded_file = st.file_uploader("Upload Candlestick Chart Image", type=["jpg", "png", "jpeg"]) |
|
|
|
if uploaded_file is not None: |
|
image = Image.open(uploaded_file) |
|
st.image(image, caption="Uploaded Chart", use_column_width=True) |
|
|
|
buffer = io.BytesIO() |
|
image.save(buffer, format="PNG") |
|
img_str = base64.b64encode(buffer.getvalue()).decode() |
|
|
|
if st.button("Analyze Chart \U0001F52C"): |
|
with st.spinner("Analyzing chart and generating predictions..."): |
|
prompt = f""" |
|
You are an expert trading analyst AI. |
|
Analyze the attached candlestick chart image (base64 below). |
|
Apply technical strategies like RSI, MACD, moving averages, support/resistance, candlestick patterns. |
|
Then tell: |
|
1. Whether to BUY or SELL. |
|
2. The confidence level in %. |
|
3. The best timeframe for this prediction. |
|
4. The risk level and how it might go wrong. |
|
5. Why this prediction was made. |
|
Base64 image: {img_str} |
|
""" |
|
|
|
chat_completion = client.chat.completions.create( |
|
messages=[{"role": "user", "content": prompt}], |
|
model="llama-3.3-70b-versatile" |
|
) |
|
|
|
result = chat_completion.choices[0].message.content |
|
st.markdown("### \U0001F4C8 Prediction Result") |
|
st.markdown(result) |
|
|
|
else: |
|
st.info("Please upload a candlestick chart image to begin analysis.") |
|
|