Geek7 commited on
Commit
e2d4283
·
verified ·
1 Parent(s): 08dd8ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -69
app.py CHANGED
@@ -1,81 +1,38 @@
1
  import streamlit as st
2
- import requests
3
- from thronetrader import StrategicSignals
4
- from thronetrader.helper.squire import classify # Import your classification method
5
- import pandas as pd
6
 
7
- def main():
8
- st.title("Strategic Trading Signals")
9
-
10
- # Input for stock symbol
11
- symbol = st.text_input("Enter stock symbol (e.g., AAPL):", "AAPL")
12
-
13
- # Fetch Alpha Vantage data
14
- alpha_vantage_data = fetch_alpha_vantage_data(symbol)
15
-
16
- # Extract relevant data from Alpha Vantage response
17
- alpha_vantage_time_series = alpha_vantage_data.get('Time Series (5min)', {})
18
- df = pd.DataFrame(alpha_vantage_time_series).T
19
- df.index = pd.to_datetime(df.index)
20
- df = df.dropna(axis=0)
21
-
22
- # Rename columns
23
- df = df.rename(columns={'1. open': 'open', '2. high': 'high', '3. low': 'low', '4. close': 'Close', '5. volume': 'volume'})
24
-
25
- # Calculate indicators
26
- df = calculate_indicators(df)
27
 
28
- # Display strategic trading signals
29
- strategic_signals = StrategicSignals(df)
30
-
31
- st.subheader("Bollinger Bands Signals:")
32
- bollinger_bands_signals = strategic_signals.get_bollinger_bands_signals()
33
- display_signals(bollinger_bands_signals)
34
-
35
- st.subheader("Breakout Signals:")
36
- breakout_signals = strategic_signals.get_breakout_signals()
37
- display_signals(breakout_signals)
38
-
39
- st.subheader("Crossover Signals:")
40
- crossover_signals = strategic_signals.get_crossover_signals()
41
- display_signals(crossover_signals)
42
-
43
- st.subheader("MACD Signals:")
44
- macd_signals = strategic_signals.get_macd_signals()
45
- display_signals(macd_signals)
46
 
47
- st.subheader("RSI Signals:")
48
- rsi_signals = strategic_signals.get_rsi_signals()
49
- display_signals(rsi_signals)
 
50
 
51
- # Example of using your classify method
52
- classification_result = classify(df, logger) # Pass your DataFrame and logger
53
- st.subheader("Classification Result:")
54
- st.write(classification_result)
55
 
56
- def fetch_alpha_vantage_data(symbol):
57
- api_key = "QR8F9B7T6R2SWTAT"
58
- url = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={symbol}&interval=5min&apikey={api_key}'
59
- response = requests.get(url)
60
- alpha_vantage_data = response.json()
61
- return alpha_vantage_data
62
 
63
- def calculate_indicators(data):
64
- # Convert all columns to numeric
65
- data = data.apply(pd.to_numeric, errors='coerce')
66
 
67
- # Example: Simple condition for doji and inside
68
- data['Doji'] = abs(data['Close'] - data['open']) <= 0.01 * (data['high'] - data['low'])
69
- data['Inside'] = (data['high'] < data['high'].shift(1)) & (data['low'] > data['low'].shift(1))
70
- return data
71
 
72
- def display_signals(signals):
73
- for signal in signals:
74
- if isinstance(signal, dict):
75
- st.write(f"Date: {signal.get('date', 'N/A')}")
76
- st.write(f"Signal: {signal.get('signal', 'N/A')}")
77
- else:
78
- st.write("Invalid signal format.")
79
 
80
  if __name__ == "__main__":
81
  main()
 
1
  import streamlit as st
2
+ import yfinance as yf
3
+ from cuansignal import signals as cs
 
 
4
 
5
+ def fetch_yfinance_data(symbol, start, end):
6
+ try:
7
+ data = yf.download(symbol, start=start, end=end)
8
+ return data
9
+ except Exception as e:
10
+ st.error(f"Error fetching data: {e}")
11
+ return None
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ def main():
14
+ st.title("Streamlit App with cuansignal and yfinance")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
+ # Input parameters
17
+ symbol = "AAPL"
18
+ start_date = "2024-02-04T14:20:30Z"
19
+ end_date = "2024-02-04T14:30:30Z"
20
 
21
+ # Fetch data
22
+ data = fetch_yfinance_data(symbol, start_date, end_date)
 
 
23
 
24
+ if data is not None:
25
+ st.subheader("Original Data:")
26
+ st.write(data.head())
 
 
 
27
 
28
+ # Calculate dEMA
29
+ result = cs.dEMA(data, base='Close', short=10, long=100)
 
30
 
31
+ st.subheader("dEMA Result:")
32
+ st.write(result.head())
 
 
33
 
34
+ else:
35
+ st.warning("Failed to fetch data. Check your input parameters.")
 
 
 
 
 
36
 
37
  if __name__ == "__main__":
38
  main()