注意:
- 操作功能前請先登入。
- 詳細功能請參考 API Reference/squote。
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')