Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -340,19 +340,19 @@ def generate_trading_signals(df):
|
|
| 340 |
df['MACD_Signal'] = np.select([(macd > signal) & (macd.shift(1) <= signal.shift(1)),
|
| 341 |
(macd < signal) & (macd.shift(1) >= signal.shift(1))],[1, -1], default=0)
|
| 342 |
|
| 343 |
-
df['RSI_Signal'] = np.where(df['RSI'] <
|
| 344 |
df['RSI_Signal'] = np.where(df['RSI'] > 90, -1, df['RSI_Signal'])
|
| 345 |
|
| 346 |
df['BB_Signal'] = np.where(df['Close'] < df['LowerBB'], 0, 0)
|
| 347 |
df['BB_Signal'] = np.where(df['Close'] > df['UpperBB'], -1, df['BB_Signal'])
|
| 348 |
|
| 349 |
-
df['Stochastic_Signal'] = np.where((df['SlowK'] <
|
| 350 |
-
df['Stochastic_Signal'] = np.where((df['SlowK'] > 90) & (df['SlowD'] >
|
| 351 |
|
| 352 |
-
df['CMF_Signal'] = np.where(df['CMF'] > 0.
|
| 353 |
|
| 354 |
df['CCI_Signal'] = np.where(df['CCI'] < -180, 1, 0)
|
| 355 |
-
df['CCI_Signal'] = np.where(df['CCI'] >
|
| 356 |
|
| 357 |
# Combined signal for stronger buy/sell points
|
| 358 |
df['Combined_Signal'] = df[['RSI_Signal', 'BB_Signal',
|
|
@@ -451,11 +451,11 @@ def plot_individual_signals(df, ticker):
|
|
| 451 |
|
| 452 |
|
| 453 |
signal_colors = {
|
| 454 |
-
'RSI_Signal': {'buy': '#36D7B7', 'sell': '
|
| 455 |
-
'BB_Signal': {'buy': '#36D7B7', 'sell': '
|
| 456 |
-
'Stochastic_Signal': {'buy': '#36D7B7', '
|
| 457 |
-
'CMF_Signal': {'buy': '#36D7B7', 'sell': '
|
| 458 |
-
'CCI_Signal': {'buy': '#36D7B7', 'sell': '
|
| 459 |
}
|
| 460 |
|
| 461 |
|
|
|
|
| 340 |
df['MACD_Signal'] = np.select([(macd > signal) & (macd.shift(1) <= signal.shift(1)),
|
| 341 |
(macd < signal) & (macd.shift(1) >= signal.shift(1))],[1, -1], default=0)
|
| 342 |
|
| 343 |
+
df['RSI_Signal'] = np.where(df['RSI'] < 25, 1, 0)
|
| 344 |
df['RSI_Signal'] = np.where(df['RSI'] > 90, -1, df['RSI_Signal'])
|
| 345 |
|
| 346 |
df['BB_Signal'] = np.where(df['Close'] < df['LowerBB'], 0, 0)
|
| 347 |
df['BB_Signal'] = np.where(df['Close'] > df['UpperBB'], -1, df['BB_Signal'])
|
| 348 |
|
| 349 |
+
df['Stochastic_Signal'] = np.where((df['SlowK'] < 15) & (df['SlowD'] < 15), 1, 0)
|
| 350 |
+
df['Stochastic_Signal'] = np.where((df['SlowK'] > 90) & (df['SlowD'] > 90), -1, df['Stochastic_Signal'])
|
| 351 |
|
| 352 |
+
df['CMF_Signal'] = np.where(df['CMF'] > 0.4, -1, np.where(df['CMF'] < -0.4, 1, 0))
|
| 353 |
|
| 354 |
df['CCI_Signal'] = np.where(df['CCI'] < -180, 1, 0)
|
| 355 |
+
df['CCI_Signal'] = np.where(df['CCI'] > 180, -1, df['CCI_Signal'])
|
| 356 |
|
| 357 |
# Combined signal for stronger buy/sell points
|
| 358 |
df['Combined_Signal'] = df[['RSI_Signal', 'BB_Signal',
|
|
|
|
| 451 |
|
| 452 |
|
| 453 |
signal_colors = {
|
| 454 |
+
'RSI_Signal': {'buy': '#36D7B7', 'sell': 'violet'}, # Light purple / Pale butter
|
| 455 |
+
'BB_Signal': {'buy': '#36D7B7', 'sell': 'violet'}, # Purple / Chiffon yellow
|
| 456 |
+
'Stochastic_Signal': {'buy': '#36D7B7', 'violet': 'red'}, # Purple / Corn silk
|
| 457 |
+
'CMF_Signal': {'buy': '#36D7B7', 'sell': 'violet'}, # Deep purple / Lemon chiffon
|
| 458 |
+
'CCI_Signal': {'buy': '#36D7B7', 'sell': 'violet'} # Dark purple / Soft maize
|
| 459 |
}
|
| 460 |
|
| 461 |
|