注意

  1. 操作功能前請先登入。
  2. 詳細功能請參考 API Reference/squote

Open In Colab

下載範例 Notebook

1. 上市 (TSE) 行情查詢

本節介紹如何主動查詢上市股票的即時資訊。

查詢即時行情 (Tick Data)

使用 query_tick_data 方法。

response = unitrade.squote.query_tick_data('2330')

if response.ok:
    print(response.data)

# 回傳 TickDataResponse 範例
# ---------------------------------------------------
# TickDataResponse(ok=True, error='', data=TickData(
#   stock_code='2330',          # 股票代號
#   match_time='133000000000',  # 撮合時間
#   trade_price=1035.0,         # 成交價 
#   trade_volume=2334,          # 成交量
#   cumulative_volume=23904,    # 累計成交數量
#   limit_up_down_note='0',     # 漲跌停註記 (0:一般, 64:跌停成交, 128:漲停成交)
#   status_note='4',            # 狀態註記 (4:收盤揭示, 8:開盤揭示, 16:逐筆撮合, ...)
#   
#   # 五檔買進
#   best_bid_price_1=1035.0, best_bid_volume_1=107,
#   best_bid_price_2=1030.0, best_bid_volume_2=3831,
#   best_bid_price_3=1025.0, best_bid_volume_3=2908,
#   best_bid_price_4=1020.0, best_bid_volume_4=2494,
#   best_bid_price_5=1015.0, best_bid_volume_5=637,
#
#   # 五檔賣出
#   best_ask_price_1=1040.0, best_ask_volume_1=3303,
#   best_ask_price_2=1045.0, best_ask_volume_2=2110,
#   best_ask_price_3=1050.0, best_ask_volume_3=1475,
#   best_ask_price_4=1055.0, best_ask_volume_4=1123,
#   best_ask_price_5=1060.0, best_ask_volume_5=1694
# ))

查詢開收盤資訊 (Open/Close)

使用 query_tick_data_open 方法。

response = unitrade.squote.query_tick_open_close('2330')

# 回傳 TickDataOpenCloseResponse 範例
# ---------------------------------------------------
# TickDataOpenClose(
#   stock_code='2330',          # 股票代號
#   open_price=1045.0,          # 開盤價格
#   high_price=1045.0,          # 最高成交價格
#   low_price=1030.0,           # 最低成交價格
#   last_trade_price=1035.0,    # 最近成交價
#   cumulative_volume=23904,    # 累計成交量
#   time='999999999999'         # 時間
# )

查詢基本資料 (Base Data)

使用 query_base_data 方法。

response = unitrade.squote.query_base_data('2330')

# 回傳 BaseDataResponse 範例
# ---------------------------------------------------
# BaseData(
#   stock_code='2330',          # 股票代號
#   product_name='台積電',       # 商品名稱
#   industry='24',              # 產業別
#   reference_price='1055.0000',# 參考價
#   upper_limit_price='1160.0000', # 漲停價
#   lower_limit_price='950.0000',  # 跌停價
#   day_trading_note='A',       # 可現股當沖註記
#   trading_unit='1000',        # 交易單位
#   stock_abnormal_code='0',    # 股票異常代碼
#   ... (其他詳細欄位請參考 API 文件)
# )

2. 上櫃 (OTC) 行情查詢

本節介紹如何主動查詢上櫃股票的即時資訊。

查詢 OTC 即時行情

使用 query_otc_tick_data 方法。

response = unitrade.squote.query_otc_tick_data('5483')

# 回傳 TickDataResponse 範例
# ---------------------------------------------------
# TickData(
#   stock_code='5483',          # 股票代號
#   trade_price=91.2,           # 成交價
#   trade_volume=359,           # 成交量
#   cumulative_volume=4174,     # 累計成交數量
#   best_bid_price_1=91.2, best_bid_volume_1=35,
#   best_ask_price_1=91.3, best_ask_volume_1=7,
#   ...
# )

查詢 OTC 開收盤資訊

使用 query_otc_tick_open_close 方法。

response = unitrade.squote.query_otc_tick_open_close('5483')

# 回傳 TickDataOpenCloseResponse 範例
# ---------------------------------------------------
# TickDataOpenClose(
#   stock_code='5483',          # 股票代號
#   open_price=93.8,            # 開盤價格
#   high_price=94.2,            # 最高成交價格
#   low_price=91.2,             # 最低成交價格
#   last_trade_price=91.2,      # 最近成交價
#   cumulative_volume=4174      # 累計成交量
# )

查詢 OTC 基本資料

使用 query_otc_base_data 方法。

response = unitrade.squote.query_otc_base_data('5483')

# 回傳 OTCBaseDataResponse 範例
# ---------------------------------------------------
# OTCBaseData(
#   stock_code='5483',          # 股票代號 
#   product_name='中美晶',       # 商品名稱
#   reference_price='94.2000',  # 參考價 
#   upper_limit_price='103.5000', # 漲停價 
#   lower_limit_price='84.8000',  # 跌停價 
#   trading_unit='1000',        # 交易單位
#   ...
# )

3. 指數行情查詢

查詢上市指數

使用 query_index_data,需傳入 上市指數代碼

response = unitrade.squote.query_index_data('IX0001')

# IndexDataResponse(ok=True, data=IndexData(
#   index_code='IX0001',        # 指數代號 (例如: 加權指數)
#   index_time='999999',        # 指數時間
#   latest_index=22003.5        # 最新指數
# ))

查詢上櫃指數

使用 query_otc_index_data,需傳入 OTC指數代碼

response = unitrade.squote.query_otc_index_data('IX0043')

# IndexDataResponse(ok=True, data=IndexData(
#   index_code='IX0043',        # 指數代號
#   latest_index=228.56         # 最新指數
# )) 

4. 訂閱即時行情 (Subscription)

若需持續接收資料,請依序完成:定義 Callback 函式 -> 綁定 Callback -> 執行訂閱

步驟一:定義與綁定 Callback

以下為通用的 Callback 處理函式範例(適用於上市與上櫃)。

# 定義 Callback
def on_tick_data(data: TickData):  
    print(f"收到行情: {data.stock_code} 成交價: {data.trade_price}")
    # data 欄位請參考上方「查詢即時行情」之 TickData 結構

def on_base_data(data: BaseData):   
    print(f"收到基本資料: {data.stock_code} 名稱: {data.product_name}")
    
def on_tick_data_open_close(data: TickDataOpenClose):
    print(f"收到開收盤: {data.stock_code} 開: {data.open_price}")

def on_index_data(data: IndexData):
    print(f"收到指數: {data.index_code} 點數: {data.latest_index}")

# 綁定 Callback (上市)
unitrade.squote.on_tick_data = on_tick_data 
unitrade.squote.on_base_data = on_base_data 
unitrade.squote.on_tick_data_open_close = on_tick_data_open_close 
unitrade.squote.on_index_data = on_index_data

# 綁定 Callback (上櫃)
# 注意:上櫃使用獨立的 Callback 屬性名稱
unitrade.squote.on_otc_tick_data = on_tick_data  # 可共用函式,或另外定義
unitrade.squote.on_otc_base_data = on_base_data 
unitrade.squote.on_otc_tick_data_open_close = on_tick_data_open_close 
unitrade.squote.on_otc_index_data = on_index_data 

步驟二:執行訂閱

使用 sub_ 系列方法進行訂閱。

訂閱上市股票:

sub_ok, msg = unitrade.squote.sub_stock('2330')
print(f'上市訂閱結果: {sub_ok} {msg}') 

訂閱上櫃股票:

sub_ok, msg = unitrade.squote.sub_otc('5483')
print(f'上櫃訂閱結果: {sub_ok} {msg}') 

訂閱指數 (上市/上櫃):

# 上市指數
unitrade.squote.sub_index('IX0001')

# 上櫃指數
unitrade.squote.sub_otc_index('IX0043')

步驟三:反註冊 (Unsubscribe)

停止接收特定商品的行情。

# 反註冊上市股票
unitrade.squote.unsub_stock('2330')

# 反註冊上櫃股票
unitrade.squote.unsub_otc('5483')

# 反註冊指數
unitrade.squote.unsub_index('IX0001')
unitrade.squote.unsub_otc_index('IX0043')


Back to top

支援Python版本: 3.7 3.8 3.9 3.10 3.11 3.12

支援 OS: Linux, macOS, Windows