Update app.py
Browse files
app.py
CHANGED
|
@@ -13,7 +13,14 @@ def fetch_stock_data(ticker, start_datetime, end_datetime):
|
|
| 13 |
stock_data = yf.download(ticker, start=start_datetime, end=end_datetime)
|
| 14 |
return stock_data
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
|
|
|
| 17 |
|
| 18 |
# Function to detect head and shoulder patterns
|
| 19 |
def detect_head_shoulder(df, window=3):
|
|
@@ -203,23 +210,32 @@ def find_pivots(df):
|
|
| 203 |
|
| 204 |
# Streamlit App
|
| 205 |
def main():
|
| 206 |
-
st.title('Stock Pattern Detection App')
|
| 207 |
ticker = st.text_input('Enter Stock Ticker:', 'AAPL')
|
| 208 |
-
|
| 209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
|
| 211 |
st.info("Select Preferred Timezone:")
|
| 212 |
preferred_timezone = st.selectbox('Timezone', list(pytz.all_timezones))
|
| 213 |
|
| 214 |
-
|
| 215 |
-
|
|
|
|
| 216 |
|
| 217 |
-
start_datetime = datetime
|
| 218 |
-
end_datetime = datetime
|
| 219 |
|
| 220 |
start_datetime = pytz.timezone(preferred_timezone).localize(start_datetime)
|
| 221 |
end_datetime = pytz.timezone(preferred_timezone).localize(end_datetime)
|
| 222 |
|
|
|
|
|
|
|
|
|
|
| 223 |
if st.button('Detect Patterns'):
|
| 224 |
stock_data = fetch_stock_data(ticker, start_datetime, end_datetime)
|
| 225 |
stock_data = detect_head_shoulder(stock_data)
|
|
|
|
| 13 |
stock_data = yf.download(ticker, start=start_datetime, end=end_datetime)
|
| 14 |
return stock_data
|
| 15 |
|
| 16 |
+
def fetch_stock_data(ticker, start_datetime, end_datetime):
|
| 17 |
+
# Fetch live data using yfinance
|
| 18 |
+
stock_data = yf.download(ticker, start=start_datetime, end=end_datetime)
|
| 19 |
+
|
| 20 |
+
# Convert DatetimeIndex to a column
|
| 21 |
+
df.reset_index(inplace=True)
|
| 22 |
|
| 23 |
+
return stock_data
|
| 24 |
|
| 25 |
# Function to detect head and shoulder patterns
|
| 26 |
def detect_head_shoulder(df, window=3):
|
|
|
|
| 210 |
|
| 211 |
# Streamlit App
|
| 212 |
def main():
|
| 213 |
+
st.title('Live Stock Pattern Detection App')
|
| 214 |
ticker = st.text_input('Enter Stock Ticker:', 'AAPL')
|
| 215 |
+
|
| 216 |
+
# Placeholder for start and end date
|
| 217 |
+
start_date_placeholder = st.empty()
|
| 218 |
+
end_date_placeholder = st.empty()
|
| 219 |
+
|
| 220 |
+
start_date = start_date_placeholder.date_input('Start Date', pd.to_datetime('2022-01-01'))
|
| 221 |
+
end_date = end_date_placeholder.date_input('End Date', pd.to_datetime('2022-02-01'))
|
| 222 |
|
| 223 |
st.info("Select Preferred Timezone:")
|
| 224 |
preferred_timezone = st.selectbox('Timezone', list(pytz.all_timezones))
|
| 225 |
|
| 226 |
+
# Time selection components
|
| 227 |
+
start_hour, start_minute, start_second = st.slider('Select Start Time', 0, 23, 0), st.slider('', 0, 59, 0), st.slider('', 0, 59, 0)
|
| 228 |
+
end_hour, end_minute, end_second = st.slider('Select End Time', 0, 23, 23), st.slider('', 0, 59, 59), st.slider('', 0, 59, 59)
|
| 229 |
|
| 230 |
+
start_datetime = datetime(start_date.year, start_date.month, start_date.day, start_hour, start_minute, start_second)
|
| 231 |
+
end_datetime = datetime(end_date.year, end_date.month, end_date.day, end_hour, end_minute, end_second)
|
| 232 |
|
| 233 |
start_datetime = pytz.timezone(preferred_timezone).localize(start_datetime)
|
| 234 |
end_datetime = pytz.timezone(preferred_timezone).localize(end_datetime)
|
| 235 |
|
| 236 |
+
start_date_placeholder.info(f"Start Date (UTC): {start_datetime.strftime('%Y-%m-%d %H:%M:%S %Z')}")
|
| 237 |
+
end_date_placeholder.info(f"End Date (UTC): {end_datetime.strftime('%Y-%m-%d %H:%M:%S %Z')}")
|
| 238 |
+
|
| 239 |
if st.button('Detect Patterns'):
|
| 240 |
stock_data = fetch_stock_data(ticker, start_datetime, end_datetime)
|
| 241 |
stock_data = detect_head_shoulder(stock_data)
|