Update app.py
Browse files
app.py
CHANGED
|
@@ -100,14 +100,24 @@ def remove_outliers(df, epsilon):
|
|
| 100 |
return df.loc[mask].reset_index(drop=True)
|
| 101 |
|
| 102 |
# Advanced features
|
| 103 |
-
def calculate_rsi(
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
rs = avg_gain / avg_loss
|
| 110 |
-
|
|
|
|
|
|
|
|
|
|
| 111 |
|
| 112 |
def generate_advanced_features(d, other_data=None):
|
| 113 |
d = d.copy()
|
|
|
|
| 100 |
return df.loc[mask].reset_index(drop=True)
|
| 101 |
|
| 102 |
# Advanced features
|
| 103 |
+
def calculate_rsi(series, window=14):
|
| 104 |
+
# 1) compute deltas
|
| 105 |
+
delta = series.diff()
|
| 106 |
+
|
| 107 |
+
# 2) separate gains and losses as Series
|
| 108 |
+
gain = delta.clip(lower=0)
|
| 109 |
+
loss = -delta.clip(upper=0)
|
| 110 |
+
|
| 111 |
+
# 3) rolling averages
|
| 112 |
+
avg_gain = gain.rolling(window=window).mean()
|
| 113 |
+
avg_loss = loss.rolling(window=window).mean()
|
| 114 |
+
|
| 115 |
+
# 4) compute RS and RSI
|
| 116 |
rs = avg_gain / avg_loss
|
| 117 |
+
rsi = 100 - (100 / (1 + rs))
|
| 118 |
+
|
| 119 |
+
return rsi
|
| 120 |
+
|
| 121 |
|
| 122 |
def generate_advanced_features(d, other_data=None):
|
| 123 |
d = d.copy()
|