Update app.py
Browse files
app.py
CHANGED
@@ -2,7 +2,126 @@ import streamlit as st
|
|
2 |
import yfinance as yf
|
3 |
import pandas as pd
|
4 |
import plotly.graph_objs as go
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
def fetch_data(ticker, start_date, end_date):
|
8 |
data = yf.download(ticker, start=start_date, end=end_date)
|
@@ -84,13 +203,20 @@ def plot_data(data):
|
|
84 |
|
85 |
def main():
|
86 |
st.title("OMA Ally BBMA Trading Strategy Visualization")
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
start_date = st.date_input("Select the start date")
|
89 |
end_date = st.date_input("Select the end date")
|
90 |
|
91 |
if st.button("Analyze"):
|
92 |
-
data = fetch_data(
|
93 |
-
weekly_data = fetch_weekly_data(
|
94 |
data = calculate_indicators(data)
|
95 |
data = identify_signals(data)
|
96 |
data = confirm_signals_with_weekly(data, weekly_data)
|
|
|
2 |
import yfinance as yf
|
3 |
import pandas as pd
|
4 |
import plotly.graph_objs as go
|
5 |
+
from st_pages import show_pages_from_config, add_page_title
|
6 |
+
|
7 |
+
# Load pages from the TOML configuration file
|
8 |
+
show_pages_from_config(".streamlit/pages_sections.toml")
|
9 |
+
|
10 |
+
add_page_title("BBMA Oma Ally", "🌐") # Optionally add a title and icon to the current page
|
11 |
+
|
12 |
+
# Define ticker symbols for various stock exchanges
|
13 |
+
stock_exchanges = {
|
14 |
+
"Kuala Lumpur Stock Exchange (KLSE)": {
|
15 |
+
"CIMB Group Holdings Bhd - CIMB": "1023.KL",
|
16 |
+
"RHB Bank Bhd - RHBBANK": "1066.KL",
|
17 |
+
"Hong Leong Financial Group Bhd - HLFG": "1082.KL",
|
18 |
+
"Malayan Banking Bhd - MAYBANK": "1155.KL",
|
19 |
+
"Public Bank Bhd - PBBANK": "1295.KL",
|
20 |
+
"IOI Corporation Bhd - IOICORP": "1961.KL",
|
21 |
+
"Kuala Lumpur Kepong Bhd - KLK": "2445.KL",
|
22 |
+
"Genting Bhd - GENTING": "3182.KL",
|
23 |
+
"MISC Bhd - MISC": "3816.KL",
|
24 |
+
"PPB Group Bhd - PPB": "4065.KL",
|
25 |
+
"Sime Darby Bhd - SIME": "4197.KL",
|
26 |
+
"Telekom Malaysia Bhd - TM": "4863.KL",
|
27 |
+
"Tenaga Nasional Bhd - TENAGA": "5278.KL",
|
28 |
+
"Top Glove Corporation Bhd - TOPGLOV": "7113.KL",
|
29 |
+
"AirAsia X Bhd - AAX": "5238.KL",
|
30 |
+
"Ramssol Group Bhd - RAMSSOL": "0236.KL",
|
31 |
+
"Uzma Bhd - UZMA": "7250.KL",
|
32 |
+
"WZ Satu Bhd - WZSATU": "7245.KL",
|
33 |
+
"Systech Bhd - SYSTECH": "0050.KL",
|
34 |
+
"Yong Tai Bhd - YONGTAI": "7066.KL",
|
35 |
+
},
|
36 |
+
"Euronext": {
|
37 |
+
"LVMH Moet Hennessy Louis Vuitton SE - LVMH": "MC.PA",
|
38 |
+
"TotalEnergies SE - TotalEnergies": "TTE.PA",
|
39 |
+
"Sanofi SA - Sanofi": "SAN.PA",
|
40 |
+
"Air Liquide SA - Air Liquide": "AI.PA",
|
41 |
+
"Schneider Electric SE - Schneider Electric": "SU.PA",
|
42 |
+
"Kering SA - Kering": "KER.PA",
|
43 |
+
"BNP Paribas SA - BNP Paribas": "BNP.PA",
|
44 |
+
"Hermès International SCA - Hermès": "RMS.PA",
|
45 |
+
"L'Oréal SA - L'Oréal": "OR.PA",
|
46 |
+
"AXA SA - AXA": "CS.PA",
|
47 |
+
"Vinci SA - Vinci": "DG.PA",
|
48 |
+
"Dassault Systèmes SE - Dassault Systèmes": "DSY.PA",
|
49 |
+
"Engie SA - Engie": "ENGI.PA",
|
50 |
+
"Société Générale SA - Société Générale": "GLE.PA",
|
51 |
+
"Pernod Ricard SA - Pernod Ricard": "RI.PA",
|
52 |
+
"Safran SA - Safran": "SAF.PA",
|
53 |
+
"ArcelorMittal SA - ArcelorMittal": "MT.AS",
|
54 |
+
"Saint-Gobain SA - Saint-Gobain": "SGO.PA",
|
55 |
+
"Capgemini SE - Capgemini": "CAP.PA",
|
56 |
+
"Danone SA - Danone": "BN.PA",
|
57 |
+
},
|
58 |
+
"London Stock Exchange (LSE)": {
|
59 |
+
"HSBC Holdings plc - HSBC": "HSBA.L",
|
60 |
+
"Royal Dutch Shell plc - Shell": "RDSA.L",
|
61 |
+
"BP plc - BP": "BP.L",
|
62 |
+
"GlaxoSmithKline plc - GlaxoSmithKline": "GSK.L",
|
63 |
+
"AstraZeneca plc - AstraZeneca": "AZN.L",
|
64 |
+
"Unilever plc - Unilever": "ULVR.L",
|
65 |
+
"British American Tobacco plc - British American Tobacco": "BATS.L",
|
66 |
+
"Diageo plc - Diageo": "DGE.L",
|
67 |
+
"Barclays plc - Barclays": "BARC.L",
|
68 |
+
"Lloyds Banking Group plc - Lloyds": "LLOY.L",
|
69 |
+
"Vodafone Group plc - Vodafone": "VOD.L",
|
70 |
+
"Rio Tinto plc - Rio Tinto": "RIO.L",
|
71 |
+
"Reckitt Benckiser Group plc - Reckitt Benckiser": "RKT.L",
|
72 |
+
"Tesco plc - Tesco": "TSCO.L",
|
73 |
+
"Glencore plc - Glencore": "GLEN.L",
|
74 |
+
"National Grid plc - National Grid": "NG.L",
|
75 |
+
"BT Group plc - BT Group": "BT-A.L",
|
76 |
+
"Aviva plc - Aviva": "AV.L",
|
77 |
+
"Imperial Brands plc - Imperial Brands": "IMB.L",
|
78 |
+
"Rolls-Royce Holdings plc - Rolls-Royce": "RR.L",
|
79 |
+
},
|
80 |
+
"NYSE": {
|
81 |
+
"Berkshire Hathaway Inc. (Class B) - BRK-B": "BRK-B",
|
82 |
+
"Johnson & Johnson - JNJ": "JNJ",
|
83 |
+
"JPMorgan Chase & Co. - JPM": "JPM",
|
84 |
+
"Procter & Gamble Co. - PG": "PG",
|
85 |
+
"Visa Inc. (Class A) - V": "V",
|
86 |
+
"Walmart Inc. - WMT": "WMT",
|
87 |
+
"Mastercard Incorporated (Class A) - MA": "MA",
|
88 |
+
"The Home Depot, Inc. - HD": "HD",
|
89 |
+
"Bank of America Corporation - BAC": "BAC",
|
90 |
+
"Walt Disney Company (The) - DIS": "DIS",
|
91 |
+
"Pfizer Inc. - PFE": "PFE",
|
92 |
+
"Chevron Corporation - CVX": "CVX",
|
93 |
+
"Coca-Cola Company (The) - KO": "KO",
|
94 |
+
"Exxon Mobil Corporation - XOM": "XOM",
|
95 |
+
"AbbVie Inc. - ABBV": "ABBV",
|
96 |
+
"Merck & Co., Inc. - MRK": "MRK",
|
97 |
+
"AT&T Inc. - T": "T",
|
98 |
+
"Verizon Communications Inc. - VZ": "VZ",
|
99 |
+
"Morgan Stanley - MS": "MS",
|
100 |
+
"Goldman Sachs Group, Inc. (The) - GS": "GS",
|
101 |
+
},
|
102 |
+
"NASDAQ": {
|
103 |
+
"Apple Inc. - AAPL": "AAPL",
|
104 |
+
"Microsoft Corporation - MSFT": "MSFT",
|
105 |
+
"Amazon.com, Inc. - AMZN": "AMZN",
|
106 |
+
"Tesla, Inc. - TSLA": "TSLA",
|
107 |
+
"Alphabet Inc. (Class A) - GOOGL": "GOOGL",
|
108 |
+
"Alphabet Inc. (Class C) - GOOG": "GOOG",
|
109 |
+
"NVIDIA Corporation - NVDA": "NVDA",
|
110 |
+
"Meta Platforms, Inc. - META": "META",
|
111 |
+
"Netflix, Inc. - NFLX": "NFLX",
|
112 |
+
"Intel Corporation - INTC": "INTC",
|
113 |
+
"Adobe Inc. - ADBE": "ADBE",
|
114 |
+
"Cisco Systems, Inc. - CSCO": "CSCO",
|
115 |
+
"PepsiCo, Inc. - PEP": "PEP",
|
116 |
+
"Comcast Corporation - CMCSA": "CMCSA",
|
117 |
+
"Advanced Micro Devices, Inc. - AMD": "AMD",
|
118 |
+
"Broadcom Inc. - AVGO": "AVGO",
|
119 |
+
"Charter Communications, Inc. - CHTR": "CHTR",
|
120 |
+
"PayPal Holdings, Inc. - PYPL": "PYPL",
|
121 |
+
"Starbucks Corporation - SBUX": "SBUX",
|
122 |
+
"Booking Holdings Inc. - BKNG": "BKNG",
|
123 |
+
},
|
124 |
+
}
|
125 |
|
126 |
def fetch_data(ticker, start_date, end_date):
|
127 |
data = yf.download(ticker, start=start_date, end=end_date)
|
|
|
203 |
|
204 |
def main():
|
205 |
st.title("OMA Ally BBMA Trading Strategy Visualization")
|
206 |
+
|
207 |
+
# Sidebar with dropdown menu for stock tickers
|
208 |
+
st.sidebar.title("Select Ticker Symbol")
|
209 |
+
exchange = st.sidebar.selectbox("Select Stock Exchange", list(stock_exchanges.keys()))
|
210 |
+
ticker_symbols = stock_exchanges[exchange]
|
211 |
+
ticker = st.sidebar.selectbox("Select Ticker Symbol", list(ticker_symbols.keys()))
|
212 |
+
ticker_symbol = ticker_symbols[ticker]
|
213 |
+
|
214 |
start_date = st.date_input("Select the start date")
|
215 |
end_date = st.date_input("Select the end date")
|
216 |
|
217 |
if st.button("Analyze"):
|
218 |
+
data = fetch_data(ticker_symbol, start_date, end_date)
|
219 |
+
weekly_data = fetch_weekly_data(ticker_symbol, start_date, end_date)
|
220 |
data = calculate_indicators(data)
|
221 |
data = identify_signals(data)
|
222 |
data = confirm_signals_with_weekly(data, weekly_data)
|