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)
|