Options / app.py
nick5363's picture
Update app.py
155145b verified
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}")