Geek7 commited on
Commit
8b59267
·
verified ·
1 Parent(s): b41da8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -22
app.py CHANGED
@@ -2,6 +2,9 @@ import streamlit as st
2
  import requests
3
  from Pandas_Market_Predictor import Pandas_Market_Predictor
4
  import pandas as pd
 
 
 
5
 
6
  # Hard-coded API key for demonstration purposes
7
  API_KEY = "QR8F9B7T6R2SWTAT"
@@ -13,16 +16,23 @@ def fetch_alpha_vantage_data(api_key):
13
  return alpha_vantage_data
14
 
15
  def calculate_indicators(data):
16
- # Convert all columns to numeric
17
  data = data.apply(pd.to_numeric, errors='coerce')
18
-
19
- # Example: Simple condition for doji and inside
20
- data['Doji'] = abs(data['Close'] - data['open']) <= 0.01 * (data['high'] - data['low'])
21
- data['Inside'] = (data['high'] < data['high'].shift(1)) & (data['low'] > data['low'].shift(1))
22
  return data
23
 
 
 
 
 
 
 
 
 
 
 
24
  def main():
25
- st.title("Stock Trend Predictor")
26
 
27
  # Use the hard-coded API key
28
  api_key = API_KEY
@@ -37,7 +47,7 @@ def main():
37
  df = df.dropna(axis=0)
38
 
39
  # Rename columns
40
- df = df.rename(columns={'1. open': 'open', '2. high': 'high', '3. low': 'low', '4. close': 'Close', '5. volume': 'volume'})
41
 
42
  # Calculate indicators
43
  df = calculate_indicators(df)
@@ -45,21 +55,22 @@ def main():
45
  # Create predictor
46
  my_market_predictor = Pandas_Market_Predictor(df)
47
 
48
- # Predict Trend
49
- indicators = ["Doji", "Inside"]
50
- trend = my_market_predictor.Trend_Detection(indicators, 10)
51
-
52
- # Display results
53
- st.subheader("Predicted Trend:")
54
- st.write("Buy Trend :", trend['BUY'])
55
- st.write("Sell Trend :", trend['SELL'])
56
-
57
- # Calculate and display Support and Resistance Levels for the latest data point
58
- latest_data_point = df.iloc[-1]
59
- levels = my_market_predictor.Support_Resistance_Estimation_Tool(indicators, latest_data_point)
60
- st.subheader("Support and Resistance Levels:")
61
- st.write("Support Level:", levels.get('Support', 'Not Available'))
62
- st.write("Resistance Level:", levels.get('Resistance', 'Not Available'))
 
63
 
64
  # Delete the DataFrame to release memory
65
  del df
 
2
  import requests
3
  from Pandas_Market_Predictor import Pandas_Market_Predictor
4
  import pandas as pd
5
+ from sklearn.model_selection import train_test_split
6
+ from sklearn.linear_model import LinearRegression
7
+ from sklearn.metrics import mean_squared_error, r2_score
8
 
9
  # Hard-coded API key for demonstration purposes
10
  API_KEY = "QR8F9B7T6R2SWTAT"
 
16
  return alpha_vantage_data
17
 
18
  def calculate_indicators(data):
 
19
  data = data.apply(pd.to_numeric, errors='coerce')
20
+ data['Doji'] = abs(data['Close'] - data['Open']) <= 0.01 * (data['High'] - data['Low'])
21
+ data['Inside'] = (data['High'] < data['High'].shift(1)) & (data['Low'] > data['Low'].shift(1))
 
 
22
  return data
23
 
24
+ def prepare_data(data, target_column='Close'):
25
+ X = data.drop(target_column, axis=1)
26
+ y = data[target_column]
27
+ return X, y
28
+
29
+ def train_linear_regression(X_train, y_train):
30
+ model = LinearRegression()
31
+ model.fit(X_train, y_train)
32
+ return model
33
+
34
  def main():
35
+ st.title("Stock Price Predictor")
36
 
37
  # Use the hard-coded API key
38
  api_key = API_KEY
 
47
  df = df.dropna(axis=0)
48
 
49
  # Rename columns
50
+ df = df.rename(columns={'1. open': 'Open', '2. high': 'High', '3. low': 'Low', '4. close': 'Close', '5. volume': 'Volume'})
51
 
52
  # Calculate indicators
53
  df = calculate_indicators(df)
 
55
  # Create predictor
56
  my_market_predictor = Pandas_Market_Predictor(df)
57
 
58
+ # Prepare data for linear regression
59
+ X, y = prepare_data(df)
60
+
61
+ # Split data into training and testing sets
62
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
63
+
64
+ # Train linear regression model
65
+ model = train_linear_regression(X_train, y_train)
66
+
67
+ # Make predictions on the test set
68
+ y_pred = model.predict(X_test)
69
+
70
+ # Display linear regression results
71
+ st.subheader("Linear Regression Results:")
72
+ st.write("Mean Squared Error:", mean_squared_error(y_test, y_pred))
73
+ st.write("R-squared Score:", r2_score(y_test, y_pred))
74
 
75
  # Delete the DataFrame to release memory
76
  del df