JayLacoma commited on
Commit
887baad
·
verified ·
1 Parent(s): f97c064

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -25
app.py CHANGED
@@ -321,7 +321,10 @@ def calculate_cci(df, window=20):
321
  cci = (typical_price - sma) / (0.015 * mean_deviation)
322
  return cci
323
 
324
- def generate_trading_signals(df):
 
 
 
325
  # Calculate various indicators
326
  df['SMA_30'] = calculate_sma(df, 30)
327
  df['SMA_100'] = calculate_sma(df, 100)
@@ -333,34 +336,44 @@ def generate_trading_signals(df):
333
  df['CMF'] = calculate_cmf(df)
334
  df['CCI'] = calculate_cci(df)
335
 
336
- # Generate trading signals
337
- df['SMA_Signal'] = np.where(df['SMA_30'] > df['SMA_100'], 1, 0)
 
338
 
339
  macd, signal = calculate_macd(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'] < 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'] > 95) & (df['SlowD'] > 95), -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'] < -195, 1, 0)
355
- df['CCI_Signal'] = np.where(df['CCI'] > 190, -1, df['CCI_Signal'])
356
-
357
- # Combined signal for stronger buy/sell points
358
- df['Combined_Signal'] = df[['RSI_Signal', 'BB_Signal',
359
- 'Stochastic_Signal', 'CMF_Signal',
360
- 'CCI_Signal']].sum(axis=1)
361
-
362
  return df
363
 
 
364
  def plot_combined_signals(df, ticker):
365
  # Create a figure
366
  fig = go.Figure()
@@ -451,11 +464,11 @@ def plot_individual_signals(df, ticker):
451
 
452
 
453
  signal_colors = {
454
- 'RSI_Signal': {'buy': 'blueviolet', 'sell': 'lightpink'}, # Light purple / Pale butter
455
- 'BB_Signal': {'buy': 'blueviolet', 'sell': 'lightpink'}, # Purple / Chiffon yellow
456
- 'Stochastic_Signal': {'buy': 'blueviolet', 'sell': 'lightpink'}, # Purple / Corn silk
457
- 'CMF_Signal': {'buy': 'blueviolet', 'sell': 'lightpink'}, # Deep purple / Lemon chiffon
458
- 'CCI_Signal': {'buy': 'blueviolet', 'sell': 'lightpink'} # Dark purple / Soft maize
459
  }
460
 
461
 
 
321
  cci = (typical_price - sma) / (0.015 * mean_deviation)
322
  return cci
323
 
324
+ import numpy as np
325
+ import pandas as pd
326
+
327
+ def generate_ultra_strict_signals(df):
328
  # Calculate various indicators
329
  df['SMA_30'] = calculate_sma(df, 30)
330
  df['SMA_100'] = calculate_sma(df, 100)
 
336
  df['CMF'] = calculate_cmf(df)
337
  df['CCI'] = calculate_cci(df)
338
 
339
+ # Ultra-strict SMA Signal - Require at least 3% difference
340
+ df['SMA_Signal'] = np.where((df['SMA_30'] > df['SMA_100']) &
341
+ ((df['SMA_30'] - df['SMA_100']) / df['SMA_100'] > 0.03), 1, 0)
342
 
343
  macd, signal = calculate_macd(df)
 
 
 
 
 
344
 
345
+ # Ultra-strict MACD Signal - Require a difference of at least 1.0
346
+ df['MACD_Signal'] = np.select([
347
+ (macd > signal) & (macd.shift(1) <= signal.shift(1)) & ((macd - signal) > 1.0),
348
+ (macd < signal) & (macd.shift(1) >= signal.shift(1)) & ((signal - macd) > 1.0)
349
+ ], [1, -1], default=0)
350
+
351
+ # Ultra-strict RSI Signal - Extreme thresholds
352
+ df['RSI_Signal'] = np.where(df['RSI'] < 15, 1, 0)
353
+ df['RSI_Signal'] = np.where(df['RSI'] > 85, -1, df['RSI_Signal'])
354
+
355
+ # Ultra-strict Bollinger Bands Signal - Require extreme deviations
356
+ df['BB_Signal'] = np.where(df['Close'] < df['LowerBB'] * 0.97, 1, 0)
357
+ df['BB_Signal'] = np.where(df['Close'] > df['UpperBB'] * 1.03, -1, df['BB_Signal'])
358
 
359
+ # Ultra-strict Stochastic Signal - Extreme overbought/oversold conditions
360
+ df['Stochastic_Signal'] = np.where((df['SlowK'] < 5) & (df['SlowD'] < 5), 1, 0)
361
  df['Stochastic_Signal'] = np.where((df['SlowK'] > 95) & (df['SlowD'] > 95), -1, df['Stochastic_Signal'])
362
 
363
+ # Ultra-strict CMF Signal - Require stronger money flow confirmation
364
+ df['CMF_Signal'] = np.where(df['CMF'] > 0.5, -1, np.where(df['CMF'] < -0.5, 1, 0))
365
+
366
+ # Ultra-strict CCI Signal - Require extreme deviations
367
+ df['CCI_Signal'] = np.where(df['CCI'] < -250, 1, 0)
368
+ df['CCI_Signal'] = np.where(df['CCI'] > 250, -1, df['CCI_Signal'])
369
+
370
+ # Combined signal for ultra-strict confirmations
371
+ df['Combined_Signal'] = df[['MACD_Signal', 'RSI_Signal', 'BB_Signal',
372
+ 'Stochastic_Signal', 'CMF_Signal', 'CCI_Signal']].sum(axis=1)
373
 
 
 
 
 
 
 
 
 
374
  return df
375
 
376
+
377
  def plot_combined_signals(df, ticker):
378
  # Create a figure
379
  fig = go.Figure()
 
464
 
465
 
466
  signal_colors = {
467
+ 'RSI_Signal': {'buy': 'violet', 'sell': 'lightpink'}, # Light purple / Pale butter
468
+ 'BB_Signal': {'buy': 'violet', 'sell': 'lightpink'}, # Purple / Chiffon yellow
469
+ 'Stochastic_Signal': {'buy': 'violet', 'sell': 'lightpink'}, # Purple / Corn silk
470
+ 'CMF_Signal': {'buy': 'violet', 'sell': 'lightpink'}, # Deep purple / Lemon chiffon
471
+ 'CCI_Signal': {'buy': 'violet', 'sell': 'lightpink'} # Dark purple / Soft maize
472
  }
473
 
474