Geek7 commited on
Commit
fa89069
·
verified ·
1 Parent(s): b051429

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import yfinance as yf
3
+ import pandas as pd
4
+ import ta
5
+ import plotly.graph_objects as go
6
+
7
+ # Function to load stock data using yfinance
8
+ def get_stock_data(symbol, start_date, end_date, interval='1h'):
9
+ stock_data = yf.download(symbol, start=start_date, end=end_date, interval=interval)
10
+ return stock_data
11
+
12
+ # Function to detect Double Top pattern
13
+ def detect_double_top(data, lookback=20):
14
+ signals = pd.DataFrame(index=data.index)
15
+ signals['signal'] = 0.0
16
+
17
+ # Identify potential double top pattern
18
+ signals['double_top'] = ta.patterns.double_top(data['High'], data['Low'], data['Close'], lookback=lookback, threshold=0.02)
19
+
20
+ # Generate trading orders
21
+ signals['positions'] = signals['double_top'].diff()
22
+
23
+ return signals
24
+
25
+ # Streamlit App
26
+ def main():
27
+ st.title("Hourly Stock Price Analysis and Double Top Pattern Detection")
28
+
29
+ # Load stock data using Streamlit sidebar
30
+ symbol = st.sidebar.text_input("Enter Stock Symbol", value='AAPL')
31
+ start_date = st.sidebar.text_input("Enter Start Date", value='2022-01-01')
32
+ end_date = st.sidebar.text_input("Enter End Date", value='2022-02-01')
33
+ stock_prices = get_stock_data(symbol, start_date, end_date, interval='1h')
34
+
35
+ # Detect Double Top Pattern
36
+ signals = detect_double_top(stock_prices)
37
+
38
+ # Plotting Historical Stock Prices with Double Top Pattern Signals
39
+ st.subheader("Hourly Historical Stock Prices with Double Top Pattern Signals")
40
+ fig = go.Figure()
41
+
42
+ fig.add_trace(go.Candlestick(x=stock_prices.index,
43
+ open=stock_prices['Open'],
44
+ high=stock_prices['High'],
45
+ low=stock_prices['Low'],
46
+ close=stock_prices['Close'],
47
+ name='Candlesticks'))
48
+
49
+ # Plot Double Top pattern signals
50
+ fig.add_trace(go.Scatter(x=signals.index[signals['double_top'] == 1],
51
+ y=stock_prices['High'][signals['double_top'] == 1],
52
+ mode='markers',
53
+ marker=dict(color='red', size=10),
54
+ name='Double Top Signal'))
55
+
56
+ st.plotly_chart(fig)
57
+
58
+ if __name__ == "__main__":
59
+ main()