操作功能前請先登入
詳細功能請參考 API Reference/dquote
查詢行情 (Snapshot)
此區塊介紹如何主動查詢當前的行情狀態(單次查詢)。
成交價量
透過 dquote.query_tick_data_trade 查詢,需傳入商品代碼。
# 查詢成交價量
trade_response = unitrade.dquote.query_tick_data_trade('TXFG5')
# print(trade_response)
點擊查看 DTickDataTradeResponse 回傳範例
DTickDataTradeResponse(
ok=True,
error='',
data=DTickDataTrade(
commodityid='TXFG5', # 商品代號
infotime='132333276000', # 成交時間
matchprice=21699.0, # 第一成交價
matchquantity=2, # 第一成交量
matchtotalqty=45901, # 成交總量
matchbuycnt=31986, # 成交買量
matchsellcnt=30551, # 成交賣量
matchtime='132333178000', # 成交時間
matchpricedata=[21698.0], # 第2到第N成交價陣列
matchqtydata=[1] # 第2到第N成交量陣列
)
)
最佳買賣價量 (五檔)
透過 dquote.query_tick_data_bid_offer 查詢,需傳入商品代碼。
# 查詢最佳五檔
bid_offer_response = unitrade.dquote.query_tick_data_bid_offer('TXFG5')
點擊查看 DTickDataBidOfferResponse 回傳範例
DTickDataBidOfferResponse(
ok=True,
error='',
data=DTickDataBidOffer(
commodityid='TXFG5', # 商品代號
bp1=21704.0, bq1=5, # 買1價, 買1量
bp2=21703.0, bq2=3,
bp3=21702.0, bq3=7,
bp4=21701.0, bq4=3,
bp5=21700.0, bq5=5,
sp1=21706.0, sq1=4, # 賣1價, 賣1量
sp2=21708.0, sq2=1,
sp3=21709.0, sq3=3,
sp4=21710.0, sq4=12,
sp5=21711.0, sq5=16
)
)
開盤價量
透過 dquote.query_tick_data_open 查詢。
# 查詢開盤資訊
open_response = unitrade.dquote.query_tick_data_open('TXFG5')
點擊查看 DTickDataOpenResponse 回傳範例
DTickDataOpenResponse(
ok=True,
error='',
data=DTickDataOpen(
commodityid='TXFG5', # 商品代碼
opentime='084500060000', # 開盤時間
openprice=21820.0, # 開盤價
openquantity=159 # 開盤量
)
)
最高最低價
透過 dquote.query_tick_data_high_low 查詢。
# 查詢當日高低價
high_low_response = unitrade.dquote.query_tick_data_high_low('TXFG5')
點擊查看 DTickDataHighLowResponse 回傳範例
DTickDataHighLowResponse(
ok=True,
error='',
data=DTickDataHighLow(
commodityid='TXFG5', # 商品代碼
showtime='105141451000', # 時間
dayhighprice=21857.0, # 最高價
daylowprice=21675.0 # 最低價
)
)
現貨價量
透過 dquote.query_index_data 查詢,需傳入現貨代碼(如 TXF)。
# 查詢現貨資訊
index_response = unitrade.dquote.query_index_data('TXF')
點擊查看 DIndexDataResponse 回傳範例
DIndexDataResponse(
ok=True,
error='',
data=DIndexData(
index_kind='TXF', # 現貨代碼
index_time='133325000000',# 現貨統計時間
index_value=22003.5 # 現貨價
)
)
收盤行情 (含結算價及未平倉)
V1.0.0.4 新增
透過 dquote.query_tick_data_settle 查詢。
# 查詢收盤/結算資訊
settle_response = unitrade.dquote.query_tick_data_settle("TXFH5")
點擊查看 DTickDataSettleResponse 回傳範例
DTickDataSettleResponse(
ok=True,
error='',
data=DTickDataSettle(
commodityid='TXFH5',
period_high_price=23414.0, # 時段最高
period_low_price=20375.0, # 時段最低
daily_high_price=23406.0, # 日最高
daily_low_price=22977.0, # 日最低
open_price=23241.0,
close_price=22990.0,
settlement_price=22996.0, # 結算價
open_interest=95637, # 未平倉量
total_trades=141625, # 總成交筆數
total_trade_volume=105402 # 總成交量
# ... 其他詳細欄位請參考 API 文件
)
)
接收即時行情 (Streaming)
此區塊介紹如何訂閱即時推播資料。流程統一為:
- 定義回呼函式 (Callback Function)。
- 將函式註冊到
unitrade.dquote對應事件。 - 呼叫
subscribe方法開始接收。
成交與最佳買賣價 (五檔)
這兩個通常會一起訂閱。
步驟:
# 1. 定義 Callback
def on_tick_data_trade(data: DTickDataTrade):
print(f"收到成交: {data.matchprice}")
def on_tick_data_bid_offer(data: DTickDataBidOffer):
print(f"收到五檔: 買一{data.bp1}/賣一{data.sp1}")
# 2. 註冊事件
unitrade.dquote.on_tick_data_trade = on_tick_data_trade
unitrade.dquote.on_tick_data_bid_offer = on_tick_data_bid_offer
# 3. 訂閱商品 (同時訂閱成交與五檔)
sub_ok, msg = unitrade.dquote.subscribe_trade_bid_offer('TXFG5')
print(f'訂閱結果: {sub_ok} {msg}')
反註冊 (停止接收):
unsub_ok, msg = unitrade.dquote.unsubscribe_trade_bid_offer('TXFG5')
print(f'反訂閱結果: {unsub_ok} {msg}')
開盤價量
# 1. 定義 & 註冊
def on_tick_data_open(data: DTickDataOpen):
print(f"收到開盤價: {data.openprice}")
unitrade.dquote.on_tick_data_open = on_tick_data_open
# 2. 訂閱
sub_ok, msg = unitrade.dquote.subscribe_open('TXFG5')
# 3. 反訂閱
# unitrade.dquote.unsubscribe_open('TXFG5')
最高最低價
# 1. 定義 & 註冊
def on_tick_data_high_low(data: DTickDataHighLow):
print(f"收到高低價: 高{data.dayhighprice}/低{data.daylowprice}")
unitrade.dquote.on_tick_data_high_low = on_tick_data_high_low
# 2. 訂閱
sub_ok, msg = unitrade.dquote.subscribe_high_low('TXFG5')
# 3. 反訂閱
# unitrade.dquote.unsubscribe_high_low('TXFG5')
現貨報價 (Index)
# 1. 定義 & 註冊
def on_index_data(data: DIndexData):
print(f"收到現貨: {data.index_kind} = {data.index_value}")
unitrade.dquote.on_index_data = on_index_data
# 2. 訂閱 (參數: 市場別, 商品代碼)
# 市場別通常為 '1'
index_id = 'TXF'
sub_ok, msg = unitrade.dquote.subscribe_index_data('1', index_id)
# 3. 反訂閱
# unitrade.dquote.unsubscribe_index_data('1', index_id)
收盤/結算行情
V1.0.0.4 新增
# 1. 定義 & 註冊
def on_tick_data_settle(data: DTickDataSettle):
print(f"收到結算資訊: 結算價{data.settlement_price} OI{data.open_interest}")
unitrade.dquote.on_tick_data_settle = on_tick_data_settle
# 2. 訂閱
sub_ok, msg = unitrade.dquote.subscribe_settle('TXFH5')
# 3. 反訂閱
# unitrade.dquote.unsubscribe_settle('TXFH5')
歷史 K 線資料
V1.0.0.4 新增
透過 dquote.get_history_bardata 取得歷史 K 線。
參數說明: get_history_bardata(K線週期, 起始時間, 結束時間, 商品種類, 商品代碼, 取得數量)
- K線週期:
1K(分K),D(日K) … - 商品種類: 請參考 API 文件 (例如 “1” 表期貨)
from datetime import datetime
# 取得 1分K 範例
# 參數: 週期, 起始日, 結束日, 種類(1:期貨), 代碼, 筆數
response = unitrade.dquote.get_history_bardata(
"1K",
datetime(2025, 6, 10),
datetime(2025, 7, 7),
"1",
"MXFG5",
2
)
# print(response)
點擊查看 BarDataResponse 回傳範例
BarDataResponse(
ok=True,
error='',
data=[
BarData(
productId='MXFG5',
productkind=None,
date='20250627',
time='084500',
open=22199.0,
high=22206.0,
low=22186.0,
close=22191.0,
volume=1608
),
BarData(
productId='MXFG5',
productkind=None,
date='20250627',
time='084600',
open=22191.0,
high=22195.0,
low=22178.0,
close=22187.0,
volume=761
)
]
)