| from indicators import calculate_ema | |
| class TrendWatcherAgent: | |
| def run(self, df): | |
| # Sort by time (required by ta-lib) | |
| df = df.sort_index() | |
| # Calculate EMA20 and EMA50 | |
| df = calculate_ema(df, 20) | |
| df = calculate_ema(df, 50) | |
| # Drop rows with NaN due to initial window | |
| df.dropna(subset=["ema_20", "ema_50"], inplace=True) | |
| # Get the latest row | |
| latest = df.iloc[-1] | |
| # Trend logic | |
| if latest["ema_20"] > latest["ema_50"]: | |
| return {"trend": "Uptrend", "confidence": 80} | |
| else: | |
| return {"trend": "Downtrend", "confidence": 70} | |