"""
=========================================
CV6 AI Trading OS
Signal Manager
=========================================
"""


class SignalManager:

    def generate_signal(
        self,
        ema: float,
        rsi: float,
        macd: float
    ):

        buy_score = 0
        sell_score = 0

        # EMA
        if ema > 0:
            buy_score += 1
        else:
            sell_score += 1

        # RSI
        if rsi < 30:
            buy_score += 1
        elif rsi > 70:
            sell_score += 1

        # MACD
        if macd > 0:
            buy_score += 1
        else:
            sell_score += 1

        # Final Decision
        if buy_score > sell_score:
            signal = "BUY"
        elif sell_score > buy_score:
            signal = "SELL"
        else:
            signal = "HOLD"

        confidence = (
            max(buy_score, sell_score) / 3
        ) * 100

        return {
            "signal": signal,
            "buy_score": buy_score,
            "sell_score": sell_score,
            "confidence": confidence,
            "ema": ema,
            "rsi": rsi,
            "macd": macd
        }