Fix price fetch failing after market hours by adding 5-day daily fallback
period=1d interval=1m returns empty after NSE closes at 3:30 PM IST. Fall back to period=5d interval=1d to get last available close price. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
b06f7d4ffa
commit
622a74724b
@ -78,6 +78,7 @@ def fetch_live_price(
|
|||||||
):
|
):
|
||||||
if allow_cache is None:
|
if allow_cache is None:
|
||||||
allow_cache = ALLOW_PRICE_CACHE
|
allow_cache = ALLOW_PRICE_CACHE
|
||||||
|
# Try intraday (works during market hours)
|
||||||
try:
|
try:
|
||||||
df = yf.download(
|
df = yf.download(
|
||||||
ticker,
|
ticker,
|
||||||
@ -97,6 +98,26 @@ def fetch_live_price(
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Fallback: last close from past 5 days (works after market hours)
|
||||||
|
try:
|
||||||
|
df = yf.download(
|
||||||
|
ticker,
|
||||||
|
period="5d",
|
||||||
|
interval="1d",
|
||||||
|
auto_adjust=True,
|
||||||
|
progress=False,
|
||||||
|
timeout=5,
|
||||||
|
)
|
||||||
|
if df is not None and not df.empty:
|
||||||
|
close_value = df["Close"].iloc[-1]
|
||||||
|
if hasattr(close_value, "iloc"):
|
||||||
|
close_value = close_value.iloc[-1]
|
||||||
|
price = float(close_value)
|
||||||
|
_set_last_price(ticker, price, "live", provider="yfinance")
|
||||||
|
return price
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
if allow_cache:
|
if allow_cache:
|
||||||
last_live = _get_last_live_price(ticker, provider="yfinance")
|
last_live = _get_last_live_price(ticker, provider="yfinance")
|
||||||
if last_live is not None:
|
if last_live is not None:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user