netflypsb commited on
Commit
03e5d92
·
verified ·
1 Parent(s): 8863cb4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import yfinance as yf
3
+ import pandas as pd
4
+ import plotly.graph_objects as go
5
+ from datetime import datetime
6
+
7
+ def vsa_advanced_analysis(data):
8
+ signals = []
9
+ for i in range(3, len(data)):
10
+ if data['Close'][i] > data['Close'][i-1] and data['Volume'][i] > data['Volume'][i-1] and data['Close'][i-1] > data['Close'][i-2]:
11
+ signals.append((data.index[i], 'Buy', data['Close'][i]))
12
+ elif data['Close'][i] < data['Close'][i-1] and data['Volume'][i] > data['Volume'][i-1] and data['Close'][i-1] < data['Close'][i-2]:
13
+ signals.append((data.index[i], 'Sell', data['Close'][i]))
14
+ # Example of adding more advanced patterns
15
+ if data['Volume'][i] > data['Volume'][i-1] * 1.5 and data['Close'][i] < data['Open'][i]:
16
+ signals.append((data.index[i], 'Selling Climax', data['Close'][i]))
17
+ return signals
18
+
19
+ def plot_signals_advanced(data, signals):
20
+ fig = go.Figure()
21
+ fig.add_trace(go.Candlestick(x=data.index,
22
+ open=data['Open'],
23
+ high=data['High'],
24
+ low=data['Low'],
25
+ close=data['Close'],
26
+ name='Candlestick'))
27
+ for signal in signals:
28
+ if signal[1] == 'Buy':
29
+ fig.add_trace(go.Scatter(x=[signal[0]], y=[signal[2]], mode='markers', marker=dict(color='green', size=10), name='Buy Signal'))
30
+ elif signal[1] == 'Sell':
31
+ fig.add_trace(go.Scatter(x=[signal[0]], y=[signal[2]], mode='markers', marker=dict(color='red', size=10), name='Sell Signal'))
32
+ elif signal[1] == 'Selling Climax':
33
+ fig.add_trace(go.Scatter(x=[signal[0]], y=[signal[2]], mode='markers', marker=dict(color='orange', size=10), name='Selling Climax'))
34
+ fig.update_layout(title='Stock Price with Buy and Sell Signals', xaxis_title='Date', yaxis_title='Price')
35
+ st.plotly_chart(fig)
36
+
37
+ def main():
38
+ st.title('Advanced VSA Stock Analyzer')
39
+ st.write('Input a stock ticker symbol to analyze and generate buy and sell signals using advanced Volume Spread Analysis (VSA).')
40
+
41
+ ticker = st.text_input('Stock Ticker Symbol', 'AAPL')
42
+ start_date = st.date_input('Start Date', datetime(2020, 1, 1))
43
+ end_date = st.date_input('End Date', datetime.now())
44
+
45
+ if st.button('Analyze'):
46
+ data = yf.download(ticker, start=start_date, end=end_date)
47
+ if data.empty:
48
+ st.write('No data found for the selected stock ticker and date range.')
49
+ else:
50
+ signals = vsa_advanced_analysis(data)
51
+ st.write(f'Found {len(signals)} signals.')
52
+ if signals:
53
+ plot_signals_advanced(data, signals)
54
+ signals_df = pd.DataFrame(signals, columns=['Date', 'Signal', 'Price'])
55
+ st.write('Buy and Sell Signals:')
56
+ st.dataframe(signals_df)
57
+ else:
58
+ st.write('No buy or sell signals found for the selected stock ticker and date range.')
59
+
60
+ if __name__ == '__main__':
61
+ main()