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}")