Skip to content

建立 2026-09-15 更新 2026-09-15

即時報價

history() 是歷史 K 線;若要訂閱 Yahoo 推送的即時(或近即時)報價,用 WebSocketAsyncWebSocket。這適合監控幾個代號,不適合當成交易主機的正式行情源。

本頁對照官方範例,說明同步與非同步兩種寫法。

同步 WebSocket

import yfinance as yf

def message_handler(message):
    print("Received message:", message)

with yf.WebSocket() as ws:
    ws.subscribe(["AAPL", "BTC-USD"])
    ws.listen(message_handler)

listen() 會卡住目前執行緒直到連線結束。也可用 unsubscribe() 取消代號。單一 Ticker 另有 live(message_handler)Tickers 同樣有 live()

非同步 AsyncWebSocket

import asyncio
import yfinance as yf

def message_handler(message):
    print("Received message:", message)

async def main():
    async with yf.AsyncWebSocket() as ws:
        await ws.subscribe(["AAPL", "BTC-USD"])
        await ws.listen(message_handler)

asyncio.run(main())

在 Jupyter 裡若與既有 event loop 衝突,官方建議先:

import nest_asyncio
nest_asyncio.apply()

文件:WebSocket

即時資料的定位

推送內容、延遲與欄位以 Yahoo 為準,免費串流可能中斷或變更。實盤下單請用券商或正式行情商 API,不要把這層 WebSocket 當唯一依據。