Geek7 commited on
Commit
4231bf2
·
verified ·
1 Parent(s): 1226aa0

Update app.py

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