from indicators import calculate_ema class RainbowAgent: def run(self, df, windows=[10, 20, 30, 40, 50]): for w in windows: df = calculate_ema(df, w) latest = df.iloc[-1] values = [latest[f"ema_{w}"] for w in windows] if all(earlier < later for earlier, later in zip(values, values[1:])): signal = "Strong Uptrend" elif all(earlier > later for earlier, later in zip(values, values[1:])): signal = "Strong Downtrend" else: signal = "Sideways/Neutral" return {"signal": signal}