File size: 588 Bytes
4e8ee46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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}