import streamlit as st from data_fetcher.yfinance_client import fetch_intraday_data from indicators.ema import calculate_ema from indicators.rsi import calculate_rsi from indicators.macd import calculate_macd from indicators.bollinger_bands import calculate_bollinger_bands from signals.strategy import generate_combined_signals from utils.plotting import plot_stock_data_with_signals import pandas as pd # Streamlit app title st.title('Stock Intraday Signal App') # Introduction and instructions st.write(""" ## Introduction Welcome to the Stock Intraday Signal App! This application analyzes stock data to generate buy/sell signals based on technical indicators such as EMA, RSI, MACD, and Bollinger Bands. It's designed to help day traders make informed decisions. ## How to Use 1. Enter a stock symbol in the sidebar. 2. Choose the date range for the analysis. 3. Click on "Analyze" to view the stock data, indicators, and signals. """) # Sidebar inputs st.sidebar.header('User Input Parameters') stock_symbol = st.sidebar.text_input('Stock Symbol', value='AAPL', max_chars=5) start_date = st.sidebar.date_input('Start Date') end_date = st.sidebar.date_input('End Date') analyze_button = st.sidebar.button('Analyze') # Main functionality if analyze_button: # Fetch stock data st.write(f"Fetching data for {stock_symbol} from {start_date} to {end_date}...") data = fetch_intraday_data(stock_symbol, start_date.isoformat(), end_date.isoformat()) if data.empty: st.error("No data found for the given parameters. Please try different dates or stock symbols.") else: # Calculate indicators st.write("Calculating indicators...") ema_periods = [20, 50] # Example periods for EMA data = calculate_ema(data, ema_periods) data = calculate_rsi(data) data = calculate_macd(data) data = calculate_bollinger_bands(data) # Generate signals st.write("Generating signals...") data = generate_combined_signals(data) # Plot results st.write("Visualizing data, indicators, and signals...") plot_stock_data_with_signals(data)