File size: 2,710 Bytes
3f96245 adbc0ad 3f96245 d7fdf9f 3f96245 dd448e5 3f96245 6296cba 3f96245 adbc0ad b5416e9 76337a5 adbc0ad df39da3 235c728 df39da3 adbc0ad d7fdf9f df39da3 d7fdf9f 3f96245 dd448e5 3f96245 dd448e5 6296cba dd448e5 adbc0ad ecb9610 adbc0ad d7fdf9f ecb9610 d7fdf9f adbc0ad d7fdf9f adbc0ad dd448e5 adbc0ad 3f96245 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import streamlit as st
import requests
from Pandas_Market_Predictor import Pandas_Market_Predictor
import pandas as pd
from sklearn.decomposition import PCA
# Hard-coded API key for demonstration purposes
API_KEY = "QR8F9B7T6R2SWTAT"
def fetch_alpha_vantage_data(api_key):
url = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=60min&apikey={api_key}'
response = requests.get(url)
alpha_vantage_data = response.json()
return alpha_vantage_data
def calculate_indicators(data):
# Convert all columns to numeric
data = data.apply(pd.to_numeric, errors='coerce')
# Example: Simple condition for doji and inside
data['Doji'] = abs(data['close'] - data['open']) <= 0.01 * (data['high'] - data['low'])
data['Inside'] = (data['high'] < data['high'].shift(1)) & (data['low'] > data['low'].shift(1))
# Include the necessary columns from the original dataset
data['open'] = data['open_original']
data['high'] = data['high_original']
data['low'] = data['low_original']
return data
def apply_pca(data, n_components=5):
pca = PCA(n_components=n_components)
reduced_data = pca.fit_transform(data)
return pd.DataFrame(reduced_data, index=data.index, columns=[f'component_{i+1}' for i in range(n_components)])
def main():
st.title("Stock Trend Predictor")
# Use the hard-coded API key
api_key = API_KEY
# Fetch Alpha Vantage data
alpha_vantage_data = fetch_alpha_vantage_data(api_key)
# Extract relevant data from Alpha Vantage response
alpha_vantage_time_series = alpha_vantage_data.get('Time Series (60min)', {})
df = pd.DataFrame(alpha_vantage_time_series).T
df.index = pd.to_datetime(df.index)
df = df.dropna(axis=0)
# Rename columns
df = df.rename(columns={'1. open': 'open_original', '2. high': 'high_original', '3. low': 'low_original', '4. close': 'Close', '5. volume': 'volume'})
# Apply PCA for dimensionality reduction
df_reduced = apply_pca(df[['open_original', 'high_original', 'low_original', 'Close', 'volume']])
# Calculate indicators on reduced data
df_reduced = calculate_indicators(df_reduced)
# Create predictor
my_market_predictor = Pandas_Market_Predictor(df_reduced)
# Predict Trend
indicators = ["Doji", "Inside"]
trend = my_market_predictor.Trend_Detection(indicators, 10)
# Display results
st.subheader("Predicted Trend:")
st.write("Buy Trend :", trend['BUY'])
st.write("Sell Trend :", trend['SELL'])
st.write(f"Standard Deviation Percentage: {my_market_predictor.PERCENT_STD}%")
# Delete the DataFrame to release memory
del df
if __name__ == "__main__":
main() |