操作功能前請先登入

詳細功能請參考 API Reference/dquote

Open In Colab

下載範例

查詢行情 (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)

此區塊介紹如何訂閱即時推播資料。流程統一為:

  1. 定義回呼函式 (Callback Function)。
  2. 將函式註冊到 unitrade.dquote 對應事件。
  3. 呼叫 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
        )
    ]
)

Back to top

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

支援 OS: Linux, macOS, Windows