Spaces:
Build error
Build error
| import streamlit as st | |
| import datetime | |
| import pandas as pd | |
| import requests | |
| import random | |
| import os | |
| from PIL import Image | |
| from pages.utils.util import remove_existing_file | |
| from openbb_terminal.sdk import openbb | |
| from openbb.stocks import load | |
| from openbb.ta import bbands_chart, donchian_chart | |
| # from openbb_terminal.common.technical_analysis.volatility_view import display_bbands, display_donchian | |
| st.write(""" | |
| # Technical Analysis Web Application | |
| Leveraging the openbb sdk, we can build a web application to display | |
| technical analysis graphs for any stock. | |
| """) | |
| st.sidebar.header('User Input Parameters') | |
| today = datetime.date.today() | |
| def user_input_features(): | |
| ticker = st.sidebar.text_input("Ticker", 'ZIM') | |
| start_date = st.sidebar.text_input("Start Date", '2020-05-01') | |
| end_date = st.sidebar.text_input("End Date", f'{today}') | |
| # ta_range = st.sidebar.number_input("TA Range", min_value=1, max_value=50) | |
| return ticker, start_date, end_date # , ta_range | |
| symbol, start, end = user_input_features() | |
| # append random int to file name to avoid caching | |
| rand_int = str(random.randint(1, 500000)) | |
| ran_bbands_name = f"bbands-{rand_int}.png" | |
| ran_donchian_name = f"donchian-{rand_int}.png" | |
| # @remove_existing_file | |
| def build_bbands_img(data, symbol, window=15, n_std=2, export="bbands.png"): | |
| return bbands_chart(data, symbol, window, n_std, external_axes=True) | |
| # @remove_existing_file | |
| def build_donchian_img(data, symbol, export="donchian.png"): | |
| return donchian_chart(data,symbol, external_axes=True) | |
| company_name = symbol.upper() | |
| start = pd.to_datetime(start) | |
| end = pd.to_datetime(end) | |
| # Read data | |
| data = load(symbol,start, 1440, end) | |
| st.write(data) | |
| # Adjusted Close Price | |
| st.header(f"Adjusted Close Price\n {company_name}") | |
| st.line_chart(data["Close"]) | |
| donchian_img = build_donchian_img(data, symbol, ran_donchian_name) | |
| # plot ta using open bb sdk in streamlit | |
| st.header(f"Donchian") | |
| if donchian_img: | |
| st.plotly_chart(donchian_img, use_container_width=True) | |
| # get ta graph | |
| bbands_img = build_bbands_img(data, symbol, 15, 2, ran_bbands_name) | |
| # plot ta using open bb sdk in streamlit | |
| st.header(f"Bollinger Bands") | |
| # | |
| # if bbands.png exists, display it | |
| if bbands_img: | |
| print(bbands_img) | |
| st.plotly_chart(bbands_img, use_container_width=True) | |