netflypsb commited on
Commit
ef2ec49
·
verified ·
1 Parent(s): d846b60

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -0
app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import yfinance as yf
3
+ import plotly.graph_objects as go
4
+ import pandas as pd
5
+
6
+ def fetch_data(ticker):
7
+ data = yf.download(ticker, start='2020-01-01', end='2024-01-01')
8
+ data['MA Fast'] = data['Close'].rolling(window=5).mean()
9
+ data['MA Slow'] = data['Close'].rolling(window=10).mean()
10
+ data['Upper Band'], data['Lower Band'] = data['Close'].rolling(20).mean() + 2*data['Close'].rolling(20).std(), data['Close'].rolling(20).mean() - 2*data['Close'].rolling(20).std()
11
+ return data
12
+
13
+ def plot_data(data):
14
+ fig = go.Figure()
15
+ # Adding Candles
16
+ fig.add_trace(go.Candlestick(x=data.index, open=data['Open'], high=data['High'], low=data['Low'], close=data['Close'], name='Candlesticks'))
17
+ # Adding MA lines
18
+ fig.add_trace(go.Scatter(x=data.index, y=data['MA Fast'], line=dict(color='blue', width=1.5), name='MA Fast'))
19
+ fig.add_trace(go.Scatter(x=data.index, y=data['MA Slow'], line=dict(color='red', width=1.5), name='MA Slow'))
20
+ # Adding Bollinger Bands
21
+ fig.add_trace(go.Scatter(x=data.index, y=data['Upper Band'], line=dict(color='green', width=1), name='Upper Band'))
22
+ fig.add_trace(go.Scatter(x=data.index, y=data['Lower Band'], line=dict(color='green', width=1), name='Lower Band'))
23
+
24
+ # Identify buy and sell signals
25
+ buys = data[(data['Close'] > data['Lower Band']) & (data['Close'] < data['MA Slow'])]
26
+ sells = data[(data['Close'] < data['Upper Band']) & (data['Close'] > data['MA Fast'])]
27
+
28
+ fig.add_trace(go.Scatter(x=buys.index, y=buys['Close'], mode='markers', marker=dict(color='yellow', size=10), name='Buy Signal'))
29
+ fig.add_trace(go.Scatter(x=sells.index, y=sells['Close'], mode='markers', marker=dict(color='purple', size=10), name='Sell Signal'))
30
+
31
+ return fig
32
+
33
+ # Streamlit user interface
34
+ st.sidebar.header('BBMA Re-entry Strategy')
35
+ ticker = st.sidebar.text_input('Enter ticker symbol', value='AAPL')
36
+ button = st.sidebar.button('Analyze')
37
+
38
+ if button:
39
+ data = fetch_data(ticker)
40
+ fig = plot_data(data)
41
+ st.plotly_chart(fig, use_container_width=True)
42
+