Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -5,7 +5,7 @@ import pandas_ta as ta
|
|
5 |
import matplotlib.pyplot as plt
|
6 |
|
7 |
# Caching the stock data fetch function to improve performance
|
8 |
-
@st.
|
9 |
def fetch_stock_data(ticker, period, interval):
|
10 |
return yf.download(ticker, period=period, interval=interval)
|
11 |
|
@@ -33,13 +33,17 @@ if analyze_button:
|
|
33 |
stock_data['MACD'] = macd['MACD_12_26_9']
|
34 |
stock_data['MACDSignal'] = macd['MACDs_12_26_9']
|
35 |
|
36 |
-
#
|
37 |
-
|
|
|
|
|
|
|
|
|
38 |
|
39 |
# Plotting
|
40 |
fig, ax = plt.subplots(2, 1, figsize=(10, 12), sharex=True)
|
41 |
|
42 |
-
# Price and
|
43 |
ax[0].plot(stock_data['Close'], label='Close Price', color='skyblue')
|
44 |
ax[0].plot(stock_data['SMA50'], label='50-Day SMA', color='green')
|
45 |
ax[0].plot(stock_data['SMA200'], label='200-Day SMA', color='red')
|
|
|
5 |
import matplotlib.pyplot as plt
|
6 |
|
7 |
# Caching the stock data fetch function to improve performance
|
8 |
+
@st.cache
|
9 |
def fetch_stock_data(ticker, period, interval):
|
10 |
return yf.download(ticker, period=period, interval=interval)
|
11 |
|
|
|
33 |
stock_data['MACD'] = macd['MACD_12_26_9']
|
34 |
stock_data['MACDSignal'] = macd['MACDs_12_26_9']
|
35 |
|
36 |
+
# Adjusting the section that identifies crossover points to handle NaN values.
|
37 |
+
if not stock_data[['SMA50', 'SMA200']].isna().all(axis=None): # Check if not all values are NaN
|
38 |
+
valid_data = stock_data.dropna(subset=['SMA50', 'SMA200'])
|
39 |
+
crossover_points = valid_data[(valid_data['SMA50'] > valid_data['SMA200']) & (valid_data['SMA50'].shift(1) < valid_data['SMA200'].shift(1))]
|
40 |
+
else:
|
41 |
+
crossover_points = pd.DataFrame() # Empty DataFrame if all SMA50 or SMA200 values are NaN
|
42 |
|
43 |
# Plotting
|
44 |
fig, ax = plt.subplots(2, 1, figsize=(10, 12), sharex=True)
|
45 |
|
46 |
+
# Price, SMAs, and breakout points
|
47 |
ax[0].plot(stock_data['Close'], label='Close Price', color='skyblue')
|
48 |
ax[0].plot(stock_data['SMA50'], label='50-Day SMA', color='green')
|
49 |
ax[0].plot(stock_data['SMA200'], label='200-Day SMA', color='red')
|