Geek7 commited on
Commit
a2bfd8d
·
verified ·
1 Parent(s): 357e80b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -0
app.py CHANGED
@@ -43,5 +43,87 @@ def main():
43
  st.balloons()
44
  st.stop()
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  if __name__ == "__main__":
47
  main()
 
43
  st.balloons()
44
  st.stop()
45
 
46
+ if __name__ == "__main__":
47
+ main()
48
+
49
+
50
+
51
+
52
+ # Hard-coded API key for demonstration purposes
53
+ API_KEY = "QR8F9B7T6R2SWTAT"
54
+
55
+ def fetch_alpha_vantage_data(api_key, symbol):
56
+
57
+ url = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={symbol}&interval=5min&apikey={api_key}'
58
+ response = requests.get(url)
59
+ alpha_vantage_data = response.json()
60
+ return alpha_vantage_data
61
+
62
+ def calculate_indicators(data):
63
+ # Convert all columns to numeric
64
+ data = data.apply(pd.to_numeric, errors='coerce')
65
+
66
+ # Example: Simple condition for doji and inside
67
+ data['Doji'] = abs(data['Close'] - data['Open']) <= 0.01 * (data['High'] - data['Low'])
68
+ data['Inside'] = (data['High'] < data['High'].shift(1)) & (data['Low'] > data['Low'].shift(1))
69
+ return data
70
+
71
+ def display_signals(signal_type, signals):
72
+ st.subheader(f"{signal_type} Signals:")
73
+ st.write(signals)
74
+
75
+ def main():
76
+ st.title("Stock Trend Predictor")
77
+
78
+ # Input for stock symbol
79
+ symbol = st.text_input("Enter stock symbol (e.g., AAPL):", "AAPL")
80
+
81
+ # Fetch Alpha Vantage data
82
+ alpha_vantage_data = fetch_alpha_vantage_data(API_KEY, symbol)
83
+
84
+ # Extract relevant data from Alpha Vantage response
85
+ alpha_vantage_time_series = alpha_vantage_data.get('Time Series (5min)', {})
86
+ df = pd.DataFrame(alpha_vantage_time_series).T
87
+ df.index = pd.to_datetime(df.index)
88
+ df = df.dropna(axis=0)
89
+
90
+ # Rename columns
91
+ df = df.rename(columns={'1. open': 'Open', '2. high': 'High', '3. low': 'Low', '4. close': 'Close', '5. volume': 'Volume'})
92
+
93
+ # Calculate indicators
94
+ df = calculate_indicators(df)
95
+
96
+ # Display stock trading signals
97
+ strategic_signals = StrategicSignals(symbol=symbol)
98
+
99
+ # Display loading message during processing
100
+ with st.spinner("Predicting signals using Strategic Indicators..."):
101
+ # Display signals
102
+ st.subheader(":orange[Strategic Indicators Trend Prediction]")
103
+ display_signals("Bollinger Bands", strategic_signals.get_bollinger_bands_signals())
104
+ display_signals("Breakout", strategic_signals.get_breakout_signals())
105
+ display_signals("Crossover", strategic_signals.get_crossover_signals())
106
+ display_signals("MACD", strategic_signals.get_macd_signals())
107
+ display_signals("RSI", strategic_signals.get_rsi_signals())
108
+
109
+ # Create predictor
110
+ my_market_predictor = Pandas_Market_Predictor(df)
111
+
112
+ # Predict Trend
113
+ indicators = ["Doji", "Inside"]
114
+
115
+ # Display loading message during prediction
116
+ with st.spinner("Predicting trend using AI ...."):
117
+ # Predict trend
118
+ trend = my_market_predictor.Trend_Detection(indicators, 10)
119
+
120
+ # Display results
121
+ st.subheader(":orange[AI Trend Prediction]")
122
+ st.write("Buy Trend :", trend['BUY'])
123
+ st.write("Sell Trend :", trend['SELL'])
124
+
125
+ # Delete the DataFrame to release memory
126
+ del df
127
+
128
  if __name__ == "__main__":
129
  main()