Download app.py from nick5363/Options: direct link, hf CLI and curl.
- Browser
- Download file 1.65 kB
-
https://huggingface.co/spaces/nick5363/Options/resolve/main/app.py
- Command line
-
hf download hf://spaces/nick5363/Options/app.py
-
curl -L -o app.py https://huggingface.co/spaces/nick5363/Options/resolve/main/app.py
1.65 kB
| import yfinance as yf | |
| import streamlit as st | |
| import pandas as pd | |
| # Hàm phân tích VSA và xác suất tăng, giảm ngày hôm sau (kết hợp) | |
| def combined_vsa_probability(ticker): | |
| data = yf.download(ticker, period='5d', interval='1d') | |
| latest_day = data.iloc[-1] | |
| open_price = latest_day['Open'].item() | |
| current_price = latest_day['Close'].item() if latest_day.name.time().strftime('%H:%M') >= '16:00' else yf.Ticker(ticker).history(period="1d", interval="1m").iloc[-1]['Close'].item() | |
| volume = latest_day['Volume'].item() | |
| avg_volume = data['Volume'].iloc[-4:-1].mean().item() | |
| spread = latest_day['High'].item() - latest_day['Low'].item() | |
| close_position = (current_price - latest_day['Low'].item()) / spread | |
| # Điều kiện kết hợp VSA & xác suất | |
| if (current_price > open_price) and (volume > avg_volume) and close_position > 0.7: | |
| probability = "Bullish (Strength): Xác suất ~75-80% tăng tiếp" | |
| elif (current_price >= open_price) and close_position > 0.5 and volume >= avg_volume: | |
| probability = "Bullish (Possible Strength): Xác suất ~60-65% tăng tiếp" | |
| elif (current_price < open_price) and close_position < 0.3 and volume >= avg_volume: | |
| probability = "Bearish (Weakness): Xác suất cao giảm hôm sau" | |
| else: | |
| probability = "Sideway hoặc chưa rõ tín hiệu: Quan sát thêm" | |
| return probability | |
| # Streamlit app | |
| st.title("Dự đoán xác suất tăng/giảm hôm sau (Kết hợp VSA) cho SPY & QQQ") | |
| for ticker in ["QQQ", "SPY"]: | |
| probability = combined_vsa_probability(ticker) | |
| st.subheader(f"{ticker}: {probability}") | |