Geek7 commited on
Commit
b073561
·
verified ·
1 Parent(s): 26d7e54

Update app.py

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