netflypsb's picture
Create app.py
4ef2d29 verified
raw
history blame
2.17 kB
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)