from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse import requests import asyncio import uvicorn app = FastAPI() ALPHA_VANTAGE_API_KEY = "HHSQZUIL3CQ9KTMI" SYMBOL = "XAUUSD" INTERVAL = "5min" def analyze_signal(rsi, ema50, ema200): if rsi < 30 and ema50 > ema200: return "📈 BUY - RSI rendah & EMA Golden Cross" elif rsi > 70 and ema50 < ema200: return "📉 SELL - RSI tinggi & EMA Death Cross" else: return "⏸️ NO SIGNAL" def get_technical_data(): base_url = "https://www.alphavantage.co/query" rsi_url = f"{base_url}?function=RSI&symbol={SYMBOL}&interval={INTERVAL}&time_period=14&series_type=close&apikey={ALPHA_VANTAGE_API_KEY}" ema50_url = f"{base_url}?function=EMA&symbol={SYMBOL}&interval={INTERVAL}&time_period=50&series_type=close&apikey={ALPHA_VANTAGE_API_KEY}" ema200_url = f"{base_url}?function=EMA&symbol={SYMBOL}&interval={INTERVAL}&time_period=200&series_type=close&apikey={ALPHA_VANTAGE_API_KEY}" rsi_data = requests.get(rsi_url).json() ema50_data = requests.get(ema50_url).json() ema200_data = requests.get(ema200_url).json() try: rsi = float(list(rsi_data["Technical Analysis: RSI"].values())[0]["RSI"]) ema50 = float(list(ema50_data["Technical Analysis: EMA"].values())[0]["EMA"]) ema200 = float(list(ema200_data["Technical Analysis: EMA"].values())[0]["EMA"]) return rsi, ema50, ema200 except: return None, None, None @app.get("/", response_class=HTMLResponse) async def read_root(request: Request): rsi, ema50, ema200 = get_technical_data() if rsi and ema50 and ema200: signal = analyze_signal(rsi, ema50, ema200) else: signal = "⚠️ Data tidak tersedia (limit API?)" html_content