File size: 4,186 Bytes
ab50b27 087ef0b 9ce7bf5 087ef0b ab50b27 8675d66 087ef0b 8675d66 087ef0b 8675d66 087ef0b 8675d66 087ef0b 8675d66 087ef0b 8675d66 3c1e863 f6326dc a261fc2 34c23a9 f6326dc d2bafef 34c23a9 ea51e19 34c23a9 a261fc2 34c23a9 a261fc2 bdc34d6 a261fc2 34c23a9 f6326dc 34c23a9 ea51e19 34c23a9 a261fc2 f6326dc bdc34d6 f6326dc fb9ed32 f6326dc 3c1e863 34c23a9 f6326dc 19f5c65 f6326dc fea6772 34c23a9 a261fc2 34c23a9 ab50b27 |
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
import streamlit as st
from thronetrader import StrategicSignals
import requests
from Pandas_Market_Predictor import Pandas_Market_Predictor
import pandas as pd
# Hard-coded API key for demonstration purposes
API_KEY = "QR8F9B7T6R2SWTAT"
def fetch_alpha_vantage_data(api_key, symbol):
url = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={symbol}&interval=5min&apikey={api_key}'
response = requests.get(url)
alpha_vantage_data = response.json()
return alpha_vantage_data
def main():
st.title("Stock Trend Predictor")
# User input for stock symbol
symbol = st.text_input("Enter Stock Symbol (e.g., IBM):")
if not symbol:
st.warning("Please enter a valid stock symbol.")
st.stop()
# Use the hard-coded API key
api_key = API_KEY
# Fetch Alpha Vantage data
alpha_vantage_data = fetch_alpha_vantage_data(api_key, symbol)
# Extract relevant data from Alpha Vantage response
alpha_vantage_time_series = alpha_vantage_data.get('Time Series (5min)', {})
df = pd.DataFrame(alpha_vantage_time_series).T
df.index = pd.to_datetime(df.index)
df = df.dropna(axis=0)
# Display the raw data
st.subheader("Raw Data:")
st.write(df)
if __name__ == "__main__":
main()
# Hard-coded API key for demonstration purposes
API_KEY = "QR8F9B7T6R2SWTAT"
def fetch_alpha_vantage_data(api_key, symbol):
st.write("Fetching Alpha Vantage data...")
url = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={symbol}&interval=5min&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))
return data
def display_signals(signal_type, signals):
st.subheader(f"{signal_type} Signals:")
st.write(signals)
def main():
st.title("Stock Trend Predictor")
# Input for stock symbol
symbol = st.text_input("Enter stock symbol (e.g., AAPL):", "AAPL")
# Fetch Alpha Vantage data
alpha_vantage_data = fetch_alpha_vantage_data(API_KEY, symbol)
# Extract relevant data from Alpha Vantage response
alpha_vantage_time_series = alpha_vantage_data.get('Time Series (5min)', {})
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', '2. high': 'High', '3. low': 'Low', '4. close': 'Close', '5. volume': 'Volume'})
# Calculate indicators
df = calculate_indicators(df)
# Display stock trading signals
strategic_signals = StrategicSignals(symbol=symbol)
# Display loading message during processing
with st.spinner("Predicting signals using Strategic Indicators..."):
# Display signals
st.subheader(":orange[Strategic Indicators Trend Prediction]")
display_signals("Bollinger Bands", strategic_signals.get_bollinger_bands_signals())
display_signals("Breakout", strategic_signals.get_breakout_signals())
display_signals("Crossover", strategic_signals.get_crossover_signals())
display_signals("MACD", strategic_signals.get_macd_signals())
display_signals("RSI", strategic_signals.get_rsi_signals())
# Create predictor
my_market_predictor = Pandas_Market_Predictor(df)
# Predict Trend
indicators = ["Doji", "Inside"]
# Display loading message during prediction
with st.spinner("Predicting trend using AI ...."):
# Predict trend
trend = my_market_predictor.Trend_Detection(indicators, 10)
# Display results
st.subheader(":orange[AI Trend Prediction]")
st.write("Buy Trend :", trend['BUY'])
st.write("Sell Trend :", trend['SELL'])
# Delete the DataFrame to release memory
del df
if __name__ == "__main__":
main() |