多檔下載
一次下載多檔用 yf.download(),不要對每檔各呼叫一次 history()。函式內部可用多執行緒,比較不容易把自己打到限流。
本頁說明參數、回傳的 MultiIndex,以及何時改用 Tickers。
yf.download()
import yfinance as yf
data = yf.download(
["2330.TW", "AAPL", "MSFT"],
period="1y",
interval="1d",
auto_adjust=True,
progress=False,
)
也可用 start / end 取代 period。end 同樣不含當天。
常用參數:
| 參數 | 預設 | 說明 |
|---|---|---|
tickers |
(必填) | 字串或 list |
period / start / end |
約一個月 | 與 history() 相同 |
interval |
1d |
K 線頻率;盤中同樣受 60 天限制 |
auto_adjust |
True |
是否自動調整 OHLC |
group_by |
column |
column 或 ticker,決定欄位階層 |
actions |
False |
是否一併下載股利與分割 |
threads |
True |
多執行緒 |
multi_level_index |
True |
是否固定回傳多層欄位 |
ignore_tz |
依 interval | 日線以上常去掉時區,方便對齊不同市場 |
完整清單見 yfinance.download。
讀 MultiIndex
預設 group_by="column" 時,欄位第一層是 Open / Close 等,第二層是代號。取收盤價:
若 group_by="ticker",則先選代號再選欄位:
data = yf.download(
["AAPL", "MSFT"],
period="6mo",
group_by="ticker",
auto_adjust=True,
progress=False,
)
aapl = data["AAPL"]
單檔下載有時仍是 MultiIndex;若只要扁平欄位,可設 multi_level_index=False(行為依版本,下載後用 data.head() 確認最穩)。
Tickers:多檔但仍要屬性
download() 只負責價量(可加 actions)。若還要每檔的 info、財報,用 Tickers:
tickers = yf.Tickers("MSFT AAPL GOOG")
tickers.tickers["MSFT"].info
tickers.tickers["AAPL"].history(period="1mo")
tickers.tickers["GOOG"].actions
Tickers 也可 live() 訂閱即時報價,見 即時報價。
推薦影音
Ryan O'Connell(CFA, FRM)示範用 yf.download() 一次抓多檔 ETF 的歷史價格,並用日期區間控制範圍。適合對照本頁的多檔下載。